I solutori SAT offrono un modo efficace per verificare la validità di una formula booleana con un quantificatore.
Ad esempio, per verificare la validità di , possiamo usare un solutore SAT per determinare se φ ( x ) è soddisfacente. Per verificare la validità di ∀ x . φ ( x ) , possiamo usare un solutore SAT per determinare se ¬ φ ( x ) è soddisfacente. (Qui x = ( x 1 , … , x n ) è un n -vettore di variabili booleane e φ è una formula booleana.)
I solutori QBF sono progettati per verificare la validità di una formula booleana con un numero arbitrario di quantificatori.
E se avessimo una formula con due quantificatori? Esistono algoritmi efficienti per la verifica della validità: quelli migliori del semplice utilizzo di algoritmi generici per QBF? Per essere più specifici ho una formula del modulo (o ∃ x . ∀ y . ψ ( x , y ) ) e vuoi verificarne la validità. Ci sono buoni algoritmi per questo? Modifica 4/8: ho imparato che questa classe di formule è talvolta conosciuta come 2QBF, quindi sto cercando buoni algoritmi per 2QBF.
Specializzazione ulteriore: Nel mio caso particolare, ho una formula del modulo il cui voglio controllare, dove validità f , g sono funzioni che producono un k uscita bit. Esistono algoritmi per verificare la validità di questo particolare tipo di formula, in modo più efficiente rispetto agli algoritmi generici per QBF?
PS Non sto chiedendo la durezza del caso peggiore, nella teoria della complessità. Sto chiedendo algoritmi praticamente utili (tanto quanto i moderni solutori SAT sono praticamente utili su molti problemi anche se SAT è NP-completo).