Problème de satisfaction de contrainte (CSP) vs théorie modulo de satisfiabilité (SMT); avec une coda sur la programmation par contraintes


30

Quelqu'un ose-t-il tenter de clarifier quelle est la relation de ces domaines d'études ou peut-être même donner une réponse plus concrète au niveau des problèmes? Comme qui comprend qui en supposant certaines formulations largement acceptées. Si j'ai bien compris, lorsque vous passez de SAT à SMT, vous entrez essentiellement dans le domaine du CSP; vice-versa, si vous limitez CSP aux booléens, vous parlez essentiellement de SAT et peut-être de quelques problèmes connexes comme #SAT. Je pense que cela est clair (par exemple, cf. le chapitre de Kolaitis et Vardi "Une approche logique de la satisfaction des contraintes" dans la théorie des modèles finis et ses applicationspar Grädel et al.), mais ce qui est moins clair pour moi, c'est quand les contraintes sont-elles "modulo une théorie" et quand ne le sont-elles pas? SMT implique-t-il toujours que la théorie n'utilise que des contraintes d'égalité et d'inégalité qui sont toujours dans le domaine plus large des CSP? Pour autant que je sache, vous pouvez souvent introduire des variables lâches , donc la distinction [si elle existe] est moins qu'évidente.

Le relativement récent «Satisfiability handbook» (IOP Press 2009) rassemble les problèmes SMT et CSP sous son large parapluie de «satisfiabilité», mais étant donné sa structure (chapitres rédigés par divers auteurs) ne m'aide pas vraiment à comprendre cela. .

J'espère que la terminologie devient moins confuse lorsque vous parlez de programmation par contraintes , qui (par analogie avec le terme «programmation mathématique»), j'espère implique de minimiser / maximiser une fonction objective. L'article de Wikipédia sur la programmation par contraintes est hélas si vague que je ne peux pas vraiment dire si ce cadrage se produit cependant. Ce que je peux rassembler à partir d' Essentials of Constraint Programming de Frühwirth et Abdennadher (p. 56), c'est qu'un «solveur de contraintes» fournit généralement plus qu'un simple vérificateur de satisfiabilité, la simplification etc. étant importante dans la pratique.

Bien que ce ne soit pas vraiment une question de recherche sur la théorie CS, je ne m'attends pas à de bonnes réponses à celle-ci sur le site CS.SE de premier cycle étant donné ce que j'ai vu sur https://cs.stackexchange.com/questions/14946/distinguish- decision-procedure-vs-smt-solver-vs-theorem-prover-vs-constraint-sol (qui contient beaucoup de mots mais pas ce que je considérerais comme une vraie réponse, hélas).


ajouter à cet ASP. Développements relativement récents SMT / ASP. les champs précédemment séparés se mélangent. voir, par exemple, les outils de raisonnement automatisé hybride: de la boîte noire à l'intégration en boîte claire / Balduccini, Lierler comme une enquête récente approximative.
vzn

Réponses:


47

SAT, CP, SMT, (la plupart des) ASP traitent tous du même ensemble de problèmes d'optimisation combinatoire. Cependant, ils abordent ces problèmes sous différents angles et avec différentes boîtes à outils. Ces différences tiennent en grande partie à la façon dont chaque approche structure les informations sur l'exploration de l'espace de recherche. Mon analogie de travail est que SAT est un code machine, tandis que les autres sont des langages de niveau supérieur.

x1x2¯x3{(x1,0),(x2,1),(x3,0)}x1x3x2x1x2¯x3x4x1x2¯x3x4¯x5

