Sunteți pe pagina 1din 76

Algebr

a liniar
a, geometrie analitic
a si
diferential
a - Partea a 2-a

Cuprins
1 Sisteme de numera
tie
1.1 Teorema sistemelor de numeratie . . . . . . . . .
1.2 Scrierea numerelor negative, respectiv fractionare
1.3 Operatii cu numere reprezentate ntr-o baz
ab . .
1.4 Conversia numerelor baza b ntr-o alt
a baz
ah . .

. . . . . .
n baza b
. . . . . .
. . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

2
2
6
9
11

2 Elemente de teoria codic


arii
15
2.1 Alfabet; monoidul liber generat de o multime nit
a . . . . . . . . 15
2.2 Notiunea de codicare . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Codic
ari utilizate n reprezentarea numerelor n
temelor de calcul
3.1 Codul direct . . . . . . . . . . . . . . . . . . . . . .
3.2 Codul invers . . . . . . . . . . . . . . . . . . . . . .
3.3 Codul complementar . . . . . . . . . . . . . . . . .
3.4 Operatii cu numere reprezentate n coduri . . . . .
3.4.1 n cod direct . . . . . . . . . . . . . . . . .
3.4.2 n cod complementar . . . . . . . . . . . . .

memoria sis.
.
.
.
.
.

23
23
24
25
27
27
28

4 Elemente de teoria codurilor detectoare


si corectoare de erori
4.1 Coduri liniare binare . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Matrice de generatori. Codicarea mesajelor . . . . . . . . . . .
4.3 Matrice de control . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 Tabelul standard si tabelul eroare-sindrom . . . . . . . . . . . . .
4.5 M
asura si distanta Hamming . . . . . . . . . . . . . . . . . . . .
4.6 Coduri Hamming binare . . . . . . . . . . . . . . . . . . . . . . .

31
31
33
36
39
42
44

5 Algebre Boole
5.1 Denitie si propriet
ati .
5.2 Inel boolean . . . . . . .
5.3 Exemple reprezentative
5.4 Algebra propozitiilor . .

47
47
49
50
52

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.

6 Func
tii booleene
55
6.1 Denitie, forme canonice . . . . . . . . . . . . . . . . . . . . . . . 55
6.2 Simplicarea functiilor booleene . . . . . . . . . . . . . . . . . . . 59
6.3 Structuri Reed-Muller. Structuri Post . . . . . . . . . . . . . . . 63
7 Elemente de teoria grafurilor
65
7.1 Notiunile de graf, subgraf, graf partial. Gradul unui vrf . . . . . 65
7.2 Lant, drum, ciclu, circuit . . . . . . . . . . . . . . . . . . . . . . 68
7.3 Reprezentarea grafurilor n memoria calculatorului. Parcurgerea
grafurilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Sisteme de numera
tie

Prin sistem de numera


tie ntelegem totalitatea regulilor de reprezentare a
numerelor cu ajutorul unor simboluri, numite cifre.
Sistemele de numeratie pot :
a) pozitionale (de exemplu: sistemul zecimal, sistemul binar, cel hexazecimal
etc.) - n care pozitia cifrei n interiorul reprezent
arii unui num
ar indic
a puterea
unui num
ar xat b, numit baza, cu care se aa nmultit
a cifra respectiv
a:
N

= an bn + an
, N = an an

1b

n 1

+ :::: + a1 b + a0 + a
:::a
a
1
1 0 ; a 1 a 2 :::

1b

+a

2b

+ ::: ,

(unde n ultima egalitate, an ; an 1 ; :::a1 ; a0 ; a 1 ; a 2 ; ::: sunt cifrele lui N n baza


b).
b) nepozitionale - de exemplu, sistemul roman.
n cele ce urmeaz
a, ne vom ocupa n detaliu de sistemele de numeratie pozitionale.

1.1

Teorema sistemelor de numera


tie

Teorema sistemelor de numeratie (pe care o enuntam si demonstr


am n cele ce
urmeaz
a) ofer
a justicarea teoretic
a a scrierii ntr-o baz
a b: Demonstratia teoremei are si importanta practic
a, deoarece ea ofer
a si modul efectiv de determinare
a scrierii ntr-o baz
a.
Pentru nceput, reamintim Teorema mp
ar
tirii cu rest n Z :
Teorema 1 Pentru orice doua numere a; b 2 Z; cu b 6= 0; exista si sunt unice
numerele q; r 2 Z; unde r 2 f0; 1; :::; jbj 1g si
a = b q + r:

Conditia r 2 f0; 1; :::; jbj 1g este cea care asigur


a unicitatea ctului si
restului mp
artirii ntregi. Dac
a renuntam la aceast
a conditie, am obtine o
innitate de cturi si resturi posibile.
De exemplu, pentru mp
artirea lui 7 la ( 4); am avea:
7 = :::( 4) ( 2)

1 = ( 4) ( 1) + 3 = ( 4) 0 + 7 = ( 4) 1 + 11 = :::

Singurele numere q; r cu proprietatea c


a r 2 f0; 1; :::; jbj 1g sunt q =
n cele ce urmeaz
a, vom considera doar valori naturale ale lui b:

1; r = 3:

Fie b 2 N; b > 1; un num


ar natural xat. Prin cifre n baza b vom ntelege
numerele naturale
0; 1; :::; b 1
(i.e., toate resturile posibile la mp
artirea cu b).
De exemplu:
- n baza b = 10 (sistemul zecimal), cifrele sunt 0; 1; 2; :::; 9;
- n baza b = 7; cifrele sunt 0; 1; 2; :::; 6;
- n baza b
=
16 (sistemul hexazecimal), cifrele sunt
0; 1; 2; :::; 9; A; B; C; D; E; F (unde A corespunde lui 10 din baza 10, B lui
11 etc.);
- n baza b = 2 (sistemul binar), cifrele sunt 0; 1:
Are loc:
Teorema 2 (Teorema sistemelor de numeratie): Fie b 2 N ; b > 1. Pentru orice numar N 2 N; exista si sunt unic determinate numerele naturale
n; a0 ; a1 ; :::; an astfel nct
N = an bn + an

1b

n 1

+ ::: + a1 b + a0 ;

(1)

unde
0 < an < b;

ai < b;

i = 0; 1; :::; n

1:

Demonstra
tie:
a) Existenta:
1) Dac
a N < b; atunci n = 0; a0 = N .
2) Dac
aN
b; atunci, conform teoremei mp
artirii cu rest, exist
a si sunt
unice numerele N0 ; a0 2 N; astfel nct
N = bN0 + a0 ;
Tinnd

cont c
aN

a0 < b:

(2)

b; avem c
a N0 > 0: mp
artim ctul N0 la b; si g
asim
N0 = bN1 + a1 ;

a1 < b:

(3)

Dac
a N1 6= 0; continu
am procedeul:
N1 = bN2 + a2 ;

a2 < b

(4)

etc.
Deoarece, la mp
artirea cu n N; cu mp
artitorul b > 1 ctul este mai mic
dect demp
artitul, obtinem
N0 > N1 > N2 > :::
(o secventa strict descresc
atoare de numere naturale).
Prin urmare, dup
a un num
ar nit n + 1 de pasi, ctul Nn va deveni 0:
Nn
Cum Nn

= b 0 + an ;

an < b

(5)

6= 0 (altfel, ne-am opri dup


a n pasi), avem c
a
an = Nn

6= 0 ) 0 < an < b:

Astfel, am obtinut relatiile


8
>
>
>
>
<
>
>
>
>
:

N = bN0 + a0
N0 = bN1 + a1
:::
Nn 2 = b Nn 1 + an
Nn 1 = b 0 + an

(6)

:
1

nmultim prima relatie cu 1 = b0 ; pe a doua cu b1 ; pe a treia cu b2 s.a.m.d, iar


pe ultima cu bn ; si le adun
am ntre ele. Vom avea
N = an bn + an

1b

n 1

+ ::: + a1 b + a0 ;

unde 0
ai < b; i = 0; :::; n si, conform cu (6), an 6= 0; ceea ce ncheie
demonstratia existentei numerelor din teorem
a.
b) Unicitatea:
S
a presupunem c
a
N = an bn + an

1b

n 1

+ ::: + a1 b + a0 = a0m bm + a0m

1b

m 1

+ ::: + a01 b + a00 ;

cu 0 ai < b; i = 0; n; an 6= 0 si 0 a0i < b0 ; i = 0; n; a0n 6= 0:


F
ar
a a restrnge generalitatea problemei, putem presupune c
a n m (cazul
m n se trateaz
a analog). Sc
aznd cele dou
a expresii ale lui N; g
asim
an bn + an

1b

n 1

+ :::(am

am0 )bm + ::: + (a1

a01 )b + (a0

a00 ) = 0:

Num
arul a0 a00 este diferenta a dou
a numere naturale mai mici dect b; prin
urmare, este ea ns
asi mai mic
a (n modul) dect b: Eventual nmultind egalitatea

a00 este negativ), ja0

cu -1 (dac
a a0
0 la b; adic
a

a00 j este restul mp


artirii num
arului ntreg
a00 = 0:

a0

Egalitatea r
amas
a se mparte la b; ceea ce conduce la
an bn

+ an

1b

n 2

am0 )bm

+ :::(am

+ ::: + (a1

a01 ) = 0:

Din nou, ja1 a01 j 2 [0; b 1] si eventual nmultind egalitatea cu -1, ja1
este restul mp
artirii lui 0 la b; adic
a

a01 j

a01 = 0:

a1
Continund procedeul, obtinem
ai

a0i = 0;

i = 0; m

si
an = an

= ::: = am+1 = 0;

de unde deducem c
a: cele dou
a reprezent
ari au acelasi num
ar de cifre, n = m
si, mai mult, aceste cifre coincid, q.e.d.
Denitia 1 Pentru un numar natural N; reprezentarea
N

= an bn + an
unde 0

1b

n 1

+ ::: + a1 b + a0 ;
ai < b; i = 0; :::; n; an 6= 0

parta numele de scrierea lui N n baza b:


Vom nota, pentru simplitate, si
N = an an
unde an ; an

1 ; :::; a0

1 :::a1 a0(b) ;

sunt cifrele lui N n baza b:

Pentru a determina aceast


a scriere, proced
am ca n demonstratia teoremei:
mp
artim pe N la b; si retinem ctul N0 si restul a0 : Ctul se mparte din nou
la b; si g
asim ctul N1 si restul a1 etc. Procedeul se continu
a pn
a cnd ctul
Nn devine 0. Cifrele lui N n baza b (de la stnga la dreapta) sunt resturile
celor n + 1 mp
artiri: an ; an 1 ; :::; a1 ; a0 :
Exemple:
1) S
a determin
am reprezentarea num
arului N = 1232(10) n baza b = 5:

Avem:
1232
246
49
9
1

=
=
=
=
=

5
5
5
5
5

246 + 2
49 + 1
9+4
1+4
0+1

Reprezentarea lui N n baza 5 este:


N = 1 54 + 4 53 + 4 52 + 1 51 + 2 50 = 14412(5) :
2) Reprezentarea lui N = 75(10) n baza 2 :
75
37
18
9
4
2
1

=
=
=
=
=
=
=

2
2
2
2
2
2
2

37 + 1
18 + 1
9+0
4+1
2+0
1+0
0+1

Citind resturile mp
artirilor de jos n sus, avem
75(10) = 1 26 + 1 23 + 1 21 + 1 20 = 1001011(2):

Observatia 3 Pentru reprezentarea numerelor n baza 2, nu este neaparat necesar sa facem mpartirile. De fapt, deoarece n baza 2 cifrele sunt doar 0 si 1,
scrierea lui N n baza 2 nseamna de fapt scrierea lui N ca suma de puteri ale
lui 2. De exemplu, este sucient sa observam ca N = 75 (dat n baza 10) se
poate scrie sub forma
75 = 64 + 8 + 2 + 1 = 1 26 + 1 23 + 1 21 + 1 20 ;
pentru a determina scrierea acestuia n baza 2.

1.2

Scrierea numerelor negative, respectiv frac


tionare n
baza b

Fie b 2 N ; b > 1. Teorema sistemelor de numeratie asigur


a existenta si unicitatea scrierii numerelor naturale N n baza b:

Fie acum N 2 Z un num


ar ntre negativ. Atunci, N =
N 2 N:
Scrierea lui N n baza b va dat
a de
N=

an an

jN j; unde

1 :::a1 a0(b) ;

unde cifrele ai ; 0 ai < b; i = 0; :::; n; an 6= 0 sunt cifrele num


arului natural
jN j = an an 1 :::a1 a0(b) :
Pentru numere frac
tionare N 2 R; utiliz
am urm
atoarea proprietate:
Orice num
ar real N se scrie n mod unic ca o sum
a de forma
N = [N ] + fN g;
unde N 2 Z este partea ntreaga a lui N; iar fN g 2 [0; 1) este partea fractionara
a num
arului.
De exemplu, n baza 10 avem
N
N0

= 3; 4 ) [N ] = 3 2 Z; fN g = 0; 4 2 [0; 1);
=
3; 4 ) [N 0 ] = 4 2 Z; fN 0 g = 0; 6 2 [0; 1):

Pentru numere pozitive, partea fractionar


a este constituit
a de cifrele situate
dup
a virgul
a, iar pentru cele negative, fN g se obtine ca 1 minus num
arul format
de cifrele de dup
a virgul
a ale lui N:
C
aut
am o reprezentarea lui N n baza b sub forma
N=
unde ai ; 0

ai < b; i

an an

1 :::a0 ; a 1 a 2 :::(b)

n; an 6= 0:

1. Dac
a N
0; atunci conform Teoremei sistemelor de numeratie, partea
ntreag
a a lui N se scrie n mod unic ca
[N ] = an an

1 :::a0(b)

= an bn + an

1b

n 1

+ ::: + a1 b + a0 :

R
amne s
a g
asim reprezentarea sub form
a de fractie zecimal
a (nit
a sau
innit
a) a p
artii fractionare a lui N :
fN g = 0; a

1 a 2 :::(b)

a 2
a 3
+ 3 + :::
b2
b

nmultind egalitatea de mai sus cu b; avem


N

:= bfN g = a

ceea ce conduce la
a

= [N

1]

a 3
+ :::;
b2

(si a 1 este unic determinat de aceast


a egalitate). Din ultima egalitate
sc
adem n ambii membri partea ntreag
a pe a 1 ; si r
amne
a 4
a 2
a 3
+ 2 + 3 + :::
fN 1 g =
b
b
b
nmultim din nou cu b :
a

a 4
+ :::
b
b2
si g
asim pe a 2 ca ind partea ntreag
a a lui N 2 etc. Continu
am procedeul pn
a cnd e fN k g = 0; e intuim periodicitatea fractiei zecimale
c
autate, e precizia cu care vrem s
a-l scriem pe N este sucient de bun
a.
N

:= bfN

1g

=a

2. Pentru N < 0; putem proceda la fel: scriem pe N sub forma (parte


ntreag
a)+(parte fractionar
a), si g
asim
N=

N=

an an

1 :::a0 ; a 1 a 2 :::(b) :

n acest caz, avem [N ] = (an an 1 :::a0(b) + 1) = (1 + [jN j]) si fN g =


(1 0; a 1 a 2 :::(b) ) = (1 fjN jg): Aceast
a observatie conduce la o simplicare
a algoritmului de trecere n baza b :
N = [N ] + fN g =

(1 + [jN j]) + (1

fjN jg) =

([jN j] + fjN jg) :

Prin urmare, putem proceda n modul urmator: trecem pe jN j n baza b, apoi


adaugam semnul - la reprezentarea obtinuta (fara a mai determina partea
ntreaga, respectiv fractionara pentru numarul negativ N ).
De exemplu, pentru a scrie num
arul N = 3; 25(10) n baza 2; proced
am
astfel:
jN j = 3; 25 = 3 + 0; 25:
1
Avem 3 = 11(2) si 0; 25 = 2 = 0; 01(2) ; adic
a
2
3; 25(10) = 11; 01(2) :
Reprezentarea lui

3; 25 este
N=

Trecerea unui num


ar N =
10, se va face scriind
N=

an bn + an

1b

n 1

jN j =
an an

11; 01(2) :
1 :::a0 ; a 1 a 2 :::(b)

+ ::: + a1 b + a0 +

b
si evalund puterile lui b; respectiv cifrele ai ; n baza 10:
De exemplu,

din baza b n baza

a 2
+ :::
b2

1234(5) = 1 53 + 2 52 + 3 5 + 4 = 125 + 50 + 15 + 4 = 194(10) ;


111010(2) = 25 + 24 + 23 + 21 = 58(10) :

1.3

Opera
tii cu numere reprezentate ntr-o baz
ab

Fie, din nou, b 2 N ; b > 1:


Num
ar
atoarea n baza b este dat
a de:
0; 1; :::; b
|
{z

1; 10; 11; 12; 1(b


} |

nr: cu o cif ra

1); 20; 21; :::; (b


{z

1)(b

nr: cu 2 cif re

1); 100; 101; :::


}

De exemplu, n baza b = 7; avem:


0; 1; 2; 3; 4; 5; 6; 10; 11; 12; :::; 16; 20; 21; :::
Num
arul 10(7) este de fapt 7(10) , 11(7) = 8(10) etc.
n baza b = 2; vom avea
0
k

0(10)

1
k

1(10)

1000
111
110
101
100
11
10
k ; k ; k ; k ; k ; k ; k :::
8(10)
2(10) 3(10) 4(10) 5(10) 6(10) 7(10)

Compararea numerelor scrise n baza b :


n cazul n care numerele au semne diferite, evident, num
arul negativ este
cel mai mic. Pentru numere negative N = jN j; N 0 = jN 0j; avem
N > N 0 , jN j < jN 0j:

Astfel, este sucient s


a discut
am pentru numere pozitive. Pentru simplitatea scrierii, presupunem c
a numerele sunt naturale (pentru numere
fractionare, discutia este similar
a).
a numere naturale
Fie N = an an 1 :::a1 a0(b) si N 0 = a0m a0m 1 :::a01 a00(b) dou
(cu n + 1; respectiv, m + 1 cifre n baza b).
a) Dac
a m > n; atunci N 0 > N :
n acest caz, s
a observ
am c
a
bn+1 > a0n bn + a0n
ntr-adev
ar, avem a0i

1b

n 1

+ ::: + a01 b + a00 :

a
1; i = 0; n; de unde deducem c

N = a0n bn + a0n 1 bn 1 + ::: + a01 b + a00 (b 1)bn +


