Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Book-advanced-algorithms.pdf
Скачиваний:
298
Добавлен:
27.03.2016
Размер:
5.11 Mб
Скачать

1.2. ФОРМАЛЬНО ОБ АЛГОРИТМАХ. НЕСЛОЖНО О СЛОЖНОСТИ

67

Таким образом, сильно полиномиальные алгоритмы обобщают однородные полиномиальные алгоритмы. Хорошим примером сильно полиномиального алгоритма, который, по-видимому, нельзя привести к однородному виду (т. е. избавиться от делений и умножений), служит известный алгоритм Гаусса решения систем линейных уравнений.

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

1.2.5Полиномиальность и эффективность

Может ли полиномиальный алгоритм быть неэффективным? Разумеется, может, если в полиномиальной оценке времени его работы t(n) C nk либо мультипликативная константа C, либо показатель k чрезмерно велики.

Опыт показывает, что такое случается крайне редко, и подавляющее большинство полиномиальных алгоритмов для естественных задач удовлетворяет оценке t(n) 10 n3. В тех же немногих случаях, когда полиномиальный алгоритм оказывается малопригодным с практической точки зрения, это обстоятельство всегда стимулирует бурные исследования по построению на его основе действительно эффективного алгоритма, что, как правило, приводит к интересным самим по себе побочным следствиям. Хрестоматийным примером такого рода может служить метод эллипсоидов для линейного программирования [Kha79], стимулировавший бурное развитие целого направления ([Kar84]), получившего название «метод внутренней точки» и занявшего в настоящее время лидирующие позиции в разработке наиболее эффективных алгоритмов для задач линейного программирования большой размерности.

68

Глава 1. АЛГОРИТМЫ И ИХ СЛОЖНОСТЬ

Кстати, одна из самых известных современных открытых проблем в теории алгоритмов (и вообще математики) заключается в ответе на вопрос: «существует ли сильно полиномиальный алгоритм для задачи линейного программирования?» ([Sma00]).

Упражнение 1.2.1. Посмотрите на каждый из приведенных ранее алгоритмов и определите, является ли он полиномиальным, сильно полиномиальным или псевдополиномиальным?

Может ли неполиномиальный алгоритм быть эффективным? Ответ утвердительный, по меньшей мере, по трем причинам. Во-первых, может случиться так, что примеры, на которых время работы алгоритма велико, настолько редки, что вероятность обнаружить хотя бы один из них на практике пренебрежимо мала. В математических терминах это означает, что алгоритм полиномиален в среднем относительно любого «разумного» вероятностного распределения и, по-видимому, под эту категорию попадает симплексметод (см. [Схр91]).

Во-вторых, многие псевдополиномиальные алгоритмы являются эффективными, когда возникающие на практике числовые параметры не слишком велики.

Наконец, субэкспоненциальные алгоритмы, время работы которых, например, имеет вид O(nc log log log n), при всех разумных длинах входа n могут быть весьма практически эффективными.

Но в заключение еще раз подчеркнем, что примеров задач, на которых нарушается основополагающее равенство

«полиномиальность»=«эффективность»

крайне мало по сравнению с числом примеров, на которых оно блестяще подтверждается.

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

1.2. ФОРМАЛЬНО ОБ АЛГОРИТМАХ. НЕСЛОЖНО О СЛОЖНОСТИ

69

индексации: после проведения каких-либо действий с некоторой ячейкой процессор («головка») может перейти лишь в одну из «соседних» ячеек. Машины Тьюринга удобны при рассмотрении комбинаторных задач с небольшим количеством числовых параметров, а также (в силу своей структурной простоты) для теоретических исследований.

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