Teorema de Cook-Levin - Cook–Levin theorem

Na teoria da complexidade computacional , o teorema de Cook-Levin , também conhecido como teorema de Cook , afirma que o problema de satisfatibilidade booleano é NP-completo . Ou seja, está em NP , e qualquer problema em NP pode ser reduzido em tempo polinomial por uma máquina de Turing determinística ao problema de satisfatibilidade booleana.

O teorema é nomeado após Stephen Cook e Leonid Levin .

Uma conseqüência importante desse teorema é que se existe um algoritmo de tempo polinomial determinístico para resolver a satisfatibilidade booleana, então todo problema NP pode ser resolvido por um algoritmo de tempo polinomial determinístico. A questão de saber se tal algoritmo para satisfatibilidade booleana existe é, portanto, equivalente ao problema P versus NP , que é amplamente considerado o problema não resolvido mais importante na ciência da computação teórica.

Contribuições

O conceito de NP-completude foi desenvolvido no final dos anos 1960 e no início dos anos 1970 em paralelo por pesquisadores na América do Norte e na URSS . Em 1971, Stephen Cook publicou seu artigo "A complexidade dos procedimentos de prova de teoremas" em anais de conferências do recém-fundado ACM Symposium on Theory of Computing . O artigo subsequente de Richard Karp , "Redutibilidade entre problemas combinatórios", gerou um interesse renovado no artigo de Cook ao fornecer uma lista de 21 problemas NP-completos . Cook e Karp receberam um Prêmio Turing por este trabalho.

O interesse teórico em NP-completude também foi aprimorado pelo trabalho de Theodore P. Baker, John Gill e Robert Solovay que mostraram, em 1975, que resolver problemas NP em modelos de máquina Oracle requer tempo exponencial. Ou seja, existe um oráculo A tal que, para todos os deterministas classes de complexidade de tempo subexponencial T, a classe de complexidade relativizada NP A não é um subconjunto de T A . Em particular, para este Oracle, P Um  ≠ NP Uma .

Na URSS, um resultado equivalente ao de Baker, Gill e Solovay foi publicado em 1969 por M. Dekhtiar. Posteriormente, o artigo de Leonid Levin , "Problemas de busca universal", foi publicado em 1973, embora tenha sido mencionado em palestras e submetido para publicação alguns anos antes.

A abordagem de Levin era ligeiramente diferente das de Cook e Karp, pois ele considerava os problemas de busca , que exigem encontrar soluções em vez de simplesmente determinar a existência. Ele forneceu 6 desses problemas de pesquisa NP-completos, ou problemas universais . Além disso, ele encontrou para cada um desses problemas um algoritmo que o resolve em tempo ótimo (em particular, esses algoritmos são executados em tempo polinomial se e somente se P = NP ).

Definições

Um problema de decisão está em NP se puder ser resolvido por um algoritmo não determinístico em tempo polinomial .

Uma instância do problema de satisfatibilidade booleana é uma expressão booleana que combina variáveis booleanas usando operadores booleanos .

Uma expressão é satisfatória se houver alguma atribuição de valores verdade às variáveis ​​que torna toda a expressão verdadeira.

Ideia

Dado qualquer problema de decisão em NP, construa uma máquina não determinística que o resolva em tempo polinomial. Então, para cada entrada para aquela máquina, construa uma expressão booleana que calcula se aquela entrada específica é passada para a máquina, se a máquina funciona corretamente e se a máquina para e responde "sim". Então a expressão pode ser satisfeita se e somente se houver uma maneira de a máquina funcionar corretamente e responder "sim", então a satisfatibilidade da expressão construída é equivalente a perguntar se a máquina responderá ou não "sim".

Prova

Esquematizado aceitar computação pela máquina M .

Esta prova é baseada na fornecida por Garey e Johnson.

Existem duas partes para provar que o problema de satisfatibilidade booleana (SAT) é NP-completo. Uma é mostrar que o SAT é um problema NP. A outra é mostrar que todo problema NP pode ser reduzido a uma instância de um problema SAT por uma redução muitos-um em tempo polinomial .

SAT está em NP porque qualquer atribuição de valores booleanos a variáveis ​​booleanas que supostamente satisfaça a expressão dada pode ser verificada em tempo polinomial por uma máquina de Turing determinística. (As declarações verificáveis em tempo polinomial por uma máquina de Turing determinística e solucionáveis em tempo polinomial por uma máquina de Turing não determinística são totalmente equivalentes, e a prova pode ser encontrada em muitos livros didáticos, por exemplo, Introdução de Sipser à Teoria da Computação , seção 7.3 ., bem como no artigo da Wikipedia sobre NP ).

Agora suponha que um determinado problema em NP possa ser resolvido pela máquina de Turing não determinística M  = ( Q , Σ,  sF , δ) , onde Q é o conjunto de estados, Σ é o alfabeto dos símbolos de fita, s  ∈  Q é o estado inicial, F  ⊆  Q é o conjunto de estados de aceitação, e δ ⊆ (( Q  \  F ) × Σ) × ( Q  × Σ × {−1, +1}) é a relação de transição. Suponha ainda que M aceite ou rejeite uma instância do problema no tempo p ( n ) onde n é o tamanho da instância e p é uma função polinomial.

Para cada entrada, I , especificamos uma expressão booleana que é satisfeita se e somente se a máquina M aceita I .

A expressão booleana usa as variáveis ​​definidas na tabela a seguir. Aqui, q  ∈  Q , - p ( n ) ≤  i  ≤  p ( n ), j  ∈ Σ e 0 ≤  k  ≤  p ( n ) .