Une approximation de la structure de la clause est conservée pour affiner l'ensemble de solutions et pour aider à déterminer si cet ensemble est vide. Pendant la recherche, certaines affectations partielles peuvent s'avérer ne figurer dans aucune solution (même si elles satisfont individuellement à chacune des contraintes de l'instance). Ceux-ci sont connus sous le nom de nogoods , un terme introduit par ("Mr GNU") Stallman et Sussmanx5x=5. Il n'y a donc pas une seule structure de clause générale, mais une structure associée à chaque choix de représentation, selon ce que représentent les singletons (littéraux) de la structure de clause.

La programmation par contraintes (CP) était traditionnellement une discipline de l'IA, avec un accent sur la planification, le calendrier et les problèmes combinatoires, et a donc un rôle central pour les variables qui peuvent prendre plus que deux valeurs (mais généralement un nombre fini). CP a mis l'accent sur la recherche efficace et, motivé par les applications traditionnelles, a donné un rôle central à la all-differentcontrainte (d'injectivité), mais a également développé des propagateurs efficaces pour de nombreux autres types de contraintes. Les définitions formelles de la PC existent depuis au moins l'article de 1974 de Montanari intitulé Réseaux de contraintes, les précurseurs remontant encore plus tôt. Ce poids historique peut avoir contribué au retard du CP par rapport à d'autres approches de la performance brute au cours de la dernière décennie. CP maintient classiquement une approximation du complément de la structure de la clause, via un ensemble de domaines actifs pour les variables. L'objectif est d'éliminer les valeurs des domaines actifs, en explorant la structure de la clause en essayant d'attribuer des valeurs candidates aux variables et en reculant si nécessaire.

Les théories de module de satisfaction (SMT) sont sorties de la communauté de vérification. Chaque théorie dans un solveur SMT forme une représentation implicite de potentiellement potentiellement infiniment de clauses SAT. Les théories utilisées avec SMT et les contraintes utilisées dans CP reflètent leurs différentes applications historiques. La plupart des théories que SMT considère concernent les tableaux indexés sur des nombres entiers, les champs fermés réels, les ordres linéaires, etc. celles-ci résultent de l'analyse statique des programmes (en vérification assistée par ordinateur) ou de la formalisation des preuves mathématiques (en raisonnement automatisé). En revanche, dans le calendrier et la planification, la contrainte d'injectivité est centrale, et bien que le langage SMTLIB standard ait une contrainte d'injectivité depuis sa création en 2003 (via ledistinctsymbole), jusqu'en 2010, les solveurs SMT uniquement implémentés distinctvia un algorithme naïf. À ce stade, la technique d'appariement du propagateur CP standard pour a all-differentété transposée, avec un grand effet lorsqu'elle a été appliquée à de grandes listes de variables; voir An Alldifferent constraint solver in SMT par Banković et Marić, SMT 2010. De plus, la plupart des propagateurs CP sont conçus pour des problèmes avec des domaines finis, tandis que les théories SMT standard traitent des domaines infinis (entiers et plus récemment des réels). SMT utilise une instance SAT comme approximation de la structure de la clause, extrayant les clauses nogood des théories, le cas échéant. Un bon aperçu est Satisfiability Modulo Theories: Introduction and Applications par De Moura et Bjørner, doi: 10.1145 / 1995376.1995394.

La programmation des jeux de réponses (ASP) est issue de la programmation logique. En raison de sa concentration sur la résolution du problème plus général de la recherche d'un modèle stable, et aussi parce qu'il permet une quantification universelle aussi bien qu'existentielle, ASP n'a pas été pendant de nombreuses années compétitif avec CP ou SMT.

Formellement, SAT est CSP sur les domaines booléens, mais l'accent mis par SAT sur l'apprentissage des clauses, les bonnes heuristiques pour la détection des conflits et les moyens rapides de revenir en arrière sont assez différents de l'accent CSP traditionnel sur les propagateurs, établissant la cohérence et l'heuristique pour l'ordre des variables. SAT est généralement extrêmement efficace, mais pour de nombreux problèmes, des efforts considérables sont nécessaires pour exprimer d'abord le problème en tant qu'instance SAT. L'utilisation d'un paradigme de niveau supérieur comme CP peut permettre une expression plus naturelle du problème, puis soit l'instance CP peut être traduite manuellement en SAT, soit un outil peut prendre en charge la traduction. Un bon aperçu des écrous et boulons de SAT est sur les résolveurs de satisfaction d'apprentissage de clauses modernes par Pipatsrisawat et Darwiche, doi: 10.1007 / s10817-009-9156-3 .

Passons maintenant des généralités aux spécificités actuelles.

Au cours de la dernière décennie, certaines personnes au CP ont commencé à se concentrer sur la génération de clauses paresseuses (LCG). C'est essentiellement un moyen de regrouper les propagateurs CP en utilisant des techniques plus flexibles de type SMT plutôt que l'abstraction plutôt rigide des domaines actifs. Ceci est utile car il existe une longue histoire de propagateurs de CP publiés pour représenter et résoudre efficacement de nombreux types de problèmes. (Bien sûr, un effet similaire serait obtenu par un effort concerté pour mettre en œuvre de nouvelles théories pour les solveurs SMT.) LCG a des performances qui sont souvent compétitives avec SMT, et pour certains problèmes, il peut être supérieur. Un aperçu rapide est le document CPAIOR 2010 de Stuckey, Lazy Clause Generation: Combinant la puissance de la résolution SAT et CP (et MIP?) , Doi: 10.1007 / 978-3-642-13520-0_3. Il vaut également la peine de lire le document de position de Garcia de la Banda, Stuckey, Van Hentenryck et Wallace, qui peint une vision centrée sur le CP de The Future of Optimization Technology , doi: 10.1007 / s10601-013-9149-z .

Pour autant que je sache, la plupart des recherches récentes sur les SMT semblent s'être déplacées vers les applications des méthodes formelles et des mathématiques formalisées. Un exemple est la reconstruction de preuves trouvées par des solveurs SMT à l'intérieur de systèmes de preuve tels que Isabelle / HOL, en construisant des tactiques Isabelle / HOL pour refléter les règles d'inférence dans les traces de preuve SMT; voir Fast LCF-Style Proof Reconstruction for Z3 by Böhmer and Weber at ITP 2010.

Au cours des dernières années, les meilleurs solveurs ASP ont été développés pour devenir compétitifs avec les solveurs CP, SMT et SAT uniquement. Je ne suis que vaguement familier avec les détails d'implémentation qui ont permis aux solveurs claspde devenir compétitifs, donc je ne peux pas vraiment les comparer avec SMT et CP, mais fermoir annonce explicitement son accent sur l'apprentissage des nogoods.

Traverser les frontières traditionnelles entre ces formalismes est la traduction de représentations de problèmes plus abstraites en des formalismes de niveau inférieur pouvant être mis en œuvre efficacement. Plusieurs des meilleurs solveurs ASP et CP traduisent désormais explicitement leur entrée dans une instance SAT, qui est ensuite résolue à l'aide d'un solveur SAT standard. Dans CP, l' assistant de modélisation de contraintes Savile Row utilise des techniques de conception de compilateur pour traduire les problèmes exprimés dans le langage de niveau moyen Essence 'en un formalisme de niveau inférieur, adapté à la saisie de solveurs CP tels que Minion ou MiniZinc . Savile Row a initialement travaillé avec une représentation CP comme formalisme de bas niveau, mais a introduit SAT comme cible dans la version 1.6.2. De plus, le langage de niveau encore plus élevé Essencepeut maintenant être automatiquement traduit en Essence 'par l' outil Conjure . Dans le même temps, les solveurs SAT uniquement de bas niveau comme Lingeling continuent d'être affinés chaque année, plus récemment en alternant les phases d'apprentissage et de traitement des clauses; voir le bref aperçu de ce qui est chaud dans les compétitions SAT et ASP par Heule et Schaub dans AAAI 2015.

L'analogie avec l'histoire des langages de programmation semble donc appropriée. SAT est en train de devenir une sorte de "code machine", ciblant un modèle d'exploration de bas niveau des clauses dans la structure des clauses. Les paradigmes abstraits sont de plus en plus comme des langages informatiques de niveau supérieur, avec leurs propres méthodologies et applications distinctes, ils sont bons à aborder. Enfin, la collection de plus en plus dense de liens entre ces différentes couches commence à ressembler à l'écosystème d'optimisation du compilateur.


Merci pour cette réponse très utile.
Xavier Labouze

2
Remarque: dans la communauté FOCS / STOC, une définition plus étroite du CSP est utilisée. Ces CSP sont de la forme CSP (L), "toutes les instances CSP qui peuvent être exprimées en utilisant un ensemble fixe L de relations de contraintes". La contrainte toute différente ne rentre pas dans ce cadre, pas plus que les problèmes qui ont une structure arborescente.
András Salamon
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.