Algebra di Boole - Roberto Borchia

Commenti

Transcript

Algebra di Boole - Roberto Borchia
Algebra di Boole
In matematica, informatica ed elettronica, l'algebra di Boole, anche detta algebra booleana, è un'algebra
astratta che opera essenzialmente con i soli valori di verità 0 e 1, che sono cioè negazione e affermazione o
anche falso e vero.
Tale algebra permette di definire gli operatori logici AND (prodotto logico), OR (somma logica) e
poi NOT (negazione o complementazione), la cui combinazione permette di sviluppare qualsiasi funzione
booleana (per questo AND, OR e NOT costituiscono un insieme funzionalmente completo) e consente di
trattare in termini esclusivamente algebrici le operazioni insiemistiche dell'intersezione, dell'unione e
della complementazione, oltre a questioni riguardanti singoli bit 0 e 1, sequenze binarie, matrici binarie e
diverse altre funzioni binarie.
L'algebra sviluppata nel 1854 all'University College di Cork da Boole (Lincoln, 2 novembre 1815 –
Ballintemple, 8 dicembre 1864 - è stato un matematico e logico britannico, ed è considerato il fondatore
della logica matematica. La sua opera influenzò anche settori della filosofia ) per scrivere in forma algebrica
la logica delle proposizioni, assume oggi un ruolo importante in vari ambiti, in particolare nella logica
matematica e nell'elettronica digitale, dove nella progettazione dei circuiti elettronici rivestono grande
importanza i teoremi deducibili dagli assiomi che fondando l'algebra e in particolare si ricordi il teorema di
Shannon del 1940 utilizzato per scomporre una funzione booleana complessa in funzioni più semplici, o per
ottenere un'espressione canonica da una tabella della verità o da un'espressione non canonica.
Proprietà
Commutativa
Associativa
Idempotenza
Assorbimento
Distributiva
Esistenza di minimo e massimo
Esistenza del complemento
Il modo in cui sono elencate le proprietà vuole mettere in evidenza la simmetria che c'è tra i due operatori
che è poi all'origine della legge di dualità e altre proprietà molto importanti. Nell'elencare gli assiomi il
complemento è stato indicato con un "!" (punto esclamativo) antecedente alla variabile
booleana (notazione tipica della programmazione in C e C++); il complemento può anche essere indicato
con un trattino sulla variabile (che è tipograficamente difficile da realizzare, anche se è la notazione
migliore), con uno slash prima della variabile o addirittura con un segno meno antecedente a essa, quando
non è una notazione equivoca. Il complemento corrisponde all'operazione logica NOT.
Si elencano ora la legge di dualità e alcune proprietà derivanti dagli assiomi ora visti con le relative
dimostrazioni; oltre a queste conseguenze ci sono poi due importanti teoremi dell'algebra booleana che sono
i teoremi di De Morgan e il teorema di Shannon. I teoremi che si dimostrano ora sono validi per qualsiasi
"porzione di realtà" che soddisfa gli assiomi di quest'algebra astratta e in particolare saranno applicabili
nell'algebra degli insiemi, nell'algebra della logica delle proposizioni e nell'algebra dei circuiti.
Legge di dualità
Da qualsiasi identità boolena se ne può trarre un'altra per dualità, sostituendo cioè a ogni operatore e agli
elementi 0 e 1 il rispettivo duale: il duale di + è *, il duale di 0 è 1 (la dimostrazione di questo sta al prossimo
paragrafo), il duale di a è in generale !a (a negato, NOT a).
Grazie a questa legge si può vedere come i 14 postulati dati per definire l'algebra booleana non sono tutti
indipendenti tra loro: in particolare si vede che PX e PX' (per X=1,...,7) sono uno il duale dell'altro!
Complementi di 0 e 1
0 e 1 sono uno il complementare dell'altro: per dimostrarlo basta verificare la definizione di complemento,
cioè che
Si vede immediatamente che
applicando rispettivamente la proprietà del minimo e quella del massimo e il teorema ora enunciato risulta
così dimostrato.
Si nota che, per come è strutturata quest'algebra, questa dimostrazione ha permesso di dimostrare a partire
dagli assiomi che l'elemento neutro esiste ed è unico (l'esistenza non è quindi postulata e l'unicità è insita
nell'esistenza essendo solo 2 i valori con cui sta lavorando, cosa non vera per altri tipi di algebra e altre
strutture algebriche!).
Convoluzione
Negando due volte lo stesso elemento si ottiene l'elemento stesso (logica aristotelica: una doppia negazione
corrisponde a un'affermazione).
Per dimostrarlo basta considerare l'assioma di esistenza del complemento considerato su due
elementi a e b=!a:
Essendo valida la proprietà commutativa e siccome il complemento esiste unico, se ne deduce facilmente
che
, che è quello che si voleva dimostrare.
Elementi neutri
0 è l'elemento neutro della somma e 1 è l'elemento neutro del prodotto.
Per la dimostrazione basta sfruttare la proprietà dell'assorbimento grazie alla quale si deduce che:
Ora, sfruttando la proprietà del massimo e minimo per la quale a*0=0 e a+1=1, si deduce facilmente che:
che è quello che si doveva dimostrare.
Assorbimento del complemento
L'assorbimento del complemento dice che
Per dimostrarlo basta applicare la proprietà distributiva secondo la quale:
dopodiché, notando che a+!a=1 e che 1 è l'elemento neutro del prodotto logico risulta dimostrato il teorema.
Per la legge di dualità si capisce anche che esiste un teorema duale a questo che sarà:
Questo teorema può essere preso per vero accettando la validità della legge di dualità oppure può essere
dimostrato in modo del tutto analogo al precedente. Si nota che, nello scrivere l'espressione duale, si è
dovuta rispettare la precedenza di applicazione delle operazioni e perciò le parentesi intorno ad a+!b della
seconda espressione sono necessarie!
Teorema dell'elemento unico
Se
e
, allora y è unico (o anche x è unico perché si vede che, essendo valida la
proprietà commutativa, il ruolo di x e y nelle espressioni è lo stesso!).
Per la dimostrazione si suppone per assurdo che esistano due valori distinti y e z che soddisfano alle due
espressioni, e cioè
Essendo anche che
si è ottenuto che
Nell'ultimo passaggio si è sfruttato il principio di equivalenza delle eguaglianze e non si è semplificato la x,
cosa che non è stata dimostrata e non può essere dimostrata in quest'algebra. Allora, quello che si ha ora è
che
Moltiplicando membro a membro e utilizzando la proprietà distributiva si ha:
cioè y=z e perciò l'elemento che soddisfa le due relazioni scritte sopra è unico.
Principio di eliminazione
Come si è accennato prima, nell'algebra di Boole non valgono i principi di eliminazione, cioè non vale che:
Vale che y=z solamente se queste due espressioni ora scritte valgono contemporaneamente!
L'unica cosa che si può dire invece nel caso in cui valga solo la prima espressione è che:
Operatori booleani
Si è visto che gli operatori dell'algebra booleana possono essere rappresentati in vari modi, ma spesso sono
scritti semplicemente come AND, OR e NOT che è la scrittura che utilizziamo ora per parlare degli operatori
booleani. Nella descrizione dei circuiti, possono anche essere usati NAND (NOT AND), NOR (NOT OR)
e XOR (OR esclusivo).
Le diverse simbologie per rappresentare gli operatori sono scelte in base al campo in cui si lavora: i
matematici usano spesso il simbolo + per l'OR, e × o * per l'AND, in quanto per alcuni versi questi operatori
lavorano in modo analogo alla somma e alla moltiplicazione. La negazione NOT viene rappresentata spesso
da una linea disegnata sopra l'argomento della negazione, cioè dell'espressione che deve essere negata.
Oppure in informatica si utilizza il simbolo | o || per l'OR, & o && per l'AND, e ~ o ! per NOT (es. A OR B AND
NOT C equivale a A|B & ~C oppure a A+B*!C). Se ci riferisce agli operatori con i simboli di somma e
moltiplicazione e poi intende la negazione come se fosse una "elevazione a potenza", è facile da ricordare
l'ordine di applicazione degli operatori: prima si applicano le negazioni, poi le AND e poi le OR.
Nella progettazione di circuiti elettronici, vengono utilizzati anche gli operatori brevi NAND (AND negato),
NOR (OR negato) e XNOR (XOR negato): questi operatori, come XOR, sono delle combinazioni dei tre
operatori base e vengono usati solo per rendere la notazione più semplice.
Operatori:

NOT - simboli alternativi: x, ~, ¬, ! (in C e C++)

AND - simboli alternativi: *,

OR - simboli alternativi: +,

XOR - simboli alternativi: ⊕,



, &, && (in C e C++), BUT (usato nella logica booleana insieme al NOT)
, |, || (in C e C++)
NAND - simbolo alternativo: ↑
NOR - simbolo alternativo: ↓
, ∨, ^, EOR, orr
XNOR
Valori:

vero - simboli alternativi: true, 1, ON, SI (YES), alto

falso - simboli alternativi: false, 0, OFF, NO, basso
(adattamento da Wikipedia)