Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книги / TURIN / ЛЕКЦИИ9.DOC
Скачиваний:
77
Добавлен:
10.12.2013
Размер:
363.01 Кб
Скачать

9.5. Вычислительная сложность алгоритмов

Итак, методы решения многих задач математики носят алгоритмический характер. Для задач, имеющих практический интерес, ищут именно разрешающие алгоритмы. Уточнение понятия алгоритма позволило выявить алгоритмически неразрешимые проблемы, к которым прежде всего относятся рассмотренные нами проблема разрешимости для логики предикатов, проблема самоприменимости для машин Тьюринга, проблема тождества слов и др.

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

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

Поиск эффективных алгоритмов для решения задач дискретной математики привел к одной из важнейших ее проблем - к решению вопроса о возможности исключения перебора вариантов в комбинаторных алгоритмах.

В самом широком смысле эффективность алгоритма связана со всеми вычислительными ресурсами, необходимыми для его работы. Однако обычно под наиболее эффективным понимается наиболее "быстрый" алгоритм.

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

Оценка сложности алгоритмов и создание эффективных алгоритмов - одна из важнейших задач современной дискретной математики.

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

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

Из курса математического анализа известно, что функция f(n)есть О(g(n)), если существует константа с такая, что|f(n)|c(g(n))для всехn0.

Полиномиальным алгоритмом (или алгоритмом полиномиальной временной сложности) называется алгоритм, у которого временная сложность равна О(Р(n)), где Р(n) - некоторая полиномиальная функция от входной длиныn. Алгоритмы, для временной сложности которых не существует такой оценки, называются экспоненциальными.

Задача считается труднорешаемой, если для нее не существует разрешающего полиномиального алгоритма.

Рассмотрим оценки зависимости времени работы алгоритмов сложности, равной n, n3, 2n,от размеров входной информации (табл.9.2), а также оценки максимальной размерности задачи, решаемой за один час (табл.9.3). Из последней таблицы видно, что повышение быстродействия машины не дает существенного роста размерности разрешимых задач, если алгоритм имеет экспоненциальную сложность.

Табл.9.2

Размер-

ность n

Функция

временной

сложности

10

20

50

60

n

0,00001

секунд

0,00002

секунд

0,0005

секунд

0,0006

секунд

n3

0,001

секунд

0,008

секунд

0,125

секунд

0,216

секунд

2n

0,001

секунд

1,0

секунд

35,7

дней

366

столетий

Табл.9.3

Функция временной сложности

Современная

ЭВМ

ЭВМ, в 100 раз более быстрая

ЭВМ, в 1000 раз более быстрая

n

N1

100N1

1000N1

n3

N2

4,64N2

10N2

2n

N3

N3+6,64

N3+9,97

Многие прикладные задачи могут быть сформулированы в терминах теории графов. Однако при решении реальных задач характеристики соответствующих графов (например, число вершин nи число реберm) весьма велики, и их анализ возможен лишь с привлечением суперЭВМ.

Задача поиска эффективных алгоритмов в теории графов имеет большое практическое значение. Поэтому в заключение дадим краткий обзор временной сложности комбинаторных алгоритмов на графах.

Задачи теории графов можно классифицировать следующим образом:

1) задачи, для которых имеются алгоритмы сложности О(n+m);

2) задачи, для которых известны алгоритмы сложности О(Р(n+m)), где Р - нелинейный полином;

3) задачи, для которых известны только алгоритмы экспоненциальной сложности, но про которые нельзя сказать, что для них нет алгоритмов полиномиальной сложности;

4) задачи, которые могут быть решены лишь с использованием алгоритма экспоненциальной сложности.

Разбиение задач на первые три класса зависит от мастерства математика. Однако задачи четвертого класса принципиально нельзя отнести к первым трем классам, поскольку они включают в себя экспоненциальные процедуры, например просмотр всех подграфов исходного графа.

К четвертому классу относится задача перечисления всех циклов графа. Это объясняется тем, что у полного n-вершинного графа число циклов длиныiравно, т.е. общее число циклов составляет.

К первому классу относятся следующие задачи: отыскание остовного дерева графа; нахождение минимального пути в орграфе или минимального маршрута в графе; нахождение эйлерового цикла. Для решения этих задач построены алгоритмы, имеющие сложность О(n+m).

Второй класс в настоящее время включает в себя такие задачи: нахождение матрицы связности; нахождение минимального пути в нагруженном графе методом Форда-Беллмана (сложность алгоритма О(n3).

Третий класс содержит следующие задачи: о существовании в графе гамильтонова цикла (задача коммивояжера); об определении изоморфизма данного графа G1какому-нибудь подграфуG2; не относящуюся непосредственно к теории графов, но фундаментальную задачу о выполнимости формулы логики высказываний, находящейся в КНФ, и многие другие задачи. Для решения этих задач не существует полиномиальных алгоритмов, хотя не кажется безусловным, что их решение возможно лишь с помощью экспоненциальных алгоритмов. Для многих задач этого класса справедливо следующее свойство сводимости: существование полиномиального алгоритма для решения одной из них дало бы полиномиальный алгоритм для решения другой. В современной дискретной математике третий класс задач является предметом пристального изучения.

Соседние файлы в папке TURIN