Problema: Dato rappresentato da un circuito booleana, generare un uniformemente casuale x ∈ { 0 , 1 } n tale che φ ( x ) = 1 (o uscita ⊥ se tale x esiste).
Chiaramente questo problema è NP-difficile. La mia domanda è se questo problema sia o meno "NP-easy":
Domanda: esiste un algoritmo che risolve il problema di cui sopra nel tempo polinomiale in e la dimensione del circuito di ϕ accesso a un oracolo SAT?
In alternativa, esiste un algoritmo del tempo polinomiale che assume NP = P?
Chiaramente avere accesso a un oracolo #SAT è sufficiente, quindi la complessità sta da qualche parte tra NP e #P.
Credo che questo avrebbe dovuto essere studiato prima, ma non riesco a trovare una risposta su Google.
So risolvere il problema approssimativamente (cioè generare un incarico soddisfacente che è statisticamente vicino all'uniforme) usando una variante del teorema di Valiant-Vazirani e / o il conteggio approssimativo, ma ottenere esattamente l'uniforme sembra essere un problema diverso.