Sunteți pe pagina 1din 17

Algebra Boole.

Functii logice 25

ELEMENTE DE ALGEBRĂ BINARĂ

Algebra Boole. Funcţii logice

3.1 Logica binară

3.1.1 Definirea algebrei booleene ca latice

Se consideră o mulţime M nevidă, împreună cu două operaţii binare pe M, reuniune () şi


intersecţie (). Tripletul: L = (M, , ) este o latice şi se bucură de următoarele proprietăţi:
1) Comutativitate : m1  m2 = m2  m1 , m1,m2M.
m1  m2 = m2  m1
2) Asociativitate : m1  (m2  m3) = (m1  m2)  m3 , m1,m2,m3M.
m1  (m2  m3) = (m1  m2)  m3
3) Absorbţie : m1  (m2  m1) = m1 , m1,m2M.
m1  (m2  m1) = m1
Aceste proprietăţi constituie axiomele pentru latice. Se observă că simbolurile  şi  se pot
schimba între ele. Acest lucru rămâne valabil în orice afirmaţie ce decurge din sistemul de axiome,
proprietate cunoscută sub denumirea de principiul dualităţii pentru latici.
Având în vedere axiomele 1) şi 2), operaţiile de  şi  se pot extinde la orice număr arbitrar, dar
finit, de termeni, indiferent de ordinea termenilor sau factorilor:
 j=1,n mj = m1  m2  ...  mn ;  j=1,n mj = m1  m2  ...  mn
Plecând de la axiomele definite anterior, se poate demonstra pentru latici şi proprietatea de
idempotenţă: m  m = m, m  m = m, mM.
O latice se poate defini şi ca o mulţime parţial ordonată: L = (M,) care are o cea mai mică
margine superioară (c.m.m.m.s), notată cu “s”, şi o cea mai mare margine inferioară (c.m.M.m.i),
notată cu “p”, pentru fiecare pereche de elemente. Legătura între cele două definiţii ale laticelor se
poate face notând: s = m1  m2 şi p = m1  m2.
O latice finită (mărginită) are un element care este c.m.M.m.i., numit ultim element al laticei,
notat prin 0, astfel încât:
26 Algebra Boole. Functii logice

m  0 = m, m  0 = 0, mM,
şi un alt element, care este c.m.m.m.s., numit prim element al laticei, notat prin 1, astfel încât:
m  1 = 1, m  1 = m , mM.
Se observă că 0 este elementul neutru în raport cu reuniunea, iar 1 este elementul neutru în raport cu
intersecţia.
Fie L = (M,,,0,1) o latice finită şi mM. Un element complementar (sau pe scurt, un
complement) al elementului m este elementul: mc, astfel încât există:
 Principiul terţului exclus: m  mc = 1
 Principiul contradicţiei: m  mc = 0.
Trebuie menţionat că nu orice element dintr-o latice finită are un complement şi, de asemenea,
complementul unui element al unei latice, dacă acesta există, nu este în mod necesar unic.
Dacă într-o latice finită orice element are un complement unic, mc, această latice se numeşte
complementară.
O latice L este distributivă dacă şi numai dacă:
(m1  m2)  m3 = (m1  m3)  (m2  m3) , m1,m2,m3M.
(m1  m3)  m3 = (m1  m3)  (m2  m3)
Cele două proprietăţi poartă numele de distributivitatea reuniunii în raport cu intersecţia şi respectiv,
distributivitatea intersecţiei în raport cu reuniunea.
O latice particulară, care este distributivă şi complementară, se numeşte algebră Boole. Aceasta se
scrie ca un cvadruplu: B = (M,,,c), unde, operaţia “c” este operaţia unară de complementare.

3.1.2 Proprietăţile algebrei booleene

O algebră booleană poate fi definită şi prin proprietăţile sale. Fie o mulţime M nevidă, având un cel
mai mic element, 0, numit şi cea mai mare margine inferioară şi un cel mai mare element, 1, numit
şi cea mai mică margine superioară a mulţimii.
Considerăm pe această mulţime 3 operaţii: reuniune, , intersecţie, , (operaţii binare, care implică
minim 2 elemente) şi operaţia de complementare, c, operaţie unară.
Prin definiţie, o algebră Boole este un cvadruplu: B = (M, , , c). Pe o astfel de structură algebrică
sunt adevărate următoarele proprietăţi:
1) Comutativitate: m1  m2 = m2  m1 ,
m1  m2 = m2  m1 , m1,m2M.
2) Asociativitate: (m1  m2)  m3 = m1  (m2  m3) ,
(m1  m2)  m3 = m1  (m2  m3) , m1,m2,m3M.
3) Absorbţie: m1  (m2  m1) = m1 ,
m1  (m2  m1) = m1 , m1,m2M.
4) Distributivitate: m1  (m2  m3) = (m1  m2)  (m1  m3) ,
m1  (m2  m3) = (m1  m2)  (m1  m3) , m1,m2,m3M.
5) Idempotenţă: m  m = m, m  m = m , mM.
6) Proprietăţile lui 1 şi 0: m0=m ; m0=0,
m  1 = 1 ; m  1 = m , mM.
7) Principiul terţului exclus: m  mc = 1, mM, (mc este complementul lui m)
Într-o algebră Boole orice element are complement şi acesta este unic.
8) Principiul nonconcordanţei sau a contradicţiei: m  mc = 0, mM.
9) Principiul involuţiei sau a dublei negări: (mc)c = m, mM.
Algebra Boole. Functii logice 27

