66 Глава 1. Алгоритмы и их сложность
работы t(n) ≤ C · n
k
либо мультипликативная константа C, ли-
бо показатель k чрезмерно велики.
Опыт показывает, что такое случается крайне редко, и по-
давляющее большинство полиномиальных алгоритмов для
естественных задач удовлетворяет оценке t(n) ≤ 10 · n
3
. В тех
же немногих случаях, когда полиномиальный алгоритм ока-
зывается малопригодным с практической точки зрения, это
обстоятельство всегда стимулирует бурные исследования по
построению на его основе действительно эффективного алго-
ритма, что, как правило, приводит к интересным самим по
себе побочным следствиям. Хрестоматийным примером такого
рода может служить метод эллипсоидов для линейного про-
граммирования [Kha79], стимулировавший бурное развитие
целого направления ([Kar84]), получившего название «метод
внутренней точки» и занявшего в настоящее время лидирую-
щие позиции в разработке наиболее эффективных алгоритмов
для задач линейного программирования большой размерности.
Кстати, одна из самых известных современных откры-
тых проблем в теории алгоритмов (и вообще математики)
заключается в ответе на вопрос: «существует ли сильно поли-
номиальный алгоритм для задачи линейного программирова-
ния?» ([Sma00]).
Упражнение 1.2.1. Посмотрите на каждый из приведенных
ранее алгоритмов и определите, является ли он полиномиаль-
ным, сильно полиномиальным или псевдополиномиальным?
Может ли неполиномиальный алгоритм быть эффектив-
ным? Ответ утвердительный, по меньшей мере, по трем при-
чинам. Во-первых, может случиться так, что примеры, на ко-
торых время работы алгоритма велико, настолько редки, что
вероятность обнаружить хотя бы один из них на практике пре-
небрежимо мала. В математических терминах это означает, что
алгоритм полиномиален в среднем относительно любого «ра-
зумного» вероятностного распределения и, по-видимому, под
эту категорию попадает симплекс-метод (см. [Схр91]).