+(b 1)bn 1 + ::: + (b 1)b + b 1 = bn+1 1 < bn+1 :
Pe de alt
a parte, tinnd cont c
a N 0 are cel putin n + 2 cifre n baza b; are
loc inegalitatea
N0

1 bn+1 + 0 bn
9

+ ::: + 0 b + 0 = bn+1

de unde reiese c
a
N 0 > N:
b) n mod similar, dac
a n > m; atunci N > N 0 :
c) Dac
a numerele au acelasi num
ar de cifre (m = n); atunci avem

Propozitia 4 Pentru numerele N = an an 1 :::a1 a0(b) si N 0 = a0n a0n


are loc inegalitatea
N > N0

0 0
1 :::a1 a0(b) ;

daca si numai daca ap > a0p ; unde p = maxfi = 0; n j ai 6= a0i g:


Demonstratie:
!:
Presupunem ap > a0p : Atunci, N N 0 = (ap a0p )bp +:::+(a1 a01 )b+(a0 a00 ):
Termenul de grad maxim (ap a0p )bp este mai mare sau egal cu bp ; iar suma
celorlalti
(ap 1 a0p 1 )bp 1 + ::: + (a1 a01 )b + (a0 a00 )
este mai mare sau egal
a cu (1 b)bp
cele dou
a inegalit
ati, obtinem
N

N0

+ ::: + (1

bp + 1

b)b + (1

b) = 1

bp : Adunnd

bp = 1 > 0:

: Fie N > N 0 ; presupunnd c


a ap < a0p am avea, conform celor ar
atate
0
a c
a
mai sus, c
a N < N ; contradictie. Cum ns
a ap 6= a0p (prin denitie), rezult
ap > a0p q.e.d.
Adunarea numerelor n baza b :
Pentru a efectua operatii cu numere scrise ntr-o baz
a b > 1; trebuie s
a
tinem cont de num
ar
atoatea n aceast
a baz
a: anume, cifrele de transport
apar, n loc de trecerea peste 10,la trecere peste b:
De exemplu, n baza b = 7; vom avea
1 + 6 = 10;

2 + 6 = 11; 3 + 5 = 11; 3 + 6 = 12 etc:;

iar n baza b = 2;
1 + 1 = 10; 1 + 11 = 100; 1 + 111 = 1000 etc:
Cu aceast
a mentiune, adunarea numerelor n baza b se va face dup
a reguli
similare cu cele din baza 10 : pornind de la dreapta la stnga, cifrele de pe
aceeasi pozitie se adun
a ntre ele, iar n cazul n care suma lor dep
aseste
pe b; vom avea transport c
atre cifra urm
atoare.
10

De exemplu, n baza b = 5; avem


111

2143
342
3040

iar n baza b = 2;
111

1101
1011
11000

Sc
aderea, nmul
tirea
si mp
ar
tirea n baza b; se fac dup
a reguli similare celor din baza 10; cu singura deosebire c
a transportul c
atre cifra din
stnga si, respectiv, mprumutul (n cazul sc
aderii) se vor face relativ la
10(b) = b:
Exemple: n baza b = 2 :

110010
1111
100011

1.4

110010
101
110010
110010
11111010

Conversia numerelor baza b ntr-o alt


a baz
ah

Fie b; h 2 N ; b; h > 1 dou


a baze de numeratie.
Presupunem c
a se cunoaste reprezentarea unui num
ar real N n baza b;
N=

an bn + an

1b

n 1

+ ::: + a1 b + a0 +

a 2
+ ::: ;
b2

unde 0 ai < b; i = 0; :::; n; an 6= 0; si dorim s


a determin
am reprezentarea
lui N n baza h:
n practic
a, cel mai utilizat exemplu este conversia din baza 16 n baza 2 (si
invers).
Avem la dispozitie trei posibilit
ati.

11

1. Trecerea prin intermediul bazei 10: trecem num


arul din baza b n
baza 10 (prin evaluarea n baza 10 a puterilor bazei si a cifrelor), apoi
rezultatul se trece n baza h (prin mp
artiri/nmultiri succesive).
De exemplu, pentru a trece pe N = 243(5) n baza h = 2; scriem
243(5) = 2 52 + 4 5 + 3 = 73(10) :
73(10) = 64 + 8 + 1 = 26 + 23 + 1 = 1001001(2)
2. Trecerea din baza b n baza h; calculele efectundu-se n baza de
destina
tie h (de ex., la introducerea datelor n sistemele de calcul, datele
ind trecute n baza 2).
Consider
am num
arul N scris n baza b: Evalu
am cifrele lui N; respectiv,
puterile lui b; n baza h; apoi efectu
am adun
arile si nmultirile n baza h:
De exemplu, pentru a trece pe N = 243(5) n baza h = 2; scriem n acest
caz,
2(5) = 10(2) ; 4(5) = 100(2) ; 3(5) = 11(2) ; 5 = 101(2)
si
243(5)

= 10 1012 + 100 101 + 11 = 110010 + 10100 + 11 =


= 1001001(2) :

Caz particular: Dac


a b = 2k ; atunci trecerea din baza b n baza 2 se
face mai simplu, trecnd ecare cifr
a a num
arului N n baza 2 si scriind
cifrele n grupe de cte k:
Exemplu: 567(8) = 101 10002 + 110 1000 + 111 = 101110111(2) :
3. Trecerea din baza b n baza h; calculele efectundu-se n baza de
plecare b (ex: la furnizarea rezultatelor de c
atre, sistemele de calcul, unde
baza de pornire este b = 2; iar cea de destinatie este, de regul
a, h = 10).
n acest caz, efectu
am mp
artiri succesive ale num
arului N (scris n baza
b) la h; ca n algoritmul furnizat de Teorema sistemelor de numeratie si g
asim,
pe rnd, cifrele p
artii ntregi a lui N n baza h. Pentru a g
asi cifrele p
artii
fractionare, realiz
am nmultiri succesive cu h (nmultim partea fractionar
a a lui
N cu h si g
asim cifra a 1 etc.).
Exemplu: pentru a trece pe N = 243(5) n baza h = 2; putem proceda si
astfel:
243(5)
121(5)
33(5)
14(5)
4(5)
2(5)
1(5)

=
=
=
=
=
=
=

121(5) 2 + 1
33(5) 2 + 0
14(5) 2 + 0
4(5) 2 + 1
2(5) 2 + 0
1(5) 2 + 0
0 2 + 1:
12

Citind resturile mp
artirilor de jos n sus, obtinem din nou
243(5) = 1001001(2) :
Caz particular: Dac
a h = 2k ; atunci trecerea din baza 2 n baza h se face
mai simplu, anume, ecare grup de cte k cifre ale num
arului dat (de la ; la
stnga pentru partea zecimal
a si de la ;la dreapta pentru cea fractionar
a) se
transform
a n baza h:
De exemplu, 1100c 0100c 1101(2) = 1100(2) 162 +0100(2) 16+1101 = C4D(16) :
Exercitiul 1 Treceti urmatoarele numere din baza 10:
37; 204; 2431
a) n baza 4; b) n baza 16; c) n baza 5:
Exercitiul 2 Treceti urmatoarele numere: 45(6) ; 2334(5) ; 1A6(16) ; BAC(16) n
baza 10.
Exercitiul 3 Treceti n baza 2 urmatoarele numere scrise n baza 10:
9; 72; 130; 127; 255; 1023; 1026; 2052:
(calculati, pentru aceasta, ct mai putin! :-) )
Exercitiul 4 Treceti
numerele:
10000(2) ; 100000(2) n baza 10.

11011(2) ;

111111(2) ;

1000(2) ;

Exercitiul 5 Realizati un tabel care sa contina echivalentele (n ordine crescatoare) ale numerelor de la 1 la 10 din baza 10 n bazele: 2; 4; 8; 5; 12:
Exercitiul 6 Treceti numarul N = 256(7) n baza 2:
a) prin intermediul bazei 10;
b) efectund calculele n baza 7;
c) efectund calculele n baza 2.
Exercitiul 7 Treceti direct n baza 2 numerele: 574(8) ; A42(16) ; 10D3(16) :
Exercitiul 8 Treceti numarul N = 1011111010110110(2) :
a) n baza 4;
b) n baza 8;
c) n baza 16.
Exercitiul 9 Treceti din baza 10 n baza 2 numerele:

35; 0; 375; 1; 4;

Exercitiul 10 Treceti din baza 10 n baza 5 numerele: 0; 4;


13

26; 008:

21; 75:

Exercitiul 11 Treceti din baza 2 n baza 10 numerele fractionare: 0; 11;


100; 101; 1101; 001:
Exercitiul 12 Fie a = 234(5) ; b = 12(5) : Calculati a + b; a
restul mpartirii a : b.

b; a b si ctul si

Exercitiul 13 Efectuati urmatoarele operatii n baza 2:


110111 + 110; 11010 + 1011 + 111; 10100
11100 110; 10100 : 101:

14

1111; 101100

10101; 1011 110;

Elemente de teoria codic


arii

Pentru a vorbi de limbaje de codicare, respectiv, de coduri, sunt necesare trei


elemente:
1. un alfabet - denit ca o multime nit
a, ale c
arei elemente le vom numi
litere;
2. o structura morfologica - constituit
a din regulile de compunere a cuvintelor
limbajului, altfel spus, de operatiile ce se pot efectua asupra cuvintelor
limbajului. Exist
a dou
a operatii de baz
a, si anume:
-concatenarea (juxtapunerea) cuvintelor;
- substitutia (nlocuirea unui grup de litere dintr-un cuvnt cu un alt grup
de litere).
n cele ce urmeaz
a, ne vom ocupa n mod special de operatia de concatenare, care, dup
a cum vom vedea n cele ce urmeaz
a, deneste o structur
a de monoid pe multimea cuvintelor peste un alfabet dat (monoidul
liber generat de acel alfabet).
3. un sistem de atribuire semantic
a (aplicatie de codicare) - anume, o functie
care realizeaz
a corespondenta (bijectiv
a) dintre multimea elementelor unui
sistem informational si o parte a multimii elementelor limbajului.
Un rol central n teoria codic
arii l joac
a notiunea de monoid liber, de care
ne ocup
am n cele ce urmeaz
a.

2.1

Alfabet; monoidul liber generat de o mul


time nit
a

Denitia 2 Fie A o multime nevida, si


nume
ste:
1. grupoid daca: : A

: A

A ! A o operatie. (A; ) se

A ! A este operatie interna (8x; y 2 A : x y 2 A);

2. semigrup daca (A; ) este grupoid si operatia este asociativa: 8x; y; z 2


A : (x y) z = x (y z);
3. monoid daca (A; ) este semigrup si
1): 91 2 A : 1 x = x 1 = 1;

admite element neutru (notat cu

4. grup daca (A; ) este monoid si ecare element din A admite simetric:
8x 2 A 9x 1 2 A : x x 1 = x 1 x = 1:
Structura algebric
a (A; ) se numeste comutativ
a dac
a, n plus, operatia
este comutativ
a: 8x; y 2 A : x y = y x: Astfel, vorbim de gupoid, semigrup
sau monoid comutativ, respectiv de grup comutativ (sau abelian).

15

De exemplu, (N ; +) este semigrup comutativ, (N; +) este monoid comutativ,


iar (Z; +); (Q; +); (R; +); (C; +) sunt
grupuri comutative.
Propriet
a
ti:
Puterile unui element:
1) ntr-un semigrup, are sens s
a vorbim despre puterile naturale nenule ale
unui element:
n2N :
xn := x
| x {z::: x};
de n ori

ntr-adev
ar, operatia ind asociativ
a, putem determina produsul xn f
ar
a ambiguit
ati (altfel, ar trebuit s
a impunem o anumit
a ordine n gruparea termenilor).
2) ntr-un monoid, pe lng
a puterile xn ; n
1; are sens s
a vorbim si de
0
x := 1; cu alte cuvinte, ntr-un monoid, au sens puterile naturale ale unui
element:
8
n2N
< x
| x {z::: x};
xn =
: 1; de n ori
n = 0:
3) ntr-un grup (A; ), datorit
a existentei elementului simetric pentru orice
x 2 A; putem deni puterile ntregi ale lui x :
8
x
n2N
>
>
| x {z::: x};
>
>
< de n ori
1;
n=0
xn =
>
1
1
1
>
x
x
n 2 ZnN:
>
{z ::: x };
> |
:
de jnj ori

Simplicarea n egalit
a
ti:

ntr-un grup putem simplica att la stnga ct si la dreapta, Mai precis,


putem rezolva ecuatii de forma ax = b; sau xa = b :
a 1 j ax = b ) x = a 1 b;
xa = b ja 1 ) x = ba 1 :
n general, ntr-un monoid (sau semigrup) astfel de simplic
ari nu sunt
posibile.
Doi monoizi (M; ) si (P; ) se numesc izomor, dac
a exist
a o functie f :
M ! P cu urm
atoarele propriet
ati:
1. f (x y) = f (x) f (y); 8x; y 2 M (f - morsm);
2. f este bijectiv
a.
(O astfel de functie f poart
a numele de izomorsm de monoizi ).
16

Denitia este similar


a n cazul izomorsmului de semigrupuri/grupuri.
Existenta unui izomorsm ntre doi monoizi nseamn
a de fapt c
a, abstractie
f
acnd de natura elementelor, cei doi monoizi reprezint
a aceeasi structur
a algebric
a, anume, n cele dou
a structuri algebrice operatiile au loc n mod identic
(de ex., n cazul cnd cele dou
a multimi sunt nite, tabla de operatie a primului monoid, prin renotarea elementelor, va coincide cu tabla de operatie a celui
de-al doilea).
n continuare, vom considera o multime nevid
a si nit
a A; pe care convenim
s
a o numim alfabet, iar elementele lui A le vom numi litere.
Fie A+ multimea cuvintelor peste A; i.e., a secventelor formate prin al
aturarea (juxtapunerea) unui num
ar nit de litere:
A+ = fc := a1 a2 :::an j ai 2 A; i = 1; n; n 2 N g
Pe multimea A+ ; denim operatia de concatenare (juxtapunere):
: A+

A+ ! A+ ; (c1 ; c2 ) 7! c1 c2

(7)

De exemplu, dac
a A = fa1 ; a2 ; a3 g, iar
c1 = a1 a2 a1 ; c2 = a3 a3 a2 a1
sunt dou
a cuvinte peste alfabetul A; atunci
c1 c2 = a1 a2 a1 a3 a3 a2 a1 ; c2 c1 = a3 a3 a2 a1 a1 a2 a1 :
Num
arul de litere al unui cuvnt c 2 A+ poart
a numele de lungimea cuvntului respectiv si se noteaz
a u l(c). n exemplul de mai sus, avem
l(c1 ) = 3; l(c2 ) = 4:
Operatia de concatenare (7) mai sus denit
a este, dup
a cum se poate vedea
cu usurinta, asociativ
a:
(c1 c2 )c3 = c1 (c2 c3 ); 8c1 ; c2 ; c3 2 A+ :
Prin urmare, multimea A+ a cuvintelor peste alfabetul A; mpreun
a cu operatia de concatenare, este un semigrup, numit semigrupul liber generat de
A:
Dac
a i ad
aug
am lui A+ cuvntul nul e (denit ca ind cuvntul de lungime
0), obtinem multimea
A = A+ [ feg:
Cuvntul nul e are rolul de element neutru la concatenare: ce = ec = c; 8c 2
A ; iar proprietatea de asociativitate se p
astreaz
a.
17

Astfel, (A ; ) este un monoid, numit monoidul liber generat de A: Orice


submultime a lui A poart
a numele de limbaj de codicare pe alfabetul A:
n monoidul (A ; ), puterea a n-a (n 2 N ) a unui cuvnt c nseamn
a
repetarea de n ori a cuvntului c; iar c0 = e.
Dou
a cuvinte sunt egale dac
a si numai dac
a ele coincid liter
a cu liter
a:
a1 a2 :::ak = b1 b2 :::bp ) k = p si ai = bi ; i = 1; k:
Acest monoid are o serie de propriet
ati interesante. Amintim doar cteva
dintre ele.
Monoidul liber generat de un alfabet este un monoid necomutativ. n
general, c1 c2 6= c2 c1 :
Mai mult, desi n A niciun element, cu exceptia lui e; nu admite simetric,
putem simplica att la stnga ct si la dreapta ntr-o egalitate (tinnd
seama doar de semnicatia egalit
atii a dou
a cuvinte):
c1 c2
c2 c1

= c1 c3 ) c2 = c3 ;
= c3 c1 ) c2 = c3 ;

8c1 ; c2 ; c3 2 A
8c1 ; c2 ; c3 2 A :

Cel mai simplu alfabet cu putinta este cel format cu o singur


a liter
a. S
a
caracteriz
am n cele ce urmeaz
a, monoidul liber generat de acesta.
Propozitia 5 Daca alfabetul A contine o singura litera, A = fag; atunci (A ; )
este izomorf cu (N; +):
Demonstra
tie. Dac
a A = fag; atunci avem
A = fe; a; aa; aaa; aaaa; ::::; aa:::a
| {z } ; :::g:
n litere

Denim functia f : A ! N astfel

f ( aa:::a
| {z } ) = n
n litere

(altfel spus, f ataseaz


a unui cuvnt peste A; lungimea acestuia).
f este morsm: Fie c1 si c2 dou
a cuvinte din A :
Presupunem, de exemplu, c
a c1 = aa:::a
| {z } ; c2 = aa:::a
| {z } ; de unde deducem
k1 litere

k2 litere

c
a

f (c1 ) = k1 ;

Atunci c1 c2 =

aa:::a
| {z }

k1 +k2 litere

f (c2 ) = k2 :

) f (c1 c2 ) = k1 + k2 : = f (c1 ) + f (c2 ):


18

f - bijectiv
a:
- Dac
a f (c1 ) = f (c2 ), atunci c1 si c2 au aceeasi lungime (s
a spunem, n),
=
c
;
deci,
f
este
injectiv
a
.
de unde rezult
a c
a c1 = aa:::a
2
| {z }
n litere

- Pentru n 2 N arbitrar, exist


a ntotdeauna cuvntul c := aa:::a
| {z } astfel
n litere

nct f (c) = n; ceea ce nseamn


a c
a f este si surjectiv
a, q.e.d.

Intuitiv, propozitia de mai sus arm


