Circuito booleano
Un circuito Booleano è un modello matematico di computazione usato nello studio della teoria della complessità computazionale. Questi circuiti sono principalmente oggetto di studi nella complessità dei circuiti e sono dei tipi speciali di circuiti; un linguaggio formale può essere deciso da una famiglia di circuiti Booleani, un circuito per ogni possibile lunghezza di input. In aggiunta, essi sono usati come modello formale per logica combinatoria in elettronica digitale.
I circuiti Booleani sono definiti in termini di porte che essi contengono. Ad esempio, un circuito potrebbe contenere porte AND e OR binarie e porte NOT unarie, o essere interamente descritti da porte NAND binarie. Ogni porta corrisponde a qualche funzione Booleana che prende k bits di input e invia in output un singolo bit.
Diverse importanti misure di complessità possono essere definite su circuiti Booleani, incluso profondità di circuito, dimensione di circuito o numero di alternanze. In una famiglia di circuiti, consideriamo la complessità (misurata in dimensione del circuito), per esempio, come la funzione di n che da la dimensione del circuito che decide l'input di lunghezza n.
Diverse importanti classi di complessità sono definite in termini di circuiti Booleani, incluso NC. NC è definita essere il set di funzioni Booleane che possono essere decise da circuiti Booleani uniformi di dimensione polinomiale e profondità polilogaritmica. Qui, la parola uniforme significa che deve esserci qualche condizione sulla famiglia di circuiti di modo che una descrizione di un circuito può essere fatta dal suo indice, n.
Definizione formale
Nel dare una definizione formale di circuiti Booleani, Vollmer comincia definendo un set base di funzioni Booleane B, corrispondenti alle porte accettabili nel modello del circuito. Un circuito Booleano su una base B, con n input e m output, è definita come un grafo aciclico diretto finito. Ogni vertice corrisponde o ad una funzione base o ad un input, e c'è un set di esattamente m nodi che sono etichettati come output.[1] Gli archi devono anche essere in qualche modo ordinati, per distinguere tra differenti argomenti per la stessa funzione Booleana.[2]
Complessità computazionale
Valutazione di un circuito
Il problema CIRCUIT-EVAL prende come input la descrizione di un circuito Booleano e un'assegnazione di valore di verità alle variabili del circuito, e accetta il test solo se il circuito restituisce vero. CIRCUIT-EVAL è P-completo.[3]
Misure di complessità
Varie importanti misure di complessità possono essere definite sui circuiti Booleani, comprese la profondità del circuito, la dimensione del circuito e il numero di alternanze tra porte AND e porte OR. Per esempio, la complessità di dimensione di un circuito Booleano è il numero selle porte.
Classi di complessità
Varie importanti classi di complessità sono definite in termini di circuiti Booleani, compreso NC. NC è definito come l'insieme delle funzioni Booleane che possono essere decise da circuiti Booleani uniformi di dimensione polinomiale e profondità polilogaritmica. Qui, la parola uniforme significa che ci deve essere una qualche condizione sulla famiglia di circuiti tale che la descrizione di un circuito possa essere computata soltanto dal numero degli input al circuito.
Note
Bibliografia
- Heribert Vollmer, Introduction to Circuit Complexity, Berlino, Springer, 1999, ISBN 3-540-64310-9.
- Sanjeev Arora e Boaz Barak, Computational Complexity: A Modern Approach, New York, Cambridge University Press, 2009, ISBN 0521424267.