Variáveis Interpretação pretendida Quantos?
T i, j, k Verdadeiro se a célula da fita i contiver o símbolo j na etapa k do cálculo. O ( p ( n ) 2 )
Oi , k Verdadeiro se o M ' cabeça de leitura / gravação s é a célula de fita i no passo k da computação. O ( p ( n ) 2 )
Q q, k Verdadeiro se M estiver no estado q na etapa k do cálculo. O ( p ( n ))

Defina a expressão booleana B como a conjunção das subexpressões na tabela a seguir, para todos - p ( n ) ≤  i  ≤  p ( n ) e 0 ≤  k  ≤  p ( n ) :

Expressão Condições Interpretação Quantos?
A célula da fita i inicialmente contém o símbolo j Conteúdo inicial da fita. Para i > n -1 ei <0, fora da entrada real , o símbolo inicial é o símbolo especial padrão / em branco. O ( p ( n ))
  Estado inicial de M . 1
  Posição inicial da cabeça de leitura / gravação. 1
jj ′ No máximo um símbolo por célula da fita. O ( p ( n ) 2 )
Pelo menos um símbolo por célula da fita. O ( p ( n ) 2 )
jj ′ A fita permanece inalterada, a menos que seja gravada. O ( p ( n ) 2 )
¬ Q q, k ∨ ¬ Q q ′, k qq ′ Apenas um estado de cada vez. O ( p ( n ))
¬ H i, k ∨ ¬ H i ′, k eueu ′ Apenas uma posição da cabeça por vez. O ( p ( n ) 3 )
k < p ( n ) Transições possíveis na etapa de cálculo k quando a cabeça está na posição i . O ( p ( n ) 2 )
Deve terminar em um estado de aceitação, o mais tardar na etapa p ( n ). 1

Se houver um cálculo de aceitação para M na entrada I , então B é satisfatório atribuindo T i, j, k , H i, k e Q i, k suas interpretações pretendidas. Por outro lado, se B é satisfazível, então há um cálculo de aceitação para M na entrada I que segue as etapas indicadas pelas atribuições às variáveis.

Existem O ( p ( n ) 2 ) variáveis ​​booleanas, cada uma codificável no espaço O (log  p ( n )) . O número de cláusulas é O ( p ( n ) 3 ), então o tamanho de B é O (log ( p ( n )) p ( n ) 3 ). Portanto, a transformação é certamente uma redução muitos-um em tempo polinomial, conforme necessário.

Complexidade

Enquanto o método acima codifica uma máquina de Turing não determinística em complexidade , a literatura descreve abordagens mais sofisticadas em complexidade . O resultado quase linear apareceu pela primeira vez sete anos após a publicação original de Cook.

Versões generalizadas de satisfatibilidade booleana têm codificações com limites ainda mais fortes: fórmulas booleanas quantificadas (QBF's) codificam máquinas de Turing não determinísticas em complexidade polinomial para o limite de espaço da máquina (em oposição ao limite de tempo), e fórmulas booleanas quantificadas de dependência (DQBF's) codificam não -máquinas de Turing determinísticas em uma complexidade logarítmica ideal para o limite de espaço da máquina.

Consequências

A prova mostra que qualquer problema em NP pode ser reduzido em tempo polinomial (de fato, espaço logarítmico é suficiente) a uma instância do problema de satisfatibilidade booleana. Isso significa que se o problema de satisfatibilidade booleana pudesse ser resolvido em tempo polinomial por uma máquina de Turing determinística , então todos os problemas em NP poderiam ser resolvidos em tempo polinomial e, portanto, a classe de complexidade NP seria igual à classe de complexidade P.

O significado de NP-completude ficou claro pela publicação em 1972 do artigo de referência de Richard Karp , "Reducibility between combinatorial problems", no qual ele mostrou que 21 problemas combinatórios e teóricos de grafos diversos , cada um infame por sua intratabilidade, são NP -completo.

Karp mostrou que cada um de seus problemas era NP-completo reduzindo outro problema (já mostrado como NP-completo) a esse problema. Por exemplo, ele mostrou que o problema 3SAT (o problema de satisfatibilidade booleana para expressões na forma normal conjuntiva com exatamente três variáveis ​​ou negações de variáveis ​​por cláusula) é NP-completo, mostrando como reduzir (em tempo polinomial) qualquer instância de SAT para uma instância equivalente de 3SAT. (Primeiro você modifica a prova do teorema de Cook-Levin, de modo que a fórmula resultante esteja na forma normal conjuntiva, então você introduz novas variáveis ​​para dividir cláusulas com mais de 3 átomos. Por exemplo, a cláusula (A ∨ B ∨ C ∨ D) pode ser substituído pela conjunção de cláusulas (A ∨ B ∨ Z) ​​∧ (¬Z ∨ C ∨ D), onde Z é uma nova variável que não será usada em nenhum outro lugar da expressão. pode ser preenchido; por exemplo, A pode ser substituído por (A ∨ A ∨ A) e (A ∨ B) pode ser substituído por (A ∨ B ∨ B)).

Garey e Johnson apresentaram mais de 300 problemas NP-completos em seu livro Computers and Intratability: A Guide to the Theory of NP-Completeness , e novos problemas ainda estão sendo descobertos dentro dessa classe de complexidade.

Embora muitas instâncias práticas de SAT possam ser resolvidas por métodos heurísticos , a questão de saber se existe um algoritmo de tempo polinomial determinístico para SAT (e, consequentemente, todos os outros problemas NP-completos) ainda é um famoso problema não resolvido, apesar de décadas de intenso esforço por teóricos da complexidade, lógicos matemáticos e outros. Para obter mais detalhes, consulte o artigo P versus problema NP .

Referências