a c
a scrierea cu ajutorul unui alfabet
format cu o liter
a echivaleaz
a cu num
ar
atoarea cu betisoare.
n mod asem
an
ator, se demonstreaz
a
Teorema 6 Daca alfabetele A si B au acela
si numar de litere, atunci monoizii
liberi generati de A si B sunt izomor.
Ideea demonstratiei este urm
atoarea:
fb1 ; :::; bn g; izomorsmul este denit de
f : A ! B ; f (c) =

e
b1 b2 ::::bk

dac
a A = fa1 ; ::::; an g si B =
daca c = e
:
daca c = a1 a2 :::ak

(i.e, corespondenta va dat


a de ai ! bi ).
Dup
a cum am v
azut mai sus, monoidul liber generat de un alfabet este un
monoid necomutativ.
Se pune, n mod natural, ntrebarea, care sunt cuvintele care comut
a ntre
ele. Are loc:
Propozitia 7 Daca doua cuvinte c1 ; c2 2 A comuta, atunci exista un cuvnt
r 2 A astfel nct c1 = rn ; c2 = rm (unde n; m 2 N).
Demonstra
tie. Demonstr
am prin inductie dup
a lungimea cuvntului c1 c2 :
Dac
a l(c1 c2 ) = l(c2 c1 ) = 1; nseamn
a c
a c1 c2 contine o singur
a liter
a
a 2 A: Sunt posibile dou
a cazuri:
1) c1 = a; c2 = e: n acest caz, denim r := a si avem c1 = r1 ; c2 = r0 :
2) c1 = e; c2 = a: n acest caz, denim r := a si avem c1 = r0 ; c2 = r1 :
Presupunem armatia adev
arat
a pentru l(c1 c2 )
l(c1 c2 ) = n + 1:

n si demonstr
am pentru

Fie c1 ; c2 dou
a cuvinte astfel nct l(c1 c2 ) = n + 1:

19

Presupunem c
a 1 l(c1 ) l (c2 ) (pentru l(c1 ) = 0; armatia este imediat
a).
Din ipotez
a, c1 c2 = c2 c1 ; de unde deducem c
a c2 = c1 p; pentru un p 2 A :
nlocuind pe c2 si simplicnd cu c1 egalitatea, obtinem c
a
c1 p = pc1 ;
(c1 si p comut
a) iar l(c1 p) n: Conform ipotezei de inductie, exist
a un r 2 A
astfel nct p = rn1 si c1 = rn2 ; de unde rezult
a c2 = c1 p = rn1 +n2 ; q.e.d.
Cu ajutorul cuvintelor peste un alfabet si al unor separatori, putem forma
propozitii p = (c1 ; c2 ; :::; cp ):

2.2

No
tiunea de codicare

Fie dou
a alfabete A si B:
Denitia 3 O codicare este o functie injectiva

:A!B :

Altfel spus, o codicare este o corespondenta care asociaz


a ec
arei litere din
A; un grup de litere din B; astfel nct la litere distincte ale lui A s
a corespund
a
grupuri distincte de litere din B:
Alfabetul A se numeste, n acest caz, alfabet sursa, iar B se numeste alfabetcod. Multimea
C = (A)
poart
a numele de cod, iar elementele lui C (i.e., elementele lui B care reprezint
a codic
ari ale literelor lui A) poart
a numele de cuvinte cod.
Exemple:
1) (Codul hexazecimal-binar ): functia : f0; 1; 2; :::; 9; A; B; C; D; E; F g !
f0; 1g ; dat
a de:
(0) = 0000
(1) = 0001
(2) = 0010
(3) = 0011
(4) = 0100
(5) = 0101
(6) = 0110
(7) = 0111
(8) = 1000
(9) = 1001
(A) = 1010
(B) = 1011
(C) = 1100
(D) = 1101
(E) = 1110
(F ) = 1111
este o codicare, pentru care alfabetul surs
a este format cu cifrele sistemului
hexazecimal, alfabetul cod, cu cifrele sistemului binar, iar cuvintele cod sunt
f0000; 0001; :::; 1111g:
2) Codul Morse este de asemenea un cod, pentru care alfabetul cod B este
format cu simbolurile f ; ; g (punct, linie, spatiu).
3) Codul ASCII (American Standard Code for Information Interchange),
utilizat pentru reprezentarea n calculator a informatiei alfanumerice, are 28 =
256 simboluri-surs
a, codicate n secvente binare de lungime 8.
20

4) Codul ISBN (International Standard Book Number) al c


artilor, este un
cod ale c
arui cuvinte au lungimea 10. Alfabetul cod este f0; 1; :::; 9; Xg (X pentru num
arul 10).
Pentru a putea codica mesaje (respectiv, cuvinte din A ), este necesar s
a
extindem pe la monoidul liber A :
Denitia 4 Pentru o codicare : A ! B ; numim codicare a mesajelor
surs
a, aplicatia : A ! B data de
(e)
(ac)

= e;
=
(a)

(c); 8a 2 A; c 2 A :

Conditia ca aplicatia de codicare s


a e injectiv
a asigur
a faptul c
a decodicarea ec
arei litere se poate face f
ar
a ambiguit
ati. Acest lucru nu este ns
a
sucient pentru ca decodicarea cuvintelor s
a poat
a realizat
a n mod unic.
S
a lu
am, spre exemplu, A = fa; b; cg si B = f0; 1g: Dac
a denim
(a) = 101; (b) = 10; (c) = 110;
atunci cel care ar receptiona mesajul
10110
nu ar sti dac
a decodicarea corect
a este ab sau bc: Pentru a evita astfel de
situatii, trebuie ca si functia
s
a e injectiv
a.
Denitia 5 O codicare : A ! B se nume
ste unic decodabil
a daca aplicatia de codicare a mesajelor sursa, : A ! B ; este injectiva.
Exist
a cteva situatii n care putem stabili cu usurinta dac
a o codicare este
unic decodabil
a.
1. Un cod ale c
arui cuvinte au aceeasi lungime n 2 N se numeste cod-bloc
de lungime n:
Pentru coduri bloc, avem implicatia:
- codicare, (A) - cod bloc )

- unic decodabil
a:

Justicarea este urm


atoarea: dac
a este o codicare, atunci este injectiv
a, iar decodicarea ec
arei litere se face n mod unic. Decodicarea unui
cuvnt se va face liter
a cu liter
a (decodicnd unul cte unul grupurile de
n litere reprezentnd cuvintele cod). Formalizat:

21

Dac
a (a1 a2 :::ak ) = (b1 b2 :::bp ) = c1 c2 :::cl (unde ai ; bi 2 A, iar ci sunt
cuvinte cod, avnd ecare lungimea n), atunci
k
p

= l si
= l si

(a1 ) = c1 ;
(b1 ) = c1 ;

(al ) = cl
(bl ) = cl

ceea ce implic
a (ai ) = (bi ); i = 1; l: Din injectivitatea lui
ai = bi ; i = 1; l; si prin urmare, a1 a2 :::ak = b1 b2 :::bp :

rezult
a

2. O codicare : A ! B se numeste instantanee dac


a (A) are proprietatea prexului:
c1 ; c1 c2 2 (A) ) c2 = e

(nu cuvinte cod diferite care s


a aiba drept "prex" un alt cuvant cod).
Are loc proprietatea:
- codicare instantanee )

- unic decodabil
a.

Reciproca nu este, n general, adev


arat
a.
n cazul codurilor instantanee, decodicarea se poate face pe m
asur
a ce
se receptioneaz
a mesajul (nu este necesar
a citirea acestuia pn
a la cap
at,
pentru a putea decodica).
Codurile bloc sunt eciente atunci cnd simbolurile surs
a au frecvente relativ
egale de aparitie. Dac
a frecventa acestora este foarte diferir
a, sunt preferabile
codurile instantanee cu lungimi variabile ale cuvintelor cod.
Exercitiul 14 Fie A = fa; b; c:::; zg (alfabetul latin standard). Care este cea
mai mica lungime a unui cod bloc cu alfabetul sursa A si alfabetul cod: a)
B = f0; 1g; b) B = f ;
; spatiug (ca la alfabetul Morse}?
Exercitiul 15 Fie codicarea

: fa; b; c; d; e; f g ! f0; 1g ; data de

a ! 1010
b ! 001
c ! 101
Este

d ! 0001
e ! 1101
f ! 1011:

unic decodabila? Justicati.

Exercitiul 16 Fie A = fa; b; cg, B = f0; 1g si codicarea


(a) = 0;
Este

unic decodabila? Este

(b) = 10;
instantanee?

22

(c) = 1010:

: A ! B data de

Codic
ari utilizate n reprezentarea numerelor n memoria sistemelor de calcul

Din punct de vedere matematic, reprezentarea numerelor negative se face


scriind n fata valorii absolute a num
arului semnul -. n memoria calculatorului, numerele sunt reprezentate n baza 2, si este necesar
a o metod
a de a codica
semnul -, utiliznd doar simbolurile 0 si 1.
Prezent
am n continuare trei variante de reprezentare a numerelor ntregi
cu semn.

3.1

Codul direct

Fie N 2 Z; N 2 [ 2n + 1; 2n 1]:
Pentru reprezentarea valorii absolute a lui N n baza 2, avem nevoie de n
cifre (n biti). Vom ad
auga n stnga acesteia (ca bitul cel mai semnicativ)
un bit, care va juca rolul de bit de semn.
Anume, pentru N 2 Z; reprezentarea n cod direct pe n + 1 bi
ti se
deneste ca ind num
arul
0 2n + N;
1 2n + jN j;

[N ]d =

Cu alte cuvinte, codul direct al lui N =

N 0
N < 0:
an

(8)

1 an 2 :::a1 a0(2)

an

an

:::

a0

daca N

an

an

:::

a0

daca N < 0:

va avea forma:

si
Bitul de semn (bitul cel mai semnicativ) este 0 dac
a num
arul este pozitiv,
si 1 dac
a num
arul este negativ.
Exemple:
a) Num
arul N = 24 = 24 + 23 se scrie n baza 2 ca N = 11000(2) :
Reprezentarea lui N n cod direct pe n + 1 = 8 biti este format
a din num
arul
N (scris cu dou
a zerouri n fata, pentru a completa pn
a la n = 7 cifre) si bitul
de semn 0:
0 0 0 1 1 0 0 0
b) Num
arul N =

15 =
1

1111(2) se va scrie n cod direct ca


0

(primul bit reprezint


a bitul de semn, urm
atorii 7 reprezint
a pe jN j).

23

Observatia 8 Secventele 00::::0 si 100:::0 reprezinta ambele pe 0: Astfel, pentru a deni corect aplicatia de codicare, adaugam lui Z simbolul 0 ; caruia i
corespunde 100:::0: Obtinem astfel codicarea = [ ]d
([ 2n + 1; 2n 1] \ Z) [ f0 g ! f0; 1g
8
N 0
< 0 2n + N;
1 2n + jN j;
N <0 :
=
:
1 2n + 0;
N =0

[ ]d

[N ]d

3.2

Codul invers

Fie, din nou N 2 Z; N 2 [ 2n + 1; 2n

1]:

Reprezentarea n cod invers pe n + 1 bi


ti a lui N =
se deneste ca ind num
arul
[N ]inv =
unde ai = 1

0 2n + an 1 an 2 :::a1 a0 ;
1 2n + an 1 an 2 :::a1 a0 ;

an

1 an 2 :::a1 a0

N = an 1 an 2 :::a1 a0 0
;
N = an 1 an 2 :::a1 a0 < 0

(9)

ai este complementul lui ai fata de 1.

Echivalent,
8
N 0
< 0 2n + N;
nP1
[N ]inv =
(1 ai )2i ;
: 1 2n +

N=

an

1 an 2 :::a1 a0

<0

i=0

sau, dac
a tinem cont de egalitatea

nP1

2i = 2 n

1; obtinem

i=0

[N ]inv =

0 2n + N;
1 2n + (2n

jN j

1);

N 0
:
N <0

(10)

Primul bit al reprezent


arii lui N = an 1 an 2 :::a1 a0 joac
a rolul de bit
de semn, iar urm
atorii n sunt cifrele lui N (dac
a N este pozitiv), respectiv,
complementii fata de 1 ai cifrelor lui N (dac
a N este negativ):
0

an

an

:::

a0

daca N

an

an

:::

a0

daca N < 0:

si

Exemple:
a) Num
arul N = 24(10) = 11000(2) este pozitiv, prin urmare, reprezentarea lui
24

N n cod invers pe n + 1 = 8 biti este format


a din num
arul N (scris cu 7 cifre)
si bitul de semn 0:
0 0 0 1 1 0 0 0
b) Num
arul N =

15 =
1

1111(2) se va scrie n cod invers ca


1

(bitul de semn 1+ cifrele lui jN j complementate).


Observatia 9 Secventele 00::::0 si 11:::1 reprezinta ambele pe 0: Pentru a deni
corect aplicatia de codicare, adaugam din nou lui Z simbolul 0 ; caruia i
corespunde 111:::1: Obtinem astfel codicarea = [ ]inv
[ ]inv
[N ]inv

([ 2n + 1; 2n 1] \ Z) [ f0 g ! f0; 1g
8
0 2n + N;
N 0
>
>
<
n
1 2 + (2n jN j 1);
N <0
:
=
n
;
N
=
0
1
2
+
111:::1
>
>
| {z }
:
:

n cif re

3.3

Codul complementar

Reprezentarea n cod complementar pe n + 1 bi


ti a lui N
an 1 an 2 :::a1 a0 se deneste ca ind num
arul
[N ]c =

0 2n + N;
1 2n + (2n

N
N <0

jN j);

(11)

(primul bit este bitul de semn, iar urm


atorii n reprezint
a: a)cifrele lui N , dac
a
N este pozitiv; b) cifrele lui (2n jN j); dac
a N este negativ).
Observatia 10 Pentru numere negative, codul complementar este [N ]c = 1
2n + (2n jN j) = 1 2n + (2n + N ); adica,
[N ]c =

0 2n + N;
1 2n + (2n + N );

N <0

Conform denitiei de mai sus, putem reprezenta pe cei n biti r


amasi dup
a
scrierea bitului de semn, numere pozitive pn
a la 2n 1 si numere negative din
intervalul [ 2n ; 0):
Astfel, putem reprezenta n cod complementar pe n + 1 biti, numere ntregi
N 2 [ 2n ; 2n
25

1]

(am cstigat fata de codul direct si cel invers nc


a o valoare care se poate
reprezenta pe cei n + 1 biti, anume, pe N = 2n ).
n cod complementar, num
arul 0 are o reprezentare unic
a, anume 00:::0:
Aplicatia de codicare este, deci, corect denit
a pe multimea numerelor ntregi
din intervalul [ 2n ; 2n 1] (f
ar
a a mai nevoie s
a ad
aug
am pe 0 ):
[ ]c
[N ]c

[ 2n ; 2n 1] \ Z !f0; 1g
0 2n + N;
N
=
1 2n + (2n + N );
N <0
:

Observatia 11 Reprezentarile numerelor pozitive n cele trei coduri: direct,


invers si complementar, coincid.
Observatia 12 Pentru numere negative, codul invers este dat de
[N ]inv = 1 2n + (2n

jN j

1) = [N ]c

1:

Astfel, daca N < 0; reprezentarea n cod complementar a lui N se determina


adunnd 1 la reprezentarea n cod invers:
N < 0 ) [N ]c = [N ]inv + 1:
Ca alternativ
a, putem determina pe [N ]c pentru numere negative si din
codul direct, astfel: de la dreapta la stnga, pastram neschimbate cifrele pna
la primul bit egal cu 1 inclusiv, iar pe celelalte (spre stnga), cu exceptia bitului
de semn, le complementam fata de 1.
Exemple:
a) Pentru num
arul pozitiv N = 24(10) = 11000(2) reprezentarea n cod complementar pe 8 biti este
0
b) Num
arul N =

15 =

1111(2) se va scrie n cod complementar pe 8 biti

ca
1

1 :

(= codul invers + 1).


c) pentru n = 4 biti, vom avea
N
0
1
2
..
.

[N ]c
0000
0001
0010

N
1
2
3
..
.

[N ]c
1111
1110
1101

0111

1000

(1000 reprezint
a cel mai mic num
ar negativ care se poate reprezenta pe 4 biti).

26

3.4
3.4.1

Opera
tii cu numere reprezentate n coduri
n cod direct

Desi, la prima vedere, codul direct apare ca ind cel mai natural, efectuarea
operatiilor aritmetice cu numere reprezentate n cod direct este incomod
a, ea
presupunnd discutie dup
a semnul operanzilor.
De exemplu, s
a consider
am adunarea a dou
a numere N1 ; N2 2 [ 2n +1; 2n
1] \ Z; reprezentate n cod direct pe n + 1 biti.
1) Dac
a N1 = an 1 an 2 :::a0 ; N2 = bn 1 bn 2 ::::b0
0, atunci, suma celor
dou
a numere (n cod direct) se g
aseste adunnd cele dou
a reprezent
ari (v
azute
ca numere reprezentate binar): [N1 + N2 ]d = [N1 ]d + [N2 ]d
0

an

an

:::

a0 + 0

bn

bn

:::

b0 :

2) Dac
a ambele numere sunt negative, N1 =
an 1 an 2 :::a0 ; N2 =
bn 1 bn 2 ::::b0 ; atunci suma reprezent
arilor lor n cod direct este, este 2n
N1 + 2n N2 = 2n + 2n (N1 + N2 ); de unde deducem c
a
[N1 + N2 ]d = [N1 ]d + [N2 ]d

2n

(la rezultat, ignor


am ultimul bit de transport, care provine din adunarea bitilor
de semn, si schimb
am bitul de semn).
3) Dac
a N1 0; N2 < 0; atunci pentru a determina pe [N1 + N2 ]d ; valorile
din cei doi registri care reprezint
a pe N1 si N2 trebuie sc
azute:
[N1 ]d

= N1 ; [N2 ]d = 2n + N2 )
) [N2 ]d [N1 ]d = 2n (N1 + N2 ):