10) Legile lui de Morgan: (m1  m2)c = (m1)c  (m2)c ,


(m1  m2)c = (m1)c  (m2)c , m1,m2,M.
Când mulţimea M cuprinde numai 2 elemente {0,1}, putem defini o algebră Boole cu două valori:
B2 = ({0,1}, , , c). Această algebră este foarte importantă în practică pentru studiul circuitelor
logice.
În această algebră, cele 3 operaţii se definesc pe elementele mulţimii astfel :

 0 1  0 1 m 0 1
0 0 1 0 0 0 mc 1 0
1 1 1 1 0 1

În tehnică, aplicarea algebrei Boole şi-a găsit o corespondenţă în ceea ce priveşte materializarea
operatorilor logici.
Pentru operaţii, în afara denumirilor menţionate se mai folosesc şi:
 = operaţia SAU = disjuncţia logică = suma logică.
Se mai notează cu: ““  “V”  “+”
(deci: m1  m2  m1 V m2  m1 + m2)
Deoarece suma logică nu se confundă cu sumarea algebrică, se evită ultimul simbol.
 = operaţia ŞI = conjuncţia logică = produs logic.
Se mai notează cu: ““  ““  “&“  “ “
(deci: m1  m2  m1  m2  m1 & m2  m1  m2  m1m2)
c
= operaţia NU = negarea logică = inversiunea logică
m  m c  m'

3.2 Funcţii booleene (FB)

3.2.1 Definiţii

Algebra booleană cu două elemente, denumită şi algebră bivalentă, are aplicaţie directă în teoria
circuitelor de comutaţie. În acest caz, între valorile mulţimii {0,1} şi cele două stări ale elementelor
de comutaţie se stabileşte o corespondenţă biunivocă. Astfel, o variabilă asociată unui element de
comutare poate lua numai două valori, 0 şi 1, fiind o variabilă booleană bivalentă, sau pe scurt, o
variabilă booleană. Rezultă că pentru circuitele realizate cu elemente de comutaţie modelul
matematic îl constituie funcţiile de variabile binare. Deoarece circuitele realizate cu elemente de
comutaţie nu pot avea decât două stări distincte, funcţiile care descriu aceste circuite vor lua numai
două valori. Aceste funcţii bivalente de variabile binare se numesc funcţii booleene, sau funcţii
logice şi au o deosebită importanţă pentru studiul circuitelor logice şi comenzilor numerice.
Se consideră vectorul X = (x1,x2,...,xn), ale cărui coordonate (x1,...,xn) pot lua valorile 0 sau 1. În
acest caz rezultă că pot exista 2n vectori X distincţi. Se notează mulţimea acestor vectori cu B2n . De
asemenea, fiecărui vector din B2n i se pot atribui valorile 0 sau 1.
Prin definiţie, o funcţie boole: f(X) = f (x1,x2,...,xn), X = (x1,...,xn) este o aplicaţie f : B2n  {0,1}.
Se poate da şi o altă definiţie a funcţiei boole, mai concretă, considerând că mulţimea B2n este
formată din două submulţimi disjuncte: K şi K c (Kc este complementara lui K în raport cu B2n ),
n n
astfel ca: K, Kc  B2 ; K  Kc = B2 ; K  Kc = .
Atunci, o funcţie boole de n argumente: f(x) = f(x1,...,xn), X = (x1,...,xn) se poate defini şi prin:
28 Algebra Boole. Functii logice

xK  f(x) = 1,
xKc  f(x) = 0.
Deci, unei FB i se asociază un vector Vf = (f(x)) cu 2n componente egale cu 0 sau 1, fiecare
componentă fiind asociată unui vector X dat.
Întrucât există 2 2 vectori bivalenţi cu 2n componente, rezultă că numărul FB distincte de “n”
n

n
argumente este finit şi egal cu 2 2 .
Să notăm valorile fixe ale coordonatei unui vector din B2n prin: (x1*,x2*,...,xn*). Aceste valori pot fi
privite ca o combinaţie de valori ale argumentelor unei FB. Deoarece numărul acestor combinaţii
este finit şi egal cu 2 2 , atunci orice FB poate fi complet definită printr-un tabel finit cu 2 n rânduri.
n

În acest tabel, în partea stângă se trec combinaţiile valorilor argumentelor, iar în partea dreaptă
valorile corespunzătoare, 0 sau 1, ale funcţiei:

x1 x2.. . . . . . xn-1 xn f(x1 ,...,xn)


0 0...... 0 0 1
0 0 . . . . . . .0 1 2
0 0 . . . . . . .1 0 , cu i{0,1}, i = 1,2n
3
...... ............ ........
1 1. . . . . . . 1 1  2n

Există situaţii când pentru unele combinaţii ale valorilor argumentelor o FB să nu aibă valoarea
determinată. Astfel de FB nedeterminate pentru una sau mai multe combinaţii ale valorilor
argumentelor se numesc incomplet definite. În tabelele de definiţie ale funcţiilor, valorile
nedeterminate se notează cu asterisc. De cele mai multe ori, situaţiilor de nedeterminare li se pot
ataşa arbitrar valori din mulţimea {0,1}. Se spune că facem o definire completă a funcţiei. În
general, dacă o FB nu este definită pentru k combinaţii ale valorilor argumentelor, atunci, prin
definire arbitrară se pot obţine 2k funcţii distincte complet definite.
Astfel de funcţii incomplet definite se întâlnesc frecvent în practica comenzilor secvenţiale,
evidenţierea situaţiilor de nedefinire şi atribuirea voită a valorilor 0 sau 1 fiind foarte importantă
pentru simplificarea lor.
Exemplu: Fie o FB de 3 argumente:

