Nous savons que les solveurs SAT basés sur DPLL ne répondent pas correctement aux cas insatisfaisants de (principe du pigeon), par exemple sur "il y a une cartographie injective de n + 1 à n ":
Je cherche des résultats sur la façon dont ils fonctionnent sur des instances satisfaisantes de , par exemple sur "il y a une cartographie injective de n à n ".
Trouvent-ils rapidement une affectation satisfaisante dans de tels cas?
Réponses:
Sur des instances satisfaisantes de , les solveurs SAT basés sur DPLL fourniront une affectation satisfaisante en temps linéaire.PHP
Pour voir pourquoi, observez comment l'encodage CNF d'une instance insatisfaisante de avec n trous et n + 1 pigeons est sintactiquement identique à une instance de k = n Graph Colouring, où le graphique d'entrée est une clique de n + 1 sommets .PHP n n + 1 k = n n + 1
De même, le codage CNF d'une instance satisfaisante de avec n trous et n pigeons est sintactiquement identique à une instance de k = n Graph Colouring, où le graphique d'entrée est une clique de n sommets.PHP n n k = n n
Maintenant, colorier une clique de sommets avec n couleurs est simple: balayez les sommets, et attribuez à chacun d'eux une des couleurs restantes (les couleurs déjà attribuées sont automatiquement exclues par la clicité du graphique, en utilisant la propagation unitaire) . Quelle que soit la couleur que vous choisissez, elle sera bonne et vous conduira à une mission satisfaisante.n n
Du point de vue du solveur DPLL: chaque fois qu'il essaiera de deviner la valeur booléenne d'une variable , cette valeur sera correcte (quelle qu'elle soit), car il y aura certainement une affectation satisfaisante dans laquelle la variable v i a le valeur devinée. La propagation d'unité fera le reste du travail, en guidant le solveur le long du chemin satisfaisant (en d'autres termes: en l'empêchant de deviner des valeurs erronées).vje vje
La recherche procède ensuite une variable après l'autre, linéairement, chaque fois en faisant la bonne supposition.
la source