Problema: Dado representado por um circuito booleano, gerar uma maneira uniforme aleatória tal que (ou output se esse existir). ϕ ( x ) = 1 ⊥ x
Claramente, esse problema é difícil para o NP. Minha pergunta é se esse problema também é "NP-easy":
Pergunta: Existe um algoritmo que resolve o problema acima no polinômio do tempo em e o tamanho do circuito de com acesso a um oráculo SAT? ϕ
Alternativamente, existe um algoritmo de tempo polinomial assumindo NP = P?
Claramente, ter acesso a um oracle #SAT é suficiente, portanto a complexidade fica em algum lugar entre NP e #P.
Sinto que isso deveria ter sido estudado antes, mas não consigo encontrar uma resposta no Google.
Eu sei como resolver o problema aproximadamente (ou seja, gerar uma tarefa satisfatória estatisticamente próxima do uniforme) usando uma variante do Teorema de Valiant-Vazirani e / ou contagem aproximada, mas obter exatamente uniforme parece ser um problema diferente.