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 .PHPnn + 1k = nn + 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.PHPnnk = nn
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.nn
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).vjevje
La recherche procède ensuite une variable après l'autre, linéairement, chaque fois en faisant la bonne supposition.