Wir wissen, dass DPLL-basierte SAT-Löser auf unbefriedigenden Instanzen von (Pigeon Hole-Prinzip) nicht richtig antworten , zB auf "Es gibt eine injektive Zuordnung von zu ": n + 1 n
Ich suche nach Ergebnissen darüber, wie sie bei befriedigenden Instanzen von , z. B. bei "Es gibt eine injektive Zuordnung von zu n ".
Finden sie in solchen Fällen schnell eine zufriedenstellende Aufgabe?
Antworten:
Auf befriedigenden Instanzen liefern DPLL-basierte SAT-Löser eine befriedigende Zuweisung in linearer Zeit.PHP
Um zu sehen , warum zu beobachten , wie die CNF Codierung einer unerfüllbar Instanz von mit n Löchern und n + 1 Tauben ist sintactically identisch ist mit einer Instanz von k = n Graph Coloring, wo der Eingang Graph ist eine Clique von n + 1 Vertices .PHP n n+1 k=n n+1
Ähnlich ist die CNF Codierung einer erfüllbar Instanz von mit Löchern und ist Tauben sintactically identisch ist mit einer Instanz von Graph Coloring, wo der Eingang Graph eine Clique ist Vertices.PHP n n k=n n
Jetzt ist es ganz einfach , eine Clique von Scheitelpunkten mit Farben zu färben: Scannen Sie die Scheitelpunkte und weisen Sie ihnen jeweils eine der verbleibenden Farben zu (bereits zugewiesene Farben werden durch die Clique des Graphen mithilfe der Einheitenausbreitung automatisch ausgeschlossen ). . Unabhängig von den verbleibenden Farben, die Sie auswählen, ist es gut und führt Sie zu einer zufriedenstellenden Aufgabe.n n
Aus der Sicht des DPLL-Lösers: Jedes Mal, wenn er versucht, den Booleschen Wert einer Variablen zu erraten , ist dieser Wert richtig (was auch immer es ist), da es mit Sicherheit eine befriedigende Zuweisung für die Variablevi vi has the guessed value. Unit propagation will do the rest of the job, by guiding the solver along the satisfying path (in other words: by preventing it to guess wrong values).
The search then proceeds one variable after the other, linearly, each time making the correct guess.
quelle