- •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. Пространственно-временные развертки.
2. Основы построения графа алгоритма
При построении графа алгоритма никаких существенных ограничений на вид переменных и операций не накладывается. Переменными могут быть числа, буквы алфавита, логические переменные, матрицы, массивы и т.д., операциями – любые арифметические, логические, матричные операции и т.п. Предполагается, что число входов и выходов (аргументов и результатов) каждой операции алгоритма в терминах выбранных переменных фиксировано и не зависит от общего числа всех операций алгоритма.
Множеству операций алгоритма, реально выполняемых при заданных входных данных, ставится во взаимно однозначное соответствие множество вершин графа. Если аргумент одной операции есть результат выполнения другой операции, то соответствующие вершины образуют ребро, направленное из той вершины, откуда берется результат.
Вершины графа, отвечающие операциям ввода (входным данным), не будут иметь входящих дуг, а операциям вывода – выходящих. При этом совсем не обязательно, чтобы одному и тому же входному данному соответствовала одна входная вершина (одна операция ввода). Число подобных операций может выбираться, исходя из конкретных условий. Аналогично с операциями вывода. В тех случаях, когда изображение графа является достаточно громоздким, возможно не изображать входные и выходные вершины, считая их положение ясным по умолчанию.
Описанный граф – граф информационной зависимости реализации алгоритма при фиксированных входных данных [Воев], который для удобства далее называется графом алгоритма.
Граф алгоритма , где V — множество вершин графа, а E — множество его ребер, является ориентированным ациклическим мультиграфом (в мультиграфе не допускаются петли, но допускаются кратные ребра).
Пример 10. Необходимо вычислить значение выражения
. (100)
Порядок выполнения операций в правой части выражения однозначно не определен: например, произведение можно вычислить на первом шаге, а можно после нахождения значения . Существует и множество других вариантов, некоторые из которых представлены в следующей таблице 8.1. Операции на одном шаге могут выполняться одновременно (параллельно), сами шаги выполняются последовательно.
Таблица 8.1-
Последовательность операций
Очевидно, что графы, отвечающие различным последовательностям операций для рассматриваемого примера (рис.8.1), являются изоморфными.
Рис.8.1
По существу, в (100) фиксирован не один алгоритм, а несколько математически эквивалентных.
Пример 20. Исследовать различные способы вычисления суммы
. (150)
В точной арифметике операция сложения обладает свойством коммутативности и ассоциативности. Очевидно, что общее число различных способов вычисления выражения (150) при больших будет очень значительным. Какой способ выбрать? С точки зрения точных вычислений все они эквивалентны. Но в условиях влияния ошибок округления появляются значительные различия. Рассмотрим две возможных реализации вычисления (150) при :
схема последовательного суммирования:
,
которой соответствует граф
схема сдваивания:
,
соответствующий граф которой:
Можно показать, что схема последовательного суммирования хуже по точности, чем схема сдваивания, примерно, в раз. Различия есть и в информационных связях между отдельными операциями. Хотя оба графа имеют одно и тоже число вершин и соответствуют одному и тому же вычисляемому выражению (150), эти графы не изоморфны (у них разные длины критических путей), перенос информации в соответствующих им схемах осуществляется принципиально различными способами. Как видно из первого графа, схема последовательного суммирования не имеет никаких параллельных ветвей вычислений. второй граф показывает наличие в схеме сдваивания большого числа информационно не связанных между собой, а значит имеющих возможность выполняться одновременно, операций.
Замечание. Графы алгоритмов примера 10 и схемы сдваивания примера 20 очевидно являются изоморфными, хотя соответствуют решению совершенно разных задач. Алгоритмы с изоморфными графами обладают многими общими свойствами, по крайней мере, в той части, которая касается распределения информации при реализации алгоритмов (хотя призваны решать возможно совершенно разные задачи).
Замечание. Графы алгоритмов примеров 10, 20 имеют достаточно ясную и простую структуру, которая определяется не только самими алгоритмами. Во многом она зависит и от того, как конкретно на плоскости выбраны места расположения вершин. При случайном выборе расположения вершин структуру графа можно не разглядеть. Задачу выбора наилучшего расположения вершин можно пытаться решить, если число вершин невелико. При этом, возможно, придется использовать полный перебор рассматриваемых вариантов. В типичных ситуациях число операций алгоритма огромно, более того, чаще всего оно даже точно не определено и задается какими-нибудь параметрами. В этих случаях использование полного перебора вариантов для решения задачи о построении и исследовании графа алгоритма практически нереально.