Implicanti e Implicanti Primi di una Funzione Booleana
Nella lezione precedente abbiamo studiato il metodo di minimizzazione delle funzioni booleane attraverso l'uso delle mappe di Karnaugh. Questa tecnica grafica funziona se abbiamo a che fare con un numero relativamente ridotto di variabili, tipicamente fino a 4 o 5. Quando il numero di variabili aumenta, diventa più complesso applicare questa tecnica e si rende necessario ricorrere ad altri metodi come, ad esempio, il metodo di Quine-McCluskey.
Per capire come funzionano tali metodi, però, bisogna prima introdurre alcuni concetti fondamentali relativi alle funzioni booleane: gli implicanti e gli implicanti primi.
- Un implicante di una funzione booleana è un termine che implica la funzione stessa.
- Un implicante primo è un implicante che non è implicato da nessun altro implicante.
- Gli implicanti primi sono importanti perché una funzione booleana può essere espressa come somma dei suoi implicanti primi.
- Tra gli implicanti primi, alcuni sono implicanti essenziali, ossia implicanti che coprono mintermini non coperti da nessun altro implicante.
- Il nucleo di una funzione booleana è la somma degli implicanti essenziali.
Implicanti di una Funzione booleana
Una importante proprietà riguardante le funzioni booleane è l'implicazione.
Per comprendere come funziona, consideriamo due funzioni booleane,
Ad esempio, se
Allora possiamo osservare che
L'implicazione, da un punto di vista algebrico, risulta falsa solo se
Applicando il teorema di De Morgan, possiamo riscrivere l'espressione come segue:
Ossia, l'implicazione è uguale alla funzione negata
Quando ciò si verifica allora si dice che la funzione
Implicante di una funzione
Date due funzioni booleane
In generale, data una funzione
In generale, nell'ambito della progettazione delle reti logiche e della minimizzazione delle funzioni booleane, non ci interessano tutti i possibili implicanti di una funzione generica. Ciò che ci interessa sono gli implicanti di una funzione in forma canonica o in forma standard
Se, infatti, consideriamo una funzione
dove
Ciò è facile da dimostrare, infatti scegliamo una clausola
Ma la somma
Quindi, ricapitolando:
Clausole di una funzione booleana in forma Somma di Prodotti
Data una funzione booleana
Proprio per la loro importanza, da adesso in poi considereremo con
Proprietà delle Clausole Implicanti
Le clausole, in quanto implicanti di una funzione in forma canonica o standard, hanno delle importanti proprietà:
-
Una clausola
ne implica un'altraB se e solo seA contiene tutti i letterali diB .A Da un punto di vista insiemistico possiamo scrivere:
B \subseteq A In tal caso, possiamo vedere
come l'intersezione diB con un altro insiemeA dell'algebra:C B = A \cap C Che, in termini algebrici, possiamo scrivere:
B = A \cdot C ossia
è uguale adB per qualche altro letterale.A Ad esempio, se
eA = x \cdot y , allora possiamo scrivere:B = x \cdot y \cdot z' B = A \cdot z' e
.B \Rightarrow A -
Date due clausole
eA di ordineB (ossia che contengonon letterali), sen eA hanno gli stessiB letterali e l'ultimo letterale è presente inn-1 ma è complementato inA allora la somma diB eA è uguale alla clausola contenente solo i primiB letterali.n-1 In altre parole, supponiamo di avere due clausole:
A = C \cdot x B = C \cdot x' Ossia, le due clausole sono composte dal prodotto di
con un letterale e il suo complementare.C Se consideriamo la somma delle due clausole:
A + B = C \cdot x + C \cdot x' = C \cdot (x + x') = C \cdot 1 = C Allora la clausola
prende il nome di consenso delle due clausoleC eA che si oppongono nella variabileB .x Ad esempio, se consideriamo la somma di termini:
xy'z + xyz I due termini o clausole si oppongono nella variabile
.y Per cui, considerando la somma delle due clausole, otteniamo:
xy'z + xyz = xz(y' + y) = xz \cdot 1 = xz Quindi, la clausola
è il consenso delle due clausoleC = xz eA .B -
Ad una funzione può essere sommato un suo implicante senza modificarne il valore.
Infatti, se consideriamo una funzione
e un suo implicanteg , possiamo scrivere:A g = g + A Questo è possibile perché
è già contenuto inA , quindi la somma non modifica il valore dig .g Ad esempio, consideriamo la funzione:
f(x, y, z) = xy + x'z Un implicante di questa funzione è:
A = xyz Se sommiamo
aA , otteniamo:f f = f + A f = xy + x'z + xyz Il valore di
non è cambiato, poiché abbiamo sommato un implicante dif . Per convincersene basta tracciare le tabelle di verità della funzionef nelle due forme e verificare che sono identiche.f -
è una clausola implicante di una funzione booleanaA in prima forma canonica se e solo se inf compaiono tutti i mintermini che hanno come fattoref .A Prendiamo un esempio. Consideriamo la funzione in prima forma canonica che segue:
f(x, y, z) = x'y'z + x'yz + xyz' + xyz Questa funzione è in prima forma canonica come somma di mintermini.
Se consideriamo la clausola
abbiamo che:A = x'z A \Rightarrow f In quanto
è fattor comune dei minterminiA ex'y'z .x'yz
Implicanti Primi
Tra i vari implicanti di una funzione booleana, rivestono un'importanza fondamentale i implicanti primi o implicanti principali:
Implicanti Primi
Data una funzione booleana
L'importanza degli implicanti primi sta nel fatto che una qualunque funzione booleana
La dimostrazione di questa affermazione è molto semplice. Infatti supponiamo di avere una funzione
Supponiamo che uno dei termini, ad esempio
Dalle proprietà delle clausole sappiamo che possiamo aggiungere una clausola ad una funzione senza alterarne il valore, per cui possiamo aggiungere
Ma poiché sappiamo che:
L'implicante non primo
Si può dimostrare facilmente che:
Una funzione booleana espressa come somma di implicanti primi è in forma minima
Una funzione espressa come somma di implicanti primi minimizza:
- Il numero di letterali presenti;
- Il numero di ingressi.
Inoltre, tra le forme minime a 2 livelli che minimizzano il numero di porte logiche ne esiste almeno una in forma di somma di implicanti primi.
Ragioniamo su quest'ultima definizione. Infatti, se consideriamo una funzione booleana
Quindi, tra le forme minime di una funzione si può trovare sempre una forma che sia una somma di implicanti primi.
Non vale, però, il contrario: non è detto che una forma di somma di implicanti primi sia necessariamente minima.
Implicanti Essenziali e Nucleo di una funzione booleana
Per capire quest'ultimo punto, dobbiamo introdurre due concetti fondamentali:
Implicante Primo Essenziale
Data una funzione booleana
Un implicante essenziale si indica con il simbolo
Per chiarire cos'è un implicante essenziale ci conviene ricorrere ad un esempio. Consideriamo la funzione booleana a quattro variabili rappresentata nella seguente mappa di Karnaugh:
In questa funzione, abbiamo due implicanti essenziali. Il primo è mostrato di seguito ed è essenziale perché è l'unico che copre il mintermine (quindi è implicato dal mintermine)
Il secondo è mostrato di seguito ed è un implicante essenziale in quanto è l'unico a coprire il mintermine
Gli altri implicanti individuabili sulla mappa non sono essenziali perché gli uni che coprono sono coperti anche da altri implicanti:
Come si può notare, solo l'implicante primo rosso, il primo, e quello verde, il secondo, sono essenziali perché coprono degli 1 non coperti da nessun altro. (Si ricordi che la copertura di un mintermine può avvenire tramite più implicanti primi e che la copertura significa che quel mintermine implica l'implicante primo).
A partire dagli implicanti primi possiamo definire un secondo concetto:
Nucleo di una funzione booleana
Data una funzione booleana
Ritornando all'esempio della funzione di sopra, il suo nucleo sarà composto dai due implicanti essenziali che abbiamo individuato sulla mappa di Karnaugh:
Si può facilmente dimostrare che una qualunque funzione booleana può essere riscritta come:
Dove
In generale vale che:
Ogni funzione espressa come somma di implicanti primi contiene tutti gli implicanti essenziali
Se
La dimostrazione di questa affermazione è molto semplice.
Infatti, supponiamo di avere una funzione booleana
Dato che
Ciò implica che se
Ma se
Da queste considerazioni nasce il metodo di Quine-McCluskey che vedremo nelle prossime lezioni.
In generale, però, tutte le tecniche di minimizzazione di una funzione booleana lavorano in questo modo:
- Si ricercano tutti gli implicanti primi della funzione;
- Si individuano gli implicanti essenziali tra gli implicanti primi, in altre parole si individua il nucleo
della funzione;N(f) - Si determina la forma minima componendo
, ossia si aggiungono gli implicanti primi non essenziali.R(f)
Implicanti Primi e Mappe di Karnaugh
Nella lezione precedente abbiamo visto come minimizzare funzioni di 2, 3 e 4 variabili adoperando il metodo grafico delle mappe di Karnaugh.
Nel farlo ci siamo limitati a coprire tutti gli 1 della mappa con i sotto-cubi, ossia quei raggruppamenti di 2, 4, 8 o 16 celle contigue. Non abbiamo fatto cenno agli implicanti primi, agli implicanti essenziali e alla copertura in quanto abbiamo usato un approccio più intuitivo per risolvere il problema della minimizzazione.
Adesso che abbiamo chiari i concetti di nucleo, implicanti essenziali e copertura, ci chiediamo come essi siano collegati al metodo delle mappe.
Quindi, rivediamo un attimo tali concetti in ottica delle mappe di Karnaugh.
Nella scelta di quadrati adiacenti in una mappa, dobbiamo assicurarci che:
- tutti i mintermini della funzione siano coperti quando combiniamo i quadrati;
- il numero di termini nell'espressione sia minimizzato;
- non ci siano termini ridondanti (cioè, mintermini già coperti da altri termini).
A volte ci possono essere due o più espressioni che soddisfano i criteri di semplificazione. La procedura per combinare i quadrati nella mappa può essere resa più sistematica se comprendiamo il significato di due tipi speciali di termini. Abbiamo visto che un termine prodotto è un implicante della funzione a cui appartiene. Un implicante primo è un termine prodotto ottenuto combinando il massimo numero possibile di quadrati adiacenti nella mappa.
Quindi, un implicante è primo se nessun altro implicante con meno letterali lo copre. Se un mintermine in un quadrato è coperto da un solo implicante primo, quell'implicante primo si dice essere essenziale, cioè, non può essere rimosso da una descrizione della funzione.
Gli implicanti primi di una funzione possono essere ottenuti dalla mappa combinando tutti i possibili numeri massimi di quadrati. Questo significa che un singolo 1 su una mappa di Karnaugh rappresenta un implicante primo se non è adiacente a nessun altro 1. Due 1 adiacenti formano un implicante primo, purché non siano all'interno di un gruppo di quattro quadrati adiacenti. Quattro 1 adiacenti formano un implicante primo se non sono all'interno di un gruppo di otto quadrati adiacenti, e così via. Gli implicanti primi essenziali sono trovati guardando ogni quadrato marcato con un 1 e controllando il numero di implicanti primi che lo coprono. Un implicante primo è essenziale se è l'unico implicante primo che copre il mintermine.
Consideriamo la seguente funzione booleana a quattro variabili:
Alcuni dei mintermini della funzione sono marcati con 1 nelle mappe della figura che segue, in cui, inoltre, abbiamo omesso
Tale mappa parziale mostra i due implicanti primi essenziali ossia il nucleo della funzione, ognuno formato collassando quattro celle in un termine avente solo due letterali. Un termine è essenziale perché c'è solo un modo per includere il mintermine
Quindi, il nucleo della funzione è:
La figura che segue mostra tutti i modi possibili in cui i tre mintermini possono essere coperti con implicanti primi:
Il mintermine
Di conseguenza, la componente
L'esempio precedente ha dimostrato che l'identificazione degli implicanti primi nella mappa aiuta nel determinare le alternative che sono disponibili per ottenere un'espressione semplificata.
La procedura per trovare l'espressione semplificata dalla mappa richiede che determiniamo prima tutti gli implicanti primi essenziali, ossia il nucleo. L'espressione semplificata è ottenuta dalla somma logica di tutti gli implicanti primi essenziali, più altri implicanti primi che possono essere necessari per coprire qualsiasi mintermine rimanente non coperto dagli implicanti primi essenziali. Occasionalmente, ci può essere più di un modo di combinare i quadrati, e ogni combinazione può produrre un'espressione ugualmente semplificata.