Démarrage des papiers du solveur SAT


24

Je veux faire un premier solveur SAT. Je connais le concours SAT et la conférence SAT, et il y a tellement de papiers sur ce sujet. Je suis un démarreur, un démarreur débordé. Par où dois-je commencer? Finalement, je veux pousser l'état de l'art. Je veux des conseils d'experts sur la façon de commencer, afin de ne pas perdre trop de temps sur les éléments non essentiels. Merci beaucoup.


6
Avez-vous déjà implémenté l'algorithme DPLL? Avez-vous affiné et peaufiné votre implémentation pour qu'elle fonctionne extrêmement rapidement?
Jukka Suomela

5
Le manuel de satisfaction - amazon.co.uk/… (peut-être vérifier une bibliothèque, le coût est assez élevé).
MGwynne

1
@Jukka: commentaire -> réponse?
Suresh Venkat

4
Je ne suis pas d'accord avec Jukka. Pourquoi réinventer la roue? Il n'y a aucune raison de refaire ce que MiniSAT fournit déjà en open source. Si vous êtes intéressé à ajouter au framework CDCL, votre ajout se traduira par des performances MiniSAT améliorées. De plus, le DPLL en lui-même ne suffit pas; de nombreuses améliorations ont été apportées. Fondamentalement, suivez la réponse de Mikolas!
Huck Bennett

1
Voir aussi la question connexe cstheory.stackexchange.com/q/1988
András Salamon

Réponses:


18

Un excellent aperçu pour débutant est donné par l'article suivant de 2009.

Il y a plusieurs façons d'entrer dans les aspects techniques. Vous pouvez même commencer avec le papier Davis-Putnam original. Il est extrêmement clair et contient des exemples détaillés. En discutant des optimisations SAT dans un cours, nous avons découvert que quelques-uns peuvent imaginer qu'ils sont déjà là. Le document de Davis-Logeman-Loveland est (je pense) moins instructif, mais il est si court que vous pourriez aussi bien le lire.

Il y a plusieurs façons de rattraper son retard sur les développements des 50 prochaines années. Je recommanderais des diapositives de cours. La simple recherche de «DPLL» lancera de nombreux didacticiels. Si vous les parcourez, je suis sûr que la brume disparaîtra - dans une certaine mesure. Il existe également de nombreuses enquêtes utiles. Le document Zhang-Malik est un bon point de départ. Plusieurs articles du Handbook of Satisfiability peuvent vous être utiles.

J'appuie la suggestion de Mikolaos. Le code MiniSAT est propre et de taille gérable. Vous pouvez jouer avec. Il existe plusieurs autres solveurs que vous pouvez essayer. CryptoMiniSat est également assez propre. Vous devriez également consulter le travail d' Armin Biere , qui écrit des solveurs SAT et écrit sur l'écriture de solveurs SAT.


17

Je suggère d'abord de comprendre quelles techniques ont vraiment avancé les solveurs, pour lesquelles je suggère la vue d'ensemble et l'analyse suivantes .

Ensuite, je recommanderais de télécharger le code source de minisat et de lire sa description .

Cela peut bien sûr être individuel, mais j'ai trouvé que la recherche du code source était la plus précieuse.


9

Si vous êtes submergé par tout le travail qui existe, pourquoi ne commencez-vous pas par prétendre que personne n'a travaillé sur le problème auparavant? Si votre objectif est de créer un solveur SAT compétitif, ce sera un voyage assez long. En commençant simplement à jouer sans «vérifier les solutions», pour ainsi dire, vous avez plus à gagner qu'à perdre.

nmnm

nm


9

Commencez avec un bon papier d'enquête. Il est facile d'attaquer le sujet au coup par coup et d'être confondu par différents noms dans la littérature pour les mêmes techniques et le même nom utilisé pour différentes techniques. Il est également facile de reconstituer d'anciennes batailles algorithmiques (listes d'occurrences vs listes tête-biche contre deux littéraux surveillés pour les implémentations DPLL par exemple) si vous ne savez pas quel est l'état de l'art.

Solveurs de satisfaction par Gomes, et. Al. vous donnera la configuration approximative de la terre.

Améliorer les solveurs SAT en utilisant des techniques de pointe de Manthey vous rapprochera du présent.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.