- •2. Общие требования к алгоритму
- •3. Формальное представление алгоритма. Машина Тьюринга
- •4. Алгоритмически неразрешимые проблемы: их существование и примеры
- •Вопросы
- •2. Теория возмущений и числа обусловленности задачи
- •3. Влияние ошибок округления на алгоритмы
- •4. Программирование численных алгоритмов
- •Вопросы
- •Основные характеристики алгоритма при его анализе. Вычислительная сложность алгоритма
- •Классы входных данных
- •Сложность алгоритма по памяти
- •2. Классы входных данных
- •3. Сложность алгоритма по памяти
- •Вопросы
- •Лекция 4. Оценка вычислительной сложности алгоритма План
- •Предварительные шаги для оценки вычислительной сложности алгоритма
- •Скорость роста алгоритма
- •Анализ подходов, связанных с поиском информации
- •1. Предварительные шаги для оценки вычислительной сложности алгоритма
- •2. Скорость роста алгоритма
- •3. Анализ подходов, связанных с поиском информации
- •Вопросы
- •Класс р - задачи с полиномиальной сложностью
- •Класс np - полиномиально проверяемые задачи
- •1. Класс р - задачи с полиномиальной сложностью
- •2. Класс np - полиномиально проверяемые задачи
- •Вопросы
- •Лекция 6. Сложностные классы задач (продолжение) План
- •Приближенные методы решения np-задач
- •2. Приближенные методы решения np-задач
- •Вопросы
- •Лекция 7. Численные алгоритмы План
- •Вычисление значений многочлена
- •Решение системы линейных алгебраических уравнений
- •1. Вычисление значений многочлена
- •2. Решение системы линейных алгебраических уравнений
- •Вопросы
- •Цели анализа последовательных алгоритмов
- •Основы построения графа алгоритма
- •Допустимые преобразования алгоритма
- •2. Основы построения графа алгоритма
- •Последовательность операций
- •3. Допустимые преобразования алгоритма
- •Вопросы
- •Свойства вершин ориентированного ациклического графа
- •Свойства топологической сортировки графа
- •Топологические уровни графа алгоритма
- •1. Свойства вершин ориентированного ациклического графа
- •2. Свойства топологической сортировки графа
- •3. Топологические уровни графа алгоритма
- •Вопросы
- •Лекция 10. Топологические сортировки сложных графов План
- •Особенности и рекомендации построения топологических сортировок графов алгоритмов, содержащих условные операции
- •Построение топологической сортировки графа по топологическим сортировкам подграфов его разбиения
- •1. Особенности и рекомендации построения топологических сортировок графов алгоритмов, содержащих условные операции
- •2. Построение топологической сортировки графа по топологическим сортировкам подграфов его разбиения
- •Вопросы
- •Операция элементарного гомоморфизма
- •Гомоморфная свертка. Понятие гомоморфного образа, прообраза. Связь топологических сортировок графа и его гомоморфной свертки
- •Использование гомоморфной свертки для упрощения процесса исследования структуры алгоритма
- •1. Операция элементарного гомоморфизма
- •2. Гомоморфная свертка. Понятие гомоморфного образа, прообраза. Связь топологических сортировок графа и его гомоморфной свертки
- •3. Использование гомоморфной свертки для упрощения процесса исследования структуры алгоритма
- •Вопросы
- •Лекция 12. Внутренний параллелизм алгоритма План
- •Понятие внутреннего параллелизма алгоритма и его использование
- •О выборе расположения вершин графа алгоритма
- •Особенности алгоритма решения системы линейных алгебраических уравнений
- •1. Понятие внутреннего параллелизма алгоритма и его использование
- •2. О выборе расположения вершин графа алгоритма
- •3. Особенности алгоритма решения системы линейных алгебраических уравнений
- •Вопросы
- •Лекция 13. Временные развертки План
- •Основная проблема анализа алгоритма с использованием соответствующего графа
- •Вектор временной развертки, обобщенной временной развертки
- •Время реализации алгоритма
- •1. Основная проблема анализа алгоритма с использованием соответствующего графа
- •2. Вектор временной развертки, обобщенной временной развертки
- •3. Время реализации алгоритма
- •Вопросы
- •Лекция 14. Векторные свойства временных разверток План
- •Линейность временных разверток
- •Характеристики множества обобщеных временных разверток
- •Свойства временных разверток при фиксированном векторе задержек
- •1. Линейность временных разверток
- •2. Характеристики множества обобщеных временных разверток
- •3. Свойства временных разверток при фиксированном векторе задержек
- •Лекция 15. Векторные свойства временных разверток (продолжение) План
- •Ориентированная задержка цикла. Уравновешенный цикл.
- •Пространственно-временные развертки
- •1. Ориентированная задержка цикла. Уравновешенный цикл
- •2. Условие совпадения множеств и с точностью до параллельного переноса
- •3. Пространственно-временные развертки.
Вопросы
Что называется внутренним параллелизмом алгоритма?
Достоинства и недостатки использования внутреннего параллелизма алгоритма.
Каким образом имеет смысл располагать вершины графа алгоритма в случае, когда алгоритм содержит операторы цикла? Привести пимеры.
В чем состоит основной недостаток графа алгоритма при произвольном расположнении и нумерации вершин этого графа?
Литература
Воеводин В.В. Параллельные вычисления / В.В.Воеводин, Вл.В.Воеводин. — СПб.: БХВ-Петербург, 2002. — 608 с.
Харари Ф. Теория графов / Ф.Харари; пер.с англ. В.П.Козырева. — М.: Мир, 1973. — 300 с.
Уилсон Р. Введение в теорию графов / Р.Уилсон. — М.: Мир, 1977. — 207 с.
Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. — М.: Мир, 1978. — 432 с.
Новиков Ф.А. Дискретная математика для программистов / Ф.А.Новиков. — СПб.: Питер, 2006. — 364 с.
Иванов Б.Н. Дискретная математика. Алгоритмы и программы / Б.Н.Иванов. — М.: Лаборатория Базовых Знаний, 2001. — 288с.
Лекция 13. Временные развертки План
Основная проблема анализа алгоритма с использованием соответствующего графа
Вектор временной развертки, обобщенной временной развертки
Время реализации алгоритма
1. Основная проблема анализа алгоритма с использованием соответствующего графа
Среди множества всех ориентированных графов графы алгоритмов выделяются тем, что являются ациклическими. В теоретическом плане это их отличие по существу единственное. Любой ориентированный ациклический граф можно считать графом некоторого алгоритма, если отождествить его вершины с какими-то операциями, согласовав при этом дуги графа с передачей информации от операции к операции. Тогда можно было бы отождествить множество исследуемых алгоритмов с множеством всех ориентированных ациклических графов и приступить к изучению структуры таких графов. Однако здесь есть очень большое «НО». Большинство задач на графах принадлежит к NP-полным задачам, время их решения, как правило, экспоненциально зависит от числа вершин. В графах реальных алгоритмов число вершин огромно. Если учесть, что нашей целью является уменьшение времени, требуемого для работы алгоритма, то затрачивать на анализ алгоритма времени больше, чем на его непосредственное выполнение, даже без учета параллелизма, не имеет смысла.
Рассмотрим в качестве примера следующую ситуацию. Предположим, что ставится задача о выборе эффективной по времени реализации заданного алгоритма на некоторой многопроцессорной вычислительной системе. Так как алгоритм известен, то тем самым определена вся совокупность подлежащих выполнению операций. Если фиксирована вычислительная система, то известно как число процессоров, так и время реализации каждой из операций на каждом из процессоров. Допустим, что система имеет неограниченную память, и все вспомогательные операции, в том числе, любые пересылки данных, осуществляются мгновенно. Вопрос: можно ли на данной вычислительной системе реализовать заданный алгоритм за заданное время? Для графа поставленный выше вопрос сведется к следующему: существует ли для данного ориентированного графа такая топологическая сортировка, у которой число групп и число вершин в каждой группе не превосходит заданных чисел? Данная задача является NP-сложной.
Значит использование графов для анализа алгоритмов приводит к такой колоссальной вычислительной сложности их исследования???
Эти неутешительные выводы вытекают из предположения о произвольной структуре графов алгоритмов. Если допустить, что граф алгоритма является произвольным, то записать соответствующий алгоритм можно, лишь записав независимо друг от друга все операции и связи между ними. Длина записи в этом случае окажется пропорциональной числу операций. В практической деятельности не приходится иметь дело с большими алгоритмами подобного рода, в первую очередь именно потому, что их невозможно записать в компактном виде. Поэтому используемые в действительности алгоритмы нельзя отнести к произвольным. Они обладают рядом характерных отличий, связанных, например, с существованием периодически повторяемых участков вычислений. Следовательно, есть основания предполагать, что изучая реальные алгоритмы и выделяя их специфику, удастся избежать NP-сложности соответствующих больших задач.
Изучая алгоритмы, мы ориентируемся, главным образом, на те из них, которые содержат очень большое число операций. Процесс исследования таких алгоритмов целесообразно автоматизировать и использовать для этой цели вычислительную технику. Прежде, чем это делать, необходимо каким-то образом поставить в соответствие выполняемым операциям числовые множества, т.е. ввести некоторые системы координат и приписать каждой вершине определенные координаты. Тогда числовые координаты будут приписаны также дугам графов. После этого уже можно говорить об использовании ЭВМ для анализа структуры алгоритмов.