a b c f(a,b,c)
0 0 0 0
0 0 1 1 0 Se constată că prin definirea completă a acestei
0 1 0 * 1 funcţii (nedefinită pentru 3 combinaţii ale
0 1 1 0 valorilor argumentelor) se pot obţine 23 = 8
1 0 0 0 0 funcţii booleene distincte.
1 0 1 * 1
1 1 0 1 0
1 1 1 * 1

3.2.2 Operaţii cu FB

Aşa cum se pot defini operaţii logice în mulţimea M = {0,1}, (şi anume: , , c), aceleaşi operaţii
se pot aplica şi funcţiilor logice. Operaţiile se definesc numai pe domeniul valorilor funcţiilor.
Algebra Boole. Functii logice 29

 Două FB, f1(x1,...,xn) şi f2(x1,...,xn) se numesc identice dacă au valori identice pentru toate
combinaţiile posibile ale valorilor argumentelor şi se scrie:
f1(x1,...,xn) = f2(x1,...,xn).
Dacă cel puţin pentru o singură combinaţie a valorilor argumentelor cele două funcţii nu au
aceleaşi valori atunci: f1(x1,...,xn)  f2(x1,...,xn).
 Fie f1, f2, f3, funcţii booleene de n argumente. Operaţiile , , c cu funcţii se definesc astfel:
1) f1  f2 = f3 dacă şi numai dacă: f1(x1,...,xn)  f2(x1,...,xn) = f3(x1,...,xn),
adică, valorile funcţiilor se combină conform tabelului operaţiei , pentru fiecare
combinaţie a valorilor argumentelor;
2) f1  f2 = f3 , dacă şi numai dacă: f1(x1,...,xn)  f2(x1,...,xn) = f3(x1,...,xn),
adică, valorile funcţiilor se combină conform tabelului operaţiei , pentru fiecare
combinaţie a valorilor argumentelor;
3) f 1  f 2  f 1 ( x1 ,..., x n )  f 2 ( x1 ,..., x n ) ,
adică, se respectă tabelul de definire a operaţiei de complementare.
Exemplu: Fie următoarele funcţii de două argumente x1 şi x2:

x1 x2 f1 f2 f3 f4 f5
0 0 0 1 1 0 0
0 1 1 0 1 0 1
1 0 1 1 1 1 0
1 1 0 0 0 0 1

Se observă că: f3 = f1  f2 , f4 = f1  f2 , iar f 5  f 2 .

3.2.3 Funcţii booleene elementare

Din punct de vedere abstract este interesant de a putea construi FB oricât de complexe, care din
punct de vedere practic să se reflecte prin comenzi discrete de complexitate mare. De aceea apare
necesitatea definirii unui număr de FB simple cu care să se poată defini orice FB mai complexă.
Din punct de vedere practic, definind funcţii de bază putem elabora circuite elementare care să
poată fi realizate modular, iar prin combinarea acestor module să putem materializa comenzi
complexe. Astfel de funcţii s-au numit FB elementare.
Plecând de la necesităţile practice, s-a constatat că este suficient a se folosi pentru definirea FB,
2
funcţii de două argumente. Cele 2 2 funcţii booleene de două argumente sunt prezentate în tabelul
următor: (Numărul lor este evident: NFB = 2 2 /n=2 = 2 2 = 24 = 16).
n 2

x1 x2 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15


0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0   x1  x2     x2  x1   1
1) FB degenerate:
 funcţii elementare constante
f0(x1,x2) = 0
f15(x1,x2) = 1
30 Algebra Boole. Functii logice

 funcţii elementare DA sau tampon


f12(x1,x2) = x1
f10(x1,x2) = x2
Astfel de funcţii se materializează cu circuite tampon folosite pentru adaptare de nivel logic sau de
sarcină logică.
 funcţii negaţie (inversoare logice)
f 3 ( x1 , x 2 )  f 12 ( x1 , x 2 )  x1
f 5 ( x1 , x 2 )  f 10 ( x1 , x 2 )  x 2

2) FB nedegenerate:
 Disjuncţia logică sau funcţia logică SAU:
f14(x1,x2) = f10(x1,x2)  f12(x1,x2) = x1  x2
 Conjuncţia logică sau funcţia logică ŞI:
f8(x1,x2) = f10(x1,x2)  f12(x1,x2) = x1  x2
 Funcţia lui Webb (Pierce):
f1(x1,x2) = x1  x2
Examinând valorile acestei funcţii rezultă că ea este negarea funcţiei disjuncţie; de aici,
denumirea de SAU-NU (NOR = NOT OR);
f 1 ( x1 , x 2 )  x1  x 2  f 14 ( x1 , x 2 )  x1  x 2  x1  x 2
Deci se mai poate scrie:
f 1 ( x1 , x 2 )  f 14 ( x1 , x 2 )  f 3 ( x1 , x 2 )  f 5 ( x1 , x 2 )  f 10 ( x1 , x 2 )  f 12 ( x1 , x 2 )
Din relaţia precedentă se observă că simbolul  are rolul de operator, definind situaţia "nici
x1 nici x2". Din acest motiv f1 se mai numeşte funcţie NICI.
 Funcţia lui Sheffer:
f7(x1,x2) = x1  x2
Examinând valorile acestei funcţii rezultă că ea este negarea funcţiei conjuncţie; de aici,
denumirea de ŞI-NU (NAND = NOT AND);
f 7 ( x1 , x 2 )  f 8 ( x1 , x 2 )  x1  x 2  x1  x 2  f 10 ( x1 , x 2 )  f 12 ( x1 , x 2 )
Conform acestei relaţii de echivalenţă se mai poate spune că funcţia lui Sheffer defineşte
situaţia: "numai x1 sau numai x2"; rezultă denumirea de funcţie NUMAI.
Ultimele funcţii (NICI şi NUMAI) au o deosebită importanţă atât pentru teoria FB cât şi pentru
aplicarea practică a acestora în realizarea circuitelor logice modulare (cu ajutorul acestor două
funcţii se pot realiza toate celelalte).
 Funcţia SUMA MODULO 2:
f6(x1,x2) = x1  x2
Se mai numeşte funcţie SAU EXCLUSIV deoarece corespunde sumării aritmetice a
valorilor argumentelor în baza 2 (spre deosebire de operaţia SAU care corespunde cu SAU
INCLUSIV şi este operaţia logică SAU: 1  1 = 0, dar 1  1 = 1).
Se poate demonstra tabelar că: x1  x 2  x1 x 2  x1 x 2

x1 x2 
0 0 0
0 1 1
1 0 1
1 1 0

x1 x2 x1 x2 x1 x 2 x1 x 2 x1 x 2  x1 x 2
Algebra Boole. Functii logice 31

0 0 1 1 0 0 0
0 1 1 0 1 0 1
1 0 0 1 0 1 1
1 1 0 0 0 0 0
Deoarece pentru fiecare din cele patru combinaţii ale valorilor argumentelor cele două părţi ale
expresiei au aceleaşi valori, identitatea este demonstrată.
 Funcţia echivalenţă:
f9(x1,x2) = x1  x2
Se poate verifica tabelar, sau utilizând relaţiile lui de Morgan că:
f 9 ( x1 , x 2 )  x1  x 2  ( x1  x 2 )  ( x1  x 2 )  x1 x 2  x1 x 2  x1  x 2
Funcţia este simetrică: f9(x1,x2) = f9(x2,x1).
Aceste funcţii se folosesc la realizarea filtrelor secvenţiale.
 Funcţiile implicaţie:
f11(x1,x2) = x1  x2 (directă)
f13(x1,x2) = x2  x1 (inversă)
Folosind reprezentarea tabelară se poate demonstra că:
f 11 ( x1 , x 2 )  x1  x 2  x1  x 2
f 13 ( x1 , x 2 )  x 2  x1  x1  x 2
(Se observă că prin combinarea prin funcţii ŞI a celor 2 funcţii implicaţie se obţine funcţia
echivalenţă. Deci, dacă x1  x2 şi x2  x1  x1  x2).
 Funcţiile inhibare (interdicţie):
f2(x1,x2) = x1  x2 (x1 inhibă x2) - inhibare directă
f4(x1,x2) = x2  x1 (x2 inhibă x1) - inhibare inversă.
Tabelar se demonstrează că:
f 2 ( x1 , x 2 )  f 13 ( x1 , x 2 )  x1  x 2  x1  x 2  x1 x 2
f 4 ( x1 , x 2 )  f 11 ( x1 , x 2 )  x1  x 2  x1  x 2  x1 x 2
(se observă că: x1  x2 sau x2  x1  x1  x2).

Din definirea FB elementare de două argumente rezultă că se pot genera funcţii noi fie prin
permutarea argumentelor, fie prin introducerea funcţiilor în locul argumentelor noilor funcţii.
Folosirea repetată a celor două reguli conduce la obţinerea de FB complexe. Funcţia booleană
obţinută din funcţiile f1,f2,...,fk prin utilizarea celor două reguli, se numeşte superpoziţia funcţiilor
f1,f2,...,fk. Astfel de exemplu se observă că funcţia  se obţine prin superpoziţia funcţiilor: ,  şi c.
Din cele prezentate rezultă că în afara operaţiilor ,  şi c cu variabile şi FB, se pot folosi ca
operatori de calcul şi simbolurile utilizate pentru celelalte funcţii elementare.
Din punct de vedere practic interesează totuşi uneori şi o serie de funcţii de 3 argumente.
De exemplu, funcţiile:
MAX(x1,x2,x3) şi MIN(x1,x2,x3) = MAX ( x1 , x 2 , x 3 )

x1 x2 x3 MAX MIN
0 0 0 0 1
0 0 1 0 1
32 Algebra Boole. Functii logice

0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 0

3.2.4 Metode de reprezentare a Funcţiilor Booleene

Studiul Funcţiilor Booleene se face în multe cazuri pe reprezentările acestora.


Există o mare diversitate de reprezentări ale FB care pot fi grupate în reprezentări grafice
(geometrice) şi reprezentări analitice. Reprezentările din prima categorie sunt intuitive şi se
folosesc pentru studiul FB cu un număr relativ redus de argumente. Din această categorie fac parte
reprezentarea prin tabel de adevăr, prin diagrame Euler, Venn, Veitch sau Karnough, prin grafuri sau
pe hipercub. A doua categorie asigură o reprezentare prin expresii algebrice booleene sau sub formă
de coduri. Reprezentările din această categorie permit studiul FB cu un număr oricât de mare de
argumente, cu posibilitatea utilizării mijloacelor numerice de calcul.
În continuare se va insista asupra celor mai utile reprezentări ale FB pentru scopuri tehnice.

 Reprezentarea prin tabele combinaţionale