Dac
a N1 +N2 este strict pozitiv, atunci 2n (N1 +N2 ) < 2n ; ceea ce nseamn
a
c
a bitul de semn va deveni 0, iar valoarea lui N1 + N2 este complementul fata
de 2n al rezultatului.
Dac
a N1 + N2 este negativ (cel mult 0), atunci bitul de semn este 1, iar
urm
atorii n biti reprezint
a modulul sumei.
Se pot determina procedee asem
an
atoare si pentru determinarea diferentei
sau produsului a dou
a numere reprezentate n cod direct (respectiv, pentru
operatiile n cod invers).
Codul complementar ofer
a ns
a o variant
a mult mai avantajoas
a: suma,
diferenta sau produsul a dou
a numere se determin
a pur si simplu adunnd,
sc
aznd sau nmultind codurile complementare ale celor dou
a numere, f
ar
aa
necesare discutii n functie de semnul numerelor (cu precizarea c
a, la nmultire,
sansa ca N1 N2 s
a dep
aseasc
a pe 2n este destul de mare, si este necesar s
a ne
asigur
am c
a precizia cu care reprezent
am numerele este sucient
a - de obicei,
se va trece la precizie dubl
a, pentru a ne asigura c
a nu avem erori de dep
asire).
Vom demonstra acest lucru n cazul adun
arii, demonstratiile pentru celelalte
operatii aritmetice sunt similare.

27

3.4.2

n cod complementar

Fie N1 ; N2 2 [ 2n ; 2n
n + 1 biti:
1. Dac
a N1 ; N 2

1] dou
a numere reprezentabile n cod complementar pe

0; atunci [N1 ]c = 0 2n + N1 ; [N2 ]c = 0 2n + N2 si avem


[N1 + N2 ]c = 0 2n + [N1 ]c + [N2 ]c

(bitul de semn r
amne 0, iar ceilalti n biti reprezint
a suma numerelor), de
fapt,
[N1 + N2 ]c = [N1 ]c + [N2 ]c :
n cazul n care avem transport c
atre bitul de semn (iar acesta ar deveni
1), nseamn
a c
a N1 + N2 2n ; adic
a avem eroare de dep
asire.
2. Dac
a N1 ; N2 < 0; atunci [N1 ]c = 1 2n +(2n +N1 ); [N2 ]c = 1 2n +(2n +N2 )
si avem
[N1 + N2 ]c = 1 2n+1 + 1 2n + (2n + (N1 + N2 ))
(ultimul bit de transport dep
aseste cei n + 1 biti ai reprezent
arii, si va
ignorat, iar ceea ce r
amne este codul complementar al sumei N1 + N2 )
[N1 ]c + [N2 ]c = 1 2n+1 + [N1 + N2 ]c :
n cazul n care avem eroare de dep
asire (N1 + N2 < 2n ), atunci 2n +
(N1 + N2 ) < 0 si va avea loc mprumut din bitul de semn (care ar deveni
0).
3. Dac
a N1 0; N2 < 0; atunci [N1 ]c = 0 2n +N1 si [N2 ]c = 1 2n +(2n +N2 );
de unde deducem c
a
[N1 ]c + [N2 ]c = 1 2n + (2n + N1 + N2 ):
(a) Dac
a N1 + N2 < 0; atunci
[N1 ]c + [N2 ]c = [N1 + N2 ]c :
(b) Dac
a N1 + N2 0; atunci (2n + N1 + N2 ) dep
aseste pe 2n si avem
bit de transport c
atre bitul de semn, care va deveni 0 (mai apare o
cifr
a de transport, de la bitul de semn c
atre stnga, pe care o vom
ignora, ea dep
asind oricum num
arul de cifre al reprezent
arii):
[N1 ]c + [N2 ]c = 2n+1 + [N1 + N2 ]c :

Am demonstrat astfel:
28

Teorema 13 Codul complementar pe n + 1 biti al sumei a doua numere se


obtine adunnd codurile complementare ale celor doua numere si neglijnd eventuala a (n + 2) a cifra (aparuta ca bit de transport,din sumarea bitilor cei mai
semnicativi).
Acest eventual al (n + 2)-lea bit oricum dep
aseste lungimea reprezent
arii
(lungimea registrului), ind astfel ignorat.
Se poate demonstra, n mod asemn
an
ator,
Propozitia 14 n cazul sumei codurilor complementare a doua numere, avem
eroare de depasire (numarul de biti ai lui N1 + N2 depase
ste numarul de biti ai
reprezentarii) daca si numai daca ultimii doi biti de transport, de la dreapta la
stnga, sunt diferiti ntre ei: 01 sau 10.
Diferenta si produsul a dou
a numere reprezentate n cod complementar se realizeaz
a similar: sc
adem, respectiv, nmultim reprezent
arile pe n + 1 biti ai celor
dou
a numere, si neglij
am eventualii biti (din stnga) care dep
asesc lungimea
reprezent
arii.
n cazul nmultirii a dou
a numere reprezentate pe cte n + 1 biti, N1 ; N2 2
[ 2n ; 2n 1]; pentru a evita erorile de dep
asire, sunt necesari 2(n + 1) biti
(deoarece N1 N2 2 [ (22n 2n ); 22n ]; iar 22n ocup
a 2n + 1 biti) cu alte cuvinte,
precizia reprezent
arii trebuie dublat
a. De exemplu, dac
a dorim s
a nmultim
dou
a numere reprezentate pe cte 8 biti, avem nevoie pentru rezultat de 16 biti
Exemplu: Calculati n cod complementar, pentru numerele reprezentate
pe n + 1 = 5 biti: N1 = 5 si N2 = 6;
numerele a) N1 + N2 ; b) N1 N2 ; c) N1 N2 :
Avem [N1 ]c = 11011; [N2 ]c = 00110 si:
11 1 1

a)

11011
00110
100001
/

) [N1 + N2 ]c = 00001;

adic
a N1 + N2 = 1. Ultimii doi biti de transport sunt 11; ceea ce nseamn
a c
a
nu avem eroare de dep
asire, iar rezultatul este corect.

b)

11011
00110
10101

) [N1 + N2 ]c = 10101:

Bitul de semn este 1, ceea ce nseamn


a c
a num
arul este negativ. Calcul
am
[N1 N2 ]inv = 10100 ) [N1 N2 ]d = 11011; si g
asim de aici c
a N1 N2 =
1011(2) = 11(10) :
29

c) Pentru a nmulti cele dou


a numere, le reprezent
am pe 10 biti
1111111011
0000000110
1111111011
1111111011
xxx1111100010
(prin xxx am semnicat faptul c
a neglij
am ceea ce dep
aseste 10 biti).
Avem c
a [N1 N2 ]c = 1111100010; bitul de semn este 1, deci num
arul este
negativ. Calcul
am [N1 N2 ]inv = 1111100001 ) [N1 N2 ]d = 1000011110; ceea
ce corespunde lui 11110(2) = 30(2) :

Exercitiul 17 Scrieti reprezentarile n cod direct, invers si complementar pe 8


biti, pentru numerele pozitive:
35; 64; 72; 127; 0:
Exercitiul 18 Scrieti reprezentarile n cod direct, invers si complementar pe 8
biti, pentru numerele negative:
63; 72; 43; 127:
Exercitiul 19 Recunoa
steti urmatoarele numere reprezentate n cod direct (pe
8 biti): 00110010; 10111101:
Exercitiul 20 Recunoa
steti urmatoarele numere reprezentate n cod invers (pe
8 biti): 00101011; 11011101:
Exercitiul 21 Recunoa
steti urmatoarele numere reprezentate n cod complementar: 01001010; 11111011; 11111111; 11111110; 10000001; 10000000:
Exercitiul 22 Calculati n cod complementar (pentru numere reprezentate pe
6 biti): 4 + ( 3); ( 7) + 4; ( 12) + ( 18); ( 12) + ( 20) (!!), 15 ( 4); 7 3;
7 ( 3):

30

Elemente de teoria codurilor detectoare


si
corectoare de erori

n cazul unui transfer de informatie (e c


a e vorba de o transimisie prin satelit,
sau de televiziunea prin cablu, de lectura CD-urilor etc.), pot ap
area erori n
timpul procesului de transmisie-receptie. Apare astfel necesitatea de a identica si corecta aceste erori, astfel nct s
a nu mai e nevoie ca mesajul s
a e
retransmis.
n principiu, ceea ce se transmite (mesajul de informatie) va n acest
scop completat cu un mesaj de control), care nu aduce informatie suplimentar
a,
ns
a o conrm
a pe cea existent
a. Desigur, se pune problema urm
atoare - cum
s
a construim acest mesaj de control, astfel nct s
a nc
arc
am ct mai putin
mesajul, si n acelasi timp, s
a putem detecta si corecta ct mai multe erori?
Un loc central n teoria codurilor detectoare si corectoare de erori l au
codurile liniare binare, ce reprezint
a o aplicatie direct
a a notiunilor de algebr
a
liniar
a.

4.1

Coduri liniare binare

Consider
am multimea
Zn2 = fa = (^
a1 ; a
^2 :::; a
^n ) j a
^1 ; a
^2 :::; a
^n 2 f^0; ^1gg;
nzestrat
a cu operatiile
a + b = (^
a1 + ^b1 ; a
^2 + ^b2 ; :::; a
^n + ^bn ); a; b 2 Zn2 ;
^ a = (^ a
^1 ; ^ a
^2 :::; ^ a
^n );
^ 2 Z2 ; ^ 2 Zn2
mpreun
a cu aceste operatii, (Zn2 ; +; ) devine un spatiu vectorial peste Z2
(demonstrati!).
Convenim s
a renuntam la scrierea cu paranteze (ori de cte ori este posibil)
si cu simbolul b: Anume, vom nota elementele
a = (^
a1 ; a
^2 :::; a
^n ) 2 Zn2
pur si simplu ca secvente de biti:
a := a1 a2 :::an :
Astfel, suma a1 a2 :::an + b1 b2 :::bn va (a1 + b1 ; :::; an + bn ) etc.
De exemplu, n Z52 ; vom avea
11011 + 10011 = 01000
(se adun
a bitii de pe aceeasi pozitie - nu se face adunare n baza 2).

31

Denitia 6 Un cod liniar binar este un subspatiu al spatiului vectorial


(Zn2 ; +; Z2 ):
n continuare, prin cod, vom ntelege un cod liniar binar.
n general, pentru a ar
ata c
a o submultime S a unui spatiu vectorial este
subspatiu, trebuie s
a ar
at
am c
a S este parte stabil
a a lui Zn2 att la adunare,
ct si la amplicarea cu scalari. n cazul codurilor liniare binare, acest criteriu
se simplic
a.
Criteriul 15 O submultime C a lui Zn2 este un cod, daca si numai daca C este
parte stabila a lui Zn2 fata de adunare:
8a; b 2 C : a + b 2 C:
Demonstratie:
!: Dac
a C este cod, atunci el este subspatiu al lui Zn2 ; prin urmare el este
parte stabil
a fata de adunare.
: Reciproc, presupunem c
a 8a; b 2 C : a + b 2 C: si demonstr
am c
a C
deneste un subspatiu al lui Zn2 : Pentru aceasta, este sucient s
a ar
at
am c
a:
8a; b 2 C : a + b 2 C
8 2 Z2 ; 8a 2 C : a 2 C:
Prima conditie este ndeplinit
a, conform ipotezei.
Fie a 2 C si 2 Z2 :
1) Dac
a = 0; atunci a = 0 si avem 0 = a + ( 1)a 2 C (vectorul nul
apartine oric
arui subspatiu).
2) Dac
a = 1; atunci a = a 2 C:
Prin urmare, pentru orice
2 Z2 ; avem c
a a 2 C ) a 2 C; ceea ce
nseamn
a C - cod.
Exemplu: Fie C = f000000; 101010; 010101; 111111g (cod cu repetitie,
obtinut prin repetarea de trei ori a informatiei). Ar
atati c
a C este un cod
liniar binar.
Solutie: Din tabla de operatie, rezult
a c
a C este parte stabil
a a lui Z62 fata
de adunare:
+
000000
101010
010101
111111

000000
000000
101010
010101
111111

101010
101010
000000
111111
010101

adic
a, C este un cod.
32

010101
010101
111111
000000
101010

111111
111111
010101 ;
101010
000000

4.2

Matrice de generatori. Codicarea mesajelor

Un subspatiu al unui spatiu vectorial este, prin denitie, la rndul lui, un spatiu
vectorial, asa nct are sens s
a vorbim despre dimensiunea codului si de baze ale
acestuia.
Dac
a C Zn2 este un subspatiu de dimensiune k (unde k
C este un cod de dimensiune k
si lungime n; si not
am

n), spunem c
a

C = C(n; k):
ntru-un cod C

Zn2 de dimensiune k; orice baz


a va avea k elemente. Fie
B = fe1 ; e2 ; :::; ek g:

Orice element v 2 C se va scrie (n mod unic) ca o combinatie liniar


a
v = x1 e1 + x2 e2 + ::: + xk ek ;

(12)

unde xi 2 Z2 ; i = 1; k:
Pentru alegerea ec
arei coordonate xi avem dou
a posibilit
ati (0 sau 1) - n
total, 2k posibilit
ati de construire a lui v: Codul C (ca subspatiu generat de B),
este multimea tuturor vectorilor v care sunt combinatii liniare de e1 ; e2 ; :::; ek :
n consecinta,
Propozitia 16 Un cod liniar binar de dimensiune k are 2k elemente.
Prin urmare, putem stabili dimensiunea unui cod din num
arul de elemente ale acestuia. n exemplul de mai sus (codul cu repetitie), C =
f000000; 101010; 010101; 111111g are 4 = 22 elemente, ceea ce nseamn
a ca dimensiunea lui este k = 2: C este un cod de lungime 6 si dimensiune 2:
Fie C = C(n; k) un cod si B = fe1 ; e2 ; :::; ek g o baz
a a sa. S
a remarc
am c
a
relatia (12) se poate scrie si matricial, sub forma
v = x G;

(13)

unde x = x1 x2 :::xk = (x1 ; x2 ; :::; xk ) este un vector linie si matricea G =


Mk n (Z2 ) dat
a de
0
1 0
1
e1
e11 e12 ::: e1n
B e2 C B e21 e22 ::: e2n C
B
C B
C
G=B . C=B .
(14)
C;
@ .. A @ ..
A
ek

ek1

ek2

::: ekn

n care linia i reprezint


a vectorul ei = (ei1 ; ei2 ; ::::; ein ); poart
a numele de matrice de generatori a codului liniar binar C:
33

Relatia v = x G poart
a numele de codicarea mesajului x 2 Zk2 : Un cod
de dimensiune k si lungime n va transforma secvente x = x1 x2 :::xk de lungime
k n secvente v = v1 :::vn 2 C (cuvinte cod), de lungime n:
Astfel, aplica
tia de codicare corespunz
atoare unui cod liniar binar
C(n; k) este dat
a de
: Zk2 ! C Zn2
(x) = x G:
(alfabetul surs
a este Zk2 ; iar alfabetul cod, Z2 ).
Codurile liniare binare C(n; k) sunt coduri bloc de lungime n; care unui
mesaj de informatie de lungime k i adaug
a n k biti de control (si eventual,
transform
a si informatia propriu-zis
a).
Codicarea unui element x 2 Zk2 depinde, evident de matricea de generatori,
respectiv, de baza aleas
a pentru cod. Matricea de generatori se stabileste la
nceputul transmisiei ntre transmitator si receptor, si ea r
amne xat
a pe tot
parcursul transmisiei.
Observatia 17 mai sus denit este o functie injectiva, cu alte cuvinte, este
ntr-adevar o codicare.
Pentru a ne convinge de acest lucru, s
a presupunem c
a x; y 2 Zk2 sunt astfel
nct (x) = (y); adic
a
v = x G = y G:
Relatia de mai sus nseamn
a, de fapt,
v = x1 e1 + ::: + xk ek = y1 e1 + ::: + yk ek ;
de unde deducem
(x1

y1 )e1 + ::: + (xk

yk )ek = 0:

Din liniar independenta vectorilor e1 ; :::; ek ; obtinem c


a xi = yi ; i = 1; k;
echivalent, x = y: n consecinta, este injectiv
a.
Caz particular: Dac
a matricea G
0
1 0 :::
B 0 1 :::
B
G = (Ik ; A) = B .
..
@ ..
.
0

:::

are forma
0
0
..
.

a11
a21
..
.

a12
a22

:::
:::
..
.

a1n
a2n
..
.

1 ak1

ak2

:::

ak;n

atunci codicarea lui x 2 Zk2 este

v = (x1 ; x2 ; :::; xk ) G = (x1 ; x2 ; :::; xk ;

k
X
i=1

34

ai1 xi ;

k
X
i=1

ai2 xi ; :::;

k
X
i=1

C
C
C;
A

ai;n

(15)

k xi );

cu alte cuvinte, dac


a
G = (Ik ; A);

A 2 Mk

(n k) (Z2 );

atunci codicarea unui mesaj x = x1 x2 :::xk va contine pe primii k biti informatia


propriu-zis
a x; iar urm
atorii n k biti au rolul de biti de control:
(x) = (x; (n

k) biti de control):

Un cod care admite o matrice de generatori de forma G = (Ik ; A) poart


a
numele de cod sistematic.
Exemplu: Fie C = f00000; 10011; 01001; 00110; 11010; 10101; 01111; 11100g:
a) Ar
atati c
a C este un cod de dimensiune 3 si lungime 5;
b) determinati o matrice de generatori pentru C;
c) codicati mesajul x = 110:
Rezolvare: a) Not
am a = 10011; b = 01001; c = 00110: Observ
am c
a
C = f0; a; b; c; a + b; a + c; b + c; a + b + cg
este multimea tuturor combinatiilor liniare posibile de vectorii a; b; c (deoarece
a + a = 0 etc.), adic
a, subspatiul lui Z52 generat de a; b; c: Astfel, C este un
n
subspatiu al lui Z2 ; ceea ce nseamn
a c
a este un cod.
Dimensiunea lui C se determin
a din num
arul de elemente al codului:
jCj = 8 = 23 ) dim C = 3:
Lungimea lui C

Z52 este, evident, 5.

b) Vectorii a; b; c sunt liniar independenti,


poate scrie ca o combinatie liniar
a de ceilalti.
baz
a. Matricea corespunz
atoare G este
0
1 0
a
1 0
G=@ b A=@ 0 1
c
0 0
c) Codicarea lui x = 110 este
0
1 0 0
x G = (1; 1; 0) @ 0 1 0
0 0 1

1
0
1

deoarece nici unul dintre ei nu se


Ei genereaz
a pe C; deci formeaz
a
0
0
1

1
0
1

1
1
1 A:
0

1
1
1 A = (1; 1; 0; 1; 0)
0

11010;

ceea ce reprezint
a cuvntul cod a + b: Observ
am c
a, deoarece G este de forma
(I3 ; A), primii 3 biti ai mesajului codicat reprezint
a informatia propriu-zis
a.

