SAT-Löser bieten eine leistungsstarke Möglichkeit, die Gültigkeit einer Booleschen Formel mit einem Quantifizierer zu überprüfen.
Zum Beispiel, um die Gültigkeit von zu überprüfen . φ ( x ) können wir einen SAT-Löser verwenden, um zu bestimmen, ob φ ( x ) erfüllt werden kann. Überprüfung der Gültigkeit von ∀ x . φ ( x ) können wir einen SAT-Löser verwenden, um zu bestimmen, ob ¬ φ ( x ) erfüllt werden kann. (Hier ist x = ( x 1 , … , x n ) ein n -Vektor von booleschen Variablen und φ ist eine Boolesche Formel.)
QBF-Solver dienen dazu, die Gültigkeit einer Booleschen Formel mit einer beliebigen Anzahl von Quantifizierern zu überprüfen.
Was ist, wenn wir eine Formel mit zwei Quantifizierern haben? Gibt es effiziente Algorithmen zur Überprüfung der Gültigkeit, die besser sind, als nur generische Algorithmen für QBF zu verwenden? gesagt habe ich eine Formel der Form ∀ x . ∃ y . ψ ( x , y ) (oder ∃ x . ∀ y . ψ ( x , y ) ) und möchten dessen Gültigkeit überprüfen. Gibt es dafür gute Algorithmen? Edit 4/8: Ich habe gelernt, dass diese Klasse von Formeln manchmal als 2QBF bezeichnet wird, daher suche ich nach guten Algorithmen für 2QBF.
Spezialisierung weiter: In meinem speziellen Fall habe ich eine Formel der Form dessen Gültigkeit ich überprüfen möchte, wobei f , g Funktionen sind, die eine k- Bit-Ausgabe erzeugen . Gibt es Algorithmen, mit denen die Gültigkeit dieser bestimmten Formelsorte effizienter überprüft werden kann als mit generischen Algorithmen für QBF?
PS: Ich frage nicht nach der Worst-Case-Härte in der Komplexitätstheorie. Ich frage nach praktisch nützlichen Algorithmen (so wie moderne SAT-Löser bei vielen Problemen praktisch nützlich sind, obwohl SAT NP-vollständig ist).