Tabelul de adevăr este un tabel finit care conţine toate valorile funcţiei pentru toate combinaţiile
valorilor argumentelor (se numeşte “de adevăr” întrucât descrie complet funcţia).
Pentru o funcţie de n argumente, tabelul conţine 2 n linii (determinat de numărul combinaţiilor
posibile ale valorilor argumentelor) şi n+1 coloane (dat de valorile argumentelor şi de valorile
funcţiei).

x1 x2 ........... xn f(x1,...,xn)
0 0 0 1
0 0 1 2
........................................ ...........................
1 1 0  2 n 1
1 1 1  2n
i{0,1}.

Un alt mod de reprezentare este diagrama Veitch - Karnough.


Aceasta este tot o reprezentare tabelară, dar în raport cu tabelul de adevăr este mai compactă
datorită dispunerii după două direcţii a valorilor argumentelor.
În cazul general al unei FB de n argumente, diagrama Karnough conţine 2p linii şi 2q coloane, astfel
ca: n = p+q. Dacă n este par se consideră p = q, iar pentru n impar, se atribuie q = p+1 sau p = q + 1.
Rezultă astfel o diagramă cu 2p·2q = 2p+q = 2n câmpuri în care se trec valorile funcţiei pentru
combinaţiile corespunzătoare ale valorilor argumentelor indicate la capetele liniilor şi coloanelor
diagramei; în varianta iniţială, combinaţiile valorilor argumentelor pe linii şi coloane se dispun
conform codului binar natural. De exemplu, pentru 3 argumente:
S-a propus această reprezentare pornind de la faptul că prin astfel de
bc
00 01 10 11 reprezentări se pot obţine simplificări foarte avantajoase pentru
a FB. Pentru aceasta ar fi util ca variabilele ce reprezintă diverse linii şi
0
1
Algebra Boole. Functii logice 33

coloane alăturate, să nu schimbe simultan decât o singură valoare.


Aceasta înseamnă că două combinaţii (numere binare) să fie
adiacente. (În general, două numere într-o bază b de numeraţie sunt
adiacente dacă diferă cu o unitate modulo b).
Se observă că între câmpurile 2 şi 3 nu există adiacenţă - simultan se schimbă două variabile. Acest
lucru duce la aşa numitul hazard în funcţionare, întrucât valoarea acestor argumente sunt practic
semnale. În funcţie de modul cum cele două semnale sunt întârziate în schema de comandă,
funcţionarea poate fi complet diferită (dacă b are o tranziţie mai rapidă atunci se trece din 01 în 11,
deci se ajunge în câmpul 4, iar dacă c îşi schimbă valoarea mai repede, se va efectua tranziţia 01 
00, deci se ajunge în câmpul 1).
Acest dezavantaj se înlătură prin înlocuirea diagramei Veitch prin reprezentarea pe diagrama
Karnough bazată pe codul Gray, numit şi codul binar reflectat (derivă din cel natural). Acest cod
asigură adiacenţa câmpurilor vecine, iar reprezentarea lui pe diagrama Karnough, în special pentru
numărul mare de variabile se face geometric.
Codul Gray se obţine din codul binar natural, regula de conversie fiind următoarea:
Se pleacă de la bitul cel mai puţin semnificativ al codului binar natural; dacă acest bit este
precedat de bitul 0, mai semnificativ, acest bit mai puţin semnificativ se păstrează ca atare;
când bitul cel mai puţin semnificativ este precedat de bitul 1 în codul binar natural,
acesta se complementează pentru a obţine bitul respectiv în codul Gray. Se continuă în
acest mod până la conversia completă a numărului.
Exemplu pentru ordinul 4:

Imaginea geometrică a
Binar natural Gray (binar reflectat)
codului Gray
B3 B2 B1 B0 G3 G2 G1 G0 G3 G2 G1 G0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 1
0 0 1 1 0 0 1 0
0 1 0 0 0 1 1 0
0 1 0 1 0 1 1 1
0 1 1 0 0 1 0 1
0 1 1 1 0 1 0 0
1 0 0 0 1 1 0 0
1 0 0 1 1 1 0 1
1 0 1 0 1 1 1 1
1 0 1 1 1 1 1 0
1 1 0 0 1 0 1 0
1 1 0 1 1 0 1 1
1 1 1 0 1 0 0 1
1 1 1 1 1 0 0 0
Se observă că toate numerele alăturate în mod Gray sunt adiacente între ele şi în acelaşi timp este un
cod ciclic (ultimul număr este adiacent cu primul).
Pentru fiecare rang în codul Gray, dacă bitul are valoarea 1 i se ataşează un segment dex dreaptă;
5
dacă este 0 el nu primeşte
x3 acest marcaj. x4 x4
Exista foarte multe linii
x2 de simetrie (îngroşate). x x3
3
Reprezentarea grafică a diagramelor Karnough pentru 3, 4, 5 variabile este dată în figura următoare:

x1

n=3
x2x1 x2x1

n=4 n=5
34 Algebra Boole. Functii logice

Exemplu: Să se reprezinte prin diagrame Veitch şi Karnough funcţia f(a,b,c,d) dată prin tabelul de
adevăr:

a b c d f(a,b,c,d) Veitch :
0 0 0 0 1 ab 00 01 10 11
0 0 0 1 1 cd
00
0 0 1 0 1  1 1 0 1
0 0 1 1 0 01 1 0 0 1
0 1 0 0 1
10 1 0 0 0
0 1 0 1 0
0 1 1 0 0 0 1 0 1
11
0 1 1 1 1
1 0 0 0 0 Karnough :
1 0 0 1 0 d
1 0 1 0 0 c
1 0 1 1 0 1 1 0 1
1 1 0 0 1
1 0 1 0
1 1 0 1 1
1 1 1 0 0 1 1 1 0
1 1 1 1 1 0 0 0 0

