Выполнимость формулы Теорема 1 (SAT ∈ NPC). Задача о выполнимости булевых формул является NP-полной. Доказательство. SAT ∈ NP: Проверка того, что набор значений является выполняющим, занимает полиномиальное время. Выполнимость формулы A ∈ NP ⇒ A ≤P SAT Доказательство. • N — недетерминированная машина Тьюринга для A с временем работы nk • Запишем конфигурации машины в таблице nk × nk # # # q0 w1 w2 ... t wn ... t # # # начальная конфигурация вторая конфигурация # nk -ая конфигурация окно # Выполнимость формулы A ∈ NP ⇒ A ≤P SAT Доказательство. • Q — состояния N • Γ — алфавит N • C = Q ∪ Γ ∪ {#} • По входу w построим формулу φ = φcell & φstart & φmove & φaccept Переменные: xi,j,s для всех i, j ∈ [1, nk ] и s ∈ C – xi,j,s = 1 ⇔ ячейка (i, j) содержит символ s hW i ˘ ˘ φcell = i,j∈[1,nk ] ( s∈C xi,j,s ) & ( s,t∈C,s6=t (xi,j,s ∨ xi,j,t )) φstart = x1,1,# & x1,2,q0 & x1,3,w1 & · · · & x1,n+2,wn & x1,nk −1,t & x1,nk ,# W φaccept = i,j∈[1,nk ] xi,j,qaccept φmove = Выполнимость формулы A ∈ NP ⇒ A ≤P SAT Пример 2 (Допустимые окна). • δ(q1 , a) = {(q2 , b, L)} • δ(q1 , b) = {(q2 , c, L), (q2 , c, R)} a a q1 # a b a q2 a # a b a q2 q1 a a b # # b q2 q1 b b b b b q1 c b c b b b b x1,n+3,t & · · · & Выполнимость формулы A ∈ NP ⇒ A ≤P SAT Лемма 3. • Верхняя строка таблицы — начальная конфигурация • Каждое окно в таблице допустимо ⇒ Каждая строка таблицы — конфигурация, легально следующая за конфигурацией из предыдущей строки Доказательство. • Ячейка верхней конфигурации не граничит с «ячейкой состояния» – Останется без изменения в нижней конфигурации • Ячейка верхней конфигурации граничит с «ячейкой состояния» – Окно с центром в «ячейке состояния» – Содержимое окна согласовано с функцией перехода Выполнимость формулы A ∈ NP ⇒ A ≤P SAT Доказательство. ¯ φmove = (окно (i, j) допустимо) 1≤i<nk ,1<j<nk окно (i, j) допустимо: _ (xi,j−1,a1 & xi,j,a2 & xi,j+1,a3 & xi+1,j−1,a4 & xi+1,j,a5 & xi+1,j+1,a6 ) a1 a2 a3 a4 a5 a6 допустимое окно Выполнимость формулы A ∈ NP ⇒ A ≤P SAT Приведение занимает полиномиальное время. • Γ — алфавит N • C = Q ∪ Γ ∪ {#} • Таблица nk × nk • |C| переменных на ячейку — не зависит от n ⇒ O(n2k ) переменных 2 • Q — состояния N Выполнимость формулы A ∈ NP ⇒ A ≤P SAT Приведение занимает полиномиальное время. φcell = " # ¯ _ ¯ = ( xi,j,s ) & ( (xi,j,s ∨ xi,j,t )) i,j∈[1,nk ] s,t∈C,s6=t s∈C |φcell | = O(n2k ) — формула фиксированного размера для каждой ячейки φstart = x1,1,# &x1,2,q0 &x1,3,w1 &· · ·&x1,n+2,wn & x1,nk ,# x1,n+3,t &· · ·&x1,nk −1,t & |φstart | = O(nk ) W φaccept = i,j∈[1,nk ] xi,j,qaccept |φaccept | = O(n2k ) ˘ φmove = 1≤i<nk ,1<j<nk (окно (i, j) допустимо) |φmove | = O(n2k ) Выполнимость формулы A ∈ NP ⇒ A ≤P SAT Приведение занимает полиномиальное время. • Размер формулы — O(n2k ) • Каждый компонент формулы состоит из множества практически одинаковых фрагментов • Формула может быть построена за полиномиальное время Следствие 4 (3SAT ∈ NPC). Задача о выполнимости 3-КНФ является NP-полной. Доказательство. • 3SAT ∈ NP • Приведем формулу из доказательства Теоремы Кука – Левина к 3КНФ 3