Les algorithmes de base comme DPLL et ses raffinements comme CDCL sont complètement déterministes.
Notez que le non-déterminisme ne signifie pas nécessairement qu'un algorithme peut conduire à un mauvais résultat. Par exemple, nous pouvons distinguer entre
Les algorithmes de Monte Carlo , qui sont des algorithmes randomisés dont la sortie peut être incorrecte avec une certaine probabilité.
Les algorithmes de Las Vegas , qui sont des algorithmes randomisés dont la sortie est toujours correcte , mais les algorithmes «jouent» avec les ressources utilisées dans le calcul, par exemple le temps d'exécution sur des entrées identiques peuvent varier.
À l'autre extrême se trouvent des algorithmes probabilistes pour résoudre -SAT tels que Schöning [1] qui est Monte-Carlo, et remarquablement efficaces dans la pratique étant donné sa simplicité absolue. Il est intéressant de noter que l'algorithme de Schöning peut être complètement dérandomisé sans perdre (en grande partie) son efficacité [2].k
Dans la pratique, les solveurs SAT industriels emploient toujours un certain degré d'aléatoire, de manière à «échapper» au mauvais comportement (= exponentiel) du pire des algorithmes basés sur DPLL. MiniSat est un logiciel hautement configurable et évolutif. Cela dit, MiniSat n'est pas complètement déterministe: le choix de la variable de branchement est parfois aléatoire, selon les options de la ligne de commande. (La valeur par défaut est que 2% des variables de branchement sont choisies au hasard IIRC.) De même, MiniSAT a la possibilité d'initialiser les scores VSIDS au hasard. (VSIDS est une heuristique pour «mesurer» l'influence d'une variable.)
l'algorithme de monte-carlo peut-il dire qu'un problème est SAT alors que ce n'est pas, sans solution de satisfaction ou c'est juste sur le cas unSAT, que le problème pourrait être SAT?
Xavier Combelle
@XavierCombelle Cela dépendrait de l'algorithme spécifique, même si j'ai du mal à penser à un algorithme qui pourrait se tromper SAT. Schöning ne se trompe que sur unSAT.
Martin Berger
Une extension mineure - alors que MiniSat utilise le hasard, ce n'est pas un "vrai" hasard. Chaque exécution de MiniSat produira la même réponse, dans le même laps de temps (si vous ne reconfigurez aucune option), car les mêmes choix «aléatoires» sont choisis à chaque exécution du solveur.
Chris Jefferson
@ChrisJefferson MiniSAT n'a-t-il pas un moyen de spécifier une graine aléatoire?
Martin Berger
6
C'est correct. DPLL explore de manière exhaustive l'espace. S'il retourne 'unsat', alors il n'y a certainement pas d'affectation satisfaisante.
Plus récemment, les chercheurs ont développé des solveurs SAT certifiants qui renvoient en outre une preuve (espérons-le court) d'insatisfiabilité lorsqu'ils retournent «insaturés». Cette preuve peut être vérifiée par n'importe qui d'autre, ce qui permet aux autres de vérifier que la formule n'est pas satisfaisante sans qu'ils aient à réexécuter l'algorithme SAT. Cela peut être utile dans certains contextes.
MiniSAT est une implémentation plutôt qu'un algorithme. Son comportement dépend de son code. Je ne peux pas parler de ce que fait le code.
Tous les solveurs DPLL / CDCL peuvent être "augmentés" pour produire une preuve d'insatisfiabilité.
Yuval Filmus
5
Un mot-clé qui pourrait vous manquer est l' exhaustivité . En général, un algorithme de recherche est dit complet s'il trouve une solution étant donné qu'il existe (avec suffisamment de temps). En particulier, DPLL est un exemple de méthode de recherche déterministe et complète.
Les solveurs SAT peuvent être déterministes ou non selon la façon dont ils sont mis en œuvre. Notez que le non-déterminisme ici ne peut affecter que le modèle généré et non la réponse (SAT ou UNSAT) du solveur! À des fins de diversification et autres, le solveur SAT introduit généralement le hasard à un certain point: par exemple pour initialiser des activités variables ou pour prendre des décisions aléatoires. Dans minisat par exemple, les décisions aléatoires sont prises en appelant une fonction qui renvoie toujours le même nombre aléatoire lors de l'utilisation de la même graine aléatoire. Ainsi, à ce stade, lorsque vous ne modifiez aucune configuration du solveur, vous aurez toujours la même réponse et le même modèle. Changer la graine aléatoire par exemple n'affectera pas la réponse (SAT ou UNSAT) mais peut changer le modèle et le temps d'exécution.
C'est correct. DPLL explore de manière exhaustive l'espace. S'il retourne 'unsat', alors il n'y a certainement pas d'affectation satisfaisante.
Plus récemment, les chercheurs ont développé des solveurs SAT certifiants qui renvoient en outre une preuve (espérons-le court) d'insatisfiabilité lorsqu'ils retournent «insaturés». Cette preuve peut être vérifiée par n'importe qui d'autre, ce qui permet aux autres de vérifier que la formule n'est pas satisfaisante sans qu'ils aient à réexécuter l'algorithme SAT. Cela peut être utile dans certains contextes.
MiniSAT est une implémentation plutôt qu'un algorithme. Son comportement dépend de son code. Je ne peux pas parler de ce que fait le code.
la source
Un mot-clé qui pourrait vous manquer est l' exhaustivité . En général, un algorithme de recherche est dit complet s'il trouve une solution étant donné qu'il existe (avec suffisamment de temps). En particulier, DPLL est un exemple de méthode de recherche déterministe et complète.
la source
Les solveurs SAT peuvent être déterministes ou non selon la façon dont ils sont mis en œuvre. Notez que le non-déterminisme ici ne peut affecter que le modèle généré et non la réponse (SAT ou UNSAT) du solveur! À des fins de diversification et autres, le solveur SAT introduit généralement le hasard à un certain point: par exemple pour initialiser des activités variables ou pour prendre des décisions aléatoires. Dans minisat par exemple, les décisions aléatoires sont prises en appelant une fonction qui renvoie toujours le même nombre aléatoire lors de l'utilisation de la même graine aléatoire. Ainsi, à ce stade, lorsque vous ne modifiez aucune configuration du solveur, vous aurez toujours la même réponse et le même modèle. Changer la graine aléatoire par exemple n'affectera pas la réponse (SAT ou UNSAT) mais peut changer le modèle et le temps d'exécution.
la source