Eu me deparei com o algoritmo polinomial que resolve 2SAT. Eu achei desconcertante que o 2SAT esteja em P, onde todas (ou muitas outras) das instâncias do SAT são NP-Complete. O que torna esse problema diferente? O que o torna tão fácil (NL-Complete - ainda mais fácil que P)?
55
Respostas:
Aqui está uma explicação mais intuitiva e despretensiosa ao longo das linhas da resposta de MGwynne.
Com -SAT, você só pode expressar implicações de forma , onde e são literais. Mais precisamente, a cada -clause pode ser entendido como um par de implicações: e . Se você definir como true, deverá ser verdadeiro. Se você definir como falso, deverá ser falso. Tais implicações são diretas: não há escolha, você tem apenas2 a⇒b a b 2 l1∨l2 ¬l1⇒l2 ¬l2⇒l1 a b b a 1 possibilidade, não há espaço para a multiplicação de maiúsculas e minúsculas. Você pode apenas seguir cada possível cadeia de implicação, e veja se você nunca derivar tanto de e de : se você fizer isso por algum , então a fórmula 2-SAT é insatisfatível, caso contrário é satisfeita. É o caso de o número de possíveis cadeias de implicação estar polinomialmente limitado no tamanho da fórmula de entrada.¬l l l ¬l l
Com -SAT, você pode expressar implicações de forma , onde , e são literais. Agora você está com problemas: se você definir como verdadeiro, então ou deve ser verdadeiro, mas qual? Você tem que fazer uma escolha: você tem 2 possibilidades. Aqui é onde a multiplicação de casos se torna possível e onde a explosão combinatória surge.3 a⇒b∨c a b c a b c
Em outras palavras, o -SAT é capaz de expressar a presença de mais de uma possibilidade, enquanto o -SAT não possui essa capacidade. É precisamente essa presença de mais de uma possibilidade ( possibilidades no caso de SAT, possibilidades no caso de SAT) que causa a explosão combinatória típica de problemas de NP-completos.3 2 2 3 k−1 k
fonte
Considere a resolução em uma fórmula 2-SAT. Qualquer resolvente tem tamanho máximo de 2 (observe que se para cláusulas de comprimento e resp). O número de cláusulas de tamanho 2 é quadrático no número de variáveis. Portanto, o algoritmo de resolução está em P.n , m ≤ 2 n mn+m−2≤2 n,m≤2 n m
Quando você chega ao 3-SAT, pode obter resoluções cada vez maiores, para que tudo fique em forma de pêra :).
Tente traduzir um problema para 2-SAT. Como você não pode ter cláusulas de tamanho 3, não pode (em geral) codificar implicações envolvendo três variáveis ou mais, por exemplo, que uma variável é o resultado de uma operação binária em duas outras. Esta é uma enorme restrição.
fonte
Como Walter diz, as cláusulas do 2-SAT têm uma forma especial. Isso pode ser explorado para encontrar soluções rapidamente.
Na verdade, existem várias classes de instâncias SAT que podem ser decididas em tempo polinomial, e o 2-SAT é apenas uma dessas classes tratáveis . Existem três tipos amplos de razões para a rastreabilidade:
(Rastreabilidade estrutural) Qualquer classe de instâncias SAT em que as variáveis interagem de maneira semelhante a uma árvore pode ser resolvida em tempo polinomial. O grau do polinômio depende da largura máxima de instâncias na classe, onde a largura mede a distância que uma instância está de ser uma árvore. Mais precisamente, Marx mostrou que, se as instâncias têm largura submodular limitada, a classe pode ser decidida em tempo polinomial usando uma abordagem de dividir e conquistar.
(Rastreabilidade do idioma) Qualquer classe de instâncias SAT em que o padrão de variáveis verdadeiro-falso é "bom" pode ser resolvido em tempo polinomial. Mais precisamente, o padrão de literais define uma linguagem de relações, e Schaefer classificou as seis linguagens que levam à tratabilidade, cada uma com seu próprio algoritmo. 2-SAT forma uma das seis classes Schaefer.
(Rastreabilidade híbrida) Existem também algumas classes de instâncias que não se enquadram nas outras duas categorias, mas que podem ser resolvidas em tempo polinomial por outros motivos.
fonte
Se você entende o algoritmo do 2SAT, já sabe por que ele está em P - é exatamente isso que o algoritmo demonstra. Eu acho que esse quadrinho ilustra meu argumento. Como você já sabe por que o 2SAT está em P, o que você provavelmente quer saber é por que o 2SAT não é difícil para o NP.
Para entender por que o 2SAT não é difícil para o NP, você deve considerar como é fácil reduzir outros problemas no NP. Para obter uma compreensão intuitiva disso, veja como o SAT pode ser reduzido para 3SAT e tente aplicar as mesmas técnicas para reduzir o SAT para 2SAT. O 2SAT não é tão expressivo quanto o 3SAT e outras variantes do SAT.
fonte