- •Введение
- •1. Грамматики, автоматы и контекстно-свободные языки
- •If выражение then if выражение then другой_оператор else другой_оператор
- •2. Грамматики, машины тьюринга и перечислимые языки
- •3. Теория алгоритмов и рекурсивных функций
- •4. Теория сложности
- •Мы определяем ее через
- •5. Упражнения
- •Рекомендуемая литература
- •Содержание
4. Теория сложности
До сих пор мы делили проблемы в общих чертах на разрешимые и неразрешимые. Теперь мы рассмотрим разрешимые проблемы с точки зрения их сложности. При этом сложность означает затраты ресурсов (времени, памяти и т.д.), которые расходуются для решения задачи в зависимости от ее объема.
Мы рассматриваем фиксированный класс детерминированных машин Тьюринга (односторонних – двусторонних, одноленточных – многоленточных), которые завершают работу при любом входном слове. Пусть T машина Тьюринга с входным алфавитом из этого класса. Функция timeT: определяет количество шагов вычисления timeT(w), которое требуется машине T для обработки входного слова w вплоть до завершения работы. Класс TIME(f), где f: – отображение, состоит из всех формальных языков L, которые могут приниматься (детерминированной) машиной Тьюринга T из рассмотренного класса, при timeT (w) f (w), w*.
Определим теперь класс формальных языков, которые могут быть приняты в полиномиальное время:
P =.
При этом безразлично, какой класс детерминированных машин Тьюринга мы используем. Если язык может быть принят за полиномиальное время с помощью двусторонней детерминированной машины Тьюринга T1 с несколькими лентами, то и он может быть принят также в полиномиальное время с помощью односторонней детерминированной машины Тьюринга T2 с одной лентой (машина T2 требует, в общем случае, больше шагов вычисления, чем T1).
Распространим теперь эти определения на фиксированные классы недетерминированных машин Тьюринга, причем мы также допускаем, что рассмотренные машины Тьюринга завершают работу не для всех входных данных. Функция timeT: * теперь измеряет минимальное количество шагов вычисления timeT (w), которое требуется машине Тьюринга T для входного слова w*. В случае, если машина Тьюринга T для w*не может завершить расчет, мы полагаем, timeT (w) = 0. Класс NTIME (f), где f: – отображение, снова состоит из всех формальных языков L, которые могут приниматься (недетерминированной) машиной Тьюринга T из рассмотренного класса, при timeT (w) f (w), w*.
Определим теперь класс формальных языков, которые могут приниматься за недетерминированное полиномиальное время:
NP = .
Ясно, что выполняется P NP. Неизвестно, однако, является ли это включение правильным? Эта проблема называется проблемой P = NP и часто рассматривается как важнейший открытый вопрос теоретической информатики.
Пусть L, L’ * – формальные языки. Тогда L’ называют полиномиально сводимым на L и обозначают L’ L, тогда и только тогда, если существует тотальная и за полиномиальное время вычислимая с помощью детерминированной машины Тьюринга функция q: * *, такая, что для всех w* справедливо:
wL’ q (w)L
Очевидно, справедлив следующий результат:
Из L’ L и L P (соответственно L NP) следует также L’ P (соответственно L’ NP).
Формальный язык L называется NP-трудным тогда и только тогда, когда все языки L’ NP можно полиномиально свести к L, то есть если для всех L’ NP справедливо: L’ L. Формальный язык L называется NP‑полным тогда и только тогда, когда он лежит в NP и является NP‑трудным.
Предложение 4.1. Пусть L является NP-полным. Тогда имеет место:
L P P NP
Доказательство. Пусть L P и L’ NP. Так как язык L NP-трудный, то имеет место L’ L. Из этого следует, что L’ P. Так как L’ был выбран произвольно, то, следовательно, P = NP.
Таким образом, каждому для доказательства того, что P = NP следует показать, что его «излюбленная» NP-полная «проблема» лежит в P. Первой сложностью является, конечно, нахождение какой-либо NP-полной проблемы. Мы покажем, что проблема выполнимости в логике высказываний («Является ли данная формула логики высказываний выполнимой?») является NP-полной. Для формализации этой проблемы мы должны кодировать атомарные формулы и вместе с тем множество всех формул логики высказываний. Тем самым мы определяем формальный язык SAT всех выполнимых формул логики высказываний.
Предложение 4.2. Язык SAT лежит в NP.
Доказательство. Недетерминированная машина Тьюринга T может распознать выполнимые формулы следующим образом: она устанавливает, какие атомарные формулы встречаются в формуле, недетерминированным образом предлагает одну подстановку для этих атомарных формул с булевыми значениями (из множества 2k возможных подстановок для k атомарных формул) и рассчитывает булевы значения формулы для выбранной подстановки. Теперь очевидно, что представленная формула лежит в SAT тогда и только тогда, когда, по крайней мере, одно из этих недетерминированных вычислений дает булево значение true. Каждое из этих вычислений выполняется за полиномиальное время, так как количество атомарных формул не превышает длину заданной формулы.
Доказательство предложения показывает кое-что очень характерное. Недетерминированная машина Тьюринга может рассматриваться как механизм, который проверяет данное предложение решения проблемы на предмет его корректности. Временная сложность недетерминированной машины Тьюринга может рассматриваться как затраты времени на то, чтобы там проверить предложение на корректность.
Предложение 4.3. Язык SAT является NP-трудным (и вместе с тем NP‑полным).
Доказательство. Пусть L лежит в NP. Тогда существует недетерминированная, полиномиально ограниченная по времени машина Тьюринга T, которая принимает L. Машина Тьюринга T обладает односторонней, потенциально бесконечной лентой, ячейки памяти которой пронумерованы как 0,1,2,.... Пусть она модифицирована таким образом, что головка чтения-записи также может оставаться стационарной и что если она достигает однажды заключительного состояния q, она в q остается, ничего не изменяя: (q,A) = {q,A,S) для всех A. Пусть p – полином, ограничивающий время вычислений машины T. Через вышеупомянутые модификации мы достигаем, что любое вычисление машины T для входных данных длины n может быть прервано в точности после p(n) прямых переходов.
Пусть T = (Q,,,,qo,F), где = {e,Zo,A1,..,Am} и Q = {q0, q1,…,qk}. Для доказательства предложения мы будем для входного слова w* конструировать формулу логики высказываний F (w), так что имеет место:
w L F (w) – выполнима.
Формула логики высказываний F(w), w = n содержит следующие атомарные формулы:
(1) zust t,q], 0 t p n), qQ.
Замещение zust t,q] значением true означает, что машина T после t шагов находится в состоянии q.
(2) pos [t,i], 0 t p n); 0 i p(n).
Замещение pos [t,i] значением true означает, что головка чтения-записи T после t шагов находится в ячейке памяти i.
(3) band [t,i,A], 0 t p(n), 0 i p(n), A.
Замещение band [t,i,A] значением true означает, что после t шагов ячейка памяти i занята символом A.
Для доказательства мы используем формулу Gx1,...,xr, которая содержит атомарные формулы x1,...,xr и для которых имеет место:
G x1,..., xr = true для единственного i, 1 i r, xi замещается на true.