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

Вопросы

  1. Что называется внутренним параллелизмом алгоритма?

  2. Достоинства и недостатки использования внутреннего параллелизма алгоритма.

  3. Каким образом имеет смысл располагать вершины графа алгоритма в случае, когда алгоритм содержит операторы цикла? Привести пимеры.

  4. В чем состоит основной недостаток графа алгоритма при произвольном расположнении и нумерации вершин этого графа?

Литература

  1. Воеводин В.В. Параллельные вычисления / В.В.Воеводин, Вл.В.Воеводин. — СПб.: БХВ-Петербург, 2002. — 608 с.

  2. Харари Ф. Теория графов / Ф.Харари; пер.с англ. В.П.Козырева. — М.: Мир, 1973. — 300 с.

  3. Уилсон Р. Введение в теорию графов / Р.Уилсон. — М.: Мир, 1977. — 207 с.

  4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. — М.: Мир, 1978. — 432 с.

  5. Новиков Ф.А. Дискретная математика для программистов / Ф.А.Новиков. — СПб.: Питер, 2006. — 364 с.

  6. Иванов Б.Н. Дискретная математика. Алгоритмы и программы / Б.Н.Иванов. — М.: Лаборатория Базовых Знаний, 2001. — 288с.

Лекция 13. Временные развертки План

  1. Основная проблема анализа алгоритма с использованием соответствующего графа

  2. Вектор временной развертки, обобщенной временной развертки

  3. Время реализации алгоритма

1. Основная проблема анализа алгоритма с использованием соответствующего графа

Среди множества всех ориентированных графов графы алгоритмов выделяются тем, что являются ациклическими. В теоретическом плане это их отличие по существу единственное. Любой ориентированный ациклический граф можно считать графом некоторого алгоритма, если отождествить его вершины с какими-то операциями, согласовав при этом дуги графа с передачей информации от операции к операции. Тогда можно было бы отождествить множество исследуемых алгоритмов с множеством всех ориентированных ациклических графов и приступить к изучению структуры таких графов. Однако здесь есть очень большое «НО». Большинство задач на графах принадлежит к NP-полным задачам, время их решения, как правило, экспоненциально зависит от числа вершин. В графах реальных алгоритмов число вершин огромно. Если учесть, что нашей целью является уменьшение времени, требуемого для работы алгоритма, то затрачивать на анализ алгоритма времени больше, чем на его непосредственное выполнение, даже без учета параллелизма, не имеет смысла.

Рассмотрим в качестве примера следующую ситуацию. Предположим, что ставится задача о выборе эффективной по времени реализации заданного алгоритма на некоторой многопроцессорной вычислительной системе. Так как алгоритм известен, то тем самым определена вся совокупность подлежащих выполнению операций. Если фиксирована вычислительная система, то известно как число процессоров, так и время реализации каждой из операций на каждом из процессоров. Допустим, что система имеет неограниченную память, и все вспомогательные операции, в том числе, любые пересылки данных, осуществляются мгновенно. Вопрос: можно ли на данной вычислительной системе реализовать заданный алгоритм за заданное время? Для графа поставленный выше вопрос сведется к следующему: существует ли для данного ориентированного графа такая топологическая сортировка, у которой число групп и число вершин в каждой группе не превосходит заданных чисел? Данная задача является NP-сложной.

Значит использование графов для анализа алгоритмов приводит к такой колоссальной вычислительной сложности их исследования???

Эти неутешительные выводы вытекают из предположения о произвольной структуре графов алгоритмов. Если допустить, что граф алгоритма является произвольным, то записать соответствующий алгоритм можно, лишь записав независимо друг от друга все операции и связи между ними. Длина записи в этом случае окажется пропорциональной числу операций. В практической деятельности не приходится иметь дело с большими алгоритмами подобного рода, в первую очередь именно потому, что их невозможно записать в компактном виде. Поэтому используемые в действительности алгоритмы нельзя отнести к произвольным. Они обладают рядом характерных отличий, связанных, например, с существованием периодически повторяемых участков вычислений. Следовательно, есть основания предполагать, что изучая реальные алгоритмы и выделяя их специфику, удастся избежать NP-сложности соответствующих больших задач.

Изучая алгоритмы, мы ориентируемся, главным образом, на те из них, которые содержат очень большое число операций. Процесс исследования таких алгоритмов целесообразно автоматизировать и использовать для этой цели вычислительную технику. Прежде, чем это делать, необходимо каким-то образом поставить в соответствие выполняемым операциям числовые множества, т.е. ввести некоторые системы координат и приписать каждой вершине определенные координаты. Тогда числовые координаты будут приписаны также дугам графов. После этого уже можно говорить об использовании ЭВМ для анализа структуры алгоритмов.

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