Como usar um antigo solucionador SAT para descobrir um novo, como é feito no The Golden Ticket?

7

No livro de Lance Fortnow, The Golden Ticket , ele menciona que uma vez que você tenha um algoritmo de tempo polinomial para um problema completo de NP, poderá usá-lo para encontrar um algoritmo mais rápido. Você pode me dizer como isso é feito? E uma vez feito isso, você pode usar o novo algoritmo para descobrir um ainda mais rápido e infinito , até um ponto fixo. Abaixo está a citação exata do livro:

"Então, o que você pergunta a um gênio que lhe concederá apenas um desejo?" disse o consultor.

"Não faço ideia", respondeu Steve.

"Você pede um gênio que conceda todos os seus desejos."

A proverbial lâmpada acendeu na cabeça de Steve. Ele sabia que devia haver algum algoritmo melhor para resolver problemas de camarilha por aí, mas ele não conseguia descobrir sozinho. Mas ele possuía o gênio, o código Tsinghua, que podia pesquisar um número exponencial de possibilidades rapidamente. Então, ele escreveu um programa que usava as rotinas de Tsinghua para procurar um algoritmo melhor para problemas de NP. Ele obteve permissão para usar os recursos de computação do National Center for Supercomputing Applications (NCSA), baseado na Universidade de Illinois. Após semanas de tempo de processamento, seu trabalho valeu um pouco, encontrando um novo algoritmo que teve uma melhoria de 5% em relação ao código Tsinghua - bom o suficiente para um trabalho de pesquisa, mas não o suficiente para causar um impacto real.

Seu conselheiro simplesmente disse: "Tente novamente usando o novo código".

Então, Steve usou seu novo código para encontrar um algoritmo ainda mais rápido para problemas de NP. Algumas semanas depois, ele teve uma melhora de 20%.

Mas seu conselheiro não ficou impressionado. "Tente de novo."

Steve respondeu: "Por que simplesmente não configuro o computador para continuar automaticamente tentando com o novo código encontrado?"

O conselheiro deu aquele olhar, o olhar que dizia a um aluno que ele havia alcançado a iluminação, ou pelo menos havia percebido o óbvio.

Steve voltou ao seu escritório e iniciou o complicado processo de escrever código que procura um código mais rápido e, em seguida, usou esse código mais rápido para encontrar um código ainda mais rápido e continuar esse processo até que não encontrasse mais melhorias.

Agora concentre-se no SAT. O MiniSAT é um solucionador rápido de SAT, embora não a ponto de ter tempo polinomial.

Como usar o MiniSAT para descobrir mecanicamente um novo solucionador SAT?

Zirui Wang
fonte
@ZiruiWang - Encontrar um algoritmo a partir de um conjunto fixo de algoritmos candidatos geralmente é uma Σ2/Pi2problema em vez de um problema NP-completo. O autor poderia ter dito isso (eles podem ser resolvidos por solucionadores SAT aninhados). Como alternativa, o autor poderia ter como objetivo otimizar determinados parâmetros dos algoritmos existentes.
DCTLib
O conjunto de algoritmos é infinito. Você só poderá encontrar um algoritmo usando um solucionador SAT se corrigir o espaço de pesquisa. O espaço de pesquisa será o espaço dos algoritmos candidatos. Nidificação SAT solucionadores de encontrar novos algoritmos é descrito neste artigo: link.springer.com/article/10.1007%2Fs10009-012-0249-7
DCTLib
"Encontrar um algoritmo" é essencialmente síntese. Está no Sigma_2, porque queremos verificar (1) se existe uma implementação que (2) para todas as entradas, a implementação funcione corretamente. A parte após (2) é essencialmente um problema de co-NP. Você pode chamá-lo aninhado, como sempre que um solucionador SAT encontra uma solução, o outro solucionador SAT é usado para verificá-lo. Quando esse não é o caso, as cláusulas são adicionadas à primeira. O primeiro solucionador SAT repete seu trabalho até que o segundo esteja bom com a solução. Portanto, um solucionador SAT é chamado em um procedimento SAT.
DCTLib
11
@DCTLib A suposição é de que a P = NP, assim colapsos PH e tudo o que simplifica a P.
Zirui Wang
@DCTLib, muitos ótimos comentários por lá. Deseja escrever uma resposta completa?
DW

Respostas:

7

Na verdade, provavelmente você não pode usar um solucionador SAT para encontrar outro, a menos que algo surpreendente aconteça.

Se P = NP, você pode. Se P = NP, a hierarquia polinomial entra em colapso (ou seja, P = PH); portanto, existe um algoritmo de tempo polinomial para todos os problemas no PH . O problema de perguntar se existe um algoritmo de resolução mais rápida do SAT é essencialmente umΣ2problema, que faz parte da hierarquia polinomial; se a hierarquia polinomial entrar em colapso, existe um algoritmo de tempo polinomial para cada problema no PH e, portanto, para todo problema noΣ2. Assim, você pode, em tempo polinomial, procurar um melhor solucionador SAT, se P = NP.

Mas a maioria dos pesquisadores espera que P não seja igual a NP, portanto, essa afirmação provavelmente é discutível e improvável que seja útil na prática.

Se P não for igual a NP, esse raciocínio não funcionará. De fato, muitos pesquisadores esperam queΣ2 é ainda mais difícil que o NP (existem problemas em Σ2que são mais difíceis do que qualquer problema no NP), portanto, seria surpreendente se houvesse uma redução simples para expressar o problema "encontre um solucionador SAT mais rápido" como uma instância do SAT. Em particular, os solucionadores de SAT podem resolver o SAT ou qualquer outro problema no NP - mas, em qualquer caso, apenas problemas no NP. Se (como suspeitamos)Σ2 é mais difícil que o NP, os solucionadores SAT não conseguem resolver problemas Σ2.

Claro, na verdade não sabemos. É sempre possível que a sabedoria convencional esteja errada e que amanhã descobrimos que P é realmente igual a NP. Seria uma grande surpresa, mas não podemos descartá-la completamente.

O Golden Ticket está tentando compreender melhor por que os teóricos da complexidade consideram o problema P vs NP tão importante e tão fundamental. Parte disso envolve explorar mundos contrafactuais e suposições contrafatuais que suspeitamos serem provavelmente falsas, para ver quais seriam suas conseqüências.


Ou, para explicar de uma maneira diferente:

O problema é que encontrar um melhor solucionador SAT é um tipo de declaração. A declaração é da formaAx.P(A,x), Onde P(A,x) é a afirmação de que A é rápido e resolve corretamente a instância SAT x. Esses tipos de declarações não podem ser resolvidos com um solucionador SAT. Os solucionadores SAT podem resolver problemas da formax.Q(x). Contudo, declarações são mais difíceis do que afirmações. Esta é basicamente a diferença entreΣ2 e NP.

DW
fonte
Por que um solucionador SAT não pode resolver uma Σ2declaração? Ainda é tempo exponencial. A dificuldade está na codificação.
Zirui Wang
@ZiruiWang, editei o quarto parágrafo da minha resposta para explicar o porquê de forma mais explícita. Os solucionadores de SAT não podem resolver todos os problemas de tempo exponencial (a menos que NP = EXPTIME, que suspeitamos que não seja o caso).
DW
11
@ZiruiWang Você provavelmente pode codificar muitos problemas como SAT, mas eles podem não ter comprimento polinomial. O SAT atinge casos difíceis de entrada polinomial, portanto, executá-lo em uma entrada de tamanho exponencial provavelmente não funcionará.
jmite