Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ANALIZ_ALGOR.doc
Скачиваний:
5
Добавлен:
21.08.2019
Размер:
2.31 Mб
Скачать

2. Основы построения графа алгоритма

При построении графа алгоритма никаких существенных ограничений на вид переменных и операций не накладывается. Переменными могут быть числа, буквы алфавита, логические переменные, матрицы, массивы и т.д., операциями – любые арифметические, логические, матричные операции и т.п. Предполагается, что число входов и выходов (аргументов и результатов) каждой операции алгоритма в терминах выбранных переменных фиксировано и не зависит от общего числа всех операций алгоритма.

Множеству операций алгоритма, реально выполняемых при заданных входных данных, ставится во взаимно однозначное соответствие множество вершин графа. Если аргумент одной операции есть результат выполнения другой операции, то соответствующие вершины образуют ребро, направленное из той вершины, откуда берется результат.

Вершины графа, отвечающие операциям ввода (входным данным), не будут иметь входящих дуг, а операциям вывода – выходящих. При этом совсем не обязательно, чтобы одному и тому же входному данному соответствовала одна входная вершина (одна операция ввода). Число подобных операций может выбираться, исходя из конкретных условий. Аналогично с операциями вывода. В тех случаях, когда изображение графа является достаточно громоздким, возможно не изображать входные и выходные вершины, считая их положение ясным по умолчанию.

Описанный граф – граф информационной зависимости реализации алгоритма при фиксированных входных данных [Воев], который для удобства далее называется графом алгоритма.

Граф алгоритма , где V — множество вершин графа, а E — множество его ребер, является ориентированным ациклическим мультиграфом (в мультиграфе не допускаются петли, но допускаются кратные ребра).

Пример 10. Необходимо вычислить значение выражения

. (100)

Порядок выполнения операций в правой части выражения однозначно не определен: например, произведение можно вычислить на первом шаге, а можно после нахождения значения . Существует и множество других вариантов, некоторые из которых представлены в следующей таблице 8.1. Операции на одном шаге могут выполняться одновременно (параллельно), сами шаги выполняются последовательно.

Таблица 8.1-

Последовательность операций

Очевидно, что графы, отвечающие различным последовательностям операций для рассматриваемого примера (рис.8.1), являются изоморфными.

Рис.8.1

По существу, в (100) фиксирован не один алгоритм, а несколько математически эквивалентных.

Пример 20. Исследовать различные способы вычисления суммы

. (150)

В точной арифметике операция сложения обладает свойством коммутативности и ассоциативности. Очевидно, что общее число различных способов вычисления выражения (150) при больших будет очень значительным. Какой способ выбрать? С точки зрения точных вычислений все они эквивалентны. Но в условиях влияния ошибок округления появляются значительные различия. Рассмотрим две возможных реализации вычисления (150) при :

  • схема последовательного суммирования:

,

которой соответствует граф

  • схема сдваивания:

,

соответствующий граф которой:

Можно показать, что схема последовательного суммирования хуже по точности, чем схема сдваивания, примерно, в раз. Различия есть и в информационных связях между отдельными операциями. Хотя оба графа имеют одно и тоже число вершин и соответствуют одному и тому же вычисляемому выражению (150), эти графы не изоморфны (у них разные длины критических путей), перенос информации в соответствующих им схемах осуществляется принципиально различными способами. Как видно из первого графа, схема последовательного суммирования не имеет никаких параллельных ветвей вычислений. второй граф показывает наличие в схеме сдваивания большого числа информационно не связанных между собой, а значит имеющих возможность выполняться одновременно, операций.

Замечание. Графы алгоритмов примера 10 и схемы сдваивания примера 20 очевидно являются изоморфными, хотя соответствуют решению совершенно разных задач. Алгоритмы с изоморфными графами обладают многими общими свойствами, по крайней мере, в той части, которая касается распределения информации при реализации алгоритмов (хотя призваны решать возможно совершенно разные задачи).

Замечание. Графы алгоритмов примеров 10, 20 имеют достаточно ясную и простую структуру, которая определяется не только самими алгоритмами. Во многом она зависит и от того, как конкретно на плоскости выбраны места расположения вершин. При случайном выборе расположения вершин структуру графа можно не разглядеть. Задачу выбора наилучшего расположения вершин можно пытаться решить, если число вершин невелико. При этом, возможно, придется использовать полный перебор рассматриваемых вариантов. В типичных ситуациях число операций алгоритма огромно, более того, чаще всего оно даже точно не определено и задается какими-нибудь параметрами. В этих случаях использование полного перебора вариантов для решения задачи о построении и исследовании графа алгоритма практически нереально.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]