ba

 Reprezentarea analitică a FB

Funcţiile booleene se pot forma prin reunirea variabilelor booleene prin intermediul operaţiilor: ŞI,
SAU, NU, sau a altor operatori complecşi (NICI, NUMAI). În acest mod se obţin expresii analitice
pentru FB.
Pentru a folosi o notaţie comună în reprezentarea atât a valorilor directe, cât şi a celor
complementate, se introduce următoarea definire a unei variabile bivalente, notată în general cu x a
şi care are valoarea x dacă a = 1 şi x dacă a = 0. Deci:
 x, a  1
xa  
 x, a  0
Astfel, se poate defini o expresie analitică sub formă de conjuncţie logică sub forma:
a
x1a  x 2a  ...  x j .
1 2 j

Acesta reprezintă un termen conjunctiv de argumente: x1, x2, ..., xj, ai{0,1}, i = 1,2,...,j.

Fie o funcţie boole de n argumente: f(x1,x2,...,xn).


Un termen conjunctiv definit mai sus, pentru care: j  n, poartă numele de termen canonic
conjunctiv. Dacă: j < n, acest termen se numeşte termen normal conjunctiv.
Algebra Boole. Functii logice 35

Se demonstrează că orice FB de n argumente poate fi reprezentată (descrisă) printr-o disjuncţie de


termeni canonici conjunctivi aplicaţi de funcţie în 1 (deci pentru care funcţia ia valoarea 1).

U (x  x2a2  ...  xnan )


a1
f(x1,x2,...,xn) = 1
1

Această reprezentare poartă numele de formă canonică disjunctivă (FCD).


Din acest mod de reprezentare rezultă că termenii canonici conjunctivi definesc valorile de 1 ale
funcţiei. De aceea se mai numesc şi constituienţi ai unităţii. Dar, aceştia reprezintă şi intersecţii de
argumente binare, deci se vor numi şi termeni minimali sau minitermeni.
Pentru trecerea de la diagrama tabelară (tabel de adevăr, diagramă Veitch sau Karnough) la
reprezentarea analitică, se foloseşte următorul algoritm:
1. În tabel se consideră acele combinaţii ale argumentelor care sunt aplicate de funcţie în 1.
2. Corespunzător “n”-uplelor de la pasul 1, se construiesc termenii canonici conjunctivi, în care
argumentele intră ca atare sau negate după cum în combinaţia considerată au valoarea 1 sau 0.
3. Folosind termenii canonici de la pasul 2, asociindu-i prin operatorul disjuncţie, se obţine
reprezentarea analitică sub formă canonică disjunctivă a funcţiei.
Se consideră ca exemplu funcţia f(a,b,c) dată prin tabelul de adevăr:

a b c f(a,b,c) a b c f(a,b,c)
0 0 0 0 1 0 0 1
0 0 1 1 1 0 1 1
0 1 0 1 1 1 0 0
0 1 1 0 1 1 1 0

sau prin diagramă Karnaugh: c


b
0 1 0 1
1 1 0 0
a
Conform algoritmului stabilit, cei trei paşi conduc succesiv la:
1. (001), (010), (100), (101)
2. abc, abc, abc, abc
3. f(a,b,c) = abc  abc  abc  abc

Se poate defini şi o expresie analitică sub formă de disjuncţie logică, sub forma:
a
x1a  x 2a  ...  x j , ai{0,1}, i = 1,2,...,j.
1 2 j

Similar cu reprezentările anterioare, aceştia definesc termeni disjunctivi normali, dacă j < n şi
termeni canonici disjunctivi, dacă j  n.
Pentru o FB de “n” argumente se arată că ea se poate reprezenta ca o conjuncţie de termeni canonici
disjunctivi cu variabile negate, pentru valorile de zero ale funcţiei, şi anume:

f(x1,x2,...,xn) = (x
0
a1
1  x2a2  ...  x nan ) .

Această reprezentare poartă numele de formă canonică conjunctivă (FCC) şi este duală FCD -
conform principiului dualităţii pentru latici.
Termenii canonici disjunctivi sunt termeni maximali (maxitermeni).
36 Algebra Boole. Functii logice

Se defineşte un algoritm similar de trecere de la reprezentarea prin diagrama tabelară la


reprezentarea analitică:
1. Se consideră “n”-uplele pe care funcţia le aplică în zero;
2. Termenii canonici disjunctivi corespunzători acestor “n”-uple se obţin luând argumen- tele ca
atare sau negate, după cum în combinaţia respectivă ele au valoarea 0 sau 1;
3. Conectând termenii canonici disjunctivi prin operatorul conjuncţie, se obţine reprezen- tarea
analitică sub formă canonică conjunctivă a funcţiei.
Pentru acelaşi exemplu:
1. (000), (011), (110), (111)
2. (a  b  c), (a  b  c), (a  b  c), (a  b  c)
3. f(a,b,c) = (a  b  c)  (a  b  c)  ( a  b  c)  (a  b  c)

Forma canonică conjunctivă se poate obţine şi plecând de la FCD negată. În acest caz se poate scrie:
f ( x1 , x 2 , ... , x n )  U( x1a1  ...  x nan )
0

unde s-au considerat n-uplele pe care funcţia le aplică în 0.


