Salta al contenuto
Note per Studenti Algebra di Boole - assiomi, teoremi e complemento di una funzione

Algebra di Boole - assiomi, teoremi e complemento di una funzione

In questa pagina 7

Un circuito digitale realizza una funzione booleana; per scegliere il circuito più semplice si manipola l'espressione con le regole dell'algebra di Boole. Questa nota raccoglie le regole, mostra come si dimostrano e come si usano per semplificare e per complementare una funzione.

Che cos'è un'algebra di Boole

Un'algebra di Boole è un insieme con due operazioni, somma logica (OR, ++) e prodotto logico (AND, ⋅\cdot), più il complemento (NOT), in cui valgono la proprietà distributiva, l'esistenza di un minimo (00) e di un massimo (11) e l'esistenza del complemento. George Boole la propose a metà Ottocento per la logica; Claude Shannon (tesi di master, MIT, 1938) mostrò che i segnali in una rete di interruttori a due stati (aperto/chiuso) seguono le sue regole: da lì deriva il metodo di analisi e progetto dei circuiti digitali.

Per il nostro scopo le variabili assumono i valori 00 e 11 (logica binaria). Una funzione booleana è un'espressione formata da variabili, costanti 0,10,1 e dalle operazioni AND, OR, NOT. Un'espressione si semplifica per usare meno porte (circuito più piccolo, veloce e che consuma meno).

Le identità fondamentali

Le identità vengono a coppie duali: la seconda si ottiene dalla prima scambiando AND con OR e 00 con 11.

nome forma OR forma AND (duale)
elemento neutro X+0=XX+0=X X⋅1=XX\cdot1=X
minimo e massimo X+1=1X+1=1 X⋅0=0X\cdot0=0
idempotenza X+X=XX+X=X X⋅X=XX\cdot X=X
complemento X+X‾=1X+\overline X=1 X⋅X‾=0X\cdot\overline X=0
doppia negazione X‾‾=X\overline{\overline X}=X
commutativa X+Y=Y+XX+Y=Y+X XY=YXXY=YX
associativa X+(Y+Z)=(X+Y)+ZX+(Y+Z)=(X+Y)+Z X(YZ)=(XY)ZX(YZ)=(XY)Z
distributiva X(Y+Z)=XY+XZX(Y+Z)=XY+XZ X+YZ=(X+Y)(X+Z)X+YZ=(X+Y)(X+Z)

Legge di dualità: se un'identità è vera, lo è anche la sua duale. Attenzione: la seconda distributiva (X+YZ=(X+Y)(X+Z)X+YZ=(X+Y)(X+Z)) non vale nell'algebra ordinaria, ma vale in quella booleana. Anche X+X=XX+X=X e X+1=1X+1=1 non valgono nell'aritmetica comune.

Queste regole sono gli assiomi: tutto il resto si deduce da esse (o si controlla con la tabella di verità). L'espressione X+Y=Y+XX+Y=Y+X è quindi un assioma (la proprietà commutativa), non un teorema da dimostrare.

Teorema di De Morgan

X+Y‾=X‾⋅Y‾,X⋅Y‾=X‾+Y‾.\overline{X+Y}=\overline X\cdot\overline Y,\qquad\overline{X\cdot Y}=\overline X+\overline Y . Si estende a più variabili: X+Y+Z‾=X‾ Y‾ Z‾\overline{X+Y+Z}=\overline X\,\overline Y\,\overline Z (e non X‾ Y‾+Z‾\overline X\,\overline Y+\overline Z, un errore frequente). Forma generalizzata: per complementare un'espressione si scambiano AND e OR e si negano tutte le variabili e le costanti.

Dimostrazione per induzione perfetta (si provano tutte le combinazioni dei valori delle variabili): per X+Y‾=X‾ Y‾\overline{X+Y}=\overline X\,\overline Y

XX YY X+YX+Y X+Y‾\overline{X+Y} X‾\overline X Y‾\overline Y X‾ Y‾\overline X\,\overline Y
0 0 0 1 1 1 1
0 1 1 0 1 0 0
1 0 1 0 0 1 0
1 1 1 0 0 0 0