35

4.3

Matrice de control

O dat
a mesajul codicat si transmis, se pune urm
atoarea problem
a: cel care
receptioneaz
a informatia, s
a poat
a verica (ct mai rapid) dac
a mesajul a fost
corect receptionat.
Prin codicarea xG a unui mesaj, ceea ce se obtine este ntotdeauna un
cuvnt cod v 2 C: Dac
a mesajul receptionat nu apartine codului C; vom sti c
a
a ap
arut o eroare.
Vericarea direct
a (prin compararea cu elementele codului) a faptului c
a
mesajul receptionat v este un element al codului, nu este avantajoas
a - s
a ne
imagin
am, de exemplu, cazul unui cod cu 256 de elemente.
Un subspatiu al lui Zn2 poate ns
a caracterizat si cu ajutorul unei ecuatii
matriciale:
vH t = 0; H 2 M(n k) n (Z2 ):
n acest mod, vericarea faptului a mesajul receptionat v este cuvnt cod se
va reduce la testarea egalit
atii vH t = 0:

Fie, pentru aceasta, un cod C = C(n; k); cu matricea de generatori


0
1
e1
B e2 C
B
C
G = B . C:
@ .. A
ek

Faptul c
a v = v1 v2 :::vn este cuvnt cod este echivalent cu aceea c
a v se poate
scrie ca o combinatie liniar
a de elementele bazei e1 ; e2 ; ek :
Altfel spus, v 2 C dac
a si numai dac
a exist
a scalarii x1 ; :::; xk 2 Z2 astfel
nct v se scrie sub forma v = x1 e1 + :::: + xk ek sau, detaliat,
(v1 ; v2 ; :::vn ) = x1 (e11 ; e12 ; :::e1n )+x2 (e21 ; e22 ; :::e2n )+:::+xk (ek1 ; ek2 ; :::ekn ):
Pe componente, avem
8
x1 e11 + x2 e21 + ::: + xk ek1 = v1
>
>
>
>
x1 e12 + x2 e22 + ::: + xk ek2 = v2
>
>
>
>
..
>
>
.
<
x1 e1k + x2 e2k + ::: + xk ekk = vk
:
>
>
x
e
+
x
e
+
:::
+
x
e
=
v
>
1
1;k+1
2
2;k+1
k
k;k+1
k+1
>
>
>
..
>
>
>
.
>
:
x1 e1n + x2 e2n + ::: + xk ekn = vn

(16)

Vectorul v ind cunosut, se pune problema existentei scalarilor xi cu proprietatea de mai sus, cu alte cuvinte, a compatibilit
atii sistemului (16) (sistem cu
n ecuatii si k necunoscute x1 ; :::; xk ).
36

Din liniar independenta vectorilor e1 ; e2 ; :::; ek ; rezult


a c
a rangul sistemului este ntotdeauna egal cu k: Prin urmare, compatibilitatea sistemului este
echivalent
a cu anularea a n k determinanti caracteristici:
8
>
c1 = 0
>
>
< c2 = 0
;
..
>
.
>
>
:
c2 = 0

unde ecare determinant caracteristic

ci

e11
e12
..
.

e21
e22

:::
:::

e1k
e1;k+i

e2k
e2;k+i

ek1
ek2

v1
v2
=: hi1 v1 + ::::hin vn

:::
ekk
::: ek;k+i

vk
vk+i

este o combinatie liniar


a de v1 ; v2 ; :::vn : Obtinem astfel c
a v este cuvnt cod
dac
a si numai dac
a v1 ; v2 ; :::; vn veric
a sistemul
8
h11 v1 + ::::h1n vn = 0
>
>
>
<
h21 v1 + ::::h2n vn = 0
..
>
.
>
>
:
hn k;1 v1 + ::::hn k;n vn = 0
Cu notatia

B
B
H=B
@

h11
h21
..
.

hn

k;1

h12
h22

hn

k;2

:::
:::

h1n
h2n

::: h/n

k;n

C
C
C;
A

avem c
a v 2 C , Hv = 0:
Pentru a face scrierea mai comod
a, transpunem ultima egalitate si obtinem
Propozitia 18 Secventa v 2 Zn2 este un cuvnt cod daca si numai daca
vH t = 0:

(17)

Matricea H poart
a numele de matrice de control, iar egalitatea vH t = 0;
pe cel de test de paritate.
Dac
a testul de paritate este ndeplinit, vom presupune c
a mesajul a fost
corect receptionat. n situatia n care vH t 6= 0; vom deduce c
a a ap
arut o
eroare, si vom ncerca s
a o corect
am.
Exemplu: Pentru codul
C = f00000; 10011; 01001; 00110; 11010; 10101; 01111; 11100g;
37

cu matricea de generatori
0

1
G=@ 0
0

0
1
0

0
0
1

1
0
1

orice cuvnt cod se va scrie sub forma

1
1
1 A;
0

(v1 ; v2 ; v3 ; v4 ; v5 ) = (x1 ; x2 ; x3 ) G = (x1 ; x2 ; x3 ; x1 + x3 ; x1 + x2 ):


Cu alte cuvinte, v este cuvnt cod dac
a si numai dac
a sistemul de ecuatii
8
x1 = v1
>
>
>
>
x2 = v2
<
x3 = v3
>
>
x
>
1 + x3 = v4
>
:
x1 + x2 = v5

admite solutie x1 ; x2 ; x3 : nlocuind pe x1 ; x2 ; x3 n ultimele dou


a ecuatii, g
asim
conditiile de compatibilitate (testul de paritate):
v1 + v3 = v4
v1 + v2 = v5
Matricea ultimului sistem de ecuatii este
1
1

H=

0
1

1
0

1
0

0
1

iar testul de paritate se poate scrie sub forma matricial


a
v H t = 0:
S
a observ
am c
a, n cazul nostru, codul C este sistematic, deoarece avem
0
1
1 1
G = (I3 ; A); undeA = @ 0 1 A ;
1 0

iar H este de fapt H = (At ; I2 ):

Pentru coduri sistematice, se poate ar


ata cu usurinta c
a
Propozitia 19 Daca matricea de generatori a unui cod este de forma G =
(Ik ; A) ; atunci matricea de control are forma
H = (At ; In

38

k ):

4.4

Tabelul standard
si tabelul eroare-sindrom

n situatia n care mesajul receptionat v 2 Zn2 nu este cuvnt cod, se pune problema stabilirii unui algoritm de decodicare, respectiv, de corectare a erorilor.
n acest scop, vom construi asa-numita tabel
a standard asociat
a codului.
Fie C = C(n; k) un cod, i.e., un subspatiu vectorial de dimensiune k al lui
(Zn2 ; + Z2 ). Consider
am varietatile liniare
" 2 Zn2 :

" + C = f" + v j v 2 Cg;


Are loc

1. Fiecare multime " + C are exact 2k elemente;


2. dac
a"2

+ C; atunci " + C =

+ C;

3. ecare element u 2 Zn2 apartine exact unei multimi de forma " + C;


4. exist
a exact 2n

variet
ati liniare " + C distincte.

Demonstratie:
1. S
tim c
a multimea C are 2k elemente. Dac
a " + u = " + v; u; v 2 C;
atunci, evident, u = v; cu alte cuvinte, pentru u 6= v se vor obtine elemente
distincte ale lui " + C; prin urmare, avem j" + Cj = jCj = 2k :
2. Fie " 2 + C: Demonstr
am dubla incluziune a multimilor " + C si + C :
: Fie u 2 " + C ) 9y 2 C : u = " + y: Deoarece " 2
element v 2 C astfel nct " = + v; de unde g
asim
u=

+ C; exist
a un

+ v + y;

si, cum v; y 2 C; avem c


a v + y 2 C; deci u 2
incluziunea " + C
+ C:

+ C: Astfel, are loc

: Fie u 2 +C; u se scrie sub forma u = +y; cu y 2 C: Din nou, deoarece


" 2 + C; exist
a un element v 2 C astfel nct " = + v ) = " + v;
de unde obtinem
u=

" + v + y; unde v + y 2 C;

adic
a u 2 " + C; ceea ce demonstreaz
a incluziunea " + C

+ C:

3. Fiecare element u 2 Zn2 apartine cel putin unei clase " + C (anume, lui
u + C).
S
a presupunem c
a u apartine la dou
a multimi " + C si
u="+v =

+ y;

+ C; adic
a

v; y 2 C:

Atunci, " = + (y v) 2 + C; si conform celor ar


atate la punctul 2,
multimile " + C si + C coincid. n consecinta, orice u 2 Zn2 apartine
exact unei clase " + C:
39

4. Conform cu 3), multimile "+C sunt disjuncte, iar reuniunea lor este ntreg
Zn2 : Avem, prin urmare:
jZn2 j = j" + Cj jCj;
de unde g
asim c
a j" + Cj = 2n

Propozitia de mai sus o vom utiliza astfel: construim urm


atorul tabel
(tabelul standard atasat lui C):
1. Pe prima linie se scriu cuvintele cod v 2 C, ncepnd cu 0;
2. ncepnd cu linia a doua, trecem pe prima coloan
a un element " 2 Zn2 care
nu apartine liniilor anterioare si care s
a contin
a ct mai putini de 1, apoi
complet
am linia corespunz
atoare cu sumele " + v; v 2 C: Ne oprim atunci
cnd am scris toate elementele lui Zn2 ; adic
a, dup
a scrierea a 2n k linii.
n tabelul standard, ecare linie va reprezenta de fapt o varietate liniar
a "+C:
Fiecare element al lui Zn2 va ap
area exact o dat
a n tabel. Mesajul u = " + v;
unde v 2 C; va decodicat cu ajutorul tabelului standard, n cuvntul cod v
(primul element de pe coloana lui u).
Cerinta ca elementele de pe prima coloan
a (erorile pe care le va vedea
codul cu ajutorul tabelului standard) s
a aib
a cti mai putini de 1 revine la
principiul intuitiv de a decodica (pe ct posibil) un mesaj n cel mai apropiat
cuvnt cod. Tabelul standard asociat unui cod nu este, n general, unic.
Exemplu: Fie, din nou,
C = f00000; 10011; 01001; 00110; 11010; 10101; 01111; 11100g:
Construim tabelul standard

10000
01000
00100

00000
10000
01000
00100

10011
00011
11011
10111

01001
11001
00001
01101

00110
10110
01110
00010

11010
01010
10010
11110

10101
00101
11101
10001

01111
11111
00111
01011

11100
01100
:
10100
11000
(18)

Cu ajutorul acestui tabel, mesajul 00010 va decodicat n 00110; mesajul


11110; n 11010 etc.
Tabelul standard ofer
a o modalitate de corectare a erorilor. Din nou ns
a, n
cazul codurilor cu num
ar mare de elemente, el este incomod de utilizat. Exist
a
o metod
a mai economic
a, anume cu ajutorul tabelului eroare-sindrom.
Fie C = C(n; k) un cod, avnd matricea de control H 2 M(n
40

k) n (Z2 ):

Denitia 7 Prin sindromul unui element u 2 Zn2 ; se ntelege cantitatea


s(u) = u H t :
Propriet
a
ti:
1. v 2 C , s(v) = 0:
2. La toate elementele apartinnd clasei " + C; corespunde acelasi sindrom,
anume, s(").
3. La elemente apartinnd unor variet
ati liniare " + C distincte, corespund
sindroame distincte.
Demonstratie:
1. Conform testului de paritate v 2 C , s(v) = v H t = 0:
2. Dac
a u 2 " + C; u = " + v; v 2 C; atunci s(u) = u H t = (" + v) H t =
" H t + 0 = " H t:
3. Fie u 2 " + C; v 2

+ C: Presupunem c
a s(u) = s(v); adic
a
u H t = v H t:

Sc
aznd cele dou
a egalit
ati, (u
u v apartine lui C: Dac
a

v) H t = 0; si conform cu 1), vectorul

u = " + x; v =

+ y; x; y 2 C;

deducem c
a ("
) + (x y) 2 C; prin urmare, "
2 C: De aici
rezult
a " 2 + C; ceea ce nseamn
a (conform Propozitei anterioare) c
a
" + C = + C; q.e.d.
Propozitia de mai sus ne asigur
a c
a, dac
a cunoastem sindromul unui element
u 2 Zn2 ; acesta identic
a n mod unic linia din tabelul standard pe care se g
aseste
u (i.e., eroarea v
azut
a de tabelul standard).
Construim tabelul
eroare
0
"1
..
.

sindrom
0
s("1 ) :

"2n

s("2n

am s(u); l c
aut
am n tabelul
Dac
a s-a receptionat mesajul u 2 Zn2 ; calcul
eroare-sindrom, identic
am eroarea " care i corespunde si decodic
am n u "
(echivalent, u + ").
41

Exemplu: Pentru codul C = f00000; 10011; 01001; 00110; 11010; 10101; 01111; 11100g;
am determinat mai sus matricea de control
H=

1
1

0
1

1
0

1
0

0
1

si tabelul standard (18).


Tabelul eroare-sindrom este
eroare
00000
10000
01000
00100

sindrom
00
11
01
10

Dac
a, spre exemplu, s-a receptionat mesajul u = 11101; calcul
am s(u) =
u H t = 01; de unde deducem c
a eroarea a fost " = 01000; si corect
am n cuvntul
cod u " = 10101 (vericati rezultatul cu ajutorul tabelului standard!).

4.5

M
asura
si distan
ta Hamming

Pentru codul C(5; 3) din exemplul de mai sus, conform tabelului standard, dac
a
se receptioneaz
a mesajul 00010; vom sti cu siguranta c
a a ap
arut o eroare,
deoarece el nu este cuvnt cod.
Conform tabelului standard construit, deducem c
a eroarea a fost 00100 si
mesajul va decodicat n 00110: ns
a nimeni nu ne asigur
a c
a mesajul transmis
nu a fost 00000; iar eroarea nu a ap
arut de fapt pe bitul al 4-lea. Mesajul 00010
este la fel de aproape att de cuvntul cod 00110; ct si de 00000; nct o
decodicare n cuvntul cod cel mai apropiat nu este posibil
a f
ar
a ambiguit
ati,
nici m
acar n cazul unei erori survenite pe un singur bit.
Este preferabil
a construirea unor coduri care s
a ne asigure c
a n cazul oric
arei
erori survenite pe un bit (respectiv pe doi biti, etc.), putem sti cu siguranta care
a fost eroarea.
Fie C = C(n; k) un cod.
Denitia 8
1. Numim ponderea unui cuvnt cod v 2 C; numarul de biti
egali cu 1 ai cuvntului respectiv. Notam ponderea lui v cu w(v):
2. Numim distan
ta Hamming dintre doua cuvinte-cod u si v, este ponderea
diferentei lor:
d(u; v) = w(u v):
3. Numim distan
t
a Hamming minim
a (m
asur
a Hamming) a codului, minimul distantei dintre doua cuvinte cod distincte:
d(C) =

min

u;v2C;u6=v

42

d(u; v):

Distanta Hamming ntre dou


a cuvinte cod reprezint
a, de fapt, num
arul de
biti prin care difer
a cele dou
a cuvinte. Ea satisface axiomele unei distante,
adic
a:
1. d(u; v)

0; 8u; v 2 C si d(u; v) = 0 ) u = v;

2. d(u; v) = d(v; u); 8u; v 2 C;


3. d(u; y)

d(u; v) + d(v; y); 8u; y; v 2 C:

Deoarece diferenta a dou


a cuvinte cod este tot un cuvnt cod, rezult
a c
a
d(u; v) este ntotdeauna egal
a cu ponderea unui anumit cuvnt cod. Reciproc,
ponderea lui v 2 C se poate scrie ca distanta dintre v si 0:
w(v) = d(v; 0):
De aici deducem c
a m
asura Hamming a unui cod se poate scrie si sub forma
d(C) =

min w(v);

v2C; v6=0

asadar, ea se poate calcula ca ind num


arul minim de biti prin care un cuvnt
cod diferit de 0 difer
a de 0.
Acceptnd principiul intuitiv c
a decodicarea unui mesaj ar trebui s
a se fac
a
n cuvntul cod cel mai apropiat, are loc
Teorema 20 Daca distanta Hamming minima a unui cod C este d(C) = d;
atunci:
1. codul C detecteaza erorile survenite pe d

1 biti;

2. codul C corecteaza (fara ambiguitati) erorile aparute pe [

1
2

] biti.

Ideea demonstratiei este urm


atoarea:
1. Dac
a distanta Hamming minim
a a codului este d; atunci orice dou
a cuvinte
cod difer
a prin cel putin d biti. n situatia n care se receptioneaz
a un
mesaj care difer
a de cuvntul cod transmis, ns
a prin cel mult d 1 biti,
el nu poate s
a coincid
a cu alt cuvnt cod, si vom sti cu siguranta c
a a
intervenit o eroare. Dac
a eroarea ar pe d = d(C) biti, s-ar putea ca
mesajul receptionat s
a coincid
a cu un alt cuvnt cod, caz n care eroarea
nu va mai detectat
a.
d 1
2. Dac
a eroarea a survenit pe cel mult [
] biti, atunci cel mai apropiat
2
cuvnt cod este unic determinat, si vom corecta n acesta. La erori mai
d 1
mari de [
] biti, distanta dintre mesajul receptionat si un alt cuvnt
2
cod risc
a s
a e mai mic
a dect distanta pn
a la cuvntul cod transmis, si
astfel, am putea decodica gresit.
43

Exemple:
1. Codul C(5; 3) = f00000; 10011; 01001; 00110; 11010; 10101; 01111; 11100g
are m
asura Hamming d(C) = 2; prin urmare, codul detecteaz
a erorile
d 1
simple (i.e., pe un bit), ns
a corecteaz
a erori pe [
] = 0 pozitii.
2
2. Codul cu repetitie C(6; 2) = f000000; 101010; 010101; 111111g are m
asura
Hamming m(C) = 3; ceea ce nseamn
a c
a el detecteaz
a erorile duble si
d 1
corecteaz
a erorile simple ([
] = 1).
2
Observatia 21 Prin permutarea a doua coloane ale matricii de generatori (ce
echivaleaza cu permutarea bitilor corespunzatori n toate cuvintele cod) se obtine
un cod cu aceea
si putere de detectare si corectare cu cel initial, numit cod echivalent cu acesta.
n acest mod, dac
a un anumit cod nu este sistematic, putem permuta coloane
ale lui G; u scopul de a obtine un cod echivalent cu codul dat. ns
a sistematic.

4.6

Coduri Hamming binare

Denitia 9 Un cod Hamming binar este un cod liniar binar n care coloanele
matricii de control H sunt date de reprezentarea binara a numerelor 1; 2; :::; 2r
1:
Un cod Hamming cu aceast
a proprietate va avea lungimea n = 2r
r
dimensiunea k = 2
1 r:
De exemplu, pentru r = 3; avem
0
0 0 0
H=@ 0 1 1
1 0 1

1
0
0

1
0
1

1
1
0

1
1
1 A:
1

Permut
am coloanele lui H; n asa fel nct matricea
control (At ; In k ) a unui cod sistematic:
0
1 1 0 1 1 0
H =@ 1 1 1 0 0 1
1 0 1 1 0 0
(coloanele 1 $ 7; 2 $ 6; 4 $
toare:
0
1
B 0
G =B
@ 0
0

1 si

obtinut
a s
a e matricea de
1
0
0 A
1

5). G
asim matricea de generatori corespunz
a1
0 0 0 1 1 1
1 0 0 1 1 0 C
C:
0 1 0 0 1 1 A
0 0 1 1 0 1
44

Permut
am acum napoi coloanele 1 $ 7; 2 $ 6; 4 $ 5 si avem
0
1
1 1 0 1 0 0 1
B 0 1 0 1 0 1 0 C
C
G=B
@ 1 1 1 0 0 0 0 A:
1 0 0 1 1 0 0

Astfel, obtinem codul Hamming C(7; 4) generat de vectorii

e1 = 1101001; e2 = 0101010; e3 = 1110000; e4 = 1001100:


Are loc
Teorema 22 Orice cod Hamming binar are distanta minima 3.
Astfel, un cod Hamming va detecta erorile duble si le va corecta pe cele
simple.
Pentru codurile Hamming, tabelul eroare-sindrom va contine 2n k = 2r
erori, ceea ce reprezint
a eroarea 0 si erorile simple.
Se poate ar
ata c
a, pentru eroare simpl
a survenit
a pe pozitia i; sindromul
este
(0; 0; 0; :::1; :::0) H t ;
care reprezint
a tocmai num
arul i scris n baza 2.
Exemplul 23 Decodicati cu ajutorul codului Hamming C(7; 4); mesajul v =
1111001:
Avem: v H t = 011; care este reprezentarea binara a lui i = 3: Deducem ca
eroarea a fost pe pozitia a 3-a, si decodicam n 1101001 = e1 ; care reprezinta
un cuvnt-cod.

Exercitiul 23 Fie C = f0000; 1001; 0101; 0011; 1100; 1010; 0110; 1111g: a)
Aratati ca C este un cod, determinati lungimea si dimensiunea acestuia si gasiti
o matrice de generatori; este C un cod sistematic? b) Codicati: x = 001; y =
110: c) Determinati matricea de control si testul de paritate.
Exercitiul 24 Pentru codul C din exercitiul precedent, se cer urmatoarele: a)
construiti un tabel standard si tabelul eroare-sindrom corespunzator; b) Decodicati cu ajutorul tabelului eroare-sindrom: 1101; 0111: c) Determinati distanta
Hamming minima a codului. Ce tip de erori detecteaza, respectiv, corecteaza C?

