Risolutore SAT multicore


12

Sto cercando di risolvere un problema SAT con 25k clausole 5k variabili. Dato che funziona da un'ora (precosat) e vorrei risolverne di più grandi in seguito, sto cercando un solutore SAT multi-core.

Dato che sembrano esserci molti solutori di SAT, sono abbastanza perso.

Qualcuno potrebbe indicarmi il migliore per il mio caso?

Sarei anche felice se qualcuno potesse darmi il tempo approssimativo (se possibile).


1
Stai cercando programmi già pronti? Quindi questo non è il miglior sito da chiedere. Vuoi conoscere il SAT-solving? Benvenuto! Dici di aver cercato; cosa hai trovato? Cosa ti confonde?
Raffaello

Bene, ho esaminato il numero di thread relativi a SAT su diversi forum StackExchange. Ho finito per scegliere anche tra CS teorico e CS (e scegliere il successivo). Dove avrei dovuto chiedere un programma pronto? Grazie.
multsatsolv,

Risposte:


8

Dai un'occhiata ai risultati di quest'anno concorso SAT 2013 . Sulla base di questi risultati, prova sicuramente Lingeling . Plingeling è la variante parallela di esso.

Se non hai bisogno di dimostrare insoddisfazione (forse sai che l'istanza è soddisfacente e devi solo conoscere un compito che lo rende SAT), puoi provare anche i metodi di ricerca locale.


Grazie. Dò un'occhiata a (P) Lingeling. Inoltre, non ho idea se sia soddisfacente (anche se è meglio, altrimenti sono bloccato).
multsatsolv,

+1. In base alla nostra esperienza, il plingeling è sicuramente quello che dovresti provare prima (almeno se hai un singolo computer con più core e molta memoria). Per prestazioni ancora maggiori, prova a trovare un cluster di elaborazione con il maggior numero possibile di nodi ed esegui più istanze di linging (o plingeling) con diversi seed casuali.
Jukka Suomela,

4

Non sono sicuro dell'esistenza di solutori solidi multicore pratici, ma ci sono alcuni progetti e documenti:

Ho anche trovato questo punto interessante: puoi eseguire un normale solutore satellitare più volte con diversi semi sullo stesso problema in parallelo, per ottenere un effetto multi-core.

Modifica: Incorporando i miei commenti sull'idea di vzn qui:

k2k


(Sarei anche felice se qualcuno potesse darmi il tempo approssimativo (se possibile) per risolvere un problema SAT delle variabili Y delle clausole X.)

mnm,n


Grazie per i collegamenti. Ne leggerò alcuni. Spero che il mio problema non sia troppo difficile da risolvere.
multsatsolv,

@multsatsolv dipende dal problema. Dipende anche dalla codifica. I solutori SAT possono gestire diverse codifiche dello stesso problema in modo diverso. E diversi solutori SAT potrebbero essere migliori con una codifica piuttosto che con un'altra; non c'è scienza per questo (beh, lo è, ma è assolutamente inutile cercare di capire, nell'evoluzione frenetica dei solutori SAT): l'unica cosa da fare è provare diverse combinazioni di codifiche e solutori.
Realz Slaw,

3

Esiste in realtà un modo molto semplice per trasformare qualsiasi risolutore SAT in una versione parallela perché SAT è imbarazzantemente parallelo nel senso seguente.

2nn2n


nk

3
Questo approccio non sembra funzionare troppo bene in pratica. Per i casi positivi il seguente approccio è in genere molto migliore se si dispone di molti computer: semplicemente eseguire ad esempio indugiando con la stessa istanza ma diversi semi casuali e attendere fino a quando uno dei solutori trova una soluzione.
Jukka Suomela,

n

1
@vzn: l'approccio che hai suggerito. Per capire perché non funziona troppo bene, provalo con le istanze del mondo reale e confrontalo con quello che ho suggerito. :) Il tuo approccio avrebbe molto senso se avessi a che fare con un ingenuo algoritmo di ricerca di backtracking, ma i moderni solutori SAT sono molto più che ingenui backtracking di ricerca.
Jukka Suomela,

bene ma puoi spiegare a parole qual è il problema ? il tuo approccio può funzionare per istanze soddisfacenti ok ma non ci vorrebbe esattamente lo stesso tempo in parallelo per scoprire un'istanza insoddisfacente, non importa quante istanze separate vengono eseguite? in caso contrario, forse c'è un riferimento da citare sul soggetto ...
vzn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.