Les solveurs SAT offrent un moyen puissant de vérifier la validité d'une formule booléenne avec un quantificateur.
Par exemple, pour vérifier la validité de , nous pouvons utiliser un solveur SAT pour déterminer si φ ( x ) est satisfaisable. Pour vérifier la validité de ∀ x . φ ( x ) , nous pouvons utiliser un solveur SAT pour déterminer si ¬ φ ( x ) est satisfaisable. (Ici x = ( x 1 , … , x n ) est un vecteur n de variables booléennes, et φ est une formule booléenne.)
Les solveurs QBF sont conçus pour vérifier la validité d'une formule booléenne avec un nombre arbitraire de quantificateurs.
Et si nous avons une formule avec deux quantificateurs? Existe-t-il des algorithmes efficaces pour vérifier la validité: ceux qui sont meilleurs que de simplement utiliser des algorithmes génériques pour QBF? Pour être plus précis, j'ai une formule de la forme (ou ∃ x . ∀ y . ψ ( x , y ) ), et souhaitez vérifier sa validité. Existe-t-il de bons algorithmes pour cela? Edit 4/8: J'ai appris que cette classe de formules est parfois connue sous le nom de 2QBF, donc je recherche de bons algorithmes pour 2QBF.
Spécialisation supplémentaire: dans mon cas particulier, j'ai une formule de la forme dont je veux vérifier la validité, où f , g sont des fonctions qui produisent une sortie à k bits. Existe-t-il des algorithmes pour vérifier la validité de ce type particulier de formule, plus efficacement que les algorithmes génériques pour QBF?
PS Je ne demande pas la dureté du pire des cas, en théorie de la complexité. Je pose des questions sur les algorithmes pratiquement utiles (tout comme les solveurs SAT modernes sont pratiquement utiles sur de nombreux problèmes, même si SAT est NP-complet).