Um problema CNF SAT NP é difícil quando o número total (mas não a largura) das cláusulas de 3 ou mais termos é delimitado acima por uma constante? Que tal especificamente quando existe apenas uma dessas cláusulas?
Um problema CNF SAT NP é difícil quando o número total (mas não a largura) das cláusulas de 3 ou mais termos é delimitado acima por uma constante? Que tal especificamente quando existe apenas uma dessas cláusulas?
Respostas:
Vale ressaltar que o problema se torna difícil para NP quando a restrição é relaxada um pouco.
Com um número fixo de cláusulas que também são de tamanho limitado, o número médio de literais em uma cláusula é tão próximo de 2 quanto se deseja, considerando uma instância com variáveis suficientes. Como você aponta, existe um limite superior simples que é polinomial se o tamanho da cláusula for delimitado.
Por outro lado, se o número médio de literais por cláusula for pelo menos para alguns fixos (mas arbitrariamente pequenos) , o problema é difícil para o NP.ϵ > 0
Isso pode ser mostrado reduzindo o 3SAT a esse problema, introduzindo novas cláusulas com 2 literais que são trivialmente satisfatórios. Suponha que haja cláusulas na instância 3SAT; para reduzir o tamanho médio da cláusula para , basta adicionar novas cláusulas com duas literais. Como é fixo e positivo, a nova instância é de tamanho polinomial.( 2 + ϵ ) m ( 1 - ϵ ) / ϵ ϵ
Essa redução também mostra que mesmo a versão em que as cláusulas "grandes" estão restritas a 3 literais é difícil para o NP.
O caso restante é quando as poucas cláusulas grandes não são de tamanho limitado; cada cláusula grande parece dificultar o problema. Veja o artigo da SODA 2010 de Pǎtraşcu e Williams para o caso de duas cláusulas: eles argumentam que se isso puder ser feito em tempo sub-quadrático, teríamos melhores algoritmos para o SAT. Pode haver uma extensão de seu argumento para mais cláusulas, o que forneceria evidências de que seu limite superior não pode ser melhorado (módulo alguma forma da hipótese do tempo exponencial).
OK, entendi. A resposta é não. Isso pode ser resolvido em poli-tempo. Para cada cláusula de 3 ou mais termos, selecione um literal e defina-o como verdadeiro. Em seguida, solucione o problema restante de 2 sat. Se alguém fornecer uma solução, essa é uma solução para o problema geral. Como o número de cláusulas de 3 ou mais termos é fixo (digamos c), se todas essas cláusulas tiverem tamanho <= m, isso será executado em O (m ^ (c) * n). O (m ^ c) para percorrer cada seleção possível, vezes O (n) para resolver o problema restante de 2 sat.