Avvio delle carte del solutore SAT


24

Voglio fare un primo solutore SAT. Conosco la competizione SAT e la conferenza SAT, e ci sono così tanti articoli su questo argomento. Sono un antipasto, un antipasto sopraffatto. Dove dovrei iniziare? Alla fine voglio spingere lo stato dell'arte. Voglio un consiglio di esperti su come iniziare, in modo da non perdere troppo tempo con il necessario. Grazie molto.


6
Hai già implementato l'algoritmo DPLL? Hai messo a punto e perfezionato l'implementazione in modo che funzioni estremamente velocemente?
Jukka Suomela,

5
The Handbook of Satisfiability - amazon.co.uk/… (forse controlla una biblioteca, il costo è piuttosto alto).
MGwynne,

1
@Jukka: commento -> risposta?
Suresh Venkat,

4
Non sono d'accordo con Jukka. Perché reinventare la ruota? Non c'è motivo di ripetere ciò che MiniSAT fornisce già open source. Se sei interessato ad aggiungere al framework CDCL, la tua aggiunta mostrerà prestazioni MiniSAT potenziate. Inoltre, DPLL da solo non è sufficiente; sono stati apportati molti miglioramenti. Fondamentalmente, segui la risposta di Mikolas!
Huck Bennett,

1
Vedi anche la domanda correlata cstheory.stackexchange.com/q/1988
András Salamon,

Risposte:


18

Un'eccellente panoramica per principianti è fornita dal seguente articolo del 2009.

Esistono diversi modi per entrare negli aspetti tecnici. Puoi persino iniziare con la carta originale Davis-Putnam. È estremamente chiaro e ha esempi dettagliati. Quando abbiamo discusso delle ottimizzazioni di SAT in un corso, abbiamo scoperto che alcuni possono immaginare che siano già lì. Il documento di Davis-Logeman-Loveland è (credo) meno istruttivo, ma è così breve che potresti anche leggerlo.

Ci possono essere modi per recuperare il ritardo sugli sviluppi dei prossimi 50 anni. Consiglierei le diapositive delle lezioni. Solo la ricerca di "DPLL" farà apparire molti tutorial. Se li sfogli, sono sicuro che la nebbia si schiarirà, in una certa misura. Ci sono anche molti sondaggi utili. Il documento Zhang-Malik è un buon punto di partenza. Ci sono molti articoli nel Manuale di Soddisfazione che potresti trovare utili.

Secondo il suggerimento di Mikolaos. Il codice MiniSAT è pulito e di dimensioni gestibili. Puoi giocarci. Ci sono molti altri solutori che puoi provare. CryptoMiniSat è anche abbastanza pulito. Dovresti anche consultare il lavoro di Armin Biere , che scrive solutori SAT e scrive di scrivere solutori SAT.


17

Suggerisco innanzitutto di capire quali tecniche hanno davvero avanzato i solutori, per le quali suggerirei la seguente panoramica e analisi .

Quindi consiglierei di scaricare il codice sorgente di minisat e leggere la sua descrizione .

Ovviamente potrebbe essere individuale, ma ho trovato molto utile esaminare il codice sorgente.


9

Se sei sopraffatto da tutto il lavoro che c'è là fuori, perché non inizi a fingere che nessuno abbia mai lavorato sul problema prima? Se il tuo obiettivo è quello di costruire un risolutore SAT competitivo, sarà un viaggio abbastanza lungo. Iniziando a giocare senza "controllare le soluzioni", per così dire, hai più da guadagnare che da perdere.

nmnm

nm


9

Inizia con un buon documento di indagine. È facile attaccare l'argomento frammentariamente e confondersi con nomi diversi in letteratura per le stesse tecniche e lo stesso nome usato per tecniche diverse. È anche facile rievocare vecchie battaglie algoritmiche (ad esempio elenchi testa a testa vs due letterali osservati per le implementazioni DPLL, ad esempio) se non sai quale sia lo stato dell'arte.

Risolutore di soddisfazione di Gomes, et. al. ti darà la superficie ruvida della terra.

Migliorare i solutori SAT Usando le tecniche all'avanguardia di Manthey ti avvicinerai al presente.

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.