Negând şi aplicând relaţiile lui de Morgan rezultă:
f ( x1 , x 2 , ... , xn )  f ( x1 , x2 , ... , x n )  U( x1a1  ...  x nan )   ( x1a1  ...  x nan ) 
0 0

  ( x1a1  x 2a2  ...  xnan ).


0
adică tocmai relaţia de definire a FCC.

 Reprezentarea FB prin simbol de marcare

Simbolul de marcare este o reprezentare numerică a FB şi derivă din reprezentarea prin tabel de
adevăr. În tabelul de adevăr, fiecărei combinaţii a valorilor argumentelor îi corespunde o valoare (0
sau 1) pentru funcţie. Se poate spune că fiecare combinaţie defineşte starea funcţiei.
În cadrul reprezentării FB prin simbol de marcare se defineşte numărul de stare, care coincide ca
valoare cu numărul combinaţiei:
n  x1  2 n1  x 2  2 n 2  ...  x n  2 0 .
Pentru o ordine dată a argumentelor, şirul valorilor binare ale unei funcţii în ordine crescătoare a
numărului de stare defineşte complet funcţia respectivă.
Cifra binară rezultată din înşiruirea biţilor 0 şi 1 ai funcţiei se numeşte număr de ordine şi se
notează cu N. Astfel, indicarea ordinii argumentelor şi a numărului de ordine constituie marca unei
FB. Simbolul de marcare (M) este tocmai reprezentarea simbolică a acestui mod de definire a unei
FB şi care, pentru o FB de n argumente este de foma:
x1x2 ...xn
f(x1,x2,...,xn) = M (N )

Dacă numărul de ordine se scrie în codul octal se obţine o reprezentare mai compactă a unei FB.
Aceasta este o reprezentare neoperativă a FB.
Să scriem simbolul de marcare pentru funcţia dată prin următorul tabel de adevăr:
a b c f(a,b,c)
0 0 0 0
0 0 1 1
Algebra Boole. Functii logice 37

0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0

abc
f(a,b,c) = M ( 01001110 )

Trecerea binar - octală: (01.001.110)2  (116)8


abc
Deci, în octal: f(a,b,c) = M ( 116 )

Înlocuind numărul de ordine cu şirul crescător al numărului de stare, în cod octal, se obţine
forma operativă a simbolului de marcare.
Dacă în forma operativă se consideră numai numărul de stare pe care funcţia le aplică în 1,
simbolul de marcare conţine aceleaşi informaţii ca şi FCD. Această reprezentare se numeşte
reprezentare prin simbol D de marcare:
x1 x2 ... xn
(1) f(x1,x2,...,xn) = D ( n1 ,n2 ,...,nk )
 U ( x1a1  x 2a2  ...  xnan )
1
unde: (n1,n2,...,nk) sunt numere de stare în octal pentru care funcţia are valoarea 1.
abc
În exemplul dat: f(a,b,c) = D 1:( 1, 4 ,5, 6 )
(se indică şi valoarea luată de funcţie).

Într-un mod analog, dacă se consideră numai numărul de stare pentru care funcţia ia valoarea 0, prin
convenţie, FCC poate fi exprimată prin simbolul de marcare C:
  ( x1a1  x2a2  ...  x nan )
x1 x2 ....xn
(2) f(x1,x2,...,xn) = C ( ni ,n j ,...,nn )
0
unde: (ni,nj,...,nn) sunt numere de stare în octal pentru care funcţia are valoarea 0, complementate.
abc
Pentru exemplul dat: f(a,b,c) = C ( 0 , 2 , 3, 7 )

Deoarece, pentru o FB complet definită, mulţimile numerelor de stare (n 1,n2,...,nk) şi (ni,nj,...,nn) sunt
disjuncte, iar formele (1) şi (2) sunt forme diferite ale aceleiaşi funcţii, se poate scrie:
x1 x2 ...xn x x ... x
(3) D ( n1 ,n2 ,...,nk )
 C( n1i ,2n j ,...,n nn )
În cazul FB incomplet definite este necesar ca atât în (1) cât şi în (2) să se indice numărul de stare
pe care funcţia le aplică în 0 şi 1, precum şi stările indiferente care voit se aplică în 0 sau 1 (acestea
se indică cu asterisc). În această situaţie, relaţia (3) nu mai este adevărată.

 Reprezentarea FB prin scheme logice

Schema logică (logigrama) este o reprezentare grafică a FB obţinută prin adoptarea unor semne
convenţionale pentru operaţiile logice. Logigrama indică de fapt topologia unui circuit care
realizează o FB. Astfel, simbolurile grafice adoptate pentru operaţiile logice constituie în acest timp
şi simbolurile circuitelor logice care materializează operaţiile respective.
În continuare sunt prezentate cele mai utilizate simboluri grafice pentru principalele funcţii
elementare de 2 argumente:

x x x x x x x
x ; x x ; ; NU ; ;

cele mai utilizate indică că există un amplificator cu inversare


38 Algebra Boole. Functii logice

NU:

x1 x1  x2 x1 x1  x2 x1 x1  x2 x1 x1  x2
SAU: ; ;  ; + ;
x2 x2 x2 x2
:

x1 SAU x1  x2
x2 (OR)

ŞI: x1 x1  x2 x1 x1  x2 x1 x1  x2 x1 x1  x2
; ;  ;  ;
x2 x2 x2 x2

x1 x1 & x2
&
x2
ŞI
(AND)

NICI: x1 x1  x2 x1 x1  x2
; sau, având în vedere relaţiile lui de
x2 x2 ;
Morgan:

