- •Введение
- •1. Грамматики, автоматы и контекстно-свободные языки
- •If выражение then if выражение then другой_оператор else другой_оператор
- •2. Грамматики, машины тьюринга и перечислимые языки
- •3. Теория алгоритмов и рекурсивных функций
- •4. Теория сложности
- •Мы определяем ее через
- •5. Упражнения
- •Рекомендуемая литература
- •Содержание
Мы определяем ее через
G(x1,...,xr xi xi x j
Формула F (w) имеет следующую структуру:
F(w) = R A U1 U2 E.
При этом R описывает граничные условия, A – начальную конфигурацию, E – определенное заключительное условие и U1, U2 – определенные условия перехода.
(i) R = R1 R2 R3 с
R1 = G (zust[ t,q0 ,…,zust[t,qk
(к моменту времени t T находится точно в одном состоянии),
R2 = G (pos[t,0],...,pos[t,p(n)])
(к моменту времени t головка чтения-записи машины T находится точно в одной ячейке памяти),
R3 = G (band[t,i,e], band[t,i,Zo], band[t,i,A1],…,band[t,i,Am])
(к моменту времени t ячейка памяти i занята точно одним символом из ).
(ii) Пусть w = x1,…,xn, xi. Тогда начальная конфигурация будет (в момент времени t = 0) описываться следующим образом:
A = zust[0,q0] pos[0,0]
band[0,0,Zo] band[0,i,xi] band[0,i,e].
(iii) E = zust[p(n),q].
Таким образом, условие E подтверждается, если машина T к моменту времени p(n) находилась в заключительном состоянии.
(iv) U1 и U2 описывают непосредственный переход T от момента времени t к моменту времени t+1. При этом U1 описывает ячейку памяти, над которой находится головка чтения-записи, в то время как U2 описывает другие ячейки памяти.
U 1 = zust[t,q]pos[t,i]band[t,i,A]
(zust[t+1,p] pos[t+1,i+D] band[t+1,i,B]),
при L= -1, R= +1 и S =0.
U2 = pos[t,i] band[t,i,A] band[t+1,i,A]).
Таким образом, существует точно одно замещение атомарных формул F(w), так что F(w) получает булево значение true, если R описывает последовательность из p(n)+1 конфигураций, которая представляет допустимое вычисление (гарантируемое посредством U1, U2) от начальной конфигурации (описываемой через A) к принимающей конфигурации (описываемой через E).
Время вычисления T связано полиномиально с длиной формулы F(w). Так как F (w) содержит полиномиально много (в зависимости от w= n) атомарных формул, то булево значение F(w) может быть рассчитано в полиномиальное время.
Язык SAT представляет сам по себе чрезвычайно важную проблему для практической информатики. Факт NP-полноты языка SAT показывает, что при сегодняшнем состоянии знаний, для того чтобы установить выполнимость формул логики высказываний, необходимо нереально большое время вычислений.
Формула логики высказываний лежит в формальном языке 3SAT (соответственно 2SAT) тогда и только тогда, если она записана в конъюнктивной нормальной форме, и каждый дизъюнкт содержит не более трех (соответственно двух) литералов. Через полиномиальную сводимость и также через доказательство того, что SAT 3SAT, показывают, что 3SAT также является NP-полным.
В отличие от этого 2SAT лежит в P потому, что существует только полиномиальное число различных дизъюнктов с двумя литералами, которые могут образовываться из атомарных формул x1,...,xn. Так как резольвента двух двухэлементных клаузелей снова является двухэлементной, тогда невыполнимость или выполнимость формулы в конъюнктивной нормальной форме с не более чем с двумя литералами на дизъюнкт может быть подтверждена в (детерминированное) полиномиальное время.
Теперь покажем полиномиальную сводимость языка 3SAT к проблеме теории графов СLIQUE. При этом пара (G, n), где G ненаправленный граф и n , лежит в СLIQUE тогда и только тогда, когда G содержит клику (т.е. максимальный полный подграф) величины n.
Предложение 4.4. СLIQUE является NP-полной.
Доказательство. Для заданной пары (G, n) в полиномиальное время может быть недетерминировано выбрано n-элементное подмножество множества узлов G и затем может быть проверено, представляет ли оно клику. Тем самым СLIQUE NP.
Теперь покажем, что СLIQUE является NP-трудной. Доказательство производится путем полиномиального сведения языка 3SAT к СLIQUE.
Пусть F – формула
(z11 z12 z13) ...(z n 1 z n 2 z n 3),
причем zij являются литералами над атомарными формулами x1, x2,... Этой формуле F сопоставляется теперь пара (G, n), где G граф, у которого
множество узлов V = {(i,j) | 1 i n, 1 j 3} и
множество ребер E = (i,j, (p,q) i p, zij zpq }.
Тогда следующие высказывания равносильны:
F выполнима через подстановку
в каждом дизъюнкте формулы F найдется литерал, который под действием получает значение true (например, как ,,…,)
Существуют литералы ,,…, так, что для pq справедливо:
Существуют n узлов в G (например (1,j1), (2,j2),…,(n,jn)), которые связаны попарно
G содержит клику величины n.
Так как каждая формула в 3SAT тривиальным образом эквивалентна формуле F вида
(z11 z12 z13) ... (z n1 z n2z n3)
и пару (G, n) можно получить из F в полиномиальное время, то мы показали тем самым, что СLIQUE является NP-трудной.
Без доказательства укажем еще некоторые NP-трудные проблемы.
(1) «РЮКЗАК» (англ.: KNAPSACK).
Дано: a1,...,an, b.
Спрашивается: Имеются ли индексы J 1,…, n с b
(2) ГАМИЛЬТОНОВ ЦИКЛ.
Дано: ненаправленный граф G = (V, E).
Спрашивается: содержит ли G гамильтонов цикл (т.е. цикл, содержащий все узлы)?
(3) ЗАДАЧА КОММИВОЯЖЕРА.
Дано: матрица M = (Mij) размерности n n «расстояний между n городами» и число k.
Спрашивается: имеется ли перестановка («кругосветное путешествие»), такая, что Mi i Mn k?
(4) ПРОБЛЕМА ПРИНАДЛЕЖНОСТИ СЛОВА ДЛЯ КОНТЕКСТНО-ЗАВИСИМОГО ЯЗЫКА.
Дано: контекстно-зависимая грамматика G = (, , P, S) и слово w*.
Спрашивается: wL{G}?
Проблемы (1), (2), (3) лежат в NP и являются, таким образом, NP-полными. Это до сих пор не показано относительно задачи (4). Задача (4), таким образом, может оказаться «ещё более трудной», чем NP-полные проблемы.