Complejidad de convertir un circuito booleano en una fórmula booleana

10

Dado un circuito booleano en variables (que usa solo compuertas NOT, AND y OR), ¿cuál es la forma más eficiente de extraer la fórmula booleana representada por el circuito? ¿Existe un algoritmo polytime para este problema?nCn

Nikhil
fuente
¿Qué tipo de puertas tiene el circuito?
Lev Reyzin
1
¿Qué restricciones en fan-in o fan-out? Si es solo un despliegue único, es trivial: el circuito en sí mismo es esencialmente un AST para la fórmula.
Mark Reitblatt
1
Fan-in limitado para ser general. Pero para ser precisos, digamos que AND y OR tienen fan-in 2. En muchas referencias en la literatura, encuentro que un circuito y fórmulas se usan indistintamente, pero quiero saber si convertir un circuito en una fórmula es fácil problema.
Nikhil
66
En general, se esperaría que cualquier fórmula equivalente pudiera tener un tamaño exponencial incluso para un circuito pequeño.
Kristoffer Arnsfelt Hansen
44
Las fórmulas de tamaño polinómico son equivalentes a los circuitos . No se sabe que los circuitos de polisización ( P / p o l y ) sean equivalentes a N C 1 . Las fórmulas y los circuitos se usan indistintamente cuando la profundidad del circuito está limitada. NC1 P/polyNC1
Kaveh

Respuestas:

8

Si entiendo su pregunta correctamente, diría que podría usar la reducción estándar de CIRCUIT-SAT a SAT: represente cada puerta como una nueva variable, y luego represente todo el circuito en forma CNF, con cada cláusula que tiene la forma , donde v es la nueva variable, y la fórmula para la puerta está dada por ϕ , usando las variables para otras puertas para representar las entradas. Esto puede hacerse mediante un recorrido simple (en tiempo lineal, que es claramente óptimo).(vϕ)vϕ

Por ejemplo, si tiene tres entradas, , x 2 y x 3 , con puertas AND que unen x 1 y x 2 , así como x 2 y x 3 , y una puerta OR que une sus salidas, puede introducir tres variables para representar las puertas ( v 1 , v 2 y v 3 , respectivamente) y reescribir la fórmula a ( v 1( x 1x 2 ) ) x1x2x3x1x2x2x3v1v2v3Tenga en cuenta que la variable de salida se incluye explícitamente.

(v1(x1x2))(v2(x2x3))(v3(v1v2))v3.

Introducción a los algoritmos por Cormen et al. explica esto en detalle, en el capítulo sobre NP-Completeness.

Magnus Lie Hetland
fuente
¿CIRCUIT-SAT no utiliza puertas de abanico 1?
Mark Reitblatt
1
Claro, pero hasta donde puedo ver, eso no afecta la reducción / transformación. La idea de representar cada salida como una nueva variable significa que puede reutilizar cada salida como entrada varias veces (correspondiente a un abanico arbitrariamente grande). En otras palabras, la solución dada en esta respuesta debería funcionar para circuitos arbitrarios.
Magnus Lie Hetland
3
Supongo que esto no es lo que se pide. Creo que lo que se quiere es hacer una fórmula en el mismo conjunto de variables que el circuito.
Kristoffer Arnsfelt Hansen
1
Hm. Sí, probablemente tengas razón. Introducir las nuevas variables tiene sentido en el caso de CIRCUIT-SAT a CNF-SAT, pero no en un entorno más general, estoy de acuerdo.
Magnus Lie Hetland
1
Cx1,x2,,xnϕ(x1,x2,,xn)