x1 x1  x2 x1 x1  x2
, sau în clar : 
x2 x2
(NICI)
(NOR)

x1 x1  x2
NUMAI: x1 x1 x2 x1 x1 x2 
; x , sau în clar : x2
x2 2
(NUMAI)
(NAND)

x1 x1  x2
sau, conform relaţiei lui de Morgan : x2

SUMA MODULO 2: x1 x1 x2  x1 x2
x2 (SAU EXCLUSIV)

x1 x1  x2
Notare directă x2 

Cu aceste simboluri orice FB poate fi reprezentată prin schema logică.


Observaţii:
1. Se caută pe cât posibil ca operatorii de acelaşi fel să fie reprezentaţi pe aceeaşi coloană,
definind astfel un nivel logic;
2. Relativ la circuitele logice elementare care sunt capabile să comande simultan mai multe
module, variabilele odată calculate se folosesc în orice loc folosind acelaşi rezultat.
Algebra Boole. Functii logice 39

 Reprezentarea prin diagrame în timp

Diagrama în timp reprezintă grafic o FB prin forma semnalelor corespunzătoare argumentelor şi


funcţiei. Cifrele binare 0 şi 1 se ataşează semnalelor de nivel coborât şi respectiv de nivel ridicat,
astfel ca să existe o diferentă netă a acestora. Reprezentarea prin diagrame în timp este deosebit de
utilă în studiul sistemelor secvenţiale, în a căror evoluţie intervine şi timpul. De asemenea, folosind
aceste reprezentări se pot studia fenomenele tranzitorii de comutare şi fenomenele de hazard
datorate funcţionării neideale a elementelor care materializează variabile sau funcţii booleene.
x1 00 0 0
1 1 t f = x1  x2
x2 0
0 1 t
f
1 0 1 0 1 t

3.3 Aplicaţii
1. Să se stabilească numărul FB nedegenerate de 3 argumente.
Indicaţie: Numărul FB nedegenerate de "n" argumente se poate determina utilizând
următoarea relaţie de recurenţă:
n 1
N n  2 2   Cni  N i
n

i0

unde, Ni este numărul FB nedegenerate de i < n argumente. Pentru utilizarea acestei


relaţii de recurenţă este necesară adoptarea unei ipoteze logice iniţiale, şi anume: numărul
FB nedegenerate de zero argumente este 2, funcţia, ca orice FB, putând lua doar 2 valori
logice, chiar în lipsa argumentelor; deci: N0 = 2.

2. Să se reprezinte prin tabel de adevăr, diagramă Karnough, analitic, simbol de marcare şi


schemă logică funcţiile:
a) Funcţia de 4 variabile care ia valoarea "1" dacă cel puţin 3 variabile au aceeaşi valoare
logică;
b) Funcţia de 4 variabile care ia valoarea "1" dacă prima şi ultima variabilă (MSB şi
LSB în vectorul de intrare) au aceeaşi valoare logică;
c) Funcţia de 4 variabile care ia valoarea logică a majorităţii variabilelor (combinaţiile
imposibile nu pot apare).

3. Să se realizeze schema logică care să furnizeze cele 10 FB nedegenerate de 2 argumente


utilizând un număr minim de porţi logice.

4. Un ascensor pentru ridicarea materialelor transportă sarcini între 100 şi 800 Kg. Sesizarea
masei încărcăturii ascensorului se face prin închiderea a 3 contacte (a, b, c) fixate sub podeaua
cabinei. Prin resoarte, se asigură ca ordinea de închidere a contactelor, la creşterea masei
încărcăturii, să fie: a, b, c. Se cere să se determine funcţia logică care comandă urcarea
ascensorului ştiind că acesta poate urca dacă este gol (a, b, c - deschise), sau cu sarcini între
100 şi 800 Kg (a, b - închise, c - deschis). Dacă sarcina este sub 100 Kg (a - închis, b, c -
deschise), sau peste 800 Kg (a, b, c - închise) ascensorul nu trebuie să urce.

5. Demonstraţi identitatea:
ab  ab  ac  ab  ab  bc
40 Algebra Boole. Functii logice

6. Demonstraţi că expresiile:
( a  b )(b  c)( c  a ) şi ( a  b )(b  c)( c  a )
nu sunt identice. Ce relaţii există între aceste două relaţii ?

7. Demonstraţi că expresiile:
( a  b )(b  c )( c  a ) şi ( a  b )(b  c)( c  a )
sunt identice.

8. Scrieţi complementul expresiei:


S  abc  ( a  b  d )( abd  c)

9. Să se demonstreze că:
a  ab  a  b
a  ab  a  b
a  ab  a  b
a  ab  a  b

10. Să se verifice identităţile logice:


ab  ac  bc  ac  bc
ab  bc  ac  ab  bc
a ba ba
ab  bc  ac  ab  bc  ac
 a  b  b  c  a  c  ab  bc  ac
 a  b  a  c  ac  ab

11. Să se verifice asociativitatea funcţiilor SAU-EXCLUSIV şi ECHIVALENŢĂ:


 a  b  c  a   b  c
 a  b  c  a   b  c

12. Să se demonstreze că:


 a  b  a  c  a  bc
abc  abc  abc   a  b  c

13. Fie: f  a   bc  d   e . Calculaţi f .

14. Să se verifice relaţiile logice:


ababab
ab  ab  ab  ab
a  1 a ; a0a
aa1 ; aa0
abab
 a  b  c   a  c   b  c
a   b  c  ab  ac
Algebra Boole. Functii logice 41

S-ar putea să vă placă și