45

Exercitiul 25 Consideram codul C(5; 3) dat de matricea de generatori:


0
1
0 0 1 0 0
G = @ 1 0 1 1 0 A:
1 1 1 1 1

Determinati: a) elementele lui C: b) codicarea mesajului x = 110: c) testul de


paritate. d) Un cod sistematic echivalent cu C:
Exercitiul 26 Pentru codul C din exercitiul precedent, realizati tabelul standard
si tabelul eroare-sindrom. Decodicati secventa 11110:

Exercitiul 27 Fie C = f0000; 1010; 0110; 0001; 1100; 1011; 0111; 1101g: a)
Aratati ca C este un cod C(4; 3); b) Gasiti un cod sistematic echivalent cu C si
scrieti matricea de control corespunzatoare acestuia.
Exercitiul 28 Codicati, cu ajutorul codului Hamming binar C(7; 4), secventa
de cifre zecimale 1234:
Exercitiul 29 Determinati matricea de control si o matrice de generatori pentru codul Hamming binar de lungime n = 24 1:

46

Algebre Boole

5.1

Deni
tie
si propriet
a
ti

Denitia 10 O multime B mpreuna cu doua operatii interne binare [; \ :


B B ! B; si o operatie interna unar
a : B ! B; poarta numele de algebr
a
Boole, daca, pentru orice a; b; c 2 B au loc:
1. a [ b = b [ a; a \ b = b \ a (comutativitate);
2. (a [ b) [ c = a [ (b [ c); (a \ b) \ c = a \ (b \ c) (asociativitate);
3. a [ (b \ c) = (a [ b) \ (a [ c); a \ (b [ c) = (a \ b) [ (a \ c) (distributivitate);
4. Exista elementele 0; 1 2 B astfel nct: a [ 0 = a; a \ 1 = a; pentru orice
a 2 A (0; 1 elemente neutre pentru [; respectiv, \);
5. Pentru orice a 2 B exista a 2 B astfel nct:
a [ a = 1;

a\a=0

(a se nume
ste complementarul elementului a).

Observatia 24

1. Complementarul unui element a 2 B este unic.

2. Elementele 0 si 1 sunt unice.


Observ
am c
a axiomele sunt date pe perechi; aceste perechi sunt formate din
axiome ce se obtin una din cealalt
a schimbnd pe [ cu \ si, respectiv, pe 1 cu
0:
Armatia care se obtine dintr-o alt
a propozitie prin schimbarea acestor
semne ntre ele, se numeste duala armatiei initiale, iar transformarea respectiv
a se numeste dualitate.
Orice propozitie (adev
arat
a sau fals
a), dedus
a dintr-o axiom
a n care intr
a
[ si \; are aceeasi valoare de adev
ar dac
a schimb
am operatiile [ si \ ntre ele
si, corespunz
ator, pe 1 si 0 ntre ei (principiul dualit
a
tii).
Propozitia 25 ntr-o algebra Boole (B; [; \; ) au loc urmatoarele proprietati:
1. 8a 2 B : a [ a = a; a \ a = a (legea de idempotenta);
2. Pentru orice a 2 B; avem: a [ 1 = 1; a \ 0 = 0;
3. 8a; b 2 B : a [ (a \ b) = a; a \ (a [ b) = a (legea de absorbtie);
4. 8a 2 B : a = a;
47

5. 0 = 1; 1 = 0;
6. 8a; b 2 B : a [ b = a \ b; a \ b = a [ b (formulele lui de Morgan).

Exercitiul 30 Demonstrati proprietatile 1)-6) enuntate mai sus.


ntr-o algebr
a Boole se poate deni rela
tia de incluziune
ordine partial
a ntre elementele multimii B):

(o relatie de

Denitia 11 Fie a; b 2 B: Spunem ca a este inclus n b (sau b include pe a)


daca a \ b = 0:
Relatia de incluziune are urm
atoarele propriet
ati:
- reexiva: 8a 2 B : a a;
- antisimetrica: a b si b a ) a = b;
- tranzitiva : a b si b c ) a c;
altfel spus, ea reprezint
a o rela
tie de ordine pe multimea B:
Spunem c
a relatia de ordine
este partiala, n sensul c
a nu pentru orice
dou
a elemente a; b 2 B putem scrie a b sau b a; i.e., exist
a elemente care nu
se pot compara (o relatie de ordine pe B se numeste totala, dac
a pentru orice
a; b 2 B; are loc a b sau b a).
Aceast
a relatie de ordine are urm
atoarele propriet
ati:
1. orice dou
a elemente a; b 2 B admit un cel mai mic majorant (supremum), adic
a, pentru orice a; b 2 B; exist
a elementul M := sup(a; b) 2 B
astfel nct:
a

M; b

M (M este majorant att pentru a; ct si pentru b);

8M 2 B : a
M 0; b
dintre majoranti).

M0 ) M

M 0 (M este cel mai mic

2. orice dou
a elemente a; b 2 B admit un cel mai mare minorant (inmum), adic
a, pentru orice a; b 2 B; exist
a elementul m := inf(a; b) 2 B
astfel nct:
m

a; m
0

b (m este minorant att pentru a; ct si pentru b);

8m 2 B : m0
a; m0
dintre minoranti).

b ) m0

48

m (M este cel mai mare

Observatia 26 O multime ordonata n care orice doua elemente admit supremum si inmum, se nume
ste latice.
Orice algebr
a Boole (B; [; \; ) este o latice, n care:
sup(a; b) = a [ b;

inf(a; b) = a \ b

Exercitiul 31 Demonstrati armatia de mai sus.


Mai mult, ntr-o algebr
a boolean
a (B; [; \; ); au loc relatiile:
8a 2 B : 0

a (0 este un prim element pentru B);

8a 2 B : a

1 (1 este un ultim element pentru B).

Exercitiul 32 Vericati cele doua relatii de incluziune de mai sus.

5.2

Inel boolean

Un inel este o multime nevid


a I nzestrat
a cu dou
a legi de compozitie intern
a
: I I ! I si : I I ! I; cu urm
atoarele propriet
ati:
I. (I; ) este grup abelian;
II. (I; ) este semigrup ( este asociativ
a);
III. este distributiv
a fata de : a (b c) = a b a c; (b c) a =
b a c a; 8a; b; c 2 I:
Dac
a admite element neutru 1 2 I; spunem c
a I este un inel unitar, iar
dac
a este comutativ
a, spunem c
a inelul I este comutativ.
ntr-un inel unitar, not
am cu 0 elementul neutru la adunare, si cu 1 elementul
neutru la nmultire.
Observatia 27 n orice inel are loc proprietatea:
a

0=0

a = 0;

8a 2 I:

Denitia 12 Un inel boolean este un inel comutativ si unitar (I; ; ), cu


proprietatea
a a = a; 8a 2 I:

49

Exercitiul 33 Aratati ca inelul (Z2 ; ; ) al claselor de resturi modulo 2 (unde


si
reprezinta adunarea si, respectiv, nmultirea modulo 2, este un inel
boolean.
Exercitiul 34 Aratati ca nu exista inele booleene cu 3 elemente (Indicatie:
Completati tabla de operatie a grupului aditiv, tinnd cont ca, pe tabla de operatie a oricarui grup, ecare element apare o singura data pe ecare linie, respectiv, pe ecare coloana; folositi apoi distributivitatea nmultirii fata de adunare).

Propozitia 28 n orice inel boolean au loc urmatoarele proprietati:


1. 8a 2 I : a

a = 0;

2. 8a; b 2 I : a

b = 0 ) a = b:

Leg
atura dintre algebrele Boole si inelele booleene este dat
a de:
Teorema 29
1. Orice algebra Boole (B; [; \; ) este inel boolean mpreuna
cu operatiile
a
a

b
b

: = (a \ b) [ (b \ a);
: = a \ b:

(19)
(20)

2. Reciproc, orice inel boolean (I; ; ) este o algebra booleana mpreuna cu


operatiile:
a [ b := a
a \ b := a
a = 1 a:

5.3

b a
b;

b;

Exemple reprezentative

A. Mul
timea p
ar
tilor unei mul
timi P(X); nzestrat
a cu operatiile: de reuniune [; de intersectie \ si de complementare obisnuite ale multimilor:
A [ B = fx j x 2 A sau x 2 Bg;
A \ B = fx j x 2 A si x 2 Bg;
A = fx j x 62 Ag:
Propozitia 30 (P(X); [; \; ) este o algebra Boole n care
0 = ?; 1 = X:

50

Operatiile

si

care denesc inelul boolean asociat sunt date de


A

B=A B

unde A B semnic
a diferenta simetrica (format
a cu acele elemente care apartin
e numai lui A; e numai lui B):
A B = (A \ B) [ (B \ A) = (A [ B) n (A \ B);
si
A

B = A \ B:

Relatia de incluziune corespunz


atoare structurii de algebr
a Boole coincide,
n acest caz, cu incluziunea obisnuit
a a multimilor:
A

B , (8x 2 A ) x 2 B):

B. Algebra boolean
a binar
a B(2)
Multimea B((2) = f0; 1g; cu operatiile denite astfel:
[
0
1

0
0
1

1
1
1

\
0
1

0
0
0

1
0 ;
1

x
0
1

x
1
0

formeaz
a o algebr
a boolean
a, n care elementul neutru fata de \ este 1, iar
elementul neutru fata de [ este 0.
Vericarea axiomelor unei algebre Boole se face prin epuizarea valorilor pe
care le pot lua variabilele. De exemplu,
a
0
0
1
1

b
0
1
0
1

a[b
0
1
1
1

b[a
0
1
1
1

a\b
0
0
0
1

b\a
0
0 ;
0
1

de unde rezult
a c
a a [ b = b [ a; a \ b = b \ a:
Relatia de ordine ntre cele dou
a elemente ale lui B(2) este: 0 1:
Structura de inel boolean este dat
a de operatiile (19), (20), care conduc la
tablele de operatie:
0 1
0 1
0
0 1
0
0 0 :
1
1 0
1
0 1
Observ
am c
a tablele celor dou
a operatii coincid cu cele ale adun
arii si, respectiv,
nmultirii modulo 2, ceea ce nseamn
a c
a inelul boolean (B(2); ; ) este izomorf
cu inelul (Z2 ; ; ) (i.e., ele reprezint
a aceeasi structur
a algebric
a):
(B(2); ; ) ' (Z2 ; ; ):
51

C. Algebra boolean
a cu 4 elemente B(4):
Multimea B = f0; a; b; 1g; mpreun
a cu operatiile:
[
0
a
b
1

0
0
a
b
1

a
a
a
1
1

b
b
1
b
1

1
1
1 ;
1
1

\
0
a
b
1

0
0
0
0
0

a
0
a
0
a

b
0
0
b
b

b; 0
1; 0

1
1:

1
0
a ;
b
1

x
0
a
b
1

x
1
b
a
0

este o algebr
a boolean
a, n care
0
a

a; 0
1; b

Nici una din relatiile a b si b a nu are loc, deoarece a \ b = 0 si a [ b = 1


(nu exist
a relatie de ordine nre a si b).
Exercitiul 35 Determinati tablele de operatie ale operatiilor
structura de inel boolean a lui B(4):

care denesc

D. Algebra propozi
tiilor, de care ne vom ocupa n cele ce urmeaz
a.

5.4

Algebra propozi
tiilor

Prin propozitie, vom ntelege un enunt care este e (doar) adev


arat, e (doar)
fals. Mai precis,
Denitia 13 Numim propozi
tie, o armatie p care satisface urmatoarele
conditii:
1. p este sau adevarata, sau falsa (legea tertului exclus);
2. p nu poate simultan si adevarata si falsa (legea noncontradictiei).
De exemplu, armatia 1 + 2 = 3 este o propozitie (adev
arat
a), armatia
armatia 1 + 2 = 5 este si ea o propozitie (fals
a), ns
a armatia x + 2 = 3
nu este o propozitie, deoarece nu putem sti cu precizie dac
a ea este adev
arat
a
sau fals
a; valoarea ei de adev
ar depinde de valoarea lui x:
O armatie a c
arei valoare de adev
ar depinde de una sau mai multe variabile
se numeste predicat.
Un predicat se trasform
a ntr-o propozitie cu ajutorul cuanticatorilor: 9 ; 8:

52

De exemplu, armatiile
8x : x + 2 = 3;
9x : x + 2 = 3;
sunt propozitii (prima - fals
a, a doua - adev
arat
a).
Deoarece calculatoarele lucreaz
a cu valori numerice 0 si 1, pentru valoarea de
adev
ar a propozitiilor este cel mai avantajos s
a lucr
am cu aceste valori, pentru
valorile de adev
ar ale propozitiilor.
Astfel, vom stabili corespondenta (bijectiv
a):
adevarat $ 1
f als $ 0:
Pe multimea propozitiilor, se denesc urm
atoarele operatii interne:
1. Conjunc
tia (
si), notat
a cu ^ : propozitia p ^ q este adev
arat
a dac
a si
numai dac
a p si q sunt simultan adev
arate.
2. Disjunc
tia (sau), notat
a cu _ : propozitia p _ q este adev
arat
a dac
a
si numai dac
a cel putin una din cele dou
a propozitii p, q este adev
arat
a.
3. Nega
tia (non), notat
a cu e : propozitia ep este adev
arat
a dac
a si
numai dac
a p este fals
a.
4. Implica
tia (dac
a...atunci), notat
a cu !: propozitia p ! q este fals
a
dac
a si numai dac
a p este adev
arat
a, iar q este fals
a. Propozitia p se
numeste ipoteza, iar propozitia q; concluzie.
5. Echivalen
ta (dac
a
si numai dac
a), notat
a cu $: propozitia p $ q
este adev
arat
a atunci si numai atunci cnd p si q au aceeasi valoare de
adev
ar.
6. Nici ( # ); propozitia p # q este adev
arat
a atunci si numai atunci cnd p
si q sunt ambele false.
7. Incompatibilitatea: ( " ): propozitia p " q este fals
a atunci si numai
atunci cnd p si q sunt ambele adev
arate.
Operatiile denite mai sus se pot descrie si cu ajutorul tabelului urm
ator:
p
0
0
1
1

q
0
1
0
1

p_q
0
1
1
1

p^q
0
0
0
1

ep
1
1
0
0

p!q
1
1
0
1
53

p$q
1
0
0
1

p#q
1
0
0
0

p"q
1
1 :
1
0

Numim formul
a, orice propozitie obtinut
a prin aplicarea unui num
ar nit
de ori a operatiilor logice 1)-7). Pentru echivalenta formulelor, not
am
F1

F2

(F1 ; F2 sunt echivalente dac


a si numai dac
a F1 ; F2 au aceeasi valoare de adev
ar).
Au loc urm
atoarele propriet
ati:
1. p _ q

q _ p; p ^ q

2. (p _ q) _ r

q ^ p (comutativitate);

p _ (q _ r); (p ^ q) ^ r

p ^ (q ^ r) (asociativitate);

3. p _ (q ^ r) ~ (p _ q) ^ (p _ r); p ^ (q _ r) = (p ^ q) _ (p ^ r) (distributivitate)
4. p _ 0 ~ p; p ^ 1 ~ p (unde 0 este propozitia cu unica valoare de adev
ar 0,
numit
a contradic
tie, iar 1 - propozitia ntotdeauna adev
arat
a, numit
a
tautologie);
5. p _ p ~ 1; p ^ p ~ 0;
6. eep

p;

7. p $ q

(p ! q) ^ (q ! p);

8. p ! q

(ep _ q);

9. e(p _ q)

ep^eq; e(p ^ q)

ep_eq (legile lui de Morgan).

Observatia 31 Din proprietatile 1)-5) deducem ca algebra propozitiilor, mpreuna cu operatiile logice _; ^; e; este o algebra Boole.
Exercitiul 36 Vericati, cu ajutorul tabelelor de adevar, armatiile 1)-3) de
mai sus.
Exercitiul 37 Vericati, cu ajutorul tabelelor de adevar, armatiile 4)-6) de
mai sus.
Exercitiul 38 Vericati, cu ajutorul tabelelor de adevar, armatiile 7)-9) de
mai sus.
Inelul boolean corespunz
ator este denit de operatiile
p
p

q
q

:
:

= (p^eq) _ (q^ep)
= p ^ q;

( sau exclusiv )

iar relatia de "incluziune" este, de aceast


a dat
a, implicatia:
p

propozitia p ! q este adevarata

Exercitiul 39 Aratati, cu ajutorul tabelelor de adevar, ca:


a

e(p $ q):

54

Func
tii booleene

6.1

Deni
tie, forme canonice

Fie (B(2); [; \; ); algebra boolean


a binar
a - care joac
a rolul de algebra valorilor
de adevar ale propozitiilor.
Vom folosi n cele ce urmeaz
a urm
atoarea conventie de notatie:
+

= [ = _ (suma logic
a)
= \ = ^ (produsul logic).

Denitia 14 Numim func


tie boolean
a de n variabile, o aplicatie: f :
(B(2))n ! B(2):
Deoarece num
arul de elemente al lui (B(2))n este 2n ; iar num
arul de elemente
n
al codomeniului B(2) este 2, se pot construi n total 22 functii booleene de n
variabile.
(n general, dac
a A si B sunt multimi, jAj = a; jBj = b; atunci se pot
construi ba functii f : A ! B).
1
De exemplu, pentru n = 1 vom avea 22 functii booleene de o variabil
a,
2
pentru n = 2; g
asim 22 = 16 functii booleene de dou
a variabile etc.
Exemple:
1. Pentru n = 1; se pot construi urm
atoarele functii booleene f : B(2) !
B(2) :
(a) functia identic
a f1 (x) = x;
(b) functia negatie: f2 (x) = x;
(c) functia contradictie: f3 (x) = x \ x = 0;

(d) functia tautologie: f4 (x) = x [ x = 1:

Valorile acestor functii sunt date de tabelul


x
0
1

f1 (x)
0
1

f2 (x)
1
0

f3 (x)
0
0

f4 (x)
1 :
1

2. Pentru n = 2; putem considera, spre exemplu: f (x) = x + xy; g(x) =


xy + xy etc.
n multe situatii, se cere ca o functie boolean
a dat
a prin tabelul ei de valori
s
a e descris
a cu ajutorul unei formule propozitionale. Dac
a n unele cazuri
55

aceasta este usor de intuit, n general, este totusi necesar un algoritm care s
a
determine o asemenea scriere. Vom prezenta aceast
a metod
a n cele ce urmeaz
a.
Convenim s
a not
am, pentru x 2 B(2) :
x1 = x;

x0 = x:

Astfel, vom avea:


11 = 1; 00 = 1; 10 = 0; 01 = 1;

(21)

adic
a,
= 1;

= 0:

Denitia 15 Fie f : (B(2))n ! B(2); f = f (x1 ; x2 ; :::; xn ) o functie booleana


de n variabile.
1. Se nume
ste minterm, un produs de n variabile, n care ecare din argumentele x1 ; :::; xn ale lui f apare exact o data, complementat sau necomplementat:
m = x1 1 x2 2 ::: xnn ;
unde

1 ; :::;

2 B(2):

2. Se nume
ste maxterm, o suma de n variabile, n care ecare din argumentele x1 ; :::; xn ale lui f apare exact o data, complementat sau necomplementat:
M = x1 1 + x2 2 + ::: + xnn ;
unde

1 ; :::;

2 B(2):

1. Un minterm are valoarea 1 pentru o valoare a n-upletului ordonat


(x1 ; :::; xn ) si numai una.
2. Un maxterm are valoarea 0 pentru o valoare a n-upletului ordonat
(x1 ; :::; xn ) si numai una.
Justicarea propozitiei de mai sus este urm
atoarea: pentru ca mintermul
m = x1 1 x2 2 ::: xnn s
a aib
a valoarea 1, este necesar si sucient ca toti factorii
s
ai s
a ia valoarea 1:
m = 1 , x1 1 = 1; x2 2 = 1; :::; xnn = 1;
ceea ce, tinnd cont de (21), este echivalent cu:
x1 =

1;

x2 =
56

2 ; :::; xn

n:

Analog,
M = 0 , x1 1 = 0; x2 2 = 0; :::; xnn = 0;
adic
a,
M = 0 , x1 =

1;

x2 =

2 ; :::; xn

n:

Propozitia 32 Prin negarea unui minterm obtinem un maxterm si invers.


ntr-adev
ar, pentru m = x1 1 x2 2 ::: xnn ; tinnd cont de relatiile lui de
Morgan, negatia sa este maxtermul m = x1 1 + x2 2 + ::: + xnn : Invers, pentru
M = x1 1 + x2 2 + ::: + xnn ; avem M = x1 1 x2 2 ::: xnn ; adic
a negatia unui
minterm este un maxterm.
Exemplu:
1) Pentru n = 3; tabelul
x
0
0
0
0
1
1
1
1

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

f
0
0
0
1
0
0
0
0

reprezint
a un minterm, anume pe m = xyz, (pentru determinarea mintermului,
tinem cont c
a un produs e 1 , toti factorii lui sunt 1. Pentru a obtine m = 1
pentru combinatia variabilelor (0; 1; 1); x = 0 trebuie negat).
Tabelul
x y z f
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1
reprezint
a un maxterm, anume pe M = x + y + z (suma logic
a e 0 , toti
termenii ei sunt 0).
Observ
am c
a, se pot construi 2n mintermi, respectiv, 2n maxtermi cu n
variabile.
Numerotarea mintermilor/maxtermilor:

57

Fie m : (B(2))n ! B(2) mintermul care ia valoarea 1 pentru x1 = 1 ; x2 =


tinem num
arul binar cu cifrele 1 ; 2 ; :::; n (n aceast
a or2 ; :::; xn = n : Re
dine) si-l transform
am n baza 10:
k(10) :=

1 2 ::: n(2) ;

iar mintermul respectv, l vom nota cu mk :


La fel, dac
a maxtermul M : (B(2))n ! B(2) ia valoarea 0 pentru x1 =
1 ; x2 = 2 ; :::; xn = n ; scriem
l(10) :=

1 2 ::: n(2)

) M =: Ml :

Aceast
a numerotare este de fapt numerotarea natural
a a liniilor tabelului
valorilor functiei (dac
a stabilim drept linia cu num
arul 0, linia corespunz
atoare
valorilor x1 = 0; x2 = 0; :::; xn = 0).
n exemplul de mai sus, m = xyz este egal cu 1 pentru combinatia 0; 1; 1 a
variabilelor. Avem 011(2) = 3(10) ; adic
a, m = m3 :
Pentru M = x + y + z ) combinatia variabilelor pentru care M = 0 este
1; 0; 1: Avem 101(2) = 5(10) ; prin urmare, M = M5 :
Exercitiul 40 A) Pentru n = 5; determinati mintermii care iau valoarea 1
pentru:
a) x1 = 0; x2 = 1; x3 = 1; x4 = 0; x5 = 1;
b) x1 = 1; x2 = 0; x3 = 1; x4 = 0; x5 = 0:
B) Determinati maxtermii care iau valoarea 0 pentru valorile variabilelor
indicate la punctul A.

Teorema 33 (Formulele de interpolare Lagrange):


1. Orice functie booleana f : (B(2))n ! B(2) se poate scrie ca o suma de
mintermi:
X
f (x1 ; x2 ; :::; xn ) =
x1 1 x2 2 :::xnn .
(22)
(

1;

2 ;:::;

n )2S

(B(2))n

2. Orice functie booleana f : (B(2))n ! B(2) se poate scrie ca un produs de


maxtermi:
Y
f (x1 ; x2 ; :::; xn ) =
x1 1 + x2 2 + ::: + xnn . (23)
(

1 ; 2 ;:::; n )2S

(B(2))n

unde prin puterile x ; x ; se ntelege


x0 = x;
58

x1 = x:

Formula (22) (sum


a de mintermi) poart
a numele de forma normal
a disjunctiv
a a functiei booleene, iar (23) (produs de maxtermi), de forma normal
a conjunctiv
a a acesteia.
Determinarea formei normale disjunctive (sum
a de mintermi) se va
face astfel: c
aut
am valorile 1 din tabel si sum
am mintermii corespunz
atori.
Pentru scrierea formei normale conjunctive (produs de maxtermi),
c
aut
am valorile 0 din tabel si nmultim maxtermii corespunz
atori.
Justicare: o sum
a de mintermi este egal
a cu 1 dac
a si numai dac
a cel putin
unul din mintermi e 1. Astfel, f = mi1 + ::: + mik = 1 , mi1 = 1 sau mi2 = 1:::
sau mik = 1; iar mintermii pot identicati dup
a combinatiile variabilelor
pentru care ei iau valoarea 1.
Analog, un produs de maxtermi este egal cu 0 dac
a si numai dac
a cel putin
unul din maxtermi e 0. Astfel, f = Mi1 ::: Mik = 0 , Mi1 = 0 sau Mi2 = 0:::
sau Mik = 0; iar maxtermii pot identicati dup
a combinatiile variabilelor
pentru care ei iau valoarea 0.
Pentru f = mi1 + ::: + mik ; convenim s
a not
am
f = m(i1 ; i2 ; :::; ik );
iar pentru f = Mi1 ::: Mik ; mai not
am
f = M (i1 ; i2 ; :::; ik ):
Exercitiul 41 Determinati formele normale (disjunctiva si conjunctiva) pentru
urmatoarele functii booleene de trei variabile:
x
0
0
0
0
1
1
1
1

6.2

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

f
1
0
1
1
0
1
0
0

x
0
0
0
0
1
1
1
1

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

g
0
0
1
1 :
0
1
1
1

Simplicarea func
tiilor booleene

Formele normale (disjunctiv


a si conjunctiv
a) ale unei functii booleene dau o
metod
a de descriere a acesteia prin formule, ns
a de cele mai multe ori, aceste
formule pot aduse la forme cu mult mai simple.
Prin simplicare a unei functii booleene, vom ntelege reducerea la minimum
a num
arului variabilelor si simbolurilor de functii care apar n expresia unei
functii booleene date.
Exist
a dou
a categorii de metode de simplicare:
59

1. metode analitice (bazate pe calcule efectuate n expresia functiei booleene


date);
2. metode grace (bazate pe asocierea unor tabele sau matrice).
Prezent
am n cele ce urmeaz
a metoda analitic
a Quine McCluskey, ce are
la baz
a notiunea de implicant prim, al
aturi de cele de minterm si maxterm.
Ea se bazeaz
a pe urm
atoarele observatii:
1. Doi mintermi vecini, i.e., doi mintermi care difer
a doar prin puterea unei
singure variabile (respectiv, combinatiile ( 1 ; 2 ; :::; n ) ale variabilelor
pentru care ei iau valoarea 1 difer
a doar printr-o pozitie), prin nsumare
conduc la un termen mai simplu:
x1 1 x2 2 :::xnn + x1 1 x2 2 :::xnn = x2 2 :::xnn :
Exemple: x + x = 1;
xyt(z + z) = xyt etc.

xyz + xyz = (x + x)yz = yz, xyzt + xyzt =

2. Dac
a n forma normal
a disjunctiv
a repet
am unul sau mai multi mintermi,
valoarea ei nu se schimb
a, ns
a cresc sansele de a putea grupa perechi de
vecini.
Exemplu: f = xyz + xyz + xyz = (xyz + xyz) + (xyz + xyz) = yz + xy
(am folosit faptul c
a xyz + xyz = xyz).
3. Orice form
a simplicat
a f = t1 + ::: + tp a lui f trebuie s
a acopere toti
mintermii din forma normal
a disjunctiv
a a lui f :
t1 + ::: + tp = mi1 + mi2 + ::: + mik
(dac
a am l
asa, de exemplu, la o parte pe mik ; am pierde din tabelul
de valori o valoare 1, ceea ce nseamn
a c
a functia obtinut
a nu ar mai
reprezenta pe f ).
Fie f : (B(2)n ) ! B(2) o functie boolean
a.
Denitia 16

1. Un produs
I := xi11 xi22 :::xikk ;

unde k
n; se nume
ste implicant al lui f; daca I ! f (altfel spus,
valoarea de adevar a lui I este mai mica sau egala cu cea a lui f ).
2. Un implicant I := xi11 xi22 :::xikk al functiei f se nume
ste implicant prim
al lui f; daca este minimal, n sensul ca I nceteaza sa mai e implicant
al lui f odata ce nlaturam din el cel putin o variabila.
60

Observa
tii:
1. Implicantii primi au un num
ar minim de variabile.
2. I este implicant prim al lui f , n nicio scriere a lui f; I nu are vecini.

Exercitiul 42 Demonstrati armatia 2) de mai sus.


Metoda Quine-McCluskey const
a n dou
a etape:
1. Determinarea tuturor implicantilor primi ai lui f (prin eventuala repetare
a mintermilor din expresia lui f si nsumarea tuturor perechilor de vecini
posibile - repet
am procedeul pn
a nu mai putem grupa vecini).
2. Alc
atuirea unui tabel al implicantilor primi si identicarea acelor combinatii de implicanti primi a c
aror sum
a acoper
a mintermii din expresia
lui f:
Etapa 1 - determinarea implican
tilor primi:
Construim un tabel n care vom trece toti mintermii (echivalent: combinatiile variabilelor pentru care acestia iau valoarea 1, n ordinea cresc
atoare a
num
arului de 1-uri din aceast
a combinatie), iar n coloanele din dreapta, toate
sumele de vecini posibile, pn
a cnd nu mai g
asim termeni vecini:
minterm

m=1

sume_pas1

sume_pas2

...

Conven
tie de nota
tie: dac
a prin nsumarea a doi vecini, o variabil
a dispare, vom scrie n locul acesteia _. De exemplu, xyz + xyz = _yz; respectiv,
011 + 111 = _11:
Dac
a un termen nu mai are vecini (este implicant prim), l vom marca cu
( ):
Etapa 2 - determinarea (tuturor) formelor reduse ale lui f :
Alc
atuim un nou tabel:
mi1

mi2

I1
impl: primi ! I1
..
.
Ip

61

...

mik

mintermi

n care trecem pe prima coloan


a implicantii primi determinati la punctul 1,
si pe prima linie, mintermii din forma normal
a disjunctiv
a a lui f; iar n celelalte
c
asute, scriem dac
a implicantul I contine mintermul corespunz
ator coloanei
respective.
Formele reduse ale lui f sunt sumele acelor implicanti primi, ct mai putini
la num
ar, a c
aror sum
a este egal
a cu suma tuturor mintermilor lui f:
Exemplu: Fie functia f : (B(2))3 ! B(2); dat
a prin tabelul:
x
0
0
0
0
1
1
1
1

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

f
1
1
1
1
0
1
0
0

Avem f = m(0; 1; 2; 3; 5) si
minterm m = 1
sume_pas1
m0
000
m(0; 1) : 000 + 001 = 00_
m(0; 2) : 000 + 010 = 0_0
m1
001
m(1; 3) : 001 + 011 = 0_1
m2
010
m(1; 5) : 001 + 101 = _01 ( )
m(2; 3) : 010 + 011 = 01_
m3
011
m5
101

sume_pas2
m(0; 1; 2; 3) : 00_ + 01_ = 0_ _
m(0; 2; 1; 3) : 0_0 + 0_1 = 0_ _

Am obtinut implicantii primi: I1 = m(0; 1; 2; 3) si I2 = m(1; 5):


m0

m1

m2

m3

m5

I1
I2
Se vede c
a, pentru a acoperi mintermii lui f; avem nevoie att de I1 ;
ct si de I2 : Astfel, f admite o singur
a form
a redus
a, anume I1 + I2 : Formula
corespunz
atoare este:
0_ _ + _01 ) x + yz:
n consecinta, avem

f = x + yz:
Exercitiul 43 Gasiti formea redusa a functiei booleene f (x; y; z) = xyz + xyz +
xyz + xyz + xyz, prin metoda Quine-McCluskey.
Exercitiul 44 Gasiti formea redusa a functiei booleene f (x; y; z; t) = xyz t +
xyzt + xyz t + xyzt + xyz t, prin metoda Quine-McCluskey.

62

6.3

Structuri Reed-Muller. Structuri Post

n designul si implementarea circuitelor de comutatie se folosesc, al


aturi de
operatiile algebrei booleene B(2); si operatiile inelului boolean atasat (Z2 ; ; ):
Prin structura Reed-Muller se ntelege inelul (Z2 ; ; ); notat si cu
(GF (2); ; ) (notatia GF provine de la cmp Galois - Galois eld, denumire pe care o poart
a corpurile de clase de resturi modulo p; cu p-prim).
Expresia unei functii booleene f : (B(2))n ! B(2) n functie de operatiile
; ; part
a numele de expresie Reed-Muller.
Pentru a determina expresia Reed-Muller asociat
a unei functii booleene f;
utiliz
am tranform
arile
x y = x
x+y = x
x = 1

y;
y x
x:

y;

Deoarece operatiile si coincid, vom utiliza pentru simplitate, notatia :


De exemplu, functia f : (B(2))2 ! B(2); dat
a prin
f (x; y) = xy + xy
(sau exclusiv) se rescrie ca
f (x; y)

= (1 x)y x(1 y) + (1 x)y x(1 y) =


= y xy x xy (y xy) (x xy) =
= y x yx xyx yxy xyxy = y x;

unde am tinut cont c


a
a = 0; a2 = a; 8a 2 Z2 :

Din proprietatea de mai sus rezult


a c
a functie boolean
a (scris
a ca sum
a de
mintermi) se poate rescrie sub forma
M
f=
ci x1 i1 x2 i2 :::xnin ;
i

unde puterile xk sunt cele obisnuite


k

x0 = 1; x1 = x:
Termenii ci x1 i1 x2 i2 :::xnin se numesc -termi (pitermi).
Corpurile (Zp ; ; ) de clase de resturi modulo p (cu p 2 N - prim) conduc
la generalizarea notiunii de algebr
a Boole, n sensul urm
ator: denind
x
x

y
y
x0

= : sup(x; y);
= : inf(x; y);
: = 1 x;
63

(x0 poart
a numele de schimbul ciclic al lui x), obtinem o latice distributiv
a
cu prim si ultim element - propriet
ati ce sunt vericate si de algebrele Boole.
Notiunea de complement este ns
a nlocuit
a prin cea de schimb ciclic.
Structurile algebrice (Zp ; ; ;0 ) poart
a numele de structuri Post, si au aplicatii la proiectarea circuitelor cu mai multe st
ari.
Pentru p = 2 reg
asim algebra boolean
a B(2): Pe structurile Post se pot deni
functii analoage functiilor booleene, mintermi si maxtermi.

64

7
7.1

Elemente de teoria grafurilor


No
tiunile de graf, subgraf, graf par
tial. Gradul unui
vrf

Denitia 17 Numim graf neorientat o pereche ordonata de multimi G =


(V; E); unde V este o multime nita si nevida iar E este o multime de perechi
neordonate de elemente din V:
Elementele lui V se numesc vrfuri, iar elementele (i; j) 2 E se numesc
muchii ale lui G:

Fig 1. graf neorientat


Vom reprezenta vrfurile unui graf ca puncte n plan, iar muchiile prin segmente. Dac
a ntre dou
a vrfuri i; j 2 V exist
a o muchie, spunem c
a vrfurile i; j
sunt adiacente, iar despre muchia (i; j); spunem c
a este incident
a celor dou
a
vrfuri.
Denitia 18 Numim graf orientat (digraf ) o pereche ordonata de multimi
G = (V; E); unde V este o multime nita si nevida iar E este o multime de
perechi ordonate de elemente din V:
Elementele lui V se numesc vrfuri, iar elementele (i; j) 2 E se numesc
arce ale lui G:
Pentru un arc (i; j); vrful i se numeste extremitate initial
a, iar j; extremitate
nal
a. Cele dou
a vrfuri se vor numi adiacente, iar arcul (i; j); incident celor
dou
a vrfuri.
Arcele unui graf orientat, le vom marca prin s
ageti.

65

Fig. 2. graf orientat


Conven
tie: n cele ce urmeaz
a, vom considera doar grafuri f
ar
a muchii/arce
care s
a se repete (1-grafuri), si f
ar
a muchii/arce de forma (i; i) (f
ar
a bucle).
Prin graf par
tial al unui graf G = (V; E); se ntelege orice graf obtinut prin
suprimarea unor muchii/arce ale lui G:
Un subgraf al grafului G = (V; E) este un graf obtinut prin suprimarea
unor vrfuri ale lui G si a muchiilor/arcelor incidente acelor vrfuri.
Denitia 19
1. Prin gradul unui vrf v al unui graf, ntelegem numarul
muchiilor/arcelor incidente cu v: Gradul lui v se noteaza cu d(v):
2. ntr-un graf orientat, numim:
(a) gradul exterior al unui vrf v; si notam cu d+ (v); numarul arcelor
au pe v ca extremitate initiala.
(b) gradul interior al unui vrf v; si notam cu d (v); numarul arcelor
au pe v ca extremitate nala.
De exemplu, n graful din Fig. 2, avem d+ (1) = 1 (doar arcul (1,2) pleac
a
din 1), d (v) = 2 (arcele (2,1) si (5,1) au pe 1 ca extremitate nal
a) si d(1) =
1 + 2 = 3:
Propozitia 34 Daca un graf are m muchii/arce, atunci suma gradelor vrfurilor sale este
X
d(v) = 2m:
v2V

66

Justicarea armatiei de mai sus const


a n faptul c
a ecare arc(/muchie)
este num
arat de dou
a ori atunci cnd socotim suma gradelor vrfurilor (o dat
a
cnd socotim gradul extremit
atii initiale, si nc
a o dat
a, n gradul extremit
atii
nale). Printr-un rationament asem
an
ator, deducem
Propozitia 35 Daca un graf orientat are m arce, atunci
X
X
d+ (v) = m;
d (v) = m:
v2V

v2V

Exemplu: Numim graf complet, un graf n care orice dou


a vrfuri sunt
adiacente.
Dac
a un graf neorientat cu n vrfuri este complet, atunci:
- gradul ec
arui vrf este d(v) = n 1;
(n 1)n
1P
d(v) =
:
- num
arul muchiilor grafului este m =
2 v2V
2

Fig.3. Graf complet


Un vrf al c
arui grad d(v) este 0, se numeste vrf izolat.
Exercitiul 45 Sa se arate ca orice graf neorientat cu n
putin doua vrfuri care au acela
si grad.

2 vrfuri contine cel

Exercitiul 46 Determinati: a) numarul grafurilor neorientate/orientate cu n


vrfuri; b) numarul grafurilor partiale ale unui graf neorientat/orientat cu m
muchii/arce.

67

7.2

Lan
t, drum, ciclu, circuit

A. Fie G = (V; E) un graf neorientat.


Denitia 20 Numim:
lan
t, o succesiune de vrfuri L = [vi1 ; vi2 ; :::; vik ] cu proprietatea ca orice
doua vrfuri consecutive ale lui L sunt adiacente;
lan
t elementar, un lant L = [vi1 ; vi2 ; :::; vik ] cu proprietatea ca orice
doua vrfuri ale acestuia sunt distincte;
ciclu, un lant L = [vi1 ; vi2 ; :::; vik ] pentru care primul si ultimul vrf coincid: vi1 = vik si muchiile (vih ; vih+1 ) sunt doua cte doua distincte;
ciclu elementar, un ciclu L n care toate vrfurile, cu exceptia primului
si a ultimului, sunt distincte.

Fig. 4
n Fig. 4, f1; 6; 8; 7; 6; 1; 10; 2g este un lant, ns
a nu este un lant elementar,
deoarece el trece prin vrfurile 1 si 6 de cte dou
a ori; f1; 6; 7; 3; 4; 9; 10; 2g este
un lant elementar; f1; 2; 3; 4; 5; 3; 7; 6; 1g este un ciclu (ns
a nu este elementar,
deoarece trece de dou
a ori prin 6}, iar f1; 2; 3; 7; 6; 1g este un ciclu elementar.
Un ciclu care parcurge toate muchiile unui graf cte o singur
a dat
a, poart
a
numele de ciclu eulerian, iar un graf care contine un ciclu eulerian, se numeste
graf eulerian.
Se poate demonstra urm
atoarea teorem
a:
Teorema 36 Un graf neorientat fara vrfuri izolate este eulerian daca si numai
daca:

68

Figura 1: Fig. 5. Graf eulerian

1. ntre orice doua vrfuri ale grafului exista un lant (i.e., graful este conex)
si
2. gradele tuturor vrfurilor sunt numere pare.
De exemplu, graful (complet) din Fig. 5 este eulerian, deoarece toate vrfurile au gradul 4. Un ciclu eulerian este, de exemplu, f1; 4; 2; 5; 3; 1; 5; 4; 3; 2; 1g:
Un ciclu elementar care contine toate vrfurile unui graf se numeste ciclu
hamiltonian. Un graf care contine un ciclu hamiltonian, se numeste graf
hamiltonian.
Observa
tie: Grafurile complete sunt hamiltoniene.
De exemplu, graful din Fig. 5 este hamiltonian. Un ciclu hamiltonian este
f1; 2; 3; 4; 5; 1g:
Nu se cunosc conditii necesare si suciente pentru ca un graf s
a e hamiltonian. Se cunosc ns
a conditii suciente, una din ele este urm
atoarea:
Teorema 37 (Dirac, 1952): Daca un graf neorientat are n
gradul ecarui vrf v satisface inegalitatea
d(v)

3 vrfuri, iar

n
;
2

atunci graful este hamiltonian.


B. Pentru grafuri orientate, se denesc notiuni analoage celor de lant,
lant elementar, ciclu si, respectiv, ciclu elementar. Anume:
Denitia 21 ntr-un graf orientat G = (V; E); numim:
69

drum - o succesiune de vrfuri D = [vi1 ; vi2 ; :::; vik ] cu proprietatea


ca ntre orice doua vrfuri consecutive vih ; vih+1 ale lui D exista arcul
(vih ; vih+1 );
drum elementar, un drum D = [vi1 ; vi2 ; :::; vik ] cu proprietatea ca orice
doua vrfuri ale acestuia sunt distincte;
circuit, un drum D = [vi1 ; vi2 ; :::; vik ] pentru care primul si ultimul vrf
coincid: vi1 = vik si muchiile (vih ; vih+1 ) sunt doua cte doua distincte;
circuit elementar, un circuit D n care toate vrfurile, cu exceptia
primului si a ultimului, sunt distincte.

Exercitiul 47 Aratati ca, daca ntr-un graf exista un lant/drum ntre doua
vrfuri i si j; atunci ntre cele doua vrfuri exista un lant elementar/drum
elementar.
Exercitiul 48 Determinati toate grafurile hamiltoniene cu n = 4 vrfuri.
Exercitiul 49 Determinati toate grafurile euleriene cu 4 vrfuri.
Exercitiul 50 Dati exemple de grafuri care:
a) Sa e euleriene, dar sa nu e hamiltoniene;
b) sa e hamiltoniene, dar sa nu e euleriene;
c) sa e si hamiltoniene si euleriene;
d) sa nu e nici hamiltoniene, nici euleriene.
Exercitiul 51 Adaugati un numar minim de muchii grafului din gura de mai
jos, astfel nct el sa devina eulerian:

70

7.3

Reprezentarea grafurilor n memoria calculatorului.


Parcurgerea grafurilor

Pentru reprezentarea grafurilor n memoria sistemelor de calcul, exist


a mai
multe metode, alegerea acestora f
acndu-se de obicei n functie de problema
de rezolvat.
Fie G = (V; E) un graf, cu n vrfuri si m muchii/arce.
1) Matricea de adiacen
ta
A = (aij )i;j=1;n este o matrice cu n linii si n
coloane, denit
a astfel:
aij =

daca (i; j) 2 E
0:::::^{n caz contrar:

Pentru grafuri neorientate, matricea de adiacenta este simetric


a.
2) Liste de adiacen
ta
a Li a
- pentru ecare vrf i se construieste o list
succesorilor s
ai (i.e., a v
arfurilor j 2 V pentru care (i; j) 2 E):
vrf
i

succesori
j1 ; j2 ; :::

Listele de adiacenta se pot reprezenta si cu ajutorul unor tablouri. Anume,


denim o matrice T cu 2 linii si :
n + 2m coloane n cazul grafurilor neorientate;
n + m coloane n cazul grafurilor orientate,
astfel:
n primele n coloane, scriem pe pozitia T (1; i) vrfurile grafului, iar pe pozitia
T (2; i); num
arul coloanei j a lui T la care ncepem enumerarea succesorilor lui
i: Dac
a i nu are succesori, atunci T (2; i) se va completa cu 0.
Pe urm
atoarele coloane, vom scrie pe pozitia T (1; j); unde j = T (2; i); primul
element al listei succesorilor lui i; apoi, pe pozitia T (2; j); num
arul k al coloanei
unde g
asim urm
atorul element al listei succesorilor lui i: Apoi, T (1; k) va
urm
atorul element al listei Li ; iar T (2; k) va indica num
arul coloanei lui T
pe care vom trece urm
atorul element al lui Li etc. n momentul n care lista
succesorilor se ncheie, scriem 0 pe linia a doua a coloanei respective.
3) Matricea de inciden
ta
:
Presupunem c
a graful neorientat G are n vrfuri, numerotate de la 1 la n, si
m muchii, notate e1 ; :::; em :
A0 este o matrice de tip n m; denit
a astfel:
a0ij :=

1 daca muchia ej este incidenta v^


arf ului i
:
0 ^{n caz contrar
71

Pentru grafuri orientate, matricea de incidenta va indica si dac


a un arc are
drept extremitate initial
a sau nal
a un anumit vrf:
8
arf ul i
< 1 daca arcul ej iese din v^
1 daca arcul ej intra ^{n v^
arf ul i :
a0ij :=
:
0 ^{n caz contrar

4) Lista de inciden
ta
(vectorul muchiilor/arcelor) este un vector al
c
arui num
ar de elemente este egal cu num
arul m al muchiilor/arcelor grafului.
Elementele listei de incidenta sunt perechi de vrfuri (i; j); unde i si j reprezint
a extremit
atile initial
a, respectiv,
nal
a, ale muchiei.
Exemplu: Consider
am graful orientat

Fig. 6
Pentru graful din Fig. 6, avem:
matricea de adiacenta:

listele de adiacenta:

B
B
B
A=B
B
B
@

0
1
0
0
0
0

1
0
0
1
0
1

0
0
0
0
1
0

i
1
2
3
4
5
6

Li
2
1
4; 6
2; 6
3; 6
2

72

0
0
1
0
0
0

0
0
0
0
0
0

0
0
1
1
1
0

1
C
C
C
C
C
C
A

respectiv,
1

)T =

1 2 3
7 8 9

4
11

matricea de incidenta
0
1
1
B 1 1
B
B 0
0
I=B
B 0
0
B
@ 0
0
0
0

5
13

0
1
0
1
0
0

6 2 1
15 0 0

0
1
0
0
0
1

0
0
0
1
0
1

4
10

0
0
1
1
0
0

10

11

6
0

2
12

0
0
1
0
0
1

12

6
0

0
0
1
0
1
0

13

3
14

0
0
0
0
1
1

si vectorul arcelor,

14

6
0

15

2
0

1
C
C
C
C
C
C
A

e = f(1; 2); (2; 1); (2; 4); (2; 6); (4; 6); (4; 3); (3; 6); (5; 3); (5; 6)g:
Pornind de la matricea de adiacenta a unui graf G = (V; E) cu jV j =
n; se poate construi asa-numita matrice a drumurilor grafului, M 2
Mn n (f0; 1g); dat
a prin
mij =

1
daca exista drum de la i la j
0:::::^{n caz contrar:

Algoritmul de determinare a matricii drumurilor unui graf part


a numele
de algoritmul Roy-Warshall, si el const
a n transform
ari succesive asupra
elementelor matricii de adiacenta A; astfel: efectu
am n pasi, la ecare pas,
dac
a vrfurile i si j pot conectate prin ad
augarea arcelor (i; k) si (k; j) la
drumurile deja socotite, elementul mij va deveni 1:
Pasul 1 (initializarea elementelor lui M )
Pentru i = 1; n execut
a
Pentru j = 1; n execut
a
m(i; j) := a(i; j)
sfrsit_pentru
sfrsit_pentru
Pasul 2
Pentru k = 1; n execut
a
Pentru i = 1; n execut
a
Pentru j = 1; n execut
a
dac
a min(m(i; k); m(k; j)) = 1; atunci m(i; j) := 1
sfrsit_pentru
sfrsit_pentru
sfrsit_pentru
Pasul 3. Stop.

73

Exercitiul 52 Determinati matricea drumurilor pentru graful din Fig. 6: a)


direct; b) folosind algoritmul Roy-Warshall.
Pentru parcurgerea grafurilor, exist
a dou
a metode clasice: parcurgerea n
l
a
time (Breadth First Search) si parcurgerea n adncime (Depth First
Search), pe care le prezent
am pe scurt n cle ce urmeaz
a.
1) Parcurgerea n l
a
time (BFS): Pornim cu un vrf i, apoi vizit
am toti
vecinii j1 ; j2 ; ::: ai acestuia, apoi vecinii nevizitati ai acestora (ncepnd cu vecinii
lui j1 ; apoi vecinii lui j2 ) etc.
Pentru marcarea nodurilor deja vizitate, vom folosi un vector vizitat; cu
elementele
vizitat(i) =

1
daca v^
arf ul i a f ost vizitat
0:::::^{n caz contrar:

Vrfurile ai c
aror vecini urmeaz
a a vizitati le vom retine ntr-o coad
a C:
n pseudocod, algoritmul BFS este urm
atorul:
Pasul 1. (Initializam toate vrfurile ca nevizitate):
Pentru i = 1; n execut
a vizitat(i) := 0:
Pasul 2. (Vizitam primul vrf i si l adaugam la C)
Adaug
a i la C
examineaz
ai
vizitat(i) := 1
Pasul 3.
Ct timp C este nevid
a, execut
a
retine primul element i := C(1);
elimin
a i din C;
pentru toti vecinii nevizitati j ai lui i; execut
a
adaug
a j la C
examineaz
aj
vizitat(j) := 1
sfrsit_pentru
sfrsit_ct timp.
Pasul 4. Stop.
Exemplu: Pentru graful

74

Fig. 7
pornind din vrful i = 1; algoritmul BFS d
a urm
atoarea ordine de parcurgere:
1; 2; 3; 4; 5; 6; 7; 8; 9; 10:
1) Parcurgerea n adncime (DFS): Pornim cu un vrf i, apoi vizit
am
primul vecin j al acestuia, apoi primul vecin nevizitat al lui j etc. Apoi proced
am
la fel cu vrful j; trecnd la primul vrf nevizitat al acestuia.
Pentru marcarea nodurilor deja vizitate, vom folosi un vector vizitat; cu
elementele
vizitat(i) =

1
daca v^
arf ul i a f ost vizitat
0:::::^{n caz contrar:

Vrfurile ai c
aror vecini urmeaz
a a vizitati le vom retine ntr-o stiv
a S: n
momentul cnd ultimul element din stiv
a nu mai are succesori, el va eliminat
din S:
n pseudocod, algoritmul DFS este urm
atorul:
Pasul 1. (Initializam toate vrfurile ca nevizitate):
Pentru i = 1; n execut
a vizitat(i) := 0:
Pasul 2. (Vizitam primul vrf i si l adaugam la S)
Adaug
a i la S
examineaz
ai
vizitat(i) := 1
Pasul 3.
Ct timp S este nevid
a, execut
a
retine ultimul element i din S;
dac
a i are cel putin un vecin nevizitat j; atunci
adaug
a j la S;
examineaz
a j;
vizitat(j) := 1
75

altfel elimin
a i din S
sfrsit_ct timp.
Pasul 4. Stop.
Pentru graful din Fig. 7, parcurgerea DFS va da:
1; 2; 3; 6; 7; 10; 8; 4; 5; 9:

76