Complessità di convertire un circuito booleano in una formula booleana


10

Dato un circuito booleano su variabili (che utilizza solo le porte NOT, AND e OR), qual è il modo più efficiente per estrarre la formula booleana rappresentata dal circuito? Esiste un algoritmo polytime per questo problema?nCn


che tipo di porte ha il circuito?
Lev Reyzin

1
Quali restrizioni su fan-in o fan-out? Se è solo un fan-out, allora è banale: il circuito stesso è essenzialmente un AST per la formula.
Mark Reitblatt,

1
Il fan-in è stato definito generale. Ma per essere precisi, diciamo che AND e OR hanno un fan-in 2. In molti riferimenti in letteratura, trovo che un circuito e formule siano usati in modo intercambiabile, ma voglio sapere se convertire un circuito in una formula è facile problema.
Nikhil,

6
In generale, ci si aspetterebbe che qualsiasi formula equivalente possa avere dimensioni esponenziali anche per un piccolo circuito.
Kristoffer Arnsfelt Hansen,

4
Le formule di dimensioni polinomiali sono equivalenti ai circuiti . I circuiti di polisize ( ) non sono noti per essere equivalenti a . Le formule e i circuiti sono usati in modo intercambiabile di solito quando la profondità del circuito è limitata. NC1 N C 1P/polyNC1
Kaveh,

Risposte:


8

Se capisco correttamente la tua domanda, direi che potresti usare la riduzione standard da CIRCUIT-SAT a SAT: Rappresenta ogni gate come una nuova variabile, e quindi rappresenta l'intero circuito in forma CNF, con ogni clausola che ha la forma , dove è la nuova variabile e la formula per il gate è data da , usando le variabili di altre porte per rappresentare gli input. Questo può essere fatto con un semplice attraversamento (in tempo lineare, che è chiaramente ottimale).v ϕ(vϕ)vϕ

Ad esempio, se hai tre input, , e , con le porte AND che collegano e nonché e e una porta OR che collega le loro uscite, puoi introdurre tre variabili per rappresentare le porte: , e , rispettivamente: e riscrivi la formula inSi noti che la variabile di output è inclusa esplicitamente.x 2 x 3 x 1 x 2 x 2 x 3 v 1 v 2 v 3 ( v 1( x 1x 2 ) ) ( v 2( x 2x 3 ) ) ( v 3( v 1v 2 ) ) v 3x1x2x3x1x2x2x3v1v2v3

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

Introduzione agli algoritmi di Cormen et al. spiega questo in dettaglio, nel capitolo sulla completezza NP.


CIRCUIT-SAT non utilizza le porte fan-out 1?
Mark Reitblatt,

1
Certo, ma per quanto posso vedere, ciò non influisce sulla riduzione / trasformazione. L'idea di rappresentare ciascun output come una nuova variabile significa che è possibile riutilizzare ogni output come input più volte (corrispondente a un fan-out arbitrariamente grande). In altre parole, la soluzione fornita in questa risposta dovrebbe funzionare per circuiti arbitrari.
Magnus Lie Hetland,

3
La mia ipotesi sarebbe che questo non è ciò che viene chiesto. Penso che si voglia fare una formula sullo stesso insieme di variabili del circuito.
Kristoffer Arnsfelt Hansen,

1
Hm. Sì, probabilmente hai ragione. L'introduzione delle nuove variabili ha senso nel caso da CIRCUIT-SAT a CNF-SAT, ma non in un contesto più generale: sono d'accordo.
Magnus Lie Hetland,

1
Cx1,x2,,xnϕ(x1,x2,,xn)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.