Los solucionadores SAT ofrecen una forma poderosa de verificar la validez de una fórmula booleana con un cuantificador.
Por ejemplo, para verificar la validez de , podemos usar un solucionador SAT para determinar si φ ( x ) es satisfactoria. Para verificar la validez de ∀ x . φ ( x ) , podemos usar un solucionador SAT para determinar si ¬ φ ( x ) es satisfactoria. (Aquí x = ( x 1 , ... , x n ) es un vector n de variables booleanas, y φ es una fórmula booleana).
Los solucionadores QBF están diseñados para verificar la validez de una fórmula booleana con un número arbitrario de cuantificadores.
¿Qué pasa si tenemos una fórmula con dos cuantificadores? ¿Son algoritmos eficientes para verificar la validez: los que son mejores que simplemente usar algoritmos genéricos para QBF? Para ser más específico, tengo una fórmula de la forma (o ∃ x . ∀ y . ψ ( x , y ) ), y desea verificar su validez. ¿Hay algún buen algoritmo para esto? Edición 4/8: Aprendí que esta clase de fórmulas a veces se conoce como 2QBF, por lo que estoy buscando buenos algoritmos para 2QBF.
Especializándome aún más: en mi caso particular, tengo una fórmula de la forma cuya validez quiero verificar, donde f , g son funciones que producen una salida de k bits. ¿Hay algún algoritmo para verificar la validez de este tipo particular de fórmula, de manera más eficiente que los algoritmos genéricos para QBF?
PD: No estoy preguntando sobre la dureza del peor de los casos, en teoría de la complejidad. Estoy preguntando acerca de algoritmos prácticamente útiles (tanto como los solucionadores de SAT modernos son prácticamente útiles en muchos problemas a pesar de que SAT es NP-completo).