218 Глава 6. Основы теории сложности вычислений
Иными словами, любой алгоритм, решающий эту задачу,
можно существенно ускорить, т. е. отыскать алгоритм намного
меньшей асимптотической сложности. Следует сразу отметить,
что задача, о которой идет речь в этой теореме, выглядит до-
вольно искусственно, и, по-видимому, ничего подобного не про-
исходит для задач, реально возникающих на практике. Тем не
менее, теорема об ускорении не позволяет нам определить об-
щее математическое понятие «оптимального» алгоритма, при-
годное для всех задач, поэтому развитие теории эффективных
алгоритмов пошло другим путем. Именно, одним из централь-
ных понятий этой теории стало понятие класса сложности.
Так называется совокупность тех алгоритмических задач, для
которых существует хотя бы один алгоритм с теми или ины-
ми сложностными характеристиками. Мы рассмотрим следу-
ющие классы сложности: P, N P, RP, ZPP, BPP, PSPACE,
EX PT IME, PCP; читателю, интересующемуся более глобаль-
ной картиной сложностной иерархии, мы рекомендуем обра-
титься к [Joh90, Aar07].
Для формальных определений классов сложности обыч-
но рассматривают
6
не произвольные алгоритмы, а алгоритмы
для так называемых задач разрешения (decision problem), когда
требуется определить, принадлежит или нет некоторый эле-
мент некоторому множеству. Учитывая необходимость кодиро-
вания данных, подаваемых на вход машине Тьюринга, эти за-
дачи абсолютно эквивалентны задачам распознавания языков,
когда на некотором алфавите Σ рассматривается подмноже-
ство слов L ⊂ Σ
∗
, и для произвольного слова l ∈ Σ
∗
нужно
определить, принадлежит ли оно языку L.
Таким образом, каждый язык L определяет одну из задач
разрешения, для которых мы сейчас более формально опреде-
лим классы временной сложности.
Определение 6.1.7. Язык L ⊂ Σ
∗
принадлежит классу
6
О причинах будет говориться в следующих разделах.