Solucionador SAT Multicore


12

Estou tentando resolver um problema de SAT de 5k de cláusulas de 25k. Como está em funcionamento há uma hora (precosat) e gostaria de resolver os maiores depois, estou procurando um SAT-Solver com vários núcleos.

Como parece haver muitos SAT-Solvers, estou bastante perdido.

Alguém poderia me indicar o melhor para o meu caso?

Eu também ficaria feliz se alguém pudesse me dar o tempo aproximado (se possível).


1
Você está procurando programas prontos? Então este não é o melhor site para perguntar. Você quer aprender sobre resolução de SAT? Bem-vinda! Você diz que pesquisou; o que você achou? O que te confunde?
Raphael

Bem, observei o número de threads relacionados ao SAT em vários fóruns do StackExchange. Acabei tendo também que escolher entre CS teórico e CS (e escolher o mais tarde). Onde eu deveria ter pedido um programa de nomes prontos? Obrigado.
multsatsolv

Respostas:


8

Veja os resultados da competição SAT 2013 deste ano . Com base nesses resultados, definitivamente experimente o Lingeling . Plingeling é a variante paralela.

Se você não precisa provar a insatisfação (talvez saiba que a instância é satisfatória e precisa conhecer uma tarefa que a torne SAT), você também pode tentar métodos de pesquisa local.


Obrigado. Vou dar uma olhada no (P) Lingeling. Além disso, não tenho idéia se é satisfatório (embora seja melhor, caso contrário, estou preso).
multsatsolv

+1. Com base em nossa experiência, certamente é o que você deve tentar primeiro (pelo menos se você tiver um único computador com vários núcleos e muita memória). Para obter ainda mais desempenho, tente encontrar um cluster de computação com o maior número possível de nós e execute várias instâncias de lingeling (ou plingeling) com diferentes sementes aleatórias.
Jukka Suomela

4

Não tenho certeza da existência de solucionadores de satélites multicore práticos, mas existem alguns projetos e documentos:

Também achei esse ponto interessante: você pode executar um solucionador de satélites regular várias vezes com sementes diferentes no mesmo problema em paralelo, para obter um efeito de vários núcleos.

Edit: Incorporando meus comentários sobre a idéia de vzn aqui:

k2k


(Eu também ficaria feliz se alguém pudesse me dar o tempo aproximado (se possível) para resolver um problema SAT das variáveis ​​Y das cláusulas X.)

mnm,n


Obrigado pelos links. Vou ler alguns deles. Espero que meu problema não seja muito difícil de resolver.
precisa

@multsatsolv depende do problema. Também depende da codificação. Os solucionadores SAT podem lidar com diferentes codificações do mesmo problema de maneira diferente. E diferentes solucionadores de SAT podem ser melhores em uma codificação que em outra; não existe ciência para isso (bem, existe, mas vale a pena tentar entender, na rápida evolução dos solucionadores SAT): a única coisa a fazer é tentar diferentes combinações de codificações e solucionadores.
Realz Slaw

3

Na verdade, existe uma maneira muito simples de transformar qualquer solucionador SAT em uma versão paralela porque o SAT é embaraçosamente paralelo no sentido a seguir.

2nn2n


nk

3
Essa abordagem não parece funcionar muito bem na prática. Para instâncias positivas, a abordagem a seguir normalmente é muito melhor se você tiver muitos computadores: simplesmente execute, por exemplo, trabalhando com a mesma instância, mas com sementes aleatórias diferentes e aguarde até que um dos solucionadores encontre uma solução.
Jukka Suomela

n

1
@ vzn: A abordagem que você sugeriu. Para ver por que não funciona muito bem, experimente com instâncias do mundo real e compare com o que sugeri. :) Sua abordagem faria muito sentido se você estivesse lidando com um algoritmo de pesquisa de retrocesso ingênuo, mas os solucionadores SAT modernos são muito mais do que a pesquisa de retrocesso ingênuo.
Jukka Suomela

bem, mas você pode explicar em palavras qual é o problema ? sua abordagem pode funcionar para instâncias satisfatórias, mas não levaria exatamente o mesmo tempo em paralelo para descobrir uma instância insatisfatória, não importa quantas instâncias separadas sejam executadas? se não, talvez haja uma ref citar na subj ...
vzn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.