Wie effizient sind DPLL-basierte SAT-Löser bei befriedigenden PHP-Instanzen?


15

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 nPHPn+1n

PHPnn+1:=(i[n+1] j[n] pi,j)(ii[n+1] j[n] (¬pi,j¬pi,j))

Ich suche nach Ergebnissen darüber, wie sie bei befriedigenden Instanzen von , z. B. bei "Es gibt eine injektive Zuordnung von zu n ".PHPnn

Finden sie in solchen Fällen schnell eine zufriedenstellende Aufgabe?


1
Mit "nicht richtig antworten" meinen Sie "nicht genügend Ressourcen für ausreichend große Werte von n"?
Vijay D

@Kaveh Erlauben Sie die Wiederholung von Klauseln und / oder die Wiederholung von Variablen in derselben Klausel? Danke
Tayfun Pay

@ VijayD, ich meine, der Algorithmus gibt für groß genug ist, keine korrekte Antwort in Polynomzeit zurück . Ich hoffe, dass man nachweislich zeigen kann, dass ein DPLL-basierter Algorithmus für diese Familie in polynomialer Zeit funktioniert. n
Kaveh

@Geekster, ich bin mir nicht sicher was du meinst. Ich habe eine bestimmte Formelfamilie. Fragen Sie, ob diese Formel Wiederholungen enthält?
Kaveh

Antworten:


14

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 .PHPnn+1k=nn+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.PHPnnk=nn

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.nn

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 Variablevivi 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.


Danke, das habe ich erwartet. Übrigens, kennen Sie eine Referenz, die dies angibt (dh "DPLL-Algorithmus löst die erfüllbaren Instanzen von PHP / GC in linearer Zeit")?
Kaveh

1
Bitte schön. Ich kenne keine Referenz, die dies besagt, ich habe es nur durch eine rohe Überlegung von mir abgeleitet. Es sollte nicht schwierig sein, dies formal zu beweisen, indem man sich auf die Tatsache stützt, dass jeder SAT-Solver eine vernünftige Heuristik verwendet, um die nächste Variable auszuwählen und ihren Booleschen Wert zu erraten. Es muss in der Tat beachtet werden, dass es mindestens eine unvernünftige Heuristik gibt, die uns daran hindert, eine Lösung in linearer Zeit zu finden (eine solche unvernünftige Heuristik wäre, jede Variable auf falsch zu setzen, bis dies möglich ist). Mit einer vernünftigen Heuristik ist eine lineare Zeit sichergestellt.
Giorgio Camerani

Genau. Ich hoffe, dass jemand dies irgendwo gesagt hat, damit ich es zitieren kann, wenn ich es brauche. Ich möchte noch ein paar Tage warten und wenn niemand einen Hinweis gibt, werde ich diese Antwort akzeptieren. Danke noch einmal. :)
Kaveh

Gerne ;-) Prost!
Giorgio Camerani
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.