Le colonne X+Y‾\overline{X+Y} e X‾ Y‾\overline X\,\overline Y coincidono in tutte le righe. De Morgan rende la NAND e la NOR universali (Porte logiche, ritardi e porte universaliLe porte AND, OR, NOT realizzano le operazioni dell'algebra di Boole; NAND, NOR, XOR e XNOR ne derivano. Ogni funzione si descrive con la tabella di verità ($2^n$ righe). XOR a più ingressi = funzione di disparità (1 se gli 1 sono in numero dispari). Una porta reale ha ritardo di propagazione $t_G$ (diverso per 0→1 e 1→0): in un diagramma temporale l'uscita cambia $t_G$ dopo l'ingresso. NAND e NOR sono universali: bastano da sole a realizzare qualunque funzione. In VHDL: and, or, not, nand, nor, xor, xnor.Porte logiche, ritardi e porte universali →): X+Y=X‾ Y‾‾X+Y=\overline{\overline X\,\overline Y}.

Teoremi di semplificazione

nome forma dimostrazione
assorbimento X+XY=XX+XY=X X+XY=X(1+Y)=X⋅1=XX+XY=X(1+Y)=X\cdot1=X
assorbimento (dual) X(X+Y)=XX(X+Y)=X duale
X+X‾Y=X+YX+\overline XY=X+Y X+X‾Y=(X+X‾)(X+Y)=1⋅(X+Y)X+\overline XY=(X+\overline X)(X+Y)=1\cdot(X+Y)
adiacenza (unificazione) XY+XY‾=XXY+X\overline Y=X X(Y+Y‾)=X⋅1=XX(Y+\overline Y)=X\cdot1=X
consenso XY+X‾Z+YZ=XY+X‾ZXY+\overline XZ+YZ=XY+\overline XZ vedi sotto

Assorbimento (X+XY=XX+XY=X): il secondo termine si può omettere perché ridondante. Si dimostra anche con la tabella: la colonna X+XYX+XY coincide con la colonna XX (0,0,1,10,0,1,1).

Consenso. Nel primo termine compare YY insieme a XX, nel secondo ZZ insieme a X‾\overline X, e il terzo (YZYZ) è sempre coperto da uno dei due: se X=1X=1 e Y=Z=1Y=Z=1 è già coperto da XYXY; se X=0X=0 è coperto da X‾Z\overline XZ. Dimostrazione algebrica: si moltiplica il terzo termine per (X+X‾)=1(X+\overline X)=1: XY+X‾Z+YZ=XY+X‾Z+YZ(X+X‾)=XY+X‾Z+XYZ+X‾YZ=XY(1+Z)+X‾Z(1+Y)=XY+X‾Z,XY+\overline XZ+YZ=XY+\overline XZ+YZ(X+\overline X)=XY+\overline XZ+XYZ+\overline XYZ=XY(1+Z)+\overline XZ(1+Y)=XY+\overline XZ, perché 1+Z=11+Z=1 e 1+Y=11+Y=1. Il teorema vale anche nella forma duale (X+Y)(X‾+Z)(Y+Z)=(X+Y)(X‾+Z)(X+Y)(\overline X+Z)(Y+Z)=(X+Y)(\overline X+Z).

Esempi di semplificazione

Esempio 1. F=A+A‾B+A‾ B‾CF=A+\overline AB+\overline A\,\overline BC. Si raccoglie A‾\overline A negli ultimi due termini: F=A+A‾(B+B‾C)F=A+\overline A(B+\overline BC). Per X+X‾Y=X+YX+\overline XY=X+Y con X=BX=B, Y=CY=C: B+B‾C=B+CB+\overline BC=B+C. Quindi F=A+A‾(B+C)F=A+\overline A(B+C) e, applicando ancora la stessa regola con X=AX=A: F=A+B+CF=A+B+C. Controllo: l'unica combinazione che dà 00 è A=B=C=0A=B=C=0; nella forma originale A=0,B=0,C=0A=0,B=0,C=0 dà 0+0+0=00+0+0=0 ✓, e ogni altra combinazione dà 11.

Esempio 2. XY+X‾Z+YZ=XY+X‾ZXY+\overline XZ+YZ=XY+\overline XZ (consenso): da tre prodotti a due. Se i tre termini sono realizzati con porte, si risparmia una AND e un ingresso della OR.

Complemento di una funzione

Il complemento F‾\overline F ha la tabella di verità con 00 e 11 scambiati nella colonna dell'uscita. Per ottenerne l'espressione si hanno due vie.

(a) De Morgan. Esempio: F1=A‾B+AB‾F_1=\overline AB+A\overline B (XOR). F1‾=A‾B‾⋅AB‾‾=(A+B‾)(A‾+B)=AA‾+AB+B‾ A‾+B‾B=AB+A‾ B‾\overline{F_1}=\overline{\overline AB}\cdot\overline{A\overline B}=(A+\overline B)(\overline A+B)=A\overline A+AB+\overline B\,\overline A+\overline BB=AB+\overline A\,\overline B (XNOR) ✓.

(b) Duale e negazione dei letterali. Si scrive l'espressione duale (scambio di AND/OR e di 0/10/1) e poi si nega ogni letterale. Stesso esempio: il duale di A‾B+AB‾\overline AB+A\overline B è (A‾+B)(A+B‾)(\overline A+B)(A+\overline B); negando i letterali si ottiene (A+B‾)(A‾+B)(A+\overline B)(\overline A+B), uguale al risultato di (a) ✓.

Esempio più ricco. F2=A‾B+C(A‾+D)F_2=\overline AB+C(\overline A+D). Per (b): duale (A‾+B)⋅(C+A‾D)(\overline A+B)\cdot(C+\overline AD), negando i letterali F2‾=(A+B‾)(C‾+AD‾)\overline{F_2}=(A+\overline B)(\overline C+A\overline D). Sviluppando il prodotto: F2‾=AC‾+A⋅AD‾+B‾ C‾+B‾AD‾=AC‾+AD‾+B‾ C‾+AB‾ D‾\overline{F_2}=A\overline C+A\cdot A\overline D+\overline B\,\overline C+\overline B A\overline D=A\overline C+A\overline D+\overline B\,\overline C+A\overline B\,\overline D; l'ultimo termine contiene AD‾A\overline D, quindi è assorbito (AD‾+AB‾ D‾=AD‾A\overline D+A\overline B\,\overline D=A\overline D) e resta F2‾=AC‾+AD‾+B‾ C‾\overline{F_2}=A\overline C+A\overline D+\overline B\,\overline C. Si può controllare con la tabella di verità (16 righe, quattro variabili) che F2+F2‾=1F_2+\overline{F_2}=1 e F2⋅F2‾=0F_2\cdot\overline{F_2}=0 per ogni combinazione.

Letterali e costo

Un letterale è ogni occorrenza di una variabile, diretta o negata. AB+A‾CAB+\overline AC ha 2 termini e 4 letterali. Due criteri di costo di una forma a due livelli:

  • numero di letterali (si ricava dall'espressione, ma non sempre rappresenta bene il circuito);
  • numero di ingressi delle porte (gate input cost): si somma il numero di ingressi di tutte le porte del diagramma; è proporzionale al numero di transistor e connessioni, quindi più accurato. In una somma di prodotti: ingressi di ogni AND (con almeno 2 letterali) più ingressi della OR finale.

Esempio. F=AB+A‾CF=AB+\overline AC: 2 AND a 2 ingressi ++ OR a 2 ingressi ⇒\Rightarrow 2+2+2=62+2+2=6 ingressi (4 letterali); gli inverter, se contati, aggiungono un ingresso ciascuno. La forma di costo minimo non è necessariamente unica.

Errori comuni

  • De Morgan sbagliato: X+Y+Z‾≠X‾ Y‾+Z‾\overline{X+Y+Z}\ne\overline X\,\overline Y+\overline Z; vanno complementati tutti i letterali e scambiati tutti i connettivi.
  • Applicare l'assorbimento a termini non contenuti l'uno nell'altro (X+YZ≠XX+YZ\ne X).
  • Credere che X+X′Y=XX+X'Y=X (è X+YX+Y).
  • Dimenticare di verificare il risultato con la tabella di verità (o sostituendo valori) quando il passaggio algebrico è lungo.

Versione ripasso

Esercizi su questo argomento

Teoria collegata