Quelles sont les explications théoriques à la réussite pratique des solveurs SAT, et quelqu'un peut-il donner un aperçu et des explications de type "wikipedia"?
Par analogie, l' analyse lissée ( version arXiv ) de l'algorithme simplex explique très bien pourquoi elle fonctionne si bien dans la pratique, même si cela prend un temps exponentiel dans le pire des cas et est NP-puissant ( version arXiv ).
J'ai entendu parler un peu de choses comme les portes dérobées, la structure du graphe de clause et les transitions de phase, mais (1) je ne vois pas comment elles s'imbriquent pour donner une image plus grande (si c'est le cas), et (2) Je ne sais pas si cela explique vraiment pourquoi les solveurs SAT fonctionnent si bien, par exemple sur des instances industrielles. Aussi, quand il s'agit de choses comme la structure du graphe de clause: pourquoi les solveurs actuels sont-ils capables de tirer parti de certaines structures de graphe de clause?
Je ne trouve que les résultats concernant les transitions de phase partiellement satisfaisants à cet égard, du moins dans ma compréhension actuellement limitée. La littérature sur la transition de phase traite des instances de k-SAT aléatoire , mais cela explique-t-il réellement quelque chose à propos d'instances réelles? Je ne m'attends pas à ce que les instances réelles de SAT ressemblent à des instances aléatoires; devrais-je? Existe-t-il une raison de penser que les transitions de phase nous disent quelque chose, même intuitivement, sur des instances du monde réel, même si elles ne ressemblent pas à des instances aléatoires?
Des questions connexes qui aident, mais ne répondent pas complètement à ma question, en particulier à la demande de lier les éléments pour en faire une image cohérente:
la source
Réponses:
Je suppose que vous faites référence aux solveurs CDCL SAT sur des ensembles de données de référence tels que ceux utilisés dans le concours SAT . Ces programmes sont basés sur de nombreuses heuristiques et de nombreuses optimisations. Il y a eu de très bonnes introductions sur leur travail lors de l' atelier sur les fondements théoriques de la résolution appliquée du SAT à Banff en 2014 ( vidéos ).
Ces algorithmes sont basés sur l'algorithme de retour arrière DPLL qui tente de trouver une affectation satisfaisante en définissant des valeurs pour les variables et les retours arrière lorsqu'il détecte un conflit. Les gens ont examiné l’impact de ces heuristiques. Par exemple voir
Il semble que l’efficacité de ces solveurs SAT sur les benchmarks provienne principalement de deux heuristiques (et leurs variantes):
Il est bien connu que les preuves DPLL correspondent à des preuves en résolution. Sans CDCL, les seules preuves de résolution que nous puissions obtenir sont les preuves de résolution d'arborescence qui sont beaucoup plus faibles que les preuves de résolution générales.
Il y a des résultats qui montrent avec CDCL que nous pouvons obtenir n'importe quelle preuve de résolution générale. Cependant, il y a des réserves, ils ont besoin de nombreux redémarrages artificiels, ramifications artificielles et / ou prétraitements particuliers, de sorte qu'il n'est pas clair si ces programmes sont proches de ce que ces programmes font en pratique. Voir par exemple l'article suivant pour plus de détails:
CDCL coupe essentiellement des branches de l'espace de recherche. Il existe différentes manières de dériver une nouvelle clause savante d’un conflit. Idéalement, nous ajouterions un ensemble de clauses minimales qui impliqueraient le conflit, mais dans la pratique, cela peut être volumineux et coûter cher à calculer. Les principaux solveurs SAT suppriment souvent les clauses apprises régulièrement, ce qui est utile dans la pratique.
Intuitivement, on peut dire que cela tente de mettre en évidence des variables qui ont été systématiquement impliquées dans les conflits récents. Vous pouvez également y voir un moyen simpliste mais extrêmement économique de prédire quelles variables seront impliquées dans le prochain conflit. Donc, VSIDS se branche en premier sur ces variables. On peut affirmer que l’algorithme est essentiellement un algorithme rapide, trouver rapidement les conflits. Rapide est lié à un plus petit nombre de variables, ce qui signifie le blocage de grands sous-arbres de l'arbre de recherche. Mais c’est surtout de l’intuition, personne n’a formalisé cela très soigneusement pour le tester sur des ensembles de données SAT. Exécuter un solveur SAT sur l’un de ces ensembles de données n’est pas bon marché, encore moins le comparer aux décisions optimales (plus petite extension de l’affectation actuelle à des variables qui violeraient l’une des clauses). VSIDS dépend également des variables que nous modifions lors de chaque conflit. Il existe différentes façons de définir le moment où une variable est impliquée dans un conflit.
Certains résultats montrent que la mise en œuvre particulière de ces idées correspond à une centralité pondérée dans le temps des sommets dans les graphiques dynamiques.
Il est également suggéré d'exclure les instances contradictoires telles que celles basées sur des problèmes NP-hard, des primitives de cryptographie et des instances aléatoires (pour lesquelles les solveurs CDCL SAT ne sont pas bons), le reste des instances provenant d'éléments très bien structurés tels que la vérification de logiciels et de matériel, et d'une manière ou d'une autre. Les structures sont exploitées par les solveurs CDCL SAT (de nombreuses idées ont été mentionnées, comme les portes dérobées, les variables gelées, etc.), mais autant que je sache, ce sont pour la plupart des idées et ne constituent pas une preuve solide, théorique ou expérimentale, pour les corroborer. Je pense qu’il faudrait bien définir rigoureusement le problème et montrer que les instances sur lesquelles ces algorithmes fonctionnent bien ont la propriété, puis montrer que ces algorithmes exploitent ces propriétés.
Certaines personnes insistent pour que le ratio de clause et les seuils soient le seul jeu en ville. Cela est certainement faux, comme le sait quiconque est légèrement familiarisé avec le fonctionnement des solveurs SAT industriels ou ayant une connaissance de la complexité de la preuve. Dans la pratique, un solveur SAT fonctionne bien ou pas dans de nombreux cas, et le ratio de clause n’est que l’une des conséquences possibles. Je pense que l'enquête suivante est un bon point de départ pour en savoir plus sur les liens entre la complexité de la preuve, les solveurs SAT et la perspective:
De manière intéressante, même le phénomène de seuil est plus compliqué que la plupart des gens ne le pensent, Moshe Vardi a déclaré dans son discours " Transitions de phase et complexité de calcul " que le temps de traitement moyen de GRASP reste exponentiel pour les formules 3SAT aléatoires après le seuil, mais que l’exposant diminue (autant que possible). on ne sait pas à quelle vitesse cela diminue).
Pourquoi étudions-nous les solveurs SAT (en tant que théoriciens de la complexité)? Je pense que la réponse est la même que pour les autres algorithmes: 1. comparez-les, 2. trouvez leurs limites, 3. concevez-en de meilleurs, 4. répondez aux questions fondamentales de la théorie de la complexité.
Lors de la modélisation d'une heuristique, nous remplaçons souvent l'heuristique par le non-déterminisme. La question devient alors: est-ce un remplacement "juste"? Et ici, par juste, je veux dire à quel point le modèle nous aide à répondre à la question ci-dessus.
Lorsque nous modélisons un solveur SAT en tant que système de preuve, nous lui montrons en partie une limitation, car l'algorithme sera inefficace pour les instructions dont les limites sont inférieures dans le système de preuve. Mais il y a toujours un écart entre ce que l'algorithme trouve réellement et la preuve optimale dans le système de preuve. Nous devons donc montrer que l’inverse aussi, c’est-à-dire que l’algorithme peut trouver des preuves aussi bonnes que celles du système de preuve. Nous ne sommes pas près de répondre à cette question, mais la quantité d'heuristique remplacée par le non-déterminisme définit la proximité entre le modèle et le système de preuve. Je ne m'attends pas à ce que nous abandonnions complètement le remplacement de l'heuristique par le non-déterminisme, sinon nous obtiendrions des résultats d'automatisabilité qui ont des conséquences sur les problèmes ouverts en crypto, etc.
La question qui se pose lorsque l'on regarde un modèle devient alors: dans quelle mesure les modèles aident-ils à expliquer pourquoi le solveur SAT A est meilleur que le solveur B SAT? Dans quelle mesure aident-ils à développer de meilleurs solveurs SAT? SAT Solver trouve-t-il dans la pratique des preuves proches des preuves optimales dans le modèle? ... Nous devons également modéliser les exemples pratiques.
En ce qui concerne l’intuition selon laquelle les solveurs CDCL SAT "exploite la structure des instances pratiques" (quelle qu’elle soit), c’est l’intuition généralement acceptée, je pense. La vraie question est de donner une explication convaincante de ce que cela signifie et de démontrer que cela est vraiment vrai.
Voir aussi la réponse de Jakob Nordstrom pour des développements plus récents.
la source
Je tape ceci assez rapidement en raison de contraintes de temps sévères (et je n'ai même pas eu à répondre plus tôt pour la même raison), mais je pensais que j'essaierais au moins de donner ma part avec mes deux centimes.
Je pense que c'est une très bonne question et que j'ai passé pas mal de temps au cours des dernières années à examiner cela. (Divulgation complète: j'ai reçu une grande partie de mon financement actuel précisément pour tenter de trouver des réponses à des questions de ce type, puis potentiellement pour convertir des informations plus approfondies dans SAT en solutions plus efficaces pour résoudre les SAT.)
Si on devait donner une réponse en une phrase, alors je pense
est à peu près aussi bon qu'il obtient. Sauf que cela laisse plus de place à plus d'activité, surtout du côté théorique.
Certaines explications proposées (non mutuellement exclusives), qui ont déjà été discutées dans d’autres réponses et commentaires, sont
À partir de la fin (e), il semble y avoir une certaine confusion concernant les transitions de phase. La réponse courte ici est qu’il n’ya aucune raison de penser que le rapport clauses-variables est pertinent pour les problèmes appliqués ou les problèmes combinatoires théoriques (ou instances construites). Mais pour une raison quelconque, il est assez courant de penser, dans la partie appliquée de la communauté SAT, que le ratio clauses / variables devrait être en quelque sorte une mesure généralement pertinente. Le rapport clause / variable est très pertinent pour k-SAT aléatoire, mais pas pour les autres modèles.
Mon sentiment est que les coulisses (a) ont été une explication populaire, mais je n’ai personnellement pas eu la preuve convaincante que cela explique ce qui se passe dans la pratique.
La complexité paramétrée (b) fournit une belle théorie sur certains aspects de la SAT, et une hypothèse très intéressante est que les instances de SAT sont faciles car elles ont tendance à être "proches d'un îlot de tractabilité". Je pense que cette hypothèse ouvre de nombreuses pistes de recherche passionnantes. Comme indiqué dans certaines réponses, il existe de nombreux liens entre (a) et (b). Cependant, à ce jour, rien ne prouve que la complexité paramétrée soit trop en corrélation avec ce qui se passe dans la pratique. En particulier, il semble que les instances traitables puissent être très, très difficiles en pratique, et les instances dépourvues de petites portes dérobées peuvent encore être très faciles.
L'explication qui me semble la plus crédible pour les instances industrielles est (c), à savoir que la structure (graphique) des formules CNF en question devrait être corrélée à la performance SAT pratique. L'idée ici est que les variables et les clauses d'instances industrielles peuvent être regroupées dans des communautés bien connectées avec peu de connexions entre elles, et que les solveurs SAT exploitent en quelque sorte cette structure. Malheureusement, il semble assez difficile de cerner le problème de manière plus rigoureuse et, malheureusement, cette région souffre d’un certain battage médiatique. Les explications proposées que j'ai vues jusqu'à présent dans les journaux sont plutôt insatisfaisantes et les modèles semblent faciles à abattre. Le problème semble être que si on veut vraiment le faire à fond, les calculs deviennent alors très difficiles (parce que le problème est complexe) et extrêmement désordonnés (car votre modèle doit être suffisamment proche de la réalité pour obtenir des résultats pertinents). En particulier, les articles que j'ai vus expliquant que la performance de l'heuristique VSIDS (somme décroissante indépendante de l'état variable) pour les choix de variables fonctionne bien car elle explore les communautés dans la représentation graphique des instances ne sont guère convaincantes, bien que l'hypothèse en tant que telle reste très attrayant.
Un domaine de recherche que j'ai personnellement étudié est de savoir si la performance SAT pratique est en quelque sorte en corrélation avec les mesures de complexité de preuve des formules CNF en question. Malheureusement, la réponse courte semble être qu’il n’ya pas vraiment de lien clair et convaincant. Il se peut qu’il existe encore des corrélations non triviales (c’est quelque chose que nous étudions actuellement de différentes manières), mais il semble que la théorie soit trop belle et nette et que la réalité soit trop confuse pour qu’il y ait un très bon match. (Concernant le document concernant les mesures de complexité de la preuve et la dureté pratique du SATde Järvisalo, Matsliah, Nordström et Živný dans le document CP '12, il est apparu que des expériences plus détaillées fournissaient une image beaucoup plus complexe avec des conclusions moins claires - nous espérons obtenir une version complète de la revue traitant de cette décennie, mais c’est compliqué, même si, espérons-le, intéressant.)
Un autre domaine de travail lié à la complexité de la preuve consiste à modéliser des solveurs SAT de pointe en tant que systèmes de preuve et à prouver des théorèmes dans ces modèles afin de déduire les propriétés des solveurs correspondants. C’est un peu un champ de mines, cependant, dans la mesure où des choix de conception modestes et apparemment inoffensifs du côté du modèle théorique peuvent avoir pour résultat que les résultats sont à peu près complètement dénués de pertinence d’un point de vue pratique. D'un autre côté, si l'on veut un modèle théorique assez proche de la réalité pour donner des résultats pertinents, ce modèle devient extrêmement compliqué. (Cela s'explique par le fait que les performances du solveur SAT dépendent de l'historique global de tout ce qui s'est passé jusqu'à présent de manière non triviale, ce qui signifie que le modèle ne peut pas être modulaire dans la manière habituelle de configurer nos systèmes de preuve, qu'il s'agisse d'une étape de dérivation particulière ou non. "correct"
Pipatsrisawat et Darwiche 2011) et [Atserias, Fichte et Thurley 2011] et [Atserias, Fichte et Thurley 2011], deux articles qui méritent d’être mentionnés comme des exceptions à cette règle, ont toutefois montré possibilité de simuler de manière polynomiale une résolution générale complète. Il y a une assez longue liste d'articles précédant [PD11] et [AFT11] qui réclament essentiellement le même résultat, mais ils ont tous de sérieux problèmes de modélisation. (Il est vrai que [PD11] et [AFT11] ont également besoin de certaines hypothèses pour fonctionner, mais il s'agit en gros des hypothèses minimales auxquelles vous vous attendriez, à moins que vous ne demandiez des documents qui montreraient également que la hiérarchie de complexité paramétrée s'effondre.)
Encore une fois, j'écris tout cela très rapidement, mais si tout ce qui précède suscite un intérêt substantiel, je pourrais essayer de développer (bien que cela puisse prendre un certain temps pour revenir à cela encore une fois, n'hésitez pas à me contacter si est quelque chose que vous voudriez que je commente). Comme moyen rapide de fournir des références, permettez-moi de faire quelques self-plugs sans vergogne (bien que la honte soit quelque peu atténuée lorsque je vois que certains commentaires ont également cité certaines de ces références):
Discussion de type tutoriel sur l'interaction entre la complexité de la preuve et la résolution SAT donnée à l'université internationale d'été sur la satisfiabilité, les théories de modulo de satisfiabilité et le raisonnement automatisé en 2016 avec de nombreuses références complètes à la fin des diapositives: http://www.csc .kth.se / ~ jakobn / research / TalkInterplaySummerSchool2016.pdf
Étude légèrement plus récente et plus brève sur le sondage Comprendre la résolution SAT basée sur les conflits du point de vue de la complexité de la preuve à partir de début 2017 (avec également les références complètes à la fin): http://www.csc.kth.se/~jakobn/research /TalkProofComplexityLensCDCL1702.pdf
Enquête sur les liens entre la complexité de la preuve et la résolution SAT: http://www.csc.kth.se/~jakobn/research/InterplayProofCplxSAT.pdf [Référence bibliographique: Jakob Nordström. Sur l'interaction entre la complexité de la preuve et la résolution SAT. ACM SIGLOG News, volume 2, numéro 3, pages 19-44, juillet 2015. (Version légèrement modifiée avec quelques fautes de frappe corrigées.)]
Papier SAT '16 avec CDCL modélisé fidèlement comme système de preuve: http://www.csc.kth.se/~jakobn/research/Trade-offsTimeMemoryModelCDCL_SAT.pdf [Référence bibliographique: Jan Elffers, Jan Johannsen, Massimo Lauria, Massimo Lauria, Thomas Magnard , Jakob Nordström et Marc Vinyals. Compromis entre temps et mémoire dans un modèle plus étroit de solveurs CDCL SAT. Dans Actes de la 19e Conférence internationale sur la théorie et les applications du test de satisfiabilité (SAT '16), Notes de cours en informatique, volume 9710, pages 160-176, juillet 2016.]
la source
Permettez-moi d'ajouter mes deux cents de compréhension à cela, même si je n'ai jamais travaillé dans la région.
Vous posez l'une des deux questions suivantes: "Quelles sont toutes les approches connues pour prouver l'efficacité théorique d'un solveur SAT dans certains types d'instances" et "Pourquoi les solveurs SAT sont-ils efficaces en réalité".
Pour la première question, je vais simplement vous diriger vers les recherches de Stefan Szeider. Il me semble être actuellement le domaine le plus actif en matière de portes dérobées et de paramétrisations FPT de la SAT (qui inclut à la fois des approches structurelles telles que les mesures de type largeur d'arbre et les ensembles de portes dérobées, ainsi qu'un mélange des deux).
Pour cette dernière question, pour être honnête, cette question exacte a été débattue lors de chaque atelier de résolution de SAT auquel j'ai assisté (y compris les dernières années), ce n'est donc pas une question réglée. Mais mon impression est la suivante.
Tout d'abord, vous devez quantifier ou limiter ce que vous entendez par "en réalité". Ce n'est pas vrai que les solveurs SAT sont universellement bons pour tous les problèmes que vous rencontrez (bien sûr), et entre différents problèmes, vous finissez par avoir besoin de stratégies différentes. Par exemple, il y a plusieurs succès récents où des conjectures mathématiques ont été vérifiées ou resserrées par une énorme recherche sur ordinateur assistée par un solveur SAT. Dans ce cas, apparemment, la plupart du temps, les améliorations intelligentes et les heuristiques de type CDCL que les solveurs modernes utilisent habituellement ne vous achètent pas vraiment trop de puissance, et le jeu se résume à une manière intelligente de diviser votre problème source en parties, suivies par (essentiellement) un algorithme de branchement en force brute avec un facteur de constante faible dans le temps d'exécution.
Je dépasse peut-être légèrement ce point, mais mon point était que lorsque les solveurs SAT ont attaqué, par exemple, la conjecture d'Erdos Discrepancy, ils ont réussi pour une raison différente de celle utilisée pour résoudre des instances industrielles dérivées de tests de circuits.
Nous devons donc nous demander pourquoi les solveurs basés sur CDCL fonctionnent si bien sur des instances industrielles, par exemple, de vérification de circuit (test d'équivalence de circuit)? Je penseque la vue la plus puissante (ou la vue consensuelle) est la stratégie de recherche d’un solveur CDCL qui s’harmonise très bien avec la structure de ces instances. Cela signifie, par exemple, que les circuits sont constitués de parties relativement complexes (appelées clusters), interconnectées entre elles par des connexions relativement moins nombreuses et plus simples, éventuellement de manière hiérarchique; et que les résolveurs de CDCL avec toutes leurs heuristiques sont très doués pour exploiter (de facto) ceci et "projeter" ces clusters sur les variables partagées, de la manière ou de l'ordre qui leur est le plus utile pour vérifier le circuit en question. Mais il semble également que l'opinion exprimée soit encore insuffisante (par exemple, nous ne pourrons probablement pas expliquer théoriquement l'efficacité des solveurs CDCL SAT dans ce domaine en nous référant simplement à la structure de graphe de l'instance).
Les paramétrages traitables expliquent-ils en quelque sorte ces dernières? Pour être honnête, je ne sais pas. Je pense qu'il y a probablement un effet puissant dans le jeu que les instances du monde réel ne sont pas le pire des cas, pas plus qu'elles ne sont (probablement) véritablement des moyennes, selon la distribution des instances que nous sommes en mesure de gérer. Mais ça vaut probablement toujours la peine de demander.
la source
Un article de Matti Järvisalo, Arie Matsliah, Jakob Nordström et Stanislav Živný, dans le document CP12, intitulé «Relier les mesures de complexité de la preuve et la dureté pratique de la SAT », tente de lier la dureté ou la facilité de résolution de certaines formules par les solveurs de la CDCL avec résolution de résolution mesures de complexité, en particulier espace de résolution. Les résultats sont quelque peu mitigés, mais je pense que c'est un pas dans la bonne direction.
la source
Je ne suis pas un expert dans ce domaine, mais je pense que les éléments aléatoires de transition SAT / phase ne sont plus ou moins complètement liés aux applications industrielles / pratiques.
Par exemple, les très bons solveurs pour les instances aléatoires (tels que https://www.gableske.net/dimetheus ) sont basés sur les méthodes de physique statistique (propagation de croyance, etc.) je crois, alors que les très bons solveurs «généraux» (tels en tant que http://fmv.jku.at/lingeling/ ) utilisent des techniques sans rapport (plus exactement ce dont Kaveh parlait), je crois.
Mais, comme je l'ai dit, ne me croyez peut-être pas sur parole. cela vient d'un non-expert.
la source