Sunteți pe pagina 1din 130

1

Gheorghe M.Panaitescu
Aplicaii la disciplina
TRANSMITEREA I CODAREA
INFORMAIEI
Universitatea Petrol-Gaze Ploiesti
2011
2
3
CUVNT NAINTE
Volumul acesta este o colectie de aplicatii dezvoltate/propuse n sprijinul
ntelegerii mai adnci a disciplinei Transmiterea si codarea informatiei
predat anului II de la specializarea Electronic aplicat.
n parte, aplicatiile sunt produse de autor. Partea majoritar ns este preluat
din literatur. Au fost consultate cteva sute de probleme destinate studentilor
de pe alte meridiane, unele au fost retinute si au fost traduse si adaptate pentru
studentii pe care i instruiesc.
Solutiile la enunturile de mprumut un mprumut fcut de cele mai multe ori
cu acordul autorilor de origine sunt si ele n mare parte mprumutate. Unele
mi apartin sau le-am adaptat. Interventia mea n rezolvri este de la caz la caz
n proportii diferite si de aceea greu de cuantificat. Dar acesta este un fapt cu
totul secundar.
Unele aplicatii se pot trata/rezolva pe cale exclusiv analitic. Altele necesit
recursul la calculator. De aceea sunt propuse pe alocuri unele secvente sau chiar
programe/scrpturi Matlab pentru ca studentii s nu risipeasc prea mult timp cu
elaborarea de programe proprii, ci s se concentreze mai curnd asupra
problemei si asupra semnificatiei solutiilor obtinute. Desigur, nu este interzis, ci
este chiar recomandat ca secventele de program din aceast lucrare s fie
ameliorate sau chiar nlocuite cu altele noi, mai performante.
Aplicatiile sub form de probleme au uzual solutii complete. Unele au solutii
numai schitate. Cile ctre solutii pot fi desigur si altele, diferite de cele
propuse aici. Studentii au sansa de a rezolva prin forte proprii, n variante
proprii, probleme n domeniul acesta att de cuprinztor al transmiterii si
codrii informatiei.
Suportul teoretic este prezent aici n form condensat. Teoria in extenso poate
fi gsit n varii surse. Una din ele este postat pe site-ul catedrei Automatic si
calculatoare: http://ac.upg-ploiesti.ro/gpanaitescu/tci.pdf.
Asa cum am afirmat, lucrarea este dedicat studentilor de anul II de la
Electronic. Este ns util si studentilor de la specializrile Automatic si
Calculatoare. Sper c si ei, ca si altii o vor gsi util.
Autorul
4
5
C U P R I N S U L
APLICATII DIN TEORIA PROBABILITTILOR 7
SURSE DE INFORMATIE 19
Lucrarea 1
Tema 1: Entropia surselor de informatie fr memorie.
Tema 2: Entropia surselor duble de informatie
Lucrarea 2
Tema: Entropia surselor de informatie markoviene.
Lucrarea 3
Tema: Entropia surselor de informatie Markov binare.
CANALE DE TRANSMITERE A INFORMATIEI 43
Lucrarea 4
Tema: Transinformatia si capacitatea canalelor.
CODAREA PENTRU CANALE FR PERTURBATII 55
Lucrarea 5. Codarea Huffman
Tema 1: Algoritmul Huffman pentru coduri compacte
Tema 2: Un cod Huffman n aciune
Lucrarea 6. Codarea aritmetic
Tema 1. Codarea aritmetic n numere reale
Tema 2. Codarea aritmetic n numere ntregi
CRIPTAREA 83
Lucrarea 7
Tema 1: Criptarea RSA
Tema 2: Criptarea cu curbe eliptice
CODAREA PENTRU CANALE CU PERTURBATII 91
Lucrarea 8
Tema 1: Codurile Hamming (corectoare de o eroare)
Tema 2: Codul Hamming (7,4) n aciune
6
SEMNALE 121
Lucrarea 9
Tema 1: Serii Fourier
Tema 2: Compensarea fenomenului Gibbs
Lucrarea 10
Tema 1: Eantionarea semnalelor; reconstituirea din eantioane
7
APLICATII DIN TEORIA PROBABILITTILOR
Problema 1.
Se alege la ntmplare o lun a anului. Apoi, tot la ntmplare, se alege o zi din
acea lun (se admite c anul nu este bisect).
a. Descrieti toate rezultatele (lun, zi) care formeaz spatiul probelor pentru
acest experiment aleator.
b. Care este probabilitatea ca luna s fie de 31 de zile?
c. Care este probabilitatea ca ziua aleas s fie ntre a zecea (inclusiv) si a
douzecea (inclusiv)?
d. Care este rspunsul la punctul c. dac anul este bisect?
Solutie.
a. Se enumer datele calendaristice sub form de perechi lun-zi (l, z).
b. Prin raportarea numrului de luni de 31 de zile (7) la numrul de luni ale
unui an, rezult 7/12
c. Formula probabilittii totale conduce la rezultat:
Pr(10 z 20) = ) 12 / 7 )( 31 / 11 ( ) 12 / 4 )( 30 / 11 ( ) 12 / 1 )( 28 / 11 ( + +
Primul termen este pentru februarie, urmtorul pentru lunile de 30 de zile,
ultimul pentru lunile de 31 de zile.
d. Se modific contributia lunii februarie: n loc de ) 12 / 1 )( 28 / 11 ( se pune
) 12 / 1 )( 29 / 11 ( .
Problema 2.
Fie A, B evenimente produse de un acelasi experiment aleator. Dac
probabilitatea ca cel putin unul din cele dou evenimente s se produc este 0,7
si dac probabilitatea ca cel putin unul din cele dou evenimente s nu se
produc este 0,6, calculati probabilitatea ca exact unul dintre cele dou
evenimente s se produc.
Solutie. Este de calculat
Pr(AAB) = Pr[(A B) (B A)] = Pr(A) + Pr(B) 2Pr(AB)
pentru diferenta simetric AAB.
Se scriu relatiile
Pr(AB) = Pr(A) + Pr(B) Pr(AB) = 0,7
6 , 0 ) Pr( ) Pr( ) Pr( ) Pr( = + = B A B A B A
Prin adunare se obtine
3 , 1 ) Pr( ) Pr( ) Pr( ) Pr( ) Pr( ) Pr( = + + + B A B A B B A A
8
ceea ce echivaleaz cu
1 + 1 Pr(A

B)
) Pr( B A
= 1,3 (de Morgan)
si apoi
1 + 1 Pr(A

B) (1 Pr(A

B)) = 1,3 (probabilitatea contrarului)


si mai departe
Pr(A

B) = 2 (1 0,7) 1,3 = 0,4


Revenind la prima formul (si la a doua) se obtine
Pr(AAB) = Pr(A) + Pr(B) Pr(A

B) Pr(A

B) =
= Pr(A

B) Pr(A

B) = 0,7 0,4 = 0,3


Problema 3.
Trei evenimente A, B, C asociate cu un anumit experiment aleator satisfac
relatiile urmtoare:
P(A) = 0,25; P(B) = 0,2; P(C) = 0,25
P(A

B) = 0,1; P(A

C) = 0,05; P(A

C) = 2P(B

C)
Probabilitatea ca cel putin dou din evenimentele A, B, C s se produc este
0,3
a. Calculati probabilitatea ca nici unul dintre cele trei evenimente s nu se
produc.
b. Calculati probabilitatea ca s se produc exact unul dintre cele trei
evenimente
Solutie. Propozitia a treia a enuntului spune c
P[A

B)

(A

C)

(B

C)] = 0,3
Dezvoltat, aceast relatie conduce la
P(A

B) + P(A

C) + P(B

C) 2P(A

C) = 0,3 (v.figura)
Fig.1. O posibilitate de a judeca cu arii n loc de probabilitti
Prin nlocuirea datelor numerice se obtine
P(A

C) + P(B

C) = 0,3 0,1 + 2.0,05 = 0,3


care alturi de
P(A

C) = 2P(B

C)
permite evaluarea lui P(A

C) = 0,2 si a lui P(B

C) = 0,1.
Acum se poate trece la evalurile cerute de problem.
C
A B
9
a. Trebuie calculat probabilitatea
) ( 1 ) ( ) ( C B A P C B A P C B A P = =
Dar probabilitatea
P(A

C) = P(A) + P(B) + P(C) P(A

B) P(A

C) P(B

C) +
+ P(A

C)
este deplin calculabil din datele problemei.
b. Trebuie calculat probabilitatea
P[(A B

C)

(B A

C)

(C A

B)]
pentru o reuniune de evenimente dou cte dou mutual incompatibile.
Rezultatul este suma probabilittilor celor trei evenimente. Se evalueaz ca
exemplu una din ele
) ( ) ( )] ( [
)] ( [ ) (
C B A P C B A P C B A P
C B A P C B A P
= = =
= =
Calculul probabilittii de mai sus trece prin relatia cunoscut (si de la
punctul a.)
P( A B

C) = P( A ) + P(B) + P(C) P( A B) P( A C) P(B

C) +
+ P( A B

C)
Dar
P( A B) + P(A

B) = P(B)
din motive de incompatibilitate mutual a celor dou evenimente A B,
A

B si pentru c ( A B)

(A

B) = B. n relatia ultim exist un singur


termen necunoscut: P( A B).
Analog se evalueaz P( A C) si P( A B

C) care, ca si P( A B) se
nlocuiesc n fromula pentru
) ( C B A P
.
Rezult imediat ) ( C B A P
.
Asemntor se evalueaz si ceilalti termeni din probabilitatea cerut.
Problema 4.
Se arunc dou zaruri, unul corect, altul incorect. Cel incorect are probabilittile
fetelor cu 1, 2, 3, 4, 5, 6 puncte nu egale ci P(1) = P(2) = P(3) = 2P(4) = 2P(5)
= 2P(6). Fie X variabila aleatoare care ia valorile de pe zarul corect si Y
variabila aleatoare care ia valori conform zarului incorect.
a. Calculati probabilittile asociate valorilor variabilei aleatoare Y
b. Calculati valorile medii si dispersiile celor dou variabile aleatoare X si Y
c. Fie Z variabila aleatoare Z = X Y. Valorile posibile ale lui Z sunt 0, 1, 2,
3, 4, 5. Evaluati probabilittile P(Z = 0), P(Z = 1), P(Z = 2), P(Z =
3), P(Z = 4), P(Z = 5). Faceti o diagram P(Z = z) cu z n abscis, pentru
z = 0, 1, 2, 3, 4, 5.
d. Fie S o secvent de 36 de perechi (i, j), cu i = 1, 2, 3, 4, 5, 6 valori ale
variabilei aleatoare X, cu j = 1, 2, 3, 4, 5, 6 valori ale variabilei aleatoare Y.
10
n alt exprimare X(i, j) = i, Y(i, j) = j pentru oricare din perechile (i, j) e S.
Fie evenimentul Z = 4. Calculati probabilitatea ca evenimentul acesta s nu
apar nici mcar o dat ntr-o asemenea secvent.
Solutie.
a. Mai nti, dac fetele zarului corect sunt echiprobabile, toate fetele avnd
aceeasi probabilitate de 1/6, la zarul incorect se rezolv ecuatia 2x + 2x + 2x
+ x + x + x = 1 din care rezult probabilittile pentru fiecare fat: 2/9, 2/9,
2/9, 1/9, 1/9, 1/9, respectiv pentru Y = 1, 2, 3, 4, 5, 6.
b. Se aplic fromulele binecunoscute.
c. Probabilittile cerute se evalueaz prin inventarierea efectiv a cazurilor. De
pild, Z = 4 se obtine n cazul perechilor (1, 5), (2, 6) (5, 1) si (6, 2)
(cifrele fr accent sunt obtinute pe zarul corect, cele cu accent pe zarul
incorect). Probabilittile perechilor sunt respectiv (1/6)(1/9), (1/6)(1/9),
(1/6)(2/9), (1/6)(2/9) ca produs de probabilitti ale unor evenimente
independente. Probabilitatea P(Z = 4) este suma acestor probabilitti
(perechile enumerate sunt mutual incompatibile), adic 1/9. La fel se
calculeaz si alte probabilitti cerute prin enunt.
d. Probabilitatea evenimentului Z = 4 este 4/54. Probabilitatea evenimentului
contrar, Z 4 este 50/54. Cele 36 de aruncri succesive sunt independente,
evenimentul lipsei totale a evenimentului Z = 4 este acelasi lucru cu
repetarea (intersectie) de 36 de ori a evenimentului Z 4. Probabilitatea
acestui eveniment este (50/54)
36
0,0626, o probabilitate destul de mic.
Problema 5.
Fie o secvent de date {x
1
, x
2
, , x
n
} n care fiecare x
i
provine din multimea {1,
2, 3, 4}. Din aceste date se poate construi un asa-numit model predictiv care
const n 16 probabilitti conditionate p(j/i), i, j = 1, 2, 3, 4 calculate n modul
descris mai jos. Pentru fiecare pereche (i, j) fie N(i) numrul de ntregi 1 m
n pentru care x
m
= i, si fie N(i, j) numrul de ntregi 1 m n 1 astfel nct
(x
m
, x
m+1
) = (i, j). Probabilitatea conditionat cutat este estimat prin
) (
) , (
) / (
i N
j i N
i j p =
a. Fie x o secvent de date pseudoaleatoare de lungime 1000 generat de
urmtorul script Matlab:
clear
nk=zeros(1,4);nij=zeros(4,4);samp1=ceil(4*rand); % initializare
for k=1:1000
samp=ceil(4*rand);
nk(samp)=nk(samp)+1;
if k>1
nij(samp1,samp)=nij(samp1,samp)+1;
samp1=samp;
end
end % generare de numere aleatoare uniform pe multimea {1,2,3,4}
11
nk % frecvente absolute
nij % frecvebte absolute conditionate
nk=nk/sum(nk) % frecvente relative
s=sum(nij');
for m=1:4
nij(m,:)=nij(m,:)/s(m);
end
nij % frevente relative conditionate
Utilizati scriptul pentru a calcula modelul predictiv p(j|i) pentru secventa x.
Exprimati rspunsul ca o matrice de probabilitti conditionate 44, cu suma
pe fiecare linie egal cu unitatea.
b. Pentru modelul predictiv p(j|i) stabilit la punctul anterior, care este cel mai
probabil j dac i = 1? Care este cel mai probabil j dac i = 2? Care este cel
mai probabil j dac i = 3? Care este cel mai probabil j dac i = 4? (Indicatie:
Se caut cea mai mare valoare pentru fiecare linie a matricei 44 stabilit la
punctul a.).
c. Fie acum x = (x
1
, x
2
, , x
1000
) secventa generat ca la punctul a. Se admite
c modelul predictiv este utilizat n modul descris imediat, pentru a ajunge
la o secvent predictiv pentru termenii din x,
) , , , (
1000 2 1
x x x
.
Se ia prima valoare din secventa predictiv ca fiind
1 1
x x =
. Pentru 1 < m
1000, se iau predictiile
m
x pentru x
m
ca o valoare j e {1, 2, 3, 4} pentru
care probabilitatea p(j|x
m1
) este cea mai mare (conform punctului b.).
Utilizati un script Matlab pentru a genera secventa ) , , , (
1000 2 1
x x x potrivit
aceastei reguli de predictie simple. Calculati probabilitatea empiric a
predictiei eronate, cu alte cuvinte, numrati pentru cti de m, 1 < m 1000
m
x x
m
si apoi mprtiti la 999.
Problema 6.
Fie Y o variabil aleatoare caracterizat astfel: Pr(Y = 1) = 0,25, Pr(Y = 2) =
0,25, Pr(Y = 3) = 0,50.
a. Reprezentati grafic asa-numita functie de probabilitate p
Y
(y).
b. Calculati Pr(Y < 1), Pr(Y 1), Pr(Y > 2) si Pr(Y 2).
c. Calculati Pr(1 Y 3), Pr(1 Y < 3), Pr(1 < Y 3) si Pr(1 < Y < 3).
Problema 7.
Comutatoarele 1, 2, 3 opereaz corect cu probabilittile 0,88, 0,92, respectiv
0,90. Ele opereaz independent.
a. Aflati probabilitatea ca un curent s circule de la A la B n circuitul de mai
jos.
12
b. Aflati probabilitatea ca un curent s circule de la A la B n circuitul schitat
mai jos.
Solutie:
a. Curentul circul de la A la B dac si numai dac comutatoarele sunt n
strile descrise n expresia comutatorul 1 functional I (comutatorul 2
functional SAU comuratorul 3 functional) cu operatorul logic SAU nteles
nu ca exclusivitate, nu ca un SAU EXCLUSIV. Starea perechii de
comutatoare n paralel 2 si 3 contrar celei exprimate n parantez este cea
de nefunctionare concomitent a lor. Probabilitatea acestei situatii, Pr(2
nefunctional) I Pr(3 nefunctional) este (1 0,92)(1 0,9) = 0,008 dat
fiind independenta functional a comutatoarelor. Starea cuprins n
paranteza mentionat este probabil n msura 1 0,008 = 0,992.
Tot n virtutea independentei functionale a comutatoarelor, probabilitatea
cerut este 0,880,992 = 0,87296.
b. Se observ c n circuit comutatorul 1 este de prisos si starea lui nu
afecteaz n nici un fel transparena de la A la B. Rmn determinante
strile comutatoarelor 2 si 3. La punctul anterior s-a stabilit c
transparena este asigurat cu o probabilitate de 0,992.
Problema 8. Formula lui Bayes.
O companie productoare de automobile produce marca Lstun 2009 n patru
locatii diferite: I, II, III si IV. Se presupune c 20% din acestea sunt produse la
fabrica I, 23% sunt produse la fabrica II, 27% sunt produse la fabrica III si
restul la fabrica IV. Se presupune de asemenea c 5% din masinile produse n
locatia I trebuie rechemate pentru remedieri, la fel 6% din cele produse n
locatia II, 3% din cele produse n locatia III si 8% din cele produse n locatia
IV.
a. Care este probabilitatea ca un Lstun 2009 ales la ntmplare s fie
rechemat pentru remedieri?
A B
1
3
2
A B
1 2
3
13
b. Stiind c un automobil a fost rechemat pentru remedieri, calculati
probabilitatea conditionat ca el s fie produs la fabrica I (II, III sau IV)
c. Stiind c un automobil nu trebuie rechemat pentru remedieri, calculati
probabilitatea conditionat ca el s fie produs la fabrica I (II, III sau IV)
Problema 9.
Se dau dou cutii. Cutia 1 contine 10 crti din care 3 sunt marcate fiecare cu
numrul 1 si celelalte 7 sunt marcate cu numrul 2. Cutia 2 contine 15 crti
dintre care 9 sunt marcate cu 1, iar restul de 6 sunt marcate cu 2.
Se execut urmtorul experiment aleator, n trei pasi. La pasul 1 se alege aleator
echiprobabil o cutie si apoi se alege aleator o carte din acea cutie; numrul de
pe carte (1 sau 2) este notat s-i spunem numrul N
1
. La pasul 2, se alege la
ntmplare o carte din cutia N
1
si numrul de pe carte este si el notat fie acesta
N
2
. La pasul 3 se alege tot aleator din cutia N
2
si numrul de pe carte se noteaz,
de asemenea fie acela N
3
. Se consider ca spatiu al esantioanelor pentru acest
experiment multimea tuturor valorilor triple (N
1
, N
2
, N
3
). Sunt 8 rezultate
posibile n spatiul esantioanelor. Folositi teorema multiplicrii ca ajutor n a
calcula probabilitatea fiecruia din cele 8 rezultate, n cazurile urmtoare:
a. n cazul cnd cartea este totdeauna pus napoi n cutia din care a fost aleas
nainte de alegerea unei alte crti.
b. n cazul cnd o carte este totdeauna pus napoi, dar n cealalt cutie.
c. S presupunem c primul caz (a.) prevaleaz. Calculati probabilittile Pr(N
3
= 1) si Pr(N
3
= 2).
Problema 10.
Se presupune c pachetele de biti sosesc la un server Internet de rutare la o rat
medie de 2,3 pachete pe milisecund.
a. Fie X numrul de pachete de mesaje care sosesc ntr -un interval de 10
milisecunde. Calculati probabilittile Pr(X 22) si Pr(17 X 25)
(Indicatie: X este o variabil aleatoare poissonian).
b. Se presupune c serverul ruteaz pachetele pe care le primeste n modul
urmtor: mai nti intervalul este fragmentat n 10 subintervale de o
milisecund; apoi primul pachet sosit (dac soseste vreunul) n fiecare
subinterval de o milisecund este rutat si pachetele sosite rmase nu sunt
rutate (sunt distruse, de pild). Fie Y numrul total de pachte rutate de server
n intervalul de 10 milisecunde. Calculati Pr(Y = 8) si Pr(6 < Y < 10).
(Indicatie: Y nu are o distributie Poisson ci are o distributie binomial).
c. Se presupune c serverul de rutare ruteaz pachetele pe care le primeste n
10 milisecunde n modul urmtor: mai nti intervalul este fragmentat n 10
subintervale de o milisecund; apoi primul si al doilea pachet care sosesc
(dac sosesc) n fiecare milisecund sunt rutate, iar celelalte pachete care
sosesc (dac sosesc) sunt distruse. Fie Z numrul total de pachete rutate de
server tr-un interval de 10 milisecunde. Estimati Pr(Z = 16) si Pr(14 Z
14
18) utiliznd 10.000 de observatii asupra lui Z simulate (Matlab). (Vor fi
desigur niste valori estimate).
Problema 11.
Mary, Bill si Joe joac jocul urmtor cu o moned corect (cel ce pierde d un
rnd de beri): mai nti Mary arunc moneda dac obtine cap cstig jocul;
altminteri Bill arunc si el moneda dac obtine cap cstig jocul; altminteri
Joe arunc si el moneda dac obtine cap cstig jocul. Dac nimeni nu cstig
jocul la primul tur de aruncri se procedeaz la alte tururi identice cu primul,
pn cnd cineva cstig jocul.
a. Fie Z o variabil aleatoare geometric cu parametrul p = 1/2. Stabiliti o
partitie de ntregi pozitivi n trei submultimi E
1
, E
2
, E
3
astfel nct
probabilittile evenimentelor {Z e E
1
}, {Z e E
2
}, {Z e E
3
} s msoare
sansele ca jocul s fie cstigat de Mary, de Bill, respectiv de Joe.
b. Calculati probabilittile ca Mary s cstige jocul, ca Bill s cstige jocul, ca
Joe s cstige jocul, respectiv, uznd de distributia geometric.
Problema 12. Functii de repartitie
Se genereaz un tabel de valori ale unei functii de repartitie si se utilizeaz
pentru a calcula eficient probabilitti.
a. Rulati programul Matlab care urmeaz pentru a genera un vector de valori
ale functiei de repartitie pentru o variabil aleatoare X distribuit binomial
cu parametrii n = 13 si p = 0,3.
s=1;
n=13;
p=0.3;
for i=1:n
v1=[0 s];
v2=[s 0];
s=p*v1+(1-p)*v2;
end
cdf_values=cumsum(s);
Afisati sub form de tabel cele 14 valori ale functiei de repartitie F
X
(x)
pentru x = 0, 1, 2, , 13. Calculati probabilitatea Pr(X > 2) printr-o singur
cutare n tabel. Calculati probabilitatea Pr(2 X 5) prin numai dou
cutri n tabel.
b. Executati programul Matlab urmtor pentru a genera un vector cu primele
18 valori ale functiei de repartitie a variabilei aleatoare Y distribuit dup o
lege Poisson cu parametrul = 5,7.
lambda=5.7;
s(1)=1;
for k=1:17
15
s(k+1)=lambda*s(k)/k;
end
y=exp(-lambda)*s;
cdf_values=cumsum(y);
Afisati sub form de tabel cele 18 valori ale functiei F
Y
(y) pentru y = 0, 1, 2,
, 17. Calculati probabilitatea Pr(X 4) printr-o singur cutare n tabel.
Calculati probabilitatea Pr(2 < X < 5) prin numai dou cutri n tabel.
Problema 13.
Fie U o variabil aleatoare distribuit uniform pe intervalul [2, 13]. Utiliznd
sintaxa Matlab, se poate defini o variabil aleatoare Z astfel:
Z = (U < 4) + (U < 7) + (U < 8) + (U < 11)
Z este o variabil aleatoare discret care ia valorile 0, 1, 2, 3, 4. Stabiliti functia
de probabilitate pentru variabila Z (calculati p
Z
(z) pentru z = 0, 1, 2, 3, 4).
Solutie: Din enunt se ntelege c evenimentele (U < a) genereaz un 1 sau un 0
dup cum ele se produc sau nu. Astfel, pentru (U 11), Z = 0 deoarece nici
unul dintre cele patru evenimente nu se produce. Se mai observ faptul c unele
dintre evenimente le pot implica pe altele. De pild (U < 4) le implic pe toate
celelalte. Si acum calculul probabilittilor cerute:
11 / 2 ) 11 Pr( ) 0 ( = > = U p
Z
11 / 3 ) 11 8 Pr[( ) 1 ( = < s = U p
Z
11 / 1 ) 8 7 Pr[( ) 2 ( = < s = U p
Z
11 / 3 ) 7 4 Pr[( ) 3 ( = < s = U p
Z
11 / 2 ) 4 Pr[ ) 4 ( = < = U p
Z
Problema 14. Distributia exponential si distributia gaussian
a. Fie X o variabil aleatoare distribuit exponential cu parametrul = 0,5.
Calculati Pr(1 X 2) si Pr(X 1,5) prin integrarea functiei densitate de
probabilitate.
b. Se d o variabil aleatoare normal (gaussian) T cu media 10 si dispersia
225. Calculati Pr(T > 32), Pr(T < 0) si Pr(T > 60) n dou moduri: (i) prin
utilizarea tabelelor cu valori ale functiei de repartitie gaussiene; (ii) prin
utilizarea functiei Matlab erf.
Problema 15. Cuantizor
Fie X o variabil aleatoare continu cu densitatea de probabilitate f
X
(x) de forma

s s
=
rest n 0
3 3 |) | 3 (
) (
x x C
x f
X
cu C o constant pozitiv. Forma general a unui cuantizor pentru X, Q(x), pe
dou niveluri este
16
Q(x) =

s <
s s
3 0
0 3
x B
x B
cu B o constant ntre 0 si 3.
a. Determinati valoarea unic C care face din f
X
(x) o densitate de probabilitate.
b. Se pune n cuantizorul Q(x), B = 1,5 (astfel B este punctul median al
intervalului [0, 3] si Q(x) se numeste cuantizorul uniform pe dou niveluri
pentru X). Calculati E[(X Q(x))
2
| 3 X 0], E[(X Q(x))
2
| 0 < X 3] si
E[(X Q(x))
2
]. (Cantitatea ultim este eroarea de cuantizare medie
ptratic rezultat la utilizarea lui Q(x) pentru a cuantiza pe X.).
c. Calculati E[(X | 0 < X 3]. Acum luati B = E[(X | 0 < X 3] n cuantizorul
Q(x). Calculati E[(X Q(x))
2
| 3 X 0], E[(X Q(x))
2
| 0 < X 3] si E[(X
Q(x))
2
]. Este eroarea de cuantizare E[(X Q(x))
2
] mai mic dect cea
calculat la punctul b.? (Ar trebui s fie).
Solutie:
a. O functie densitate de probabilitate trebuie s verifice egalitatea:
1 ) ( =


dx x f
Din aceast ecuatie rezult valoarea lui C = 1/9.
b. Mediile cerute sunt urmtoarele:
E[(X Q(x))
2
| 3 X 0] =

+
|
.
|

\
|
+
0
3
2
) 3 (
9
1
2
3
2 dx x x =
4
3
E[(X Q(x))
2
| 0 < X 3] =


|
.
|

\
|

3
0
2
) 3 (
9
1
2
3
2 dx x x =
4
3
E[(X Q(x))
2
] =


|
.
|

\
|
+ +
|
.
|

\
|
+

3
0
2 0
3
2
) 3 (
9
1
2
3
) 3 (
9
1
2
3
dx x x dx x x =
4
3
Coeficientul 2 pentru primele dou medii provine de la conditionarea
repartitiilor: valorile negative si pozitive sunt egal probabile, probabilittile
asociate sunt ambele egale cu 1/2.
c. Cu media cerut
B =
1 ) 3 (
9
1
2
3
0
=

dx x x
calculele de la punctul anterior se repet cu aceast nou valoare:
E[(X Q(x))
2
| 3 X 0] =

+ +
0
3
2
) 3 (
9
1
) 1 ( 2 dx x x =
2
1
E[(X Q(x))
2
| 0 < X 3] =


3
0
2
) 3 (
9
1
) 1 ( 2 dx x x =
2
1
E[(X Q(x))
2
] =

+ + +

3
0
2
0
3
2
) 3 (
9
1
) 1 ( ) 3 (
9
1
) 1 ( dx x x dx x x =
2
1
17
ntr-adevr, eroarea de cuantificare este de data aceasta mai mic.
Problema 16.
Fie X o variabil aleatoare binomial cu n = 45 si p = 1/3 si fie Y o variabil
aleatoare poissonian cu = 10. Se presupune c cele dou variabile sunt
corelate ntr-un mod necunoscut (adic X si Y nu sunt independente). Se
presupune c din suficient de multe observatii ale valorilor X si Y s-a stabilit cu
un nalt grad de ncredere c Var(X + Y) = 200.
a. Care sunt mediile si dispersiile pentru fiecare din variabilele aleatoare X si
Y?
b. Calculati E(XY). (Indicatie: Se scrie Var(X + Y) = E[(X + Y)
2
] [E(X) +
E(Y)]
2
etc.)
Problema 17.
O variabil aleatoare R are functia densitate de repartitie urmtoare (distributia
Rayleigh)

>
=

rest n
r re
r f
r
R
0
0
) (
2 /
2
Media si dispersia sunt date de relatiile E[R] = 2 / t , Var[R] = 2 t/2.
a. Dac U este o variabil aleatoare uniform distribuit ntre 0 si 1, stabiliti o
transformare R = o(U) astfel nct R s aib densitatea de probabilitate f
R
(r).
b. Utiliznd transformarea de la punctul a., scrieti un program Matlab simplu
care s genereze un vector de 10.000 observatii simulate ale valorilor lui R.
Utilizati functiile Matlab mean si var pe vectorul generat pentru a obtine
estimatii ale mediei E[R] si dispersiei Var[R] date mai sus. Sunt estimrile
obtinute estimri bune?
c. Se cunoaste c dac variabilele aleatoare X, Y sunt repartizate normal cu
media 0 si dispersia 1, atunci R =
2 2
Y X + are densitatea de probabilitate
f
R
(r). Uznd de acest fapt, scrieti un alt program simplu Matlab care s
genereze un vector de 10.000 de observatii simulate asupra lui R. Utilizati
functiile Matlab mean si var pe vectorul generat pentru a obtine estimatii
ale mediei E[R] si dispersiei Var[R] date mai devreme. Probabil aceste
estimri vor fi cam aceleasi cu cele de la punctul b.
Problema 18. Varabile aleatoare mixte
Fie D o variabil aleatoare mixt, cu D = 0 o valoare cu probabilitate proprie o
(0 < o < 1) si cu o densitate de probabilitate exponential pentru D > 0, nul
pentru D < 0.
Calculati E(D) si Var(D).
18
Indicatie: Calea cea mai facil de a rezolva aceast problem trece prin
formulele
E[D] = E[D|D = 0]Pr(D = 0) + E[D|D > 0]Pr(D > 0)
E[D
2
] = E[D
2
|D = 0]Pr(D = 0) + E[D
2
|D > 0]Pr(D > 0)
19
SURSE DE INFORMATIE
Lucrarea 1
Tema 1: Entropia surselor de informatie fr memorie.
Sursele studiate au un alfabet care poate cuprinde de la 2 la 15 simboluri si
numrul n al simbolurilor este limitat prin program.
Alegerea numrului de simboluri se face intervenind n program: linia n care se
poate face modificarea este marcat cu un comentariu potrivit. Se poate
interveni si asupra limitelor 2, 15, dar aceast interventie nu aduce n discutie
aspecte noi si de aceea nu este recomandat n mod special.
Simbolurile sursei sunt considerate a fi chiar numerele de la 1 la n.
n prima faz este evaluat entropia maxim a unei surse cu un alfabet alctuit
din n simboluri, entropie care se atinge atunci cnd simbolurile sunt
echiprobabile.
n faza a doua se genereaz o list de probabilitati asociate celor n simboluri
arbitrar. Cum este de asteptat, entropia sursei este totdeauna inferioar
entropiei maxime.
Diferenta dintre entropia maxim si cea efectiv este redundanta sursei.
Programul evalueaz entropia efectiv si redundanta sursei.
Asupra sursei se fac succesiv unele modificri (trei).
Prima modificare: Se aleg la ntmplare dou simboluri ale sursei. Uzual
acestea au probabilitti de aparitie diferite. Se face o medie aritmetic a celor
dou probabilitti si se atribuie ca valori noi probabilittilor celor dou
simboluri selectate. Prin aceasta se aduce o uniformizare (partial) n lista de
probabilitti. Efectul: cresterea entropiei.
A doua modificare: Se reduce numrul de simboluri de la n la n 1. Penultimul
simbol din sursa originar se comaseaz cu ultimul si probabilittile lor se
adun. Penultimul simbol devine ultimul. Efectul: scderea entropiei.
A treia modificare: Se adaug la lista de n 1 simboluri ale sursei precedente
un nou simbol, al n-lea, cu probabilitatea de aparitie nul. Efectul: entropia
rmne aceeasi.
Programul apeleaz ocazional functia entropie, dat si ea n listingul alturat.
Functia aceata nu este altceva dect transcrierea n Matlab a formulei
binecunoscute pentru entropia unei surse simple fr memorie.
Se recomand executarea repetat a programului, cu acelasi numr n de
simboluri, cu valori n diferite. A se observa entropiile, redundantele, efectele
unor particularitti ale sursei.
20
clear
n=8; % numarul de simboluri ale sursei
if n>15
n=15;
end % o limitare a numarului de simboluri
if n<2
n=2;
end % o alta limitare a numarului de simboluri
simb=1:n; % simbolurile sursei
prob=(1/n)*ones(1,n);
entropia_maxima=entropie(prob)
prob=rand(1,n); % generarea a n numere aleatoare intre 0 si 1
prob=prob/sum(prob); % normaliarea listei de n numere; suma =
1
simboluri=simb
probabilitati=prob
h=entropie(prob);
entropia_efectiva=h
redundanta_sursei=entropia_maxima-entropia_efectiva
display('*** Uremaza o egalizare a probabilitatilor a doua
simboluri ***')
display('*** Pentru continuare apasati Enter! ***')
pause
r=ceil(n*rand(1,2)) % se genereaza doua numere de la 1 la n
med=(prob(r(1))+prob(r(2)))/2; % se mediaza probabilitatile
prob(r(1))=med;
prob(r(2))=med;
simboluri=simb
probabilitati=prob
h=entropie(prob);
entropia_noua=h
display('*** Uremaza o reducere a numarului de simboluri ***')
display('*** Pentru continuare apasati Enter! ***')
pause
prob(n-1)=prob(n-1)+prob(n); % se pun laolalta ultimele doua
simboluri
simboluri=simboluri(1:(n-1))
probabilitati=prob(1:(n-1))
h=entropie(prob(1:(n-1)));
entropia_noua=h
display('*** Uremaza adaugarea unui simbol cu probabilitate nula
***')
display('*** Pentru continuare apasati Enter! ***')
pause
prob(n)=0; % se adauga un simbol cu probabilitatea nula
simboluri=[simboluri n]
probabilitati=prob
h=entropie(prob);
entropia_noua=h
function entropie=ent(s)
% s este vectorul (linie) al probabilitatilor
[n,m]=size(s);
ent=0;
21
for i=1:m
if s(i)>0
ent=ent-s(i)*log(s(i));
end
end
ent=ent/log(2);
entropie=ent;
Tema 2: Entropia surselor duble de informatie
Programul Matlab care urmeaz se ocup de caracterizarea surselor de
informatie pereche de surse simple (A, B), notate si AB, independente sau
dependente una de cealalt. Sursele acestea privite unitar genereaz simboluri
proprii, perechi ordonate de simboluri (a, b), unul din alfabetul sursei A, altul
din alfabetul sursei B.
Dac sursele simple componente sunt independente, atunci probabilittile
simbolurilor (a, b) se obtin prin multiplicarea probabilittilor asociate
simbolurilor din pereche. Dac sursele A, B sunt dependente atunci intr n rol
formula probabilittilor conditionate. Pentru calculul probabilittii unei perechi
(a, b), se multiplic probabilitatea lui a cu probabilitatea lui b conditionat de a
sau se multiplic probabilitatea lui b cu probabilitatea lui a conditionat de b.
Toate aceste relatii se pot regsi n programul alturat.
Programul ncepe cu alocarea dimensiunilor m si n ale celor dou multimi de
simboluri (multimi alfabetice) pentru cele dou surse A si B.
n prima parte a programului, sursele A si B sunt considerate independente.
Rezultatul calculelor este: entropia sursei AB este egal cu suma entropiilor
surselor A si B.
n partea a doua, sursele A si B se fac dependente. Sursa A se mentine n forma
initializat n partea introductiv a programului. Sursa B nu mai poate fi
arbitrar, cea deja utilizat. Sursa B, chiar dac numrul de simboluri rmne
neschimbat are o list de probabilitti care rezult din conditionarea
(dependena) mutual a celor dou surse simple. Rezultatul ultim al calculelor
este: entropia sursei AB este mai mic dect suma entropiilor surselor A si B
luate separat.
clear
m=7;
n=5; % se alege numarul simbourilor generate de cele doua
surse
proa=rand(1,m); % generarea a m numere aleatoare intre 0 si 1
proa=proa/sum(proa); % normaliarea listei de m numere; suma =
1
prob=rand(1,n); % generarea a n numere aleatoare intre 0 si 1
prob=prob/sum(prob); % normaliarea listei de n numere; suma =
1
disp(' ')
s='Surse independente, probabilitati, entropii';
disp(s)
22
A=proa
B=prob
a=entropie(proa); % entropia sursei A
b=entropie(prob); % entropia sursei B
Entropii=[a b]
Suma_entropiilor=a+b % suma entropiilor
prod=proa'*prob; % probabilitatile perechilor (a,b), A, B
independente
AXB=prod
for i=1:m
entrl(i)=entropie(prod(i,:));
end
entropie_AXB=sum(entrl) % entropia sursei duble AXB, A, B
independnete
disp(' ')
s='Surse dependente, probabilitati, entropii';
disp(s)
cond=rand(m,n);
for i=1:m
cond(i,:)=cond(i,:)/sum(cond(i,:));
end % generarea probabilitatilor conditionate P(b/a)
disp(' ')
s='Matricea de conditionare b/a';
disp(s)
cond
for i=1:n
prod(:,i)=proa'.*cond(:,i);
end % calculul probabilitatilor pe perechi (a,b), A, B
dependente
prob=sum(prod); % calculul probabilitatilor pentru sursa B
B=prob
b=entropie(prob) % entropia sursei B
Entropii=[a b]
Suma_entropiilor=a+b % suma entropiilor
AXB=prod
for i=1:m
entrl(i)=entropie(prod(i,:));
end
entropie_AXB=sum(entrl) % entropia sursei duble AXB, A, B
independente
Lucrarea 2
Tema: Entropia surselor de informatie markoviene.
Sursele Markov propuse spre studiu au de la 2 la 8 stri si numrul n al strilor
este limitat prin program.
Alegerea numrului de stri se face intervenind n program: linia n care se
poate face modificarea este marcat cu un comentariu potrivit. Se poate
interveni si asupra limitelor 2, 8, dar aceast interventie nu aduce aspecte noi si
de aceea nu se recomand n mod special.
23
Se genereaz aleator o matrice a probabilittilor de tranzitie din cele n stri n
cele n stri ale sursei. Matricea p nu poate fi dect ptrat, nn, cu suma liniilor
egal cu unitatea.
Starea initial s a sursei este precizat uzual printr-un vector (linie) de
probabilitti, cu suma componentelor egal cu 1. n program, starea initial
poate fi modificat n linia/liniile unde ea este definit, marcat si ea cu un
comentariu. Starea initial, ca si oricare alt stare ulterioar este caracterizat de
o entropie care este evaluat cu functia entropie reprodus ntr-un listing
aparte, la finalul acestor cteva pagini de ndrumare. Functia entropie nu este
altceva dect transcrierea n Matlab a formulei binecunoscute pentru entropia
unei surse simple (fr memorie).
nainte de prima pauz n executia programului, se afiseaz matricea de
tranzitie, starea initial si entropia corespunztoare.
Apoi se simuleaz o evolutie a sursei (10 pasi). De regul, sursa evolueaz ctre
o stare stationar. Se afiseaz strile succesive si entropiile asociate. Se poate
observa o convergent ctre o stare numit si stare stationar. Aceast stare nu
este explicit, este numai bnuit din evolutia sursei. Lucrurile devin ceva mai
clare dac se extinde evolutia la mai mult de 10 pasi, prin modificarea limitei
superioare a instructiunii for k=1:10.
Dup urmtoarea pauz n executie se calculeaz efectiv starea stationar.
Rezultatele afisate difer ntructva de ultima stare din secventa evolutiv
anterioar. De regul, starea stationar este descris printr-un vector de
probabilitti cu toate componentele nenule. Se zice n aceste cazuri c sursa este
ergodic. Uneori, un vector al unei stri stationare contine componente nule
(stri excluse pe termen lung) sau o component unitar si celelalte nule (stri
absorbante). Aceste situatii caracterizeaz surse neergodice.
Se recomand executarea repetat a programului, cu acelasi numr n de stri
sau cu valori ale lui n diferite. A se observa evolutia sursei, strile si entropiile
asociate, starea stationar.
clear
n=4; % numarul de stari ale sursei
if n>8
n=8;
end % o limitare a numarului de stari
if n<2
n=2;
end % o alta limitare a numarului de stari
p=rand(n);
for i=1:n
suml=sum(p(i,:));
p(i,:)=p(i,:)/suml;
end % crearea unei matrici a tranzitiilor
matricea_tranzitiilor=p
s=zeros(1,n);
s(2)=1; % starea initiala
starea_initiala_si_entropia=[s entropie(s)]
display('*** Uremaza o evolutie a sursei Markov (10 pasi) ***')
24
display('*** Pentru continuare apasati Enter! ***')
pause
for k=1:10
s=s*p;
starea_curenta_si_entropia=[s entropie(s)]
end
display('*** Uremaza calculul starii stationare a sursei Markov
***')
display('*** Pentru continuare apasati Enter! ***')
pause
a=p-eye(n);
a=a';
ap=zeros(n-1);
for i=1:n
k=0;
for j=1:n
if j~=i
k=k+1;
ap(1:(n-1),k)=a(2:n,j);
end
end
compl(i)=(-1)^i*det(ap);
end % evaluarea starii stationare
s=compl/sum(compl); % probabilitatile starii stationare
starea_stationara=s
starea_stationara=s*p % verificarea starii stationare
starea_stationara_si_entropia=[starea_stationara entropie(s)]
function entropie=ent(s)
% s este vectorul (linie) al probabilitatilor
[n,m]=size(s);
ent=0;
for i=1:m
if s(i)>0
ent=ent-s(i)*log(s(i));
end
end
ent=ent/log(2);
entropie=ent;
Lucrarea 3
Tema: Entropia surselor de informatie Markov binare.
Sursele Markov binare studiate au 2, 4, 8 sau 16 stri, numrul strilor n este
totdeauna o putere a lui 2 si este limitat prin program. Exponentul este ordinul
sursei.
Alegerea ordinului se face intervenind n program: linia n care se poate face
modificarea este marcat de un comentariu adecvat. Se poate interveni si asupra
limitelor 2 si 16, dar aceast interventie nu aduce aspecte noi si de aceea nu este
recomandat special.
25
Se genereaz aleator o matrice a probabilittilor de tranzitie din cele n stri n
cele n stri ale sursei. Matricea p nu poate fi dect ptrat, nn, cu suma liniilor
egal cu unitatea. Multe elemente n aceast matrice pot fi si chiar sunt nule. De
fapt, pe fiecare linie numai dou elemente sunt nenule deoarece numai dou
tranzitii sunt posibile, din starea de plecare n numai alte dou stri care se obtin
prin deplasarea spre stnga a expresiei binare a strii curente si nlocuirea
ultimului bit cu 0 sau 1. De pild, din starea curent 101 nu se poate ajumge
dect n strile 010 sau 011 (s-a subliniat de fiecare dat partea rmas din
expresia binar a strii curente dup deplasarea la stnga cu pierderea primului
bit). O trecere din starea 101 n alte stri, de pild n starea 110, nu este posibil
ntr-un singur pas.
Starea initial s a sursei este precizat printr-un vector (linie) de probabilitti,
cu suma componentelor egal cu 1. n program, starea initial poate fi
modificat n linia/liniile unde ea este definit, marcat dealtfel cu un
comentariu. Starea initial, ca si oricare alt stare ulterioar este caracterizat de
o entropie care este evaluat cu functia entropie, dat si ea n listingul
alturat. Functia aceasta nu este altceva dect transcrierea n Matlab a formulei
binecunoscute pentru entropia unei surse simple (fr memorie).
nainte de prima pauz n executia programului, se afiseaz matricea de
tranzitie, starea initial si entropia corespunztoare.
Apoi se simuleaz o evolutie a sursei (10 pasi). De regul, sursa evolueaz ctre
o stare stationar. Se afiseaz strile succesive si entropiile asociate. Se poate
observa o convergent ctre o stare numit si stare stationar. Aceast stare nu
este explicit, este numai bnuit din evolutia sursei. Lucrurile devin ceva mai
clare dac se extinde evolutia la mai mult de 10 pasi, prin modificarea limitei
superioare pentru k n instructiunea for k=1:10.
Dup urmtoarea pauz n executie se calculeaz efectiv starea stationar.
Rezultatele afisate difer ntructva de ultima stare din secventa evolutiv
anterioar. De regul, starea stationar este descris printr-un vector de
probabilitti cu toate componentele nenule. Se zice n aceste cazuri c sursa este
ergodic. Uneori, un vector al unei stri stationare contine componente nule
(stri excluse pe termen lung) sau o component unitar si celelalte nule (stri
absorbante). Aceste situatii caracterizeaz sursele neergodice.
Se recomand executarea repetat a programului, pentru surse de acelasi ordin
sau de ordine diferite. A se observa evolutia sursei, strile si entropiile asociate,
starea stationar.
clear
ordin=2; % ordinul sursei
n=2^ordin; % numarul de stari ale sursei
if n>16
n=16;
end % o limitare a numarului de stari
if n<2
n=2;
end % o alta limitare a numarului de stari
26
for i=1:n
s=dec2bin(i-1,ordin);
stari(i,:)=s;
starin(i)=i-1;
end
stari
p=zeros(n);
for i=1:n
m=mod(2*(i-1),n);
m1=m;
m2=mod(m+1,n);
p(i,m1+1)=rand;
p(i,m2+1)=rand;
end
for i=1:n
suml=sum(p(i,:));
p(i,:)=p(i,:)/suml;
end % crearea unei matrici a tranzitiilor
matricea_tranzitiilor=p
s=zeros(1,n);
s(1)=1; % starea initiala
starea_initiala_si_entropia=[s entropie(s)]
display('*** Uremaza o evolutie a sursei Markov (10 pasi) ***')
display('*** Pentru continuare apasati Enter! ***')
pause
for k=1:10
s=s*p;
starea_curenta_si_entropia=[s entropie(s)]
end % evolutia sursei
display('*** Uremaza calculul starii stationare a sursei Markov
***')
display('*** Pentru continuare apasati Enter! ***')
pause
a=p-eye(n);
a=a';
ap=zeros(n-1);
for i=1:n
k=0;
for j=1:n
if j~=i
k=k+1;
ap(1:(n-1),k)=a(2:n,j);
end
end
compl(i)=(-1)^i*det(ap);
end % evaluarea starii statinare
s=compl/sum(compl); % probabilitatile starii stationare
starea_stationara=s
starea_stationara=s*p % verificarea starii stationare
starea_stationara_si_entropia=[starea_stationara entropie(s)]
function entropie=ent(s)
% s este vectorul (linie) al probabilitatilor
[n,m]=size(s);
27
ent=0;
for i=1:m
if s(i)>0
ent=ent-s(i)*log(s(i));
end
end
ent=ent/log(2);
entropie=ent;
Problema 19.
O moned perfect este aruncat succesiv pn apare prima stem. Fie X
numrul de aruncri necesare.
a. Aflati entropia H(X) n biti. Expresiile urmtoare pot fi utile n evaluarea
cerut:
r
r
r
n
n

=
1
1
, 2
1
) 1 ( r
r
nr
n
n

=
b. Potrivit acestei scheme se genereaz o variabil aleatoare X. Stabiliti o
secvent eficient de ntrebri cu rspunsuri da-nu, de forma Este X
continut n multimea S?. Comparati H(X) cu numrul mediu de ntrebri
necesare pentru a determina X.
Solutie.
a. La prima aruncare, probabilitatea de a ncheia experimentul este 1/2.
Probabilitatea de a ncheia experimentul la a doua aruncare este 1/4.
Probabilitatea de a obtine prima oar stem la a n-a aruncare este (1/2)
n
.
Variabila aleatoare X este de tip discret cu probabilittile asociate
numerelor naturale egale cu puterile succesive ale lui 1/2. Entropia cerut
este dat de formula
H(X) =
2
) 2 / 1 1 (
2 / 1
2
1
2 log
2
1
2
1 1
=

=
|
.
|

\
|
=


=

= n
n
n
n
n
n
b. Ideea este a obtine maximum de informatie la fiecare ntrebare. Fie a un
numr care partitioneaz prin ordine (n a, n > a) multimea numerelor
naturale n multimea S si multimea N S. ntrebarea Este X continut n
multimea S? poate avea rspunsul da cu probabilitatea
k
k
n
n
2
1
1
2
1
1
=

=
,
nu cu probabilitatea
k
k n
n
2
1
2
1
1
=

+ =
(a 1 < k a).
Informatia medie obtinut la o ntrebare de acest gen este
k k k k
2
1
log
2
1
2
1
1 log
2
1
1
|
.
|

\
|

|
.
|

\
|

etc.
28
Problema 20. Regula gruprii pentru entropie.
Fie p = (p
1
, p
2
, , p
m
) o distributie de probabilitti pentru m elemente, adic un
vector de m numere nenegative care nsumate dau unitatea. Se defineste o
distributie nou, q pentru m 1 elemente conform schemei q
1
= p
1
, q
2
= p
2
, ,
q
m 2
= p
m 2
si q
m 1
= p
m 1
+ p
m
, cu alte cuvinte distributia nou este aceeasi cu
cea initial pentru indici de la 1 la m 2 si probabilitatea q
m 1
se obtine prin
nsumarea ultimelor dou valori din lista de probabilitti initial. Artati c
|
|
.
|

\
|
+ +
+ + =

m m
m
m m
m
m m
p p
p
p p
p
H p p q H p H
1 1
1
2 1
, ) ( ) ( ) (
unde H
2
(a, b) = a log a b log b.
Problema 21.
Fie X o variabil aleatoare discret. Artati c entropia unei functii de X este
inferioar cel mult egal cu entropia lui X prin justificarea pasilor urmtori:
) ( ) / ) ( ( ) ( )) ( , ( X H X X g H X H X g X H = + =
)) ( ( )) ( / ( )) ( ( )) ( , ( X g H X g X H X g H X g X H > + =
prin urmare
) ( )) ( ( X H X g H s
.
Solutie:
H(X, g(X)) = H(X) + H(g(X)|X) rezult din simpla utilizare a unei formule
pentru entropii discutate la curs.
H(g(X)|X) = 0 deoarece pentru orice valoare a lui X, g(X) este univoc
deteminat asa nct H(g(X)|X) = L
x
p(x)H(g(X)|X = x) = L
x
0 = 0.
H(X, g(X)) = H(g(X)) + H(X|g(X)) rezult tot asa prin simpla utilizare a aceleiasi
formule pentru entropii discutat la curs.
H(X|g(X)) 0, cu egalitate dac si numai dac X este o functie de g(X), cu alte
cuvinte functia g() este o corespondent biunivoc. Asadar, H(X, g(X))
H(g(X)).
Prin combinarea afirmatiilor a doua si a patra, se obtine H(g(X)) H(X).
Problema 22. Functii
a. Fie Y = X
5
, cu X o variabil aleatoare care ia valori pozitive si valori
negative. Care este relatia ntre entropiile H(X) si H(Y)?
b. Dar dac Y = X
2
?
c. Dar dac Y = tgX?
Solutie: Din problema precedent, se stie c prin trecerea unei variabile
aleatoare printr-o functie nu se poate dect reduce entropia sau poate fi, n cazul
biunivocittii, mentinut la aceeasi valoare. Ea niciodat nu creste. Asadar,
H(g(X)) H(X), pentru orice functie g. Ratiunea este simpl: dac functia g nu
este biunivoc, atunci ea pune laolalt unele stri si prin aceasta reduce
entropia.
29
Solutia acestei probleme rezid n a determina de la caz la caz dac este vorba
sau nu de o aplicatie bijectiv. De observat c bijectivitatea se refer exclusiv la
suportul variabilei X, adic la acele valori x pentru care p(x) > 0.
a. Y = X
5
este o bijectie, asadar entropia este o functie numai de parobabilitti
(si nu de valorile rezultatelor observate) si de aceea nu se schimb: H(X) =
H(Y).
b. Y = X
2
este o functie par si, n consecint, nu este o corespondent
biunivoc cu exceptia cazului n care suportul variabilei X nu contine
simultan valori x si opusele lor x.
c. Ca si la punctul a., Y = tgX este o bijectie (ca functie pe ntregi) si H(X) =
H(Y).
n general, pentru punctul b., H(Y) H(X). Pentru acest caz este posibil a se da
o margine superioar pentru H(X): deoarece X poate lua numai dou valori la
orice Y dat, H(X|Y) log2 = 1. Asadar
H(Y) H(X) = H(X, Y) = H(Y) + H(X|Y) H(Y) + 1
Problema 23. Bytes (octeti)
Entropia, H
a
(X) = Lp(x)log
a
p(x) se exprim n biti dac logaritmul este n
baza 2 si n bytes (octei) dac logaritmul este n baza 256. Care este relaia
ntre H
2
(X) si H
256
(X)?
Solutie:

= = =
2 log
2 log ) ( log
) ( ) ( log ) ( ) (
256
256 2
2 2
x p
x p x p x p X H
2 log
) (
) ( log ) (
2 log
1
2 log
) ( log
) (
256
256
256
256 256
256
X H
x p x p
x p
x p

= = =
Astfel
H
2
(X) = 8H
256
(X)
Problema 24. Cntrirea monedelor
Se admite existena a n monede ntre care una ar putea fi contrafcut, fals.
Dac exist o moned fals, ea poate fi sau mai grea, sau mai usoar dect
celelalte. Monedele urmeaz a fi cntrite cu o balan.
a. Numrati strile n care pot fi cele n monede si numrati rezultatele
cntririlor n numr de k. Prin comparare, evaluai o limit superioar a
numrului de monede n astfel nct prin k operaii de cntrire s se
gseasc moneda fals (dac ea exist) si s se precizeze dac ea este mai
grea sau este mai usoar.
b. (Mai dificil, deci optional) Care este strategia potrivit pentru k = 3 cntriri
si n = 12 monede?
Solutie:
a. Pentru n monede, sunt 2n + 1 situatii posibile sau stri.
Una din cele n monede este mai grea;
30
Una din cele n monede este mai usoar;
Toate au aceeasi greutate.
Fiecare cntrire poate avea unul din trei rezultate posibile: egalitate, talerul
din stnga mai greu sau talerul din dreapta mai greu. n k operaii de
cntrire, sunt posibile 3
k
rezultate ceea ce face posibil distincia ntre cel
mult 3
k
stri diferite. Asadar, 2n + 1 3
k
, sau n (3
k
1)/2.
Din punct de vedere al informaiei, fiecare cntrire aduce cel mult log
2
3
biti de informatie. Sunt 2n + 1 stri posibile, cu un maxim de entropie de
log
2
(2n + 1) biti. n consecin, n aceast situaie sunt necesare cel puin
log
2
(2n + 1)/log
2
3 cntriri pentru a extrage suficient informatie despre
moneda fals. Se observ, rezultatul este acelasi ca acela de mai devreme.
b. Aceast problem cunoaste mai multe abordri posibile. Una din ele se
bazeaz pe sistemul de numeratie ternar.
Numerele {12, 11, , 1, 0, 1, , 12} se pot exprima ntr-un sistem de
numeratie ternar cu alfabetul {1, 0, 1}. De pild numrul 8 este (1)01
deoarece (1)3
0
+ 03
1
+ 13
2
= 8. Se formeaz o matrice cu coloanele
reprezentnd numere pozitive
1 2 3 4 5 6 7 8 9 10 11 12
3
0
1 1 0 1 1 0 1 1 0 1 1 0 L
1
= 0
3
1
0 1 1 1 1 1 1 0 0 0 1 1 L
2
= 2
3
2
0 0 0 0 1 1 1 1 1 1 1 1 L
3
= 8
Se observ c nu toate sumele pe linii sunt nule. Se pot nega(tiviza) unele
coloane pentru a face suma pe linii nul. De exemplu, prin schimbarea de
semn a coloanelor 7, 9, 11 si 12 se obtine
1 2 3 4 5 6 7 8 9 10 11 12
3
0
1 1 0 1 1 0 1 1 0 1 1 0 L
1
= 0
3
1
0 1 1 1 1 1 1 0 0 0 1 1 L
2
= 0
3
2
0 0 0 0 1 1 1 1 1 1 1 1 L
3
= 0
Acum se plaseaz monedele pe balant porivit regulii urmtoare: pentru
cntrirea numrul i, se plaseaz moneda n
pe talerul stng dac n
i
= 1;
alturi dac n
i
= 0;
pe talerul din dreapta dac n
i
= 1.
Rezultatul celor trei cntriri va stabili moneda diferit (dac exist una) si
va spune dac este mai grea sau mai usoar. Rezultatul fiecrei cntriri este
0 dac cele dou talere sunt n echilibru, 1 dac talerul stng este mai greu,
1 dac talerul drept este mai greu. Atunci cele trei cntriri dau dezvoltarea
ternar a indicelui monedei cu defect de greutate. Dac dezvoltarea aste
aceeasi cu aceea din matrice, ea indic faptul c moneda este mai grea.
Dac dezvoltarea este de semn contrar, atunci moneda este mai usoar. De
31
exemplu, 0(1)(1) conduce la 03
0
+ (1)3
1
+ (1)3
2
= 12 ceea ce
indic moneda numrul 12 ca fiind mai grea, 10(1) indic moneda numrul
8 ca fiind mai usoar, 000 indic absenta monedei cu defect.
De ce aceast schem lucreaz? Ea este un cod Hamming corector de o
eroare pentru alfabetul ternar (v.capitolul dedicat subiectului). Urmeaz
cteva detalii.
De observat mai nti cteva proprieti ale matricii de mai sus care este
folosit n schem. Toate coloanele sunt distincte si nici o pereche de
coloane adunate nu dau vectorul nul. Totodat, dac o moned este mai
grea, ea va produce secventa de cntriri care se potriveste cu coloana ei din
matrice. Dac moneda este mai usoar, produce ca secvent de cntriri
negativa coloanei ei. Prin combinarea tuturor acestor fapte, se poate vedea
c orice moned (unic) diferit ca greutate va produce o secvent de
cntriri (unic) si moneda poate fi determinat din acea secvent.
Una din ntrebrile care se pot formula este dac limita stabilit la punctul
(a) este realmente accesibil. De pild, se pot tria 13 monede prin trei
cntriri? Desi nu se poate cu o schem ca aceea de mai sus, se poate n
ipoteza n care s-a extras limita de mai devreme. Limita nici nu interzice
mprtirea monedelor n dou submultimi, nici nu exclude existenta unei
alte monede cunoscut ca normal. n oricare din aceste condiii, este
posibil a gsi moneda diferit dintre cele 13 prin 3 cntriri.
Problema 25. Exemplu de entropie combinat
Fie probabilittile p(x, y) date de tabelul alturat.
Y
X
0 1
0 1/3 1/3
1 0 1/3
Stabiliti:
a. H(X) si H(Y)
b. H(Y|X) si H(X|Y)
c. H(Y, X)
d. H(Y) H(Y|X)
Solutie:
a. H(X) = (2/3)log(3/2) + (1/3)log3 0,918 biti. Aceeasi entropie pentru Y.
b. H(X|Y) = (1/3)H(X|Y = 0) + (2/3)H(X|Y = 1) 0,667 biti. Rezultat identic si
pentru H(Y|X).
c. H(X,Y) = 3(1/3)log3 1,585 biti.
d. H(Y) H(Y|X) 0,251 biti.
32
Problema 26.
Artati c dac H(Y/X) = 0 atunci Y este o functie de X, adic pentru orice x cu
p(x) > 0 exist numai o valoare posibil pentru y cu p(x, y) > 0.
Problema 27.
n sporturile de echip sunt campionate care se ncheie cu o serie de sapte
jocuri. Seria se ncheie cnd una din echipe cstig patru jocuri. Fie X variabila
aleatoare care reprezint rezultatul seriei de jocuri dintre echipele A si B;
valorile posibile ale lui X sunt AAAA, BABABAB, BBBAAAA etc. Fie Y
numrul de jocuri efectiv jucat e, numr ntre 4 si 7. Admitnd c echipele A si
B sunt egale ca trie si c jocurile sunt independente unul de altul, s se
calculeze H(X), H(Y), H(Y/X) si H(X/Y).
Problema 28.
Fie X si Y dou variabile aleatoare care iau valorile x
1
, x
2
, , x
r
, respectiv y
1
, y
2
,
, y
s
si fie Z = X + Y.
a. S se verifice prin calcul direct c H(Z/X) = H(Y/X). Pe baza acestui fapt,
argumentati c dac X si Y sunt independente, atunci H(Y) H(Z).
(Indicatie: informatia este totdeauna nenegativ)
b. Dati un exemplu n care H(X) > H(Z) si H(Y) > H(Z). (Indicatie: ncercati s
faceti H(Z) = 0)
c. n ce conditii are loc relatia H(Z) = H(X) + H(Y)?
Problema 29.
Artati c entropia pentru distributia probabilistic (p
1
, , p
i
, , p
j
, , p
m
)
este mai redus dect cea a distributiei (q
1
, , q
m
) n care q
i
= q
j
= (p
i
+ p
j
)/2 si
q
k
= p
k
pentru orice k diferit de i si j. (Indicatie: calculati H
p
H
q
uznd de
relatia de definitie). Observati c acest rezultat particular este legat de un adevr
general: mpingerea unei distributii spre uniformitate are ca efect cresterea
entropiei.
Solutie. Entropia sursei n forma originar este

=
=
m
k
k k p
p p H
1
log
Entropia sursei modificate este

=
=
m
k
k k q
q q H
1
log
n cele dou sume cei mai multi termeni sunt identici si anume aceia de indice k
diferit de i si de j. Asadar, diferenta celor dou entropii este
33
j j i i
j i j i
p q
p p p p
p p p p
H H log log
2
) (
log
2
) (
2 + +
+ +
=
=
= ]
]
]

|
.
|

\
|

|
.
|

\
|
+
|
.
|

\
|
+
j j i i i i i i
p p p p p p p p log
2
1
log
2
1
2
1
2
1
log
2
1
2
1
2
Pe baza convexittii functiei xlogx, rezult pozitivitatea diferentei. Ceea ce
trebuia demonstrat.
Problema 30. Entropie diferential
Evaluati entropia diferential h(X) = f ln f pentru:
a. Densitatea exponential, f(x) = e
x
, x 0
b.
Densitatea Laplace, f(x) = (1/2) e
'x|
c. Suma variabilelor aleatoare independente X
1
si X
2
distribuite normal cu
mediile u
i
si dispersiile o
i
2
, i = 1, 2.
Problema 31.
Fie p(x) o functie de probabilitate. Dovediti c pentru orice
0 > d
) (
1
log } ) ( Pr{ X H
d
d x p s s
(Inegalitatea lui Markov).
Solutie. Probabilittile sunt numere pozitive, asadar
p(x) d

1/p(x) 1/d.
Expresia entropiei variabilei X este
H(X) =


dx
x p
x p
) (
1
log ) (
Relatia aceasta combinat cu inegalitatea de mai devreme conduce la
H(X)
d
dx x p
d
1
log ) (
1
log =


Deoarece orice probabilitate este un numr nenegativ subunitar,
d
d x p
d
1
log } ) ( Pr{
1
log s >
De unde inegalitatea din enunt.
Problema 32. Entropia unui amestec disjunct
Fie X
1
si X
2
variabile aleatoare discrete extrase conform functiilor de
probabilitate p
1
(.) si p
2
(.) pe multimile X
1
= {1, 2, , m} si X
2
= {m + 1, , n}.
Cele dou multimi nu se intersecteaz, dup cum usor se observ. Fie

=
o
o
X
X
X
1 atea probabilit cu
atea probabilit cu
2
1
34
a. Exprimati H(X) n functie de H(X
1
), H(X
2
) si o.
b. Maximizati n raport cu o pentru a arta c
) ( ) ( ) (
2 1
2 2 2
X H X H X H
+ s si
interpretati utiliznd notiunea dup care 2
H(X)
este dimensiunea efectiv a
alfabetului.
c. Fie X
1
si X
2
distribuite uniform pe multimile lor alfabetice. Care este
valoarea o care maximizeaz entropia H(X) asociat.
Solutie:
a. Aceast problem poate fi rezolvat prin scrierea relatiei de definitie a
entropiei si prin dezvoltarea termenilor diversi pe care aceasta n contine.
Dar aici se utilizeaz algebra legat de entropii pentru o demonstratie mai
simpl. Deoarece X1 si X2 au multimi de definitie disjuncte, se poate scrie

=
o
o
1 atea probabilit cu
atea probabilit cu
2
1
X
X
X
Se defineste o functie de X

=
=
= =
2
1
pentru 2
pentru 1
) (
X X
X X
X f u
Apoi, ca n Problema 21,
H(X) = H(X,f(X)) = H(u) + H(X|u) =
= H(u) + p(u = 1)H(X|u = 1) + p(u = 2)H(X|u = 2) =
= H(o) + oH(X
1
) + (1 o)H(X
2
)
cu H(o) = ologo (1 o)log(1 o).
b. Punnd F(o) = H(o) + oH(X
1
) + (1 o)H(X
2
), se observ c F este o
functie concav de a asa nct ea este maxim n punctul de anulare a
derivatei. Rezolvnd
F(o) = logo + log(1 o) + H(X
1
) H(X
2
) = 0
se obtine succesiv
) ( ) (
) (
*
2 1
1
2 2
2
X H X H
X H
+
= o

) ( ) ( *
2 1
2 2 log ) (
X H X H
F + = o
.
Asadar,
H(X) = H(o) + oH(X
1
) + (1 o)H(X
2
) = F(o)

) ( ) ( *
2 1
2 2 log ) (
X H X H
F + = o
n final,
) ( ) ( ) (
2 1
2 2 2
X H X H X H
+ s
c. Deoarece X
1
si X
2
sunt uniforme pe multimile lor alfabetice, entropiile lor
sunt date de cardinalele acestor multimi. Astfel, H(X
1
) = log|X
1
| = logm si
H(X
2
) = log|X
2
| = log(n m). Prin nlocuirea acestor valori n expresia lui o
*
de la punctul anterior, se obtine
n
m
m n m
m
m n m
m
X H X H
X H
=
+
=
+
=
+
=

) ( 2 2
2
2 2
2
) log( log
log
) ( ) (
) (
*
2 1
1
o
35
Problema 33. Entropie maxim
Aflati densitatea de maxim entropie f care satisface relatiile EX = o
1
, Elnx =
o
2
. n alt formulare, stabiliti
max{h(f)}
n conditiile

=
1
) ( o dx x xf
,

=
2
) ( ) (ln o dx x f x
Ce familie de densitti de probabilitate este aceasta?
Solutie. Distributia de maxim entropie supus la restrictiile din enunt este de
forma
x x x
e cx e x f
1 2 2 1 0
ln
) (

= =
+ +
care face parte din familia distributiilor Gamma. Constantele se aleg pentru a
satisface relatiile restrictive.
Problema 34. Random walk ntr-un cub
O pasre zboar din ncpere n ncpere ntr-un cub 333 (egal probabil prin
fiecare perete interior). Care este rata entropiei?
Solutie: Rata entropiei unei deplasri aleatoare (random walk) ntr-un graf este
dat de relatia
|
.
|

\
|
=
E
E
E
E
H E X H
m
2
,...,
2
) 2 log( ) (
1
Un cub are 8 vrfuri, 12 muchii, 6 fete si un centru. Vrfurile au 3 arce,
muchiile au 4 arce, fetele au 5 arce si centrele au 6 arce. Asadar numrul total
de arce este E = 54. Astfel,
+
|
.
|

\
|
+
|
.
|

\
|
+ =
108
4
log
108
4
12
108
3
log
108
3
8 108 log ) ( X H
03 , 2
108
6
log
108
6
1
108
5
log
108
5
6 =
|
.
|

\
|
+
|
.
|

\
|
+
biti.
Problema 35. Entropia grafurilor
Se consider o deplasare aleatoare (random walk) ntr-un graf (conex) cu 3
arce.
Graful 1 Graful 2 Graful 3
Grafuri cu trei arce
36
a. Care graf are cea mai sczut rat a entropiei? Care este acea rat?
b. Care graf are cea mai nalt rat a entropiei?
Solutie: Sunt posibile trei grafuri cu trei arce, ca n figura alturat.
Rata entropiei este dat de

= =
i
i
i
i j
ij ij i
w
w
w
p p H log log u
Pentru graful 1, {w
i
} ={2, 2, 2} de unde rezult H = 3[(2/6)log2] = 1.
Pentru graful 2, {w
i
} ={1, 1, 1, 3} de unde rezult H = (3/6)log3 0,79.
Pentru graful 3, {w
i
} ={1, 2, 2, 1} de unde rezult H = 2[(2/6)log2] 0,667.
Asadar, graful 1 are cea mai mare entropie, graful 3 are cea mai mic entropie.
Problema 36. Entropia unui arbore aleator
Se consider urmtoarea metod de generare aleatoare a unui arbore binar cu n
noduri. Mai nti se dezvolt nodul rdcin:
Apoi se dezvolt unul din cele dou noduri terminale la ntmplare:
La pasul k, se alege unul din cele k 1 noduri terminale potrivit unei distributii
uniforme si se dezvolt acel nod. Se continu pn cnd se genereaz n noduri
terminale. Astfel, o secvent care conduce la cinci noduri poate arta astfel:
37
Surprinztor, metoda urmtoare de generare de arbori aleatori produce aceeasi
distributie probabilistic pe arbori cu n noduri terminale. Mai nti se alege un
ntreg N
1
uniform distribuit pe multimea {1, 2, , n}. Se obtine imaginea:
Apoi se alege un ntreg N
2
uniform distribuit pe {1, 2, ,N
1
1} si,
independnent un alt ntreg N
3
uniform distribuit peste {1, 2, , (n N
1
) 1}.
Figura se modific astfel:
Se continu procesul pn cnd nu se mai pot face alte subdiviziuni.
(Echivalenta celor dou scheme de generare decurge, de pild, din modelul
urnei datorat lui Polya).
Se noteaz acum cu T
n
un arbore aleator cu n noduri generat ca mai sus.
Distributia probabilistic a acestor arbori pare dificil de descris, dar se poate
afla entropia acestei distributii n form recursiv.
Mai nti cteva exemple.
Pentru n = 2, exist un singur arbore. Asadar, H(T
2
) = 0.
Pentru n = 3, sunt doi arbori posibili, egal probabili: entropia este H(T
3
) = log2.
Pentru n = 4, sunt posibili cinci arbori, cu probabilittile 1/3, 1/6, 1/6, 1/6, 1/6.
Acum, pentru o relatie de recurent, fie N
1
(T
n
) numrul de noduri terminale ale
arborelui T
n
n jumtatea din dreapta a acelui arbore. Justificati fiecare din pasii
urmtori:

+ =
+

+ =
+ =
+ =
=
1
1
1
1
1
1 1
1
) (
1
2
) 1 log(
)] ( ) ( [
1
1
) 1 log(
) | ( ) 1 log(
) | ( ) (
) , ( ) (
n
k
k
n
k
k n k
n
n
n n
T H
n
n
T H T H
n
n
N T H n
N T H N H
T N H T H
Utilizati succesiunea de egalitti de mai sus pentru a arta c
(n 1)H
n
= nH
n 1
+ (n 1)log(n 1) (n 2)log(n 2)
N
1
n N
1
N
1
N
1
N
2
N
3
n N
1
N
3
38
sau
n
n n
c
n
H
n
H
+

=

1
1
cu adaosul c
n
potrivit definit. Deoarece Lc
n
= c < , s-a dovedit prin aceasta c
H(T
n
)/n tinde ctre o constant. Astfel, numrul mediu statistic de biti necesari
pentru a descrie arborele aleator T
n
creste liniar cu n.
Solutie:
Prin conditionarea n lant a entropiilor si pentru c N
1
este o functie de T
n
,
H(T
n
,N
1
) = H(T
n
) + H(N
1
|T
n
) = H(T
n
) + 0.
Prin conditionarea n lant a entropiilor, H(T
n
,N
1
) = H(N
1
) + H(T
n
|N
1
).
H(N
1
) = log(n 1) deoarece N
1
este uniform pe {1, 2, , n 1}.
Prin definitia entropiei conditionate,


=

=
=

= = = =
1
1
1
1
1
1 1 1
) | (
1
1
) | ( ) ( ) | (
n
k
n
n
k
n n
k N T H
n
k N T H k N p N T H
Deoarece conditionat de N
1
, subarborele din stnga si subarborele din dreapta
sunt alegeri independente, H(T
n
|N
1
= k) = H(T
k
,T
n k
|N
1
= k) = H(T
k
) + H(T
n k
)
asa nct

=

+

=
1
1
1
)] ( ) ( [
1
1
) | (
n
k
k n k n
T H T H
n
N T H
Printr-o simpl schimbare de variabile,


=

=

=
1
1
1
1
) ( ) (
n
k
k
n
k
k n
T H T H
Dac punem H
n
= H(T
n
),

=
+ =
1
1
2 ) 1 log( ) 1 ( ) 1 (
n
k
k n
H n n H n

+ =
2
1
1
2 ) 2 log( ) 2 ( ) 2 (
n
k
k n
H n n H n
Prin scderea relatiei din urm din cea anterioar se obtine
(n 1)H
n
(n 2)H
n 1
= (n 1)log(n 1) (n 2)log(n 2) + 2H
n 1
sau
n
n n n
C
n
H
n n
n n
n
n
n
H
n
H
+

=

1 ) 1 (
) 2 log( ) 2 ( ) 1 log(
1
1 1
Asupra termenului C
n
se mai poate lucra:
) 1 (
) 2 log( 2
1
) 2 log( ) 1 log(
) 1 (
) 2 log( ) 2 ( ) 1 log(

=
n n
n
n
n
n
n
n n
n n
n
n
C
n
Substituind ecuatia pentru H
n 1
n ecuatia pentru H
n
si procednd recursiv, se
obtine o sum telescopic
) 1 log(
1
) 1 (
) 2 log( 2
2
3
2
1
+

= + =

= =
n
n i i
i H
C
n
H
n
i
n
i
i
n
Deoarece limita cnd n a ultimului termen din expresia din urm este nul
39


=

=

=

=
2
2
3
2
3
log
2
) 1 (
) 1 log( 2
) 1 (
) 2 log( 2
lim
i i i
n
n
i
i i
i
i i
i
n
H
Pentru i suficient de mare,
i i s log
de unde rezult c ultima serie este
convergent (este majorat de seria cu termenul general i
(3/2)
, convergent la
rndul ei).
Limita de mai devreme exist. O evaluare pe calculator arat c ea are valoare
aproximativ de 1,736 biti.
Asadar, numrul de biti necesari pentru a descrie un arbore binar aleator cu n
noduri creste liniar cu n.
Problema 37. Lan Markov
Se d matricea
]
]
]
]

= =
2 / 1 4 / 1 4 / 1
4 / 1 2 / 1 4 / 1
4 / 1 4 / 1 2 / 1
] [
ij
P P
Fie X
1
distribuit uniform pe strile {0, 1, 2}. Fie {X
i
}
1

un lan Markov cu
matricea de tranzitie P, astfel nct Pr(X
n + 1
= j|X
n
= i) = P
ij
, i, j
e
{0, 1, 2}.
a. Este {X
n
} stationar?
b. Aflati lim
n H(X
1
, , X
n
).
Considerati acum procesul derivat Z
1
, Z
2
, , Z
n
n care
Z
1
= X
1
Z
i
= X
i
X
i 1
(mod 3), i = 2, 3, , n
Asadar, Z
n
face o codare a tranzitiilor, nu a strilor.
c. Aflati H(Z
1
, Z
2
, , Z
n
).
d. Aflati H(Z
n
) si H(X
n
) pentru n 2.
e. Aflati H(Z
n
|Z
n 1
) pentru n 2.
f. Sunt, pentru n 2, Z
n 1
si Z
n
independente?
Solutie:
a. Fie u
n
functia de probabilitate la momentul n. Deoarece u
1
= (1/3, 1/3, 1/3)
si u
2
= u
1
P = u
1
, u
n
= u
1
= (1/3, 1/3, 1/3) pentru orice n si {X
n
} este
stationar.
Alternativ, observatia c P este dublu stochastic conduce la aceeasi
concluzie.
b. Deoarece {X
n
} este un proces Markov stationar
2
3
4
1
,
4
1
,
2
1
3
1
3
) | ( ) ( ) | ( ) ,..., ( lim
2
0
1 2 1 1 2 1
=
|
.
|

\
|
=
= = = = =

=

H
k X X H k X P X X H X X H
k
n n
c. Deoarece secventele (X
1
, , X
n
) si (Z
1
, , Z
n
) sunt n corespondent
biunivoc, prin regula conditionrilor succesive ale entropiilor si din
markovianism
40
H(Z
1
, , Z
n
) = H(X
1
, , X
n
) =
=

=

n
k
k k
X X X H
1
1 1
) ,..., | (
) 1 (
2
3
3 log ) | ( ) 1 ( ) ( ) | ( ) (
1 2 1
2
1 1
+ = + = + =

=

n X X H n X H X X H X H
n
k
k k
Ca alternativ, se pot utiliza rezultatele de la punctele urmtoare, (d), (e) si
(f). Deoarece Z
1
, , Z
n
sunt independente si Z
2
, , Z
n
sunt distribuite
identic, cu functia de probabilitate (1/2, 1/4, 1/4),
H(Z
1
, , Z
n
) = H(Z
1
) + + H(Z
n
) = H(Z
1
) + (n 1)H(Z
2
) =
) 1 (
2
3
3 log + n
d. Deoarece {X
n
} este un proces Markov stationar cu u
n
= (1/3, 1/3, 1/3),
H(X
n
) = H(X
1
) = H(1/3, 1/3, 1/3) = log3.
Pentru n 2

=
4 / 1 tea probabilta cu 2
4 / 1 tea probabilta cu 1
2 / 1 tea probabilta cu 0
n
Z
Asadar,
H(Z
n
) = H(1/2, 1/4, 1/4) = 3/2.
e. Datorit simetriei lui P, Pr[Z
n
|Z
n1
] = Pr[Z
n
] pentru orice n 2. Astfel,
H[Z
n
|Z
n1
] = H[Z
n
] = 3/2.
Ca demonstratie alternativ, utiliznd rezultatul de la punctul (f), se poate
ajunge elementar la aceeasi concluzie.
f. Fie k 2. Se observ din simetria lui P c Z
k+1
= X
k+1
X
k
este independent
de X
k
. Acum din
Pr[Z
k+1
|X
k
, X
k1
] = Pr[X
k+1
X
k
|X
k
, X
k1
] = Pr[X
k+1
X
k
|X
k
] =
= Pr[X
k+1
X
k
] = Pr[Z
k+1
]
rezult c Z
k+1
este independent de (X
k
, X
k1
) si este deci independent si de
Z
k
= X
k
X
k1
. Pentru k = 1, din nou din simetria lui P rezult imediat c Z
2
este independent de Z
1
= X
1
.
Problema 38. Markov de ordinul doi
Fie {X
n
}, X
n
e
{0, 1} un proces stochastic binar. Fie X
n + 1
= X
n

X
n 1

Z
n + 1
,
cu

operatorul de adunare modulo 2 si {Z
n
} un proces Bernoulli(p). Care este
rata entropiei pentru {X
n
}? Ar putea fi util a redefini acest proces Markov de
ordinul doi ca un proces Markov de primul ordin.
Solutie: Fie Y
i
= (X
i
, X
i1
) pentru orice i. Este usor de vzut c lim
n
H(X
n
)/n =
lim
n
H(Y
n
)/n, si c {Y
i
} este un proces Markov de ordinul 1. Asadar rata
entropiei pentru {X
n
} este aceeasi cu rata entropiei procesului {Y
n
}. Deoarece
{Y
n
} este un proces Markov de ordinul nti, are loc
) ( ) (
1
lim ) | (
1
lim ) (
1
lim
1 1
1
p H p H
n
Y Y H
n
Y H
n
n
i
n
n
i
i i n n n
= = =

=

=

Se poate conchide c {X
n
} are rata entropiei H(p).
41
Alternativ, se poate ataca direct rata entropiei unui proces Markov de ordinul 2
{X
n
} astfel
) ( ) , | (
1
lim
) | (
1
lim ) (
1
lim
1
2 1
1
1
p H X X X H
n
X X H
n
X H
n
n
i
i i i n
n
i
i
i n
n
n
=
= =


=

=


n ultima egalitate se evidentiaz ordinul procesului, 2, iar limita provine din
faptul c
) ( ) , | (
2 1
p H X X X H
n n n
=
pentru orice n 3 (Cesro).
42
43
CANALE DE TRANSMITERE A INFORMATIEI
Lucrarea 4
Tema: Transinformatia si capacitatea canalelor.
Canalul are un alfabet de intrare alctuit din n simboluri. Alfabetul observat la
iesire este compus din m simboluri.
Matricea de probabilitti conditionate care caracterizeaz canalul este o matrice
nm cu sumele elementelor fiecrei linii egale cu unitatea. n program, aceast
matrice este generat aleator.
Sursa de informatie care debiteaz la intrarea canalului este caracterizat de un
vector (linie) cu n elemente, probabilittile de aparitie ale simbolurilor sursei.
Vectorul acesta este generat, de asemenea, aleator. Se evalueaz o entropie a
sursei numit si entropie apriori.
Probabilittile simbolurilor sursei observate la iesirea canalului rezult prin
multiplicarea vectorului asociat sursei cu matricea canalului. Rezultatul acestei
operatii este un vector cu m componente care nsumate dau tot unitatea.
Entropia acestei surse secundare este uzual diferit de entropia apriori datorit
lucrrii canalului asupra informatiei generate de surs.
n conditiile observrii unui anumit simbol/caracter la iesire se pot evalua
probabilitti conditionate de acest eveniment pentru fiecare simbol al sursei.
Este ceea ce se face n program n secventa median, acolo unde se calculeaz
matricea pab. Coloanele acestei matrici sunt tocmai probabilittile conditionate
mentionate. Suma lor este unitar si se calculeaz o entropie aposteriori a sursei
n fiecare caz, pentru fiecare din cele m observatii posibile la iesirea canalului.
O medie a acestor entropii care ia n considerare probabilittile simbolurilor la
iesire produce o entropie a sursei de la intrare conditionat de sursa de la iesirea
canalului.
Diferenta dintre entropia (apriori) a sursei si entropia conditionat evaluat
astfel poart numele de transinformatie sau de informatie mutual si este
cantitatea de informatie transmis prin canal.
Transinformatia este variabil pentru surse diferite care debiteaz la intrarea
canalului. Variabilitatea se refer numai la lista probabilittilor de aparitie a
simbolurilor sursei si nu la modificarea vreuneia din cele dou multimi
alfabetice, de intare si de iesire, cu care lucreaz canalul.
Transinformatia este o mrime simetric: dac intrarea devine iesire si
viceversa, dac matricile de probabilitti conditionate se schimb ntre ele, pab
n loc p, se obtine aceeasi valoare a transinformatiei. Un canal lucreaz la fel de
44
bine (sau de ru) si ntr-un sens si n cellalt. Se propune studentilor realizarea
unei variante a programului capabil a evalua informatia mutual prin canal n
situatia aceasta modificat.
Exist o limit superioar a transinformatiei, care nu poate fi depsit. Aceast
transinformatie maxim poart numele de capacitate a canalului. Capacitatea
canalului se poate evalua analitic rezolvnd o problem de extrem supus la
legturi/restrictii, pe o multime de n variabile, probabilittile simbolurilor de la
intare, supuse la legtura/restrictia unic de sum general egal cu unitatea.
n program s-a preferat numai o explorare a limitei maxime pentru
transinformatie prin generarea aleatoare a mai multor surse cu n simboluri si
prin evaluarea de fiecare dat a informatiei mutuale. Se poate observa o cea-
mai-mare-valoare a transinformatiei ntre aceste realizri posibile, care se
apropie de capacitatea canalului.
Se sugereaz si explorarea canalelor binare (n = m = 2) simetrice (matricea p
simetric fat de diagonala principal) si a canalelor binare cu stergere (n = 2, m
= 3) care au n alfabetul de iesire, nafar de valorile binare obisnuite si un al
treilea simbol care nu poate fi asimilat niciunuia din valorile transmise.
Se propune urmtorul script Matlab:
clear
n=3;
m=4;
p=rand(n,m);
for i=1:n
suml=sum(p(i,:));
p(i,:)=p(i,:)/suml;
end % crearea unei matrici a canalului
matricea_canalului=p
a=rand(1,n);
a=a/sum(a); % probabilitati sursa de intrare
b=a*p; % probabilitati sursa observata la iesire
probabilitatile_simbolurilor_de_intrare=a
ha=entropie(a); % entropia apriori
entropia_apriori=ha
probabilitatile_simbolurilor_de_iesire=b
hb=entropie(b);
entropia_sursei_observate_la_ieisre=hb
pab=zeros(n,m);
for i=1:n
for j=1:m
pab(i,j)=p(i,j)*a(i)/b(j);
end
end
probabilitati_intrare_condiditionate_de_iesiri=pab
for j=1:m
enap(j)=entropie((pab(:,j))');
end % entropii aposteriori
entropii_aposteriori=enap
entropia_conditionata_de_iesirea_observata=b*enap'
transinformatia=ha-b*enap'
45
display('*** Uremaza o cautare aleatoare a capacitatii canalului
***')
display('*** Pentru continuare apasati Enter! ***')
pause % cautarea aleatoare a capacitatii canalului
for k=1:20
a=rand(1,n);a=a/sum(a);b=a*p;
ha=entropie(a);
for i=1:n
for j=1:m
pab(i,j)=p(i,j)*a(i)/b(j);
end
end
for j=1:m
enap(j)=entropie((pab(:,j))');
end
sursa_la_intrare_si_transinformatia=[a ha-b*enap']
end
Pentru un canal binar simetric, secventa introductiv a scriptului se modific
astfel:
clear
n=2;
m=2;
p=rand(n,m);
for i=1:n
suml=sum(p(i,:));
p(i,:)=p(i,:)/suml;
end % crearea unei matrici a canalului
p(2,1)=p(1,2);p(2,2)=p(1,1); % simtetrizarea
Modificrile aduse aceleiasi secvente pentru cazul unui canal binar simetric cu
stergere sunt urmtoarele:
clear
n=2;
m=3;
p=rand(n,m);
for i=1:n
suml=sum(p(i,:));
p(i,:)=p(i,:)/suml;
end % crearea unei matrici a canalului
p(2,1)=p(1,3);p(2,2)=p(1,2);p(2,3)=p(1,1); % simterizarea
Problema 39.
Artati c un canal de transmitere a informatiei caracterizat de matricea
]
]
]
]
]

=
3 / 2 3 / 1 0
3 / 1 3 / 1 3 / 1
0 3 / 1 3 / 2
P
46
are o capacitate care este atins la o intrare care are un simbol de probabilitate
nul. Care este capacitatea acestui canal? Gsiti o explicatie intuitiv a faptului
c una din literele alfabetului de intrare nu este folosit.
Solutie: Fie probabilittile simbolurilor de la intrare P(A) =
] [ r q p
cu p + q
+ r = 1. Atunci, probabilittile simbolurilor de iesire sunt
]
]
]

+ + =
]
]
]
]

= r q q p r q p B P
3
2
3
1
3
1
3
1
3
2
3 / 2 3 / 1 0
3 / 1 3 / 1 3 / 1
0 3 / 1 3 / 2
] [ ) (
si probabilittile simbolurilor de la intrare (A), conditionate de cele de la iesire
(B) sunt
]
]
]
]

+ +
+ +
=
) 2 /( 2 ) 2 /( 0
0 ) 2 /( ) 2 /( 2
) / (
r q r r q q
r q p
q p q q p p
B A P
Entropia apriori a sursei A este
r
r
q
q
p
p A H
1
log
1
log
1
log ) ( + + =
Entropiile aposteriori ale sursei A sunt
q
q p
q p
q
p
q p
q p
p
b A H
+
+
+
+
+
=
2
log
2 2
2
log
2
2
) / (
1
) (
1
log
1
log
1
log ) / (
2
A H
r
r
q
q
p
p b A H = + + =
r
r q
r q
r
q
r q
r q
q
b A H
2
2
log
2
2 2
log
2
) / (
3
+
+
+
+
+
=
si entropia sursei A conditionat de B este
3
2
2
2
log
2
2
3
2
2
2
log
2
2
3
2
) (
3
2
) (
) 2 log( ) 2 (
3
1
) 2 log( ) 2 (
3
1
) (
3
1
) (
3
2
) (
3
2
) 2 log( ) 2 (
3
1
2
1
log
3
2 1
log
3
1
) (
3
1
) 2 log( ) 2 (
3
1 1
log
3
1
2
1
log
3
2
) / (
3
2
) / (
3
1
) / (
3
2
) / (
3 2 1
+
+
+

+
+
+ =
= + + + + + +
+ + + =
= + + + + +
+ + + + + + =
=
+
+ +
+
=
r q
r q
q p
q p
r p A H
r q r q q p q p
A H r p A H
r q r q
r
r
q
q
A H q p q p
q
q
p
p
b A H
r q
b A H b A H
q p
B A H
Transinformatia (informatia mutual) care trebuie maximizat pentru a stabili
capacitatea canalului este dat de relatia
= = ) / ( ) ( ) ; ( B A H A H B A I
47
3
2
2
2
log
2
2
2
2
log
2
2
3
2
) (
3
2

|
|
.
|

\
|
+
+
+
+
+
+ + =
r q
r q
q p
q p
r p
Paranteza contine expresia entropiei unei surse cu dou simboluri. Aceasta este
maxim cnd simbolurile sunt echiprobabile
2
2
2
2 r q q p +
=
+
adic atunci cnd p = r. Primul termen este maxim cnd p = r = 1/2 si q = 0.
Ultimul termen este constant si nu conteaz la maximizarea transinformatiei.
Problema 40.
Se consider un canal cu intrri binare care are si erori si stergere (stergere =
aparitia la iesire a unui al treilea simbol, neuzual). Fie o probabilitatea erorii si
fie c probabilitatea stergerii astfel nct canalul este reprezentat de graful din
figur:
Aflati capacitatea acestui canal.
Particularizati pentru cazul canalului binar simetric (c = 0).
Particularizati pentru cazul canalului binar cu stergere (o = 0).
Problema 41.
Se consider un canal cu alfabet binar care preia simboluri de doi biti si produce
la iesire simboluri de doi biti conform asocierii urmtoare: 00 01, 01 10,
10 11 si 11 00. Astfel, dac secventa de doi biti 01 este introdus n
canal, iesirea este 10 cu probabilitatea 1. Fie X
1
, X
2
dou simboluri la intrare si
Y
1
, Y
2
simbolurile de iesire corespunztoare.
Calculati informatia mutual I(X
1
, X
2
; Y
1
, Y
2
) ca functie de distributia la intrare
a celor patru perechi de intrare posibile.
Artati c pentru transmiterea n perechi capacitatea acestui canal este de 2 biti.
Artati c la maximizare prin distributia la intrare, I(X
1
; Y
1
) = 0.
Asadar, distributia secventelor de intrare care atinge capacitatea canalului nu
maximizeaz n mod necesar informatia mutual ntre simboluri individuale si
corespunztoarele lor la iesire.
48
Problema 42. Canal sum
Se consider dou canale fr memorie (X
1
, p(y
1
/x
1
),Y
1
) si (X
2
, p(y
2
/x
2
),Y
2
) cu
capacittile C
1
, respectiv C
2
. Se defineste un canal nou astfel: alfabetul de
intrare este reuniunea celor dou multimi alfabetice X
1
si X
2
, alfabetul de iesire
este reuniunea celor dou multimi alfabetice Y
1
si Y
2
si matricea de probabilitti
de tranzitie este p(y/x) = p(y
1
/x
1
) dac x
e
X
1
si p(y/x) = p(y
2
/x
2
) dac x
e
X
2
.
Asadar, canalul are la dispozitie ambele canale simple, dar acestea sunt utilizate
alternativ. Artati c acest canal sum are capacitatea
) 2 2 log(
2 1
C C
C + =
Utilizati acest rezultat pentru a calcula capacitatea canalului urmtor:
Problema 43. Capacitatea canalelor
Calculati capacitatea canalelor de mai jos, caracterizate de multimile alfabetice
specificate si de matricile de tranzitie alturate:
X = Y = {0, 1, 2},
]
]
]
]

=
3 / 1 3 / 1 3 / 1
3 / 1 3 / 1 3 / 1
3 / 1 3 / 1 3 / 1
) | ( x y p
X = Y = {0, 1, 2},
]
]
]
]

=
2 / 1 0 2 / 1
2 / 1 2 / 1 0
0 2 / 1 2 / 1
) | ( x y p
X = Y = {0, 1, 2, 3},
]
]
]
]
]


=
q q
q q
p p
p p
x y p
1 0 0
1 0 0
0 0 1
0 0 1
) | (
Problema 44. Capacitatea canalelor
Care sunt capacittile canalelor
2
1
0
2
1
0
p
p
1 p
1 p
1
49
Y
p p
p p
p p
p p
X

4 0 0 1 4
3 1 0 0 3
2 0 1 0 2
1 0 0 1 1
Y
p p
p p
p p
X

3 0 1 3
2 1 0 2
1 0 1 1
?
Problema 45. Canal cu stergere
Fie {X, p(y|x), Y} un canal discret fr memorie de capacitate C. Se admite c
acest canal este conectat imediat n cascad cu un canal cu stergere {Y, p(s|y),
S} care sterge fractia o din simboluri.
Mai precis, S = {y
1
, y
2
, , y
m
, e} si Pr[S = y|X = x] = (1 o)p(y|x) pentru y
e
Y
si Pr[S = e|X = x] = o.
Evaluati capacitatea acestui canal.
Problema 46. Informatia mutual ntre fetele unei monede
a. Se consider o aruncare a unei monede corecte. Care este informatia
mutual ntre fata de deasupra si fata de dedesubt a monedei?
b. Un zar corect cu 6 fete este fcut s se rostogoleasc. Care este informatia
mutual ntre fata de deasupra si fata de dedesubt?
c. Care este informatia mutual ntre faa de deasupra a unui zar si faa din fa
(cea mai vizibil pentru experimentator)?
Solutie:
a. Se observ c
I(T; B) = H(B) H(B|T) = log2 = 1
deoarece B ~ Bernoulli(1/2) si B este o functie de T. Aici B si T sunt
prescurtri pentru bottom si top.
b. Se observ c fata de dedesubt B este din nou functie de fata de deasupra T
(B + T = 7) si sunt sase posibilitti egal probabile pentru B. Asadar,
I(T; B) = H(B) H(B|T) = log6 = log3 + 1
c. Se observ c avnd rezultatul relativ la faa din fa F, rmn patru
posibiliti egal probabile pentru faa de deasupra T. Asadar,
I(T; F) = H(B) H(B|F) = log6 log4 = log3 1
deoarece T este repatizat uniform pe {1, 2, , 6}.
Problema 47. Dubla privire
Comparati informatia mutual I(X; Y
1
, Y
2
) pe care (Y
1
, Y
2
) o furnizeaz despre
X, cu suma informatiilor mutuale I(X; Y
1
) si I(X; Y
2
) pentru fiecare din cele dou
functii de probabilitate de mai departe.
a. Dou priviri independente:
50
p(x, y
1
, y
2
) = p(x)p(y
1
|x)p(y
2
|x)
b. O privire la dou observatii independente:
p(x, y
1
, y
2
) = p(y
1
)p(y
2
)p(x|y
1
, y
2
)
Solutie:
a. Dou priviri independente:
I(X; Y
1
, Y
2
) = H(Y
1
, Y
2
) H(Y
1
,Y
2
|X) =
= [H(Y
1
) + H(Y
2
) I(Y
1
;Y
2
)] H(Y
1
,Y
2
|X) =
= [H(Y
1
) + H(Y
2
) I(Y
1
;Y
2
)] [H(Y
1
|X) + H(Y
2
|X)] =
= I(X;Y
1
) + I(X;Y
2
) I(Y
1
;Y
2
) I(X;Y
1
) + I(X;Y
2
)
n succesiunea de relatii de mai sus s-au utilizat: relatia de definitie a
informatiei mutuale, formula pentru calculul entropiei surselor compuse,
absenta conditionrii ntre Y
1
si Y
2
cnd este dat X si nenegativitatea informatiei
mutuale.
b. O privire la dou observatii independente:
I(X; Y
1
, Y
2
) = H(Y
1
, Y
2
) H(Y
1
,Y
2
|X) =
= [H(Y
1
) + H(Y
2
)] H(Y
1
,Y
2
|X) =
= [H(Y
1
) + H(Y
2
)] [H(Y
1
|X) + H(Y
2
|X) I(Y
1
;Y
2
|X)] =
= I(X;Y
1
) + I(X;Y
2
) + I(Y
1
;Y
2
|X) I(X;Y
1
) + I(X;Y
2
)
Aici s-au folosit: relatia de definitie a informatiei mutuale, independenta ntre
Y
1
si Y
2
, identitatea pentru entropia H(Y
1
,Y
2
|X), din nou relatia de definitie a
informatiei mutuale si nenegativitatea informatiei mutuale.
Problema 48. Rata entropiei pentru secvente restrictionate
n cazul nregistrrilor magnetice, mecanismul de nregistrare si de redare a
bitilor impune restrictii asupra secventei de biti care poate fi nregistrat. De
pild, pentru a asigura sincronizarea adecvat, este necesar adesea a limita
lungimea secventelor de zerouri ntre doi de unu. De asemenea pentru a reduce
interferenta ntre simboluri, poate fi impus ca necesar cel putin un zero ntre doi
de unu. Se arat n continuare un exemplu simplu de astfel de restrictii.
Se presupune c se cere ca ntr-o secvent, ntre doi de 1 s fie cel putin un 0 si
cel mult doi de zero. Astfel, secvente de genul 101001 si 0101001 sunt valide,
dar 0110010 si 0000101 nu sunt. Se urmreste calculul numrului de secvente
valide de lungime n.
a. Artati c multimea de secvente restrictionate este aceeasi cu multimea
cilor permise n diagrama de stare alturat.
1 2 3
51
b. Fie X
i
(n) numrul de ci valide de lungime n cu finalul n starea i.
Argumentati c X(n) = [X
1
(n) X
2
(n) X
3
(n)]
T
verific relatia de recurent de
mai jos:
) 1 (
) 1 (
) 1 (
) 1 (
0 1 0
0 0 1
1 1 0
) (
) (
) (
3
2
1
3
2
1
=
]
]
]
]

]
]
]
]

=
]
]
]
]

n A
n X
n X
n X
n X
n X
n X
X
cu conditia initial X(1) = [1 1 0]
T
.
c. Apoi, prin inductie are loc
X(n) = AX(n 1) = A
2
X(n 2) = = A
n1
X(1)
Utiliznd descompunerea lui A dup valorile proprii, pentru cazul valorilor
proprii distincte, se poate scrie A = U
1
AU, cu A matricea diagonal a
valorilor proprii. Atunci A
n1
= U
1
A
n1
U. Artati c se poate scrie
X(n) =
1
1
n

Y
1
+
1
2
n

Y
2
+
1
3
n

Y
3
n care Y
1
, Y
2
, Y
3
nu depind de n. Pentru n mare, aceast sum este
dominat de termenul cel mai mare. Demonstrati c pentru i = 1, 2, 3 are loc
log ) ( log
1
n X
n
i
cu valoarea proprie (pozitiv) ce mai mare. Astfel, pentru n mare,
numrul de secvente de lungime n creste ca
n
. Calculati pentru matricea
A de mai sus (cazul n care valorile proprii nu sunt distincte poate fi
manipulat n mod similar).
d. Se abordeaz acum o tratare diferit. Se consider lantul Markov cu
diagrama de stare dat la punctul a. dar cu probabilittile tranzitiilor
arbitrare. Prin urmare matricea de tranzitie a lantului Markov este
]
]
]
]

=
0 1 0
0 0 1
1 0
o
o
P
Artati c distributia stationar a lantului Markov este
T
]
]
]


=
o
o
o o
u
3
1
3
1
3
1
e. Maximizati rata entropiei lantului Markov n raport cu o. Care este entropia
maxim a lantului?
f. Comparati rata maxim a entropiei obtinut la punctul e. cu log de la
punctul c. De ce cele dou rspunsuri sunt identice?
Problema 49. Un canal de comunicatie
Figura alturat reprezint schematic un canal de comunicatie.
52
Intrarea este pe dou niveluri, fie X = A, fie X = A, cu A o amplitudine de
stabilit n cursul solutionrii problemei. Canalul este afectat de zgomotul aditiv
Z, gaussian cu media 0 si dispersia 100.
a. Gsiti constanta K astfel nct
Pr(Y < A + K|X = A) = 0,90
Pr(A K Y |X = A) = 0,90
Valoarea K se poate calcula chiar dac A nu a fost nc evaluat. (Indicatie:
se utilizeaz faptul c dac X = A atunci distributia conditionat a lui Y
este gaussian cu media A si cu dispersia 100 si dac X = A atunci
distributia conditionat a lui Y este gaussian cu media A si cu dispersia
100).
Solutie: Repartitia valorilor unei variabile aleatoare X normal (gaussian) este
descris de functia densitate de probabilitate
2
2
2
) (
2
1
) (
o
t o
m x
e x f

=
definit pe ntreaga ax real, depinznd de parametrii m (media) si o
2
(dispersia). Acesti parametri sunt n cazul de fat, respectiv, A si 100.
Prima valoare K cerut se calculeaz prin rezolvarea ecuatiei n x
9 , 0 ) ( =


x
dx x f
punnd n f(x), m = A.
A doua valoare K cerut se calculeaz prin rezolvarea unei alte ecuatii n x
9 , 0 ) ( 1 =


x
dx x f
punnd n f(x) de data aceasta, m = A.
O integral de genul celor care apar n cele dou ecuatii este cunoscut n
literatur ca functia de repartitie F(x) egal cu probabilitatea ca variabila
aleatoare X s ia valori inferioare valorii x. Valorile functiei de repartitie pentru
valori x variate se pot calcula de pild cu functia Matlab normcdf sau, invers,
cu functia norminv , dar sunt si tabelate n crti pentru o variabil aleatoare
normal normat (de medie nul si de dispersie egal cu unitatea). Un apel
Matlab
x = norminv(0.9, 0, 10)
produce valoarea x = 12.8155, iar un apel
+
X = A Y = X + Z
Z
53
x = norminv(0.1, 0, 10)
produce valoarea x = - 12.8155. Acestea sunt valorile pentru care functia de
repartitie ia valoarea 0,9, respectiv 0,1, atunci cnd media variabilei este zero si
abaterea medie ptratic este o = 10. O deplasare a mediei n A sau n + A
deplaseaz si valorile x cu aceleasi cantitti. Este usor de constatat c ambele
ecuatii au solutia K = 12,8155.
b. Alegeti nivelul A, acel numr real pozitiv minim pentru care evenimentele
{Y < A + K} si {A K Y } nu se pot produce simultan.
Solutie: Cele dou intervale de valori care corespund celor dou evenimente
trebuie s fie disjuncte. La limit, este permis ca A + K = A K, adic A = K =
12,8155.
c. Pentru numerele K si A stabilite mai devreme, se formeaz din observatiile
Y estimrile X

ale intrrilor X ale canalului conform relatiei

+ <
=
altfel

A
K A Y A
X
Intuitiv, estimarea X

a lui X ar trebui s fie corect n proportie de 90% din


cazuri. Verificati aceast posibilitate dup procedur a care urmeaz:
Utilizati Matlab-ul pentru a alege pseudoaleator un vector x de 10.000
de intrri ale canalului simulate, astfel nct fiecare intrare aleas la
ntmplare s fie din multimea cu dou elemente { A, A}.
Utilizati Matlab-ul pentru a genera pseudoaleator cu functia Matlab
randn un vector z de 10.000 de valori ale componentei de zgomot din
canal.
Formati vectorul y = x + z de 10.000 de iesiri simulate.
Formati un vector xhat de 10.000 de estimri ale intrrilor canalului,
fiecare format din componenta y potrivit aplicatiei Y
X

de mai sus.
Estimati probabilitatea Pr(X = X

) prin evaluarea frecventei relative cu


care elementele din x sunt egale cu elementele corespunztoare din
xhat.
Solutie: Se propune urmtorul script Matlab:
clear
a=norminv(0.9,0,10);
n=10000;
x=unidrnd(2,1,n);
x=2*a*(x-1.5);
z=normrnd(0,10,1,n);
y=x+z;
nc=0;
for i=1:n
if x(i)*y(i)>0
nc=nc+1;
end
end
nc
nc/n
54
55
CODAREA PENTRU CANALE FR PERTURBATII
Lucrarea 5.
Tema 1. Algoritmul Huffman pentru coduri compacte
Se consider o surs fr memorie generatoare a n simboluri, 2 n 15.
Simbolurile pot fi chiar numerele naturale de la 1 la n.
Programul Matlab care urmeaz este implementarea algoritmului Huffman n
cazul binar si se disting cu usurint cteva etape de calcul.
Se alege mai nti numrul n de simboluri, printr-o modificare n linia a doua a
programului.
Se genereaz aleator n numere subunitare, probabilittile de aparitie a celor n
simboluri. Probabilittile se ordoneaz descresctor, asa cum cere algoritmul
Huffman.
Se parcurge partea direct a algoritmului cnd se realizeaz succesiv sursele
reduse, cu grija de a fi si ordonate. Se ajunge n cele din urm la o surs redus
cu numai dou simboluri.
Urmeaz parcursul invers n cadrul cruia se atribuie efectiv, pas cu pas, coduri
simbolurilor sursei.
Se afiseaz cuvintele alocate ale codului alturi de probabilittile simbolurilor
asociate.
Se evalueaz lungimea medie a codului si entropia sursei. Se poate face astfel o
comparatie ntre lungimea medie a codului cu entropia sursei.
Se recomand repetarea executrii calculelor pentru surse diferite ntre ele prin
lista de probabilitti si/sau prin numrul n de simboluri generate.
Orice ameliorare a programului propus este apreciat.
clear
n=15; % numarul de simboluri ale sursei
if n>15
n=15;
end % o limitare a numarului de simboluri
if n<2
n=2;
end % o alta limitare a numarului de simboluri
simb=1:n; % simbolurile sursei
prob=rand(1,n); % generarea a n numere aleatoare intre 0 si 1
prob=prob/sum(prob); % normaliarea listei de n numere; suma=1
%prob=(1/n)*ones(1,n);
% prin decomentare, probabilitatile se fac egale
i=zeros(n,n);
56
lun=i;
num=i;
y=i;
[y(1,:),i1]=sort(prob,'descend'); % ordonarea probabiltatilor
for j=1:n
simb1(j)=simb(i1(j));
end
simboluri=simb
probabilitati=prob
simboluri_ordonate=simb1
probabilitati_ordonate=y(1,:)
i(1,:)=1:n;
for j=2:(n-1)
y(j,:)=y(j-1,:);
y(j,n-j+1)=y(j-1,n-j+2)+y(j-1,n-j+1);
y(j,n-j+2)=0;
[y(j,1:(n-j+1)),i(j,1:(n-j+1))]=sort(y(j,1:(n-
j+1)),'descend');
end % secventa directa a algoritmului Huffman
lun(n-1,1)=1;lun(n-1,2)=1;
num(n-1,1)=0;num(n-1,2)=1;
for j=(n-1):(-1):2
[l,m]=max(i(j,:));
%[l m]
i2=0;
for k=1:(n-j+1)
if k~=m
i2=i2+1;
lun(j-1,i2)=lun(j,k);
num(j-1,i2)=num(j,k);
end
end
lun(j-1,l)=lun(j,m)+1;
lun(j-1,l+1)=lun(j,m)+1;
num(j-1,l)=2*num(j,m);
num(j-1,l+1)=2*num(j,m)+1;
end % secventa inversa a algoritmului Huffman
lungimi_cuvinte_de_cod=lun(1,:)
% afisarea lungimilor cuvintelor de cod
cuvinte_de_cod='';
for j=1:n
cuvinte_de_cod=[cuvinte_de_cod,'
',dec2bin(num(1,j),lun(1,j))];
end
cuvinte_de_cod % afisarea cuvintelor de cod Huffman
entropia_sursei=-y(1,:)*log((y(1,:))')/log(2)
% entropia sursei
lungimea_medie_a_codului=lun(1,:)*(y(1,:))'
% lungimea medie a codului
57
Tema 2. Un cod Huffman n aciune
Se selecteaz un fisier de un tip anumit. Numele lui (si calea dac este cazul)
sunt nlocuite n linia a doua a programului. n varianta alturat, este trecut
sirul 'TCI5.doc' care presupune c fisierul este n acelasi folder/director cu
programul.
Se citeste fisierul ales ca o succesiune de octeti (bytes). Se face statistica
fisierului considerat surs de informatie, surs de simboluri ASCII
corespunztoare unor numere de la 0 la 255. Frecventele relative sunt
considerate probabilitti. Fisierul este considerat fr memorie.
Se aplic algoritmul Huffman care duce la alocarea unor cuvinte de cod fiecrui
cod ASCII.
Se calculeaz lungimea medie a codului, se calculeaz eficienta codului.
Se recomand executarea programului pentru mai multe fisiere de acelasi tip
(aceeasi extensie), pentru fisiere de tipuri variate. Se compar eficienta
codurilor n cazurile studiate, se compar si cu eficienta comprimrii fisierelor
cu programele de comprimare comerciale.
clear
idf=fopen('TCI5.doc');
% se creaza un identificator pentru fisierul ales
[a,n]=fread(idf);
% se citeste fisierul ca o secventa de n bytes
st=fclose(idf); % se inchide fisierul
p=zeros(256,256);
f=zeros(1,256);iper=f;
for i=1:n % se calculeaza frecventele absolute
f(a(i)+1)=f(a(i)+1)+1;
end
sf=sum(f);
f=f/sf; % se calculeaza frecventele relative
h=0; % se calculeaza entropia
for i=1:256
if f(i)>0
h=h-f(i)*log(f(i));
end
end
h=h/log(2);
% incepe comprimarea Huffman
[y,in]=sort(-f);
p(:,1)=-y';
for k=2:255
% se realizeaza "redusele" (parcursul direct)
z=p(258-k,k-1)+p(257-k,k-1);
p(257-k,k)=z;
p(258-k,k)=0;
p(1:256-k,k)=p(1:256-k,k-1);
[y,inc]=sort(-p(:,k));
p(:,k)=-y;
ina=(1:256)';
58
iper(k)=1;
for i=1:257-k
% se localizeaza simbolul rezultat din alte doua
if ina(i)==inc(i)
iper(k)=i+1;
end
iper(k)=min(iper(k),257-k);
end
end
% parcursul invers
lcod=zeros(256,1);
lcod(1)=1;lcod(2)=1;nc=1;
for k=254:(-1):1
nc=nc+1;
lcper=lcod(iper(k+1));
for i=1:nc
if i>iper(k+1)
lcod(i-1)=lcod(i);
end
end
lcod(nc)=lcper+1;
lcod(nc+1)=lcod(nc);
end
lmed=lcod'*p(:,1);
'Entropia si lungimea medie a codului (biti):',h,lmed
'eficienta codului (%):',efi=100*h/lmed
Lucrarea 6. Codarea aritmetic
Suportul teoretic al codrii aritmetice si multe aspecte de ordin practic ale
acestui gen de codare sunt foarte bine explicate n lucrarea Arithmetic Coding
revealed. A guided tour from theory to praxis de E.Bodden, M.Clasen si
J.Kneis. Lucrarea este bogat citat n Notele de curs la disciplina Transmiterea
si codarea informatiei.
n Anexele lucrrii lui E.Bodden, M.Clasen si J.Kneis este dat si o
implementare a codrii aritmetice scris n C++. Lectura lucrrii citate si
parcurgerea Anexelor ei reprezint o invitatie la a experimenta si a aprofunda
tema att de generoas a codrii aritmetice.
Din motive de simplitate, n lucrarea prezent se sugereaz utilizarea a dou
implemetri n Matlab, una realizat de autor, cealalt adaptat din literatur.
Tema 1. Codarea aritmetic n numere reale
Prima tem a acestei lucrri cuprinde codarea aritmetic prin numere reale si,
numai ca tentativ, o transformare a codului real n cod binar.
Programul didactic arit1 execut codarea aritmetic a unor mesaje scurte, de
pn la 10 caractere, prin numere reale. Sursa de informatie este dat printr-un
model static, asadar probabilittile asociate caracterelor sunt mereu aceleasi.
Aceste probabilitti sunt generate aleator n primele linii ale programului.
59
Probabilittile se pot initializa si dup dorint, introducnd o linie de program
special dup initilaizarea aleatoare.
% Program ARIT1 de codare aritmetica prin numere reale
% a mesajelor scurte
clear
n=5; % Numarul de caractere din alfabetul sursei (la alegere)
p=rand(1,n);
p=p/sum(p); % Generarea de probabilitati pentru sursa
disp('Probabiltatile celor n simboluri si entropia sursei')
[p entropie(p)]
cum(1)=0;
for i=1:n
cum(i+1)=sum(p(1:i));
end % Calculul vectorului probabilitatilor cumulate
disp('Vectorul probabilitatilor cumulate')
cum
low=cum(1);high=cum(n+1); % Initializarea limitelor
intervalului
m=10; % Lungimea mesajului (la alegere)
disp('Un mesaj de m simboluri')
mesaj=unidrnd(n,1,m) % Generarea aleatoare a mesajului
for k=1:m
i=mesaj(k);
lowprim=low+(high-low)*cum(i);
highprim=low+(high-low)*cum(i+1);
nc=num2str(k,3);
disp(strcat(nc,' caractere codate; limitele intervalului
dupa codare'))
format long, [lowprim highprim]
low=lowprim;
high=highprim;
end % Calculul intervalului care contine codul real
codul_real=(low+high)/2
disp('Lungimea codului')
nb=floor(log2(1./(high-low)))+1
disp('Lungimea medie a codului')
nb/m
disp('Expresia binara a limitelor intervalului si a codului pe
40 de biti')
bs=real2bin(high,40);
bm=real2bin((low+high)/2,40);
bi=real2bin(low,40);
[bs; bm; bi]
disp('Codul se limiteaza la nb biti')
Programul arit2 elaborat tot n scop didactic parcurge algoritmul de decodare
a unui cod aritmetic. El preia de la programul arit1 executat n prealabil, lista
cumulativ a probabilittilor asociate simbolurilor sursei, codul ca numr real,
lungimea mesajului codat precum si codul binar obtinut prin conversia pe un
numr limitat de biti (cel mult 40) a codului real.
60
Conform comentariilor inserate n program, rezult dou secvente decodate,
reconstituite din cele dou coduri utilizate, unul ca numr real, altul ca numr
real reconstituit dintr-o secvent finit de biti.
% Program ARIT2 de decodare a unui cod aritmetic
% Programul preia de la programul ARIT1 lungimea mesajului m,
% vectorul cum, valoarea codul_real si codul binar.
cum1=cum
codul_real
lungimea_mesajului=m
bm1=bm(1:(nb+2)); % Codul binar al mesajului limitat la nb+2 <=
40 biti
v=codul_real;
[i,n]=size(cum);
n=n-1;
high=1;low=0; % Se initilaizeaza limitele intervalului
for k=1:m
cum1=low*ones(1,n+1)+(high-low)*cum;
for i=1:n
if v>=cum1(i) & v<cum1(i+1)
mes(k)=i;
low=cum1(i);
high=cum1(i+1);
end
end
end % Bucla de decodare
mesajul_decodat=mes
codul_real_din_binar=bin2real(bm1)
v=codul_real_din_binar;
[i,n]=size(cum);
n=n-1;
high=1;low=0; % Se initilaizeaza limitele intervalului
for k=1:m
cum1=low*ones(1,n+1)+(high-low)*cum;
for i=1:n
if v>=cum1(i) & v<cum1(i+1)
mes(k)=i;
low=cum1(i);
high=cum1(i+1);
end
end
end % Bucla de decodare din codul binar
mesajul_decodat=mes
Programele (script-urile) arit1 si arit2 folosesc si urmtoarele trei functii Matlab
scrise de autor. Dou din acestea fac opratiile de conversie mentionate n
subtitluri. A treia evalueaz entropia pentru o surs dat prin vectorul de
probabilitti specific si a mai fost utilizat si la alte lucrri anterioare.
function alfa=bin2real(b)
% functie de conversie binar (digitii de dupa punctul binar)
% la real
61
[m,n]=size(b);
a=0;
x=1/2;
for i=1:n
a=x*a+b(n-i+1);
end
alfa=a;
function b=real2bin(a,n)
% Functie de conversie de la real pozitiv subunitar
% la binar (n digiti dupa punctul binar)
prov=zeros(1,n);
a=a/2;
for i=1:n
prov(i)=floor(2*a);
a=2*a-prov(i);
end
b=prov;
function entropie=ent(s)
% s este vectorul (linie) al probabilitatilor
[n,m]=size(s);
ent=0;
for i=1:m
if s(i)>0
ent=ent-s(i)*log(s(i));
end
end
ent=ent/log(2);
entropie=ent;
Tema 2. Codarea aritmetic n numere ntregi
Urmtoarele dou functii Matlab, arithenco si arithdeco sunt preluate din
capitolul Matlab-ului 7.1 denumit toolbox\comm\comm. Sursa este descris
aici prin frecventele absolute (numere ntregi) ale caracterelor generate.
O lectur atent a comentariilor din programe face posibil utilizarea corect a
acestor functii de codare si de decodare pentru codurile aritmetice.
Deoarece functia arithdeco preia rezultatele codrii efectuate de functia
arithenco, se propune imediat un script ari al autorului care cupleaz
operatiile de codare si decodare realizate cu cele dou functii Matlab de
bibliotec.
Se sugereaz o comparatie a rezultatelor codrii/decodrii cu aceste functii, cu
rezultatele obtinute cu programele de la Tema 1 elaborate de autor.
% Program ilustrativ ARI de utilizare a functiilor Matlab
% arithenco si arithdeco pentru codarea aritmetica n
% numere intregi si decodarea unui cod aritmetic
clear
ls=7; % Lungimea secventei codate (la alegere)
62
cs=5; % Numarul simbolurilor sursei (la alegere)
seq=unidrnd(cs,1,ls); % Generarea secventei de codat
sir_de_codat=seq
counts=unidrnd(10*cs,1,cs) % Genrarea vectorului frecventelor
code = arithenco(seq, counts) % Codarea
[i,lungime]=size(code);
lungimi=[lungime lungime/ls]
ent=entropie(counts/sum(counts))
sir_recuperat = arithdeco(code,counts,ls) % Decodarea
function code = arithenco(seq, counts)
%ARITHENCO Encode a sequence of symbols using arithmetic coding.
% CODE = ARITHENCO(SEQ, COUNTS) generates binary arithmetic
code
% corresponding to the sequence of symbols specified in the
vector SEQ.
% The vector COUNTS contains the symbol counts (the number of
times each
% symbol of the source's alphabet occurs in a test data set)
and represents
% the source's statistics.
%
% Example:
% Consider a source whose alphabet is {x, y, z}. A 177-
symbol test data
% set from the source contains 29 x's, 48 y's and 100 z's.
To encode the
% sequence yzxzz, use these commands:
%
% seq = [2 3 1 3 3];
% counts = [29 48 100];
% code = arithenco(seq, counts)
%
% See also ARITHDECO.
% Copyright 1996-2002 The MathWorks, Inc.
% $Revision: 1.3 $ $Date: 2002/06/17 12:22:10 $
% References:
% [1] Sayood, K., Introduction to Data Compression,
% Morgan Kaufmann, 2000, Chapter 4, Section 4.4.3.
% Input argument checks
error(nargchk(2, 2, nargin));
% Output argument checks
error(nargoutchk(0, 1, nargout));
% Check parameters
eStr = errorchk(seq, counts);
if (eStr.ecode == 1)
error(eStr.emsg);
end
63
% Check the incoming orientation and adjust if necessary
[row_s, col_s] = size(seq);
if (row_s > 1),
seq = seq.';
end
[row_c, col_c] = size(counts);
if (row_c > 1),
counts = counts.';
end
% Compute the cumulative counts vector from the counts
cum_counts = [0, cumsum(counts)];
% Compute the Word Length required.
total_count = cum_counts(end);
N = ceil(log2(total_count)) + 2;
% Initialize the lower and upper bounds.
dec_low = 0;
dec_up = 2^N-1;
E3_count = 0;
% Obtain an over estimate for the length of CODE and initialize
CODE
code_len = length(seq) * ( ceil(log2(length(counts))) + 2 ) + N;
code = zeros(1, code_len);
code_index = 1;
% Loop for each symbol in SEQ
for k = 1:length(seq)
symbol = seq(k);
% Compute the new lower bound
dec_low_new = dec_low + floor( (dec_up-
dec_low+1)*cum_counts(symbol+1-1)/total_count );
% Compute the new upper bound
dec_up = dec_low + floor( (dec_up-
dec_low+1)*cum_counts(symbol+1)/total_count )-1;
% Update the lower bound
dec_low = dec_low_new;
% Check for E1, E2 or E3 conditions and keep looping as long
as they occur.
while( isequal(bitget(dec_low, N), bitget(dec_up, N)) || ...
(isequal(bitget(dec_low, N-1), 1) &&
isequal(bitget(dec_up, N-1), 0) ) ),
% If it is an E1 or E2 condition,
64
if isequal(bitget(dec_low, N), bitget(dec_up, N)),
% Get the MSB
b = bitget(dec_low, N);
code(code_index) = b;
code_index = code_index + 1;
% Left shifts
dec_low = bitshift(dec_low, 1) + 0;
dec_up = bitshift(dec_up, 1) + 1;
% Check if E3_count is non-zero and transmit
appropriate bits
if (E3_count > 0),
% Have to transmit complement of b, E3_count
times.
code(code_index:code_index+E3_count-1) =
bitcmp(b, 1).*ones(1, E3_count);
code_index = code_index + E3_count;
E3_count = 0;
end
% Reduce to N for next loop
dec_low = bitset(dec_low, N+1, 0);
dec_up = bitset(dec_up, N+1, 0);
% Else if it is an E3 condition
elseif ( (isequal(bitget(dec_low, N-1), 1) && ...
isequal(bitget(dec_up, N-1), 0) ) ),
% Left shifts
dec_low = bitshift(dec_low, 1) + 0;
dec_up = bitshift(dec_up, 1) + 1;
% Reduce to N for next loop
dec_low = bitset(dec_low, N+1, 0);
dec_up = bitset(dec_up, N+1, 0);
% Complement the new MSB of dec_low and dec_up
dec_low = bitxor(dec_low, 2^(N-1) );
dec_up = bitxor(dec_up, 2^(N-1) );
% Increment E3_count to keep track of number of
times E3 condition is hit.
E3_count = E3_count+1;
end
end
end
% Terminate encoding
bin_low = de2bi(dec_low, N, 'left-msb');
if E3_count==0,
65
% Just transmit the final value of the lower bound bin_low
code(code_index:code_index + N - 1) = bin_low;
code_index = code_index + N;
else
% Transmit the MSB of bin_low.
b = bin_low(1);
code(code_index) = b;
code_index = code_index + 1;
% Then transmit complement of b (MSB of bin_low), E3_count
times.
code(code_index:code_index+E3_count-1) = bitcmp(b,
1).*ones(1, E3_count);
code_index = code_index + E3_count;
% Then transmit the remaining bits of bin_low
code(code_index:code_index+N-2) = bin_low(2:N);
code_index = code_index + N - 1;
end
% Output only the filled values
code = code(1:code_index-1);
% Set the same output orientation as seq
if (row_s > 1)
code = code.';
end
%----------------------------------------------------------
function eStr = errorchk(seq, counts)
% Function for validating the input parameters.
eStr.ecode = 0;
eStr.emsg = '';
% Check to make sure a vector has been entered as input and not
a matrix
if (length(find(size(seq)==1)) ~= 1)
eStr.emsg = ['The symbol sequence parameter must be a vector
of positive ',...
'finite integers.'];
eStr.ecode = 1; return;
end
% Check to make sure a character array is not specified for SEQ
if ischar(seq)
eStr.emsg = ['The symbol sequence parameter must be a vector
of positive ',...
'finite integers.'];
eStr.ecode = 1; return;
end
66
% Check to make sure that finite positive integer values (non-
complex) are
% entered for SEQ
if ~all(seq > 0) || ~all(isfinite(seq)) || ~isequal(seq,
round(seq)) || ...
~isreal(seq)
eStr.emsg = ['The symbol sequence parameter must be a vector
of positive ',...
'finite integers.'];
eStr.ecode = 1; return;
end
if length(find(size(counts)==1)) ~= 1
eStr.emsg = ['The symbol counts parameter must be a vector
of positive ',...
'finite integers.'];
eStr.ecode = 1; return;
end
% Check to make sure that finite positive integer values (non-
complex) are
% entered for COUNTS
if ~all(counts > 0) || ~all(isfinite(counts)) ||
~isequal(counts, round(counts)) || ...
~isreal(counts)
eStr.emsg = ['The symbol counts parameter must be a vector
of positive ',...
'finite integers.'];
eStr.ecode = 1; return;
end
% Check to ensure that the maximum value in the SEQ vector is
less than or equal
% to the length of the counts vector COUNTS.
if max(seq) > length(counts)
eStr.emsg = ['The symbol sequence parameter can take values
only between',...
' 1 and the length of the symbol counts
parameter.'];
eStr.ecode = 1; return;
end
% [EOF]
function dseq = arithdeco(code, counts, len)
%ARITHDECO Decode binary code using arithmetic decoding.
% DSEQ = ARITHDECO(CODE, COUNTS, LEN) decodes the binary
arithmetic code
% in the vector CODE (generated using ARITHENCO) to the
corresponding
% sequence of symbols. The vector COUNTS contains the symbol
counts (the
67
% number of times each symbol of the source's alphabet occurs
in a test
% data set) and represents the source's statistics. LEN is the
number of
% symbols to be decoded.
%
% Example:
% Consider a source whose alphabet is {x, y, z}. A 177-
symbol test data
% set from the source contains 29 x's, 48 y's and 100 z's.
To encode the
% sequence yzxzz, use these commands:
%
% seq = [2 3 1 3 3];
% counts = [29 48 100];
% code = arithenco(seq, counts)
%
% To decode this code (and recover the sequence of
% symbols it represents) use this command:
%
% dseq = arithdeco(code, counts, 5)
%
% See also ARITHENCO.
% Copyright 1996-2002 The MathWorks, Inc.
% $Revision: 1.2 $ $Date: 2002/04/14 20:12:32 $
% References:
% [1] Sayood, K., Introduction to Data Compression,
% Morgan Kaufmann, 2000, Chapter 4, Section 4.4.3.
% Input argument check
error(nargchk(3, 3, nargin));
% Output argument check
error(nargoutchk(0, 1, nargout));
% Check parameters
eStr = errorchk(code, counts, len);
if (eStr.ecode == 1)
error(eStr.emsg);
end
% Check the incoming orientation and adjust if necessary
[row_cd, col_cd] = size(code);
if (row_cd > 1),
code = code.';
end
[row_c, col_c] = size(counts);
if (row_c > 1),
counts = counts.';
end
68
% Compute the cumulative counts vector from the counts vector
cum_counts = [0, cumsum(counts)];
% Compute the Word Length (N) required.
total_count = cum_counts(end);
N = ceil(log2(total_count)) + 2;
% Initialize the lower and upper bounds.
dec_low = 0;
dec_up = 2^N-1;
% Read the first N number of bits into a temporary tag bin_tag
bin_tag = code(1:N);
dec_tag = bi2de(bin_tag, 'left-msb');
% Initialize DSEQ
dseq = zeros(1,len);
dseq_index = 1;
k=N;
ptr = 0;
% This loop runs untill all the symbols are decoded into DSEQ
while (dseq_index <= len)
% Compute dec_tag_new
dec_tag_new =floor( ((dec_tag-dec_low+1)*total_count-
1)/(dec_up-dec_low+1) );
% Decode a symbol based on dec_tag_new
ptr = pick(cum_counts, dec_tag_new);
% Update DSEQ by adding the decoded symbol
dseq(dseq_index) = ptr;
dseq_index = dseq_index + 1;
% Compute the new lower bound
dec_low_new = dec_low + floor( (dec_up-
dec_low+1)*cum_counts(ptr-1+1)/total_count );
% Compute the new upper bound
dec_up = dec_low + floor( (dec_up-
dec_low+1)*cum_counts(ptr+1)/total_count )-1;
% Update the lower bound
dec_low = dec_low_new;
% Check for E1, E2 or E3 conditions and keep looping as long
as they occur.
while ( isequal(bitget(dec_low, N), bitget(dec_up, N)) |
...
69
( isequal(bitget(dec_low, N-1), 1) &
isequal(bitget(dec_up, N-1), 0) ) ),
% Break out if we have finished working with all the
bits in CODE
if ( k==length(code) ), break, end;
k = k + 1;
% If it is an E1 or E2 condition, do
if isequal(bitget(dec_low, N), bitget(dec_up, N)),
% Left shifts and update
dec_low = bitshift(dec_low, 1) + 0;
dec_up = bitshift(dec_up, 1) + 1;
% Left shift and read in code
dec_tag = bitshift(dec_tag, 1) + code(k);
% Reduce to N for next loop
dec_low = bitset(dec_low, N+1, 0);
dec_up = bitset(dec_up, N+1, 0);
dec_tag = bitset(dec_tag, N+1, 0);
% Else if it is an E3 condition
elseif ( isequal(bitget(dec_low, N-1), 1) & ...
isequal(bitget(dec_up, N-1), 0) ),
% Left shifts and update
dec_low = bitshift(dec_low, 1) + 0;
dec_up = bitshift(dec_up, 1) + 1;
% Left shift and read in code
dec_tag = bitshift(dec_tag, 1) + code(k);
% Reduce to N for next loop
dec_low = bitset(dec_low, N+1, 0);
dec_up = bitset(dec_up, N+1, 0);
dec_tag = bitset(dec_tag, N+1, 0);
% Complement the new MSB of dec_low, dec_up and
dec_tag
dec_low = bitxor(dec_low, 2^(N-1) );
dec_up = bitxor(dec_up, 2^(N-1) );
dec_tag = bitxor(dec_tag, 2^(N-1) );
end
end % end while
end % end while length(dseq)
% Set the same output orientation as code
if (row_cd > 1)
dseq = dseq.';
70
end
%-------------------------------------------------------------
function [ptr] = pick(cum_counts, value);
% This internal function is used to find where value is
positioned
% Check for this case and quickly exit
if value == cum_counts(end)
ptr = length(cum_counts)-1;
return
end
c = find(cum_counts <= value);
ptr = c(end);
%----------------------------------------------------------
function eStr = errorchk(code, counts, len);
% Function for validating the input parameters.
eStr.ecode = 0;
eStr.emsg = '';
% Check to make sure a vector has been entered as input and not
a matrix
if (length(find(size(code)==1)) ~= 1)
eStr.emsg = ['The binary arithmetic code parameter must be a
double ',...
'array of zeros and ones only.'];
eStr.ecode = 1; return;
end
if (length(find(size(counts)==1)) ~= 1)
eStr.emsg = ['The symbol counts parameter must be a vector
of positive ',...
'finite integers.'];
eStr.ecode = 1; return;
end
% Check to make sure that CODE is binary
if any(code ~= 1 & code ~= 0)
eStr.emsg = ['The binary arithmetic code parameter must be a
double ',...
'array of zeros and ones only.'];
eStr.ecode = 1; return;
end
% Check to make sure that finite positive integer values (non-
complex) are
% entered for COUNTS
if ~all(counts > 0) | ~all(isfinite(counts)) | ~isequal(counts,
round(counts)) | ...
~isreal(counts)
71
eStr.emsg = ['The symbol counts parameter must be a vector
of positive ',...
'finite integers.'];
eStr.ecode = 1; return;
end
% Check to make sure LEN is scalar
if ~isequal(size(len),[1 1])
eStr.emsg = 'The number of symbols must be a positive,
finite, integer scalar.';
eStr.ecode = 1; return;
end
% Check to make sure that finite positive integer value (non-
complex) is
% entered for LEN
if len < 1 | ~isfinite(len) | (len ~= round(len)) | ~isreal(len)
eStr.emsg = 'The number of symbols must be a positive,
finite, integer scalar.';
eStr.ecode = 1; return;
end
% EOF
Problema 50. Coduri nepotrivite
Care din codurile urmtoare nu pot fi coduri Huffman oricare ar fi setul de
probabilitti ale simbolurilor sursei?
a. {1, 01, 00}
Solutie: Codurile Huffman sunt coduri compacte. Ele satisfac dubla inegalitate
a lui Shannon
H(X) L < H(X) + 1
sau
0 L H(X) < 1
cu L lungimea medie a codului si cu H(X) entropia sursei codate.
Se admite c probabilittile asociate simbolurilor sursei sunt [p, (1 p)/2 + o,
(1 p)/2 o], cu o un numr care s nu fac probabilittile numere negative
sau supraunitare. Se evalueaz lungimea medie
L = 1p + 2[(1 p)/2 + o] + 2[(1 p)/2 o]= 2 p
si entropia
H(X) =
= plogp [(1 p)/2 + o]log[(1 p)/2 + o] [(1 p)/2 o]log[(1 p)/2 o]
Suma ultimilor doi termeni este maxim atunci cnd o = 0, adic atunci cnd
cele dou simboluri sunt egal probabile, astfel c pentru un p dat, entropia
maxim este
H
max
(X) = plogp 2[(1 p)/2]log[(1 p)/2] =
= plogp (1 p)log(1 p) + 1 p = 1 p + H(p)
72
Prima parte a dublei inegalitti Shannon modificate devine n cazul critic
H
max
(X)
L H
max
(X) = 1 H(p) 0
cu H(p) entropia unei surse binare cu probabilitatea unuia dintre simboluri p.
Deoarece 0 H(p) 1, inegalitatea este satisfcut pentru orice p.
Pentru partea a doua a inegalittii lui Shannon trebuie identificat, tot asa,
situatia cea mai defavorabil. Aceasta se produce pentru o = (1 p)/2. Entropia
este n acest caz
H
min
(X) = plogp (1 p)log(1 p) = H(p)
Se testeaz acum inegalitatea
L H(X) L H
min
(X) = 2 p H(p) < 1
La extreme, p = 0, p = 1, expresia n p ia valorile 2, respectiv 1. Nici una nu
satisface a doua parte a inegalittii lui Shannon. Acestea sunt contraexemple la
afirmatia codul propus este Huffman pentru orice list de probabilitti.
Asadar, codul nu poate fi de tipul Huffman pentru orice set de probabilitti.
b. {00, 01, 10, 110}
Solutie: La fel ca punctul anterior poate fi tratat si acest punct al problemei.
Exist ns o cale mai direct de tratare. Se observ c proprietatea de lungime
medie minim a codului propus nu este ndeplinit. De pild, pentru orice
probabilitate a ultimului dintre simboluri nenul, codul {00, 01, 10, 11} este
mai scurt n medie fat de codul dat. Codul nu este compact si de aceea nu
poate fi un cod Huffman oricare ar fi probabilittile simbolurilor
c. {01, 10}
Solutie: Aici lungimea medie este L
c
= 2. Dubla inegalitate a lui Shannon, 1
L
c
< 2 nu este satisfcut. Exist totdeauna un cod de lungime medie mai mic
dect 2, de pild codul {0, 1}. Codul propus nu este un cod Huffman pentru
toate probabilittile posibile ale simbolurilor deoarece nu este compact.
Problema 51. Codarea Huffman
Se consider variabila aleatoare
|
.
|

\
|
=
02 , 0 03 , 0 04 , 0 04 , 0 11 , 0 26 , 0 50 , 0
7 6 5 4 3 2 1
x x x x x x x
X
a. Gsiti un cod binar Huffman pentru X.
b. Gsiti lungimea medie a cuvntului de cod pentru codul stabilit. Comparati
cu entropia.
c. Gsiti un cod ternar Huffman pentru aceeasi variabil aleatoare X.
Indicatie: Punctele a. si b. se rezolv aplicnd algoritmul Huffman pentru
coduri binare, binecunoscut. Punctul c. se rezolv adaptnd algoritmul la cazul
ternar: simbolurile din coada topului probabilistic la fiecare etap se grupeaz
cte trei, sursa redus final trebuie s aib trei simboluri n caz contrar se
adaug la sursa initial simboluri (fictive) de probabilitate nul n numr strict
necesar (unul sau dou).
73
Problema 52. Coduri
Fie variabilele X
1
, X
2
, , i.i.d.
1
cu

=
4 / 1 atea probabilit cu 3
4 / 1 atea probabilit cu 2
2 / 1 atea probabilit cu 1
X
Se consider atribuirea urmtorului cod

=
=
=
=
3 dac 11
2 dac 01
1 dac 0
) (
x
x
x
x C
a. Este acest cod nesingular?
Solutie: Da.
b. Este unic decodabil?
Solutie: Da.
c. Este instantaneu?
Solutie: Nu. Conditia de prefix nu este satisfcut.
d. Care este rata entropiei procesului
Z
1
Z
2
Z
3
= C(X
1
)C(X
2
)C(X
3
) ?
(Exemplu: x
n
= 2311 produce procesul codat z
n
= 011100.)
Solutie: n medie, pentru o succesiune de n simboluri generate de sursa X,
numrul de zerouri n secventa codat z
n
este (1/2)n + (1/4)n = (3/4)n, iar
numrul de unitti este (1/4)n + 2(1/4)n = (3/4)n. Asadar, simbolurile binare
sunt echiprobabile.
Rata entropiei pentru sursa secundar cu alfabet binar este de 1 bit/simbol.
Calculul ratei raportat la cele n simbouri codate trece prin evaluarea lungimii
medii a codului care este 1(1/2) + 2(1/4) + 2(1/4) = 3/2 biti/simbol.
Entropia sursei X este (1/2)log(1/2) (1/4)log(1/4) (1/4)log(1/4) = 3/2 biti/
simbol.
Este un caz de codare perfect pentru c sursa este special: probabilittile
simbolurilor sunt puteri ntregi ale lui 2.
Problema 53. Coduri de cost minim
Cuvinte ca Run!, Help! sau Fire! sunt scurte nu pentru c sunt utilizate frecvent,
ci, probabil, pentru c timpul este pretios n situatiile n care aceste cuvinte sunt
necesare.
Se presupune c X = i cu probabilitatea p
i
, i = 1, 2, , m. Fie l
i
numrul de
simboluri binare n cuvntul de cod asociat cu X = i si fie c
i
costul pe liter de
cod n aceeasi situatie. Astfel, costul mediu C al descrierii lui X prin cod este

=
=
m
i
i i i
l c p C
1
.
1
i.i.d. variabile aleatoare independente si identic distribuite.
74
a. Minimizati costul mediu C pe toate lungimile l
1
, l
2
, , l
m
astfel nct
1 2 s


i
l
. Ignorati restrictia referitoare la lungimile l
i
care ar trebui s fie
numere ntregi. Evidentiati valorile l
1
*
, l
2
*
, , l
m
*
care fac costul C = C
*
minim.
Solutie: Se confectioneaz o surs cu un alfabet care are acelasi numr de
caractere, dar lista de probabilitti asociate este

=
=
m
i
i i
i i
i
c p
c p
q
1
, i = 1, 2, , m.
Inegalitatea din enunt este inegalitatea lui Kraft. Dac lungimile cuvintelor de
cod ar putea fi l
i
*
= log(q
i
), inegalitatea ar fi verificat chiar cu egalitate.
Costul C este minim odat cu costul

=
= '
m
i
i i
c p
C
C
1
si atinge valoarea entropiei sursei confectionate convenabil, E(q
1
, q
2
, , q
m
)
= E(q), multiplicat cu un factor constant specific
) (
1
*
q E c p C
m
i
i i
|
.
|

\
|
=

=
.
b. Cum ati folosi procedura de obtinere a unui cod Huffman pentru a minimiza
costul mediu C peste toate codurile unic decodabile? Fie C
Huffman
acest
minim.
Solutie: Se aplic algoritmul Huffman pe lista de probabilitti q
i
, i = 1, 2, , m.
c. Artati c
C
*
C
Huffman
C
*
+
=
m
i
i i
c p
1
Solutie: Prin mprtirea dublei inegalitti din enunt cu
=
m
i
i i
c p
1
se obtine dubla
inegalitate a lui Shannon pentru sursa confectionat. Inegalitatea prim se
explic prin valorile obligatoriu ntregi ale lungimilor l
i
, diferite si uzual mai
mari fat de valorile reale l
i
*
de la punctul a. al problemei.
Problema 54. Entropia relativ este costul codrii inadecvate
Fie variabila aleatoare X care ia cinci valori posibile (1, 2, 3, 4, 5}. Se consider
dou distributii ale acestei variabile (v.tabelul).
a. Calculati H(p), H(q), D(p||q) si D(q||p).
b. Ultimele dou coloane ale tabelului contin coduri pentru variabila X.
Verificati c lungimea medie a codului C
1
sub distributia p este egal cu
entropia H(p). Asadar, C
1
este optimal pentru p. Verificati c C
2
este un cod
optimal pentru q.
75
Simbol p(x) q(x) C
1
(x) C
2
(x)
1 1/2 1/2 0 1
2 1/4 1/8 10 100
3 1/8 1/8 110 101
4 1/16 1/8 1110 110
5 1/15 1/8 1111 111
c. Se presupune acum c se utilizeaz codul C
2
cnd distributia este p. Care
este lungimea medie a cuvntului de cod? Cu ct este mai mare aceasta fat
de entropia H(p)?
d. Care este pierderea dac este folosit codul C
1
cnd distributia este q?
Problema 55. Inegalitatea lui Kraft
a. Gsiti un cod binar (D = 2) liber de prefix pentru sursa cu probabilittile
(1/3, 1/5, 1/5, 2/15, 2/15).
b. Gsiti codul liber de prefix optimal, adic acel cod cu lungimea medie
minim. (Indicatie: Optimizati lungimea medie cu conditia la frontier a
(in)egalittii lui Kraft pentru acea surs si construiti un cod cu lungimile
codului optimal rezultat)
c. Este acest cod optimal, tot optimal si pentru sursa cu probabilittile (1/5,
1/5, 1/5, 1/5, 1/5)? Expuneti rationamentul folosit. (Indicatie: Orice cod
liber de prefix trebuie s satisfac inegalitatea lui Kraft).
Problema 56.
Se consider o variabil aleatoare care ia echiprobabil m valori. Se stie c
entropia acestei surse de informatie este log
2
m biti.
a. Pentru ce valori ale lui m lungimea medie a cuvntului de cod egaleaz
entropia H = log
2
m?
Solutie: Este necesar a fi satisfcut egalitatea
m l
m
m
i
i 2
1
log
1
=

=
echivalent succesiv cu
m l
m
m
i
i 2
1
log
1
=

=
,
m m l
m
i
i 2
1
log =

=
, m
l
m
m
i
i
=

=1
2
.
Suma lungimilor cuvintelor de cod este totdeauna un numr ntreg pozitiv.
Ultima egalitate impune ca m s fie o putere ntreag si pozitiv a lui 2.
b. Se stie c pentru orice distributie probabilistic, lungimea medie a codului
optim si entropia sunt n relatia L < H + 1. Se defineste ca redundant a unui
cod diferenta p = L H. Pentru ce valori ale lui m, 2
k
s m s 2
k+1
, redundanta
76
codului optim este maxim? Care este valoarea limit a acestei redundante
maxime, pentru m ?
Solutie: Pentru valorile extreme, 2
k
si 2
k+1
, redundantele sunt nule. Pentru
valorile intermediare, cuvintele codului optim/compact au lugimile de k sau de
k + 1 biti. Nu pot fi toate de lungime k deoarece cuvintele ar fi prea putine,
codul n-ar mai fi unic decodabil. Pot fi toate de lungime k + 1 dar sunt prea
multe cuvinte. Dup atribuire, sunt cuvinte ale codului diferite de unul din
cuvintele n surplus prin numai un bit. Cuvintele de cod care au pereche n
surplusul de cuvinte lungi de k + 1 biti si care difer prin numai un bit de acelea
pot fi scurtate cu acel bit si incluse n cod. Codul rmne unic decodabil dar
este si optimal (algoritmul Huffman poate confirma acest adevr). Dup cum m
excede limita 2
k
cu 1, 2, , 2
k
1 unitti, cuvintele de cod de lungime k + 1
sunt n numr de 2, 4, , 2
k+1
2, adic 2(m 2
k
), iar cuvintele de cod de
lungime k sunt n numr de m 2, m 4, , m 2
k+1
+ 2, adic m 2(m 2
k
) =
2
k+1
m.
Lungimea medie a codului este
) 1 )( 2 ( 2 ) 2 (
1
1
+ + =
+
k m k m
m
L
k k
ceea ce dup prelucrare devine

m
k k m
m
L
k
k
1
1
2
) 2 ( 2 ) 2 (
1
+
+
+ = + =
Pentru 2
k
< m < 2
k+1
, redundanta codului este
m
m
k H L
k
2
1
log
2
) 2 ( + = =
+
p
Functia
x
x
k x f
k
2
1
log
2
) 2 ( ) ( + =
+
are un extrem (un maxim) n punctul de anulare a derivatei
2 ln
1 2
) (
2
1
x x
x f
k
= '
+
adic pentru x = 2
k+1
ln2. n acest punct functia f(x) ia vloarea 1 1/ln2
lnln2/ln2 0,0861. Pentru x aceasta este si limita functiei n discutie.
Aceeasi este si limita cerut de problem deoarece un sir de valori m ntregi, n
particular diferite cu mai putin de o unitate de un x real nu poate conduce la alt
limit.
Problema 57.
Un cod nu este unic decodabil dac si numai dac exist o secvent finit de
simboluri ale codului care poate fi interpretat n moduri diferite n secventele
de cuvinte de cod.
n secvena
77
| A
1
| A
2
| A
3
A
m
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| B
1
| B
2
| B
3
B
n
|
unde fiecare A
i
si B
i
sunt cuvinte de cod, pot aprea situatii de acest gen. Se
observ c B
1
poate fi prefix pentru A
1
, rezultnd si un oarecare sufix
reminiscent. Fiecare sufix reminiscent trebuie s fie la rndu-i un prefix sau un
cuvnt de cod, sau s aib un alt cuvnt ca prefix propriu, ceea ce produce un
alt sufix reminiscent. n final, ultimul sufix din secven trebuie s fie un cuvnt
de cod. Se poate pune la punct un test de unic decodabilitate (testul Sardinas-
Patterson) n maniera care urmeaz:
- Se construieste o multime S care s cuprind toate sufixele reminiscente
posibile
- Codul este unic decodabil dac si numai dac mulimea S nu contine
cuvinte de cod.
a. Se admite c lungimile cuvintelor de cod sunt l
i
, i = 1, 2, , m. Gsiti o
limitare superioar pentru numrul de elemente din S
b. Determinati care din codurile urmtoare sunt unic decodabile:
i. {0, 10, 11}
ii. {0, 01, 11}
iii. {0, 01, 10}
iv. {0, 01}
v. {00, 01, 10, 11}
vi. {110, 11, 10}
vii. {110, 11, 100, 00, 10}
c. Pentru fiecare din codurile unic decodabile de mai sus, construiti, dac este
posibil, o secvent infinit codat cu un punct de nceput cunoscut, astfel
nct ea s poat fi interpretat n dou moduri. Aceasta arat c dac
cuvintele de cod finite sunt unic decodabile, cuvintele de cod infinite pot s
nu fie unic decodabile.
d. Dovediti c o asemenea secvent nu poate aprea ntr-un cod liber de prefix.
Problema 58. Codul Shannon
Se consider metoda urmtoare de a genera un cod pentru o variabil aleatoare
X care ia m valori {1, 2, , m} cu probabilittile p
1
, p
2
, , p
m
. Se presupune c
probabilittile sunt ordonate astfel p
1
p
2
p
m
. Se defineste

=
=
1
1
i
k
k i
p F
suma probabilittilor tuturor simbolurilor de indice mai mic dect i. Cuvntul
de cod asociat lui i este numrul
] 1 , 0 [ e
i
F
rotunjit la l
i
biti cu l
i
partea ntreag
a numrului log
2
(1/p
i
).
- Artati c un cod construit astfel este liber de prefix si lungimea lui medie
satisface relatia
78
H(X) L < H(X) + 1
- Construiti codul pentru cazul n care probabilittile sunt {0,5 0,25 0,125
0,125}.
Problema 59. Compresia optim simpl pentru o surs Markov
Se consider procesul Markov U
1
, U
2
, , un proces cu trei stri care are
matricea de tranzitie
2 / 1 2 / 1 0
4 / 1 2 / 1 4 / 1
4 / 1 4 / 1 2 / 1
\
3
2
1
3 2 1 1
S
S
S
S S S U U
n n
cu probabilitatea tranzitiei din starea S
3
n starea S
1
nul. Proiectati trei coduri
C
1
, C
2
, C
3
(unul pentru fiecare stare S
1
, S
2
, S
3
). Fiecare cod aplic elemente din
multimea {S
1
, S
2
, S
3
} pe secvente de valori binare 0 si 1, astfel nct acest
proces Markov s poat fi transmis cu compresie maxim prin schema
urmtoare:
a. Se observ simbolul prezent S
i
b. Se selecteaz codul C
i
c. Se observ simbolul urmtor S
j
si se trimite cuvntul de cod C
j
care
corespunde lui S
j
d. Se repet operatia pentru simbolul urmtor.
Care este lungimea medie a mesajului asociat simbolului urmtor conditionat
de starea anterioar S = S
i
utiliznd aceast schem de codare?
Care este numrul mediu neconditionat de biti pe simbol al sursei?
Puneti n relatie aceast lungime cu rata entropiei H(U) a lantului Markov.
Solutie: Starea stationar a procesului este descris de vectorul de probabilitti
[2/9 4/9 3/9] si entropia ei n absenta vreunei conditionri ntre simboluri este
1,5305. Cu matricea de tranzitie dat, entropiile pentru fiecare din cele trei stri
ale procesului ca stare de plecare sunt respectiv 3/2, 3/2, 1 biti. Entropia medie
este
[2/9 4/9 3/9][3/2 3/2 1]
T
= 4/3 = 1,3333
mai mic dect cea a strii stationare, asa cum era de asteptat.
Codurile binare separate C
1
, C
2
, C
3
, optime pentru fiecare stare ca stare de
plecare duc la lungimi medii egale cu entropiile n primele dou cazuri deoarece
tranzitiile respective au toate caracteristicile unor surse de informatie speciale
(probabilittile sunt puteri ntregi ale lui 2). Tabelul alturat contine codurile
compacte pentru fiecare stare de plecare.
S
1
Pr. C
1
S
2
Pr. C
2
S
3
Pr. C
3
S
1
1/2 0 S
1
1/4 10 S
1
0 11
S
2
1/4 10 S
2
1/2 0 S
2
1/2 0
S
3
1/4 11 S
3
1/4 11 S
3
1/2 10
79
Lungimile medii ale acestor trei coduri sunt toate egale cu 1,5 biti/simbol.
Procesul Markov din enunt poate fi tratat si ca o succesiune de tranzitii, n
numr de 9, (S
i
S
j
), i, j = 1, 2, 3, cu probabilittile [1/9 1/18 1/18 1/9 2/9
1/9 0 1/6 1/6]. Entropia este 2,8638 si este egal cu suma entropiilor evaluate
mai devreme.
Rezultatul codrii Huffman al acestei surse definit prin tranzitiile ei si
probabilittile asociate este dat n tabel.
Lungimea medie a codului este 2,9444 bit/simbol, ntructva mai mare dect
entropia.
S
i
S
j
Probabilitti Cod Huffman
(i, j) = (1, 1) 1/9 110
(i, j) = (1, 2) 1/18 1010
(i, j) = (1, 3) 1/18 10110
(i, j) = (2, 1) 1/9 111
(i, j) = (2, 2) 2/9 01
(i, j) = (2, 3) 1/9 100
(i, j) = (3, 1) 0 10111
(i, j) = (3, 2) 1/6 000
(i, j) = (3, 3) 1/6 001
Codarea dup schema propus n enunt conduce la o lungime medie de 3
biti/pereche-de-simboluri si este mai putin eficient dect aceea dat n tabelul
al doilea.
Problema 60: Algoritmi speciali
Codarea prin metoda run-length este una din cele mai simple sau poate cea mai
simpl metod de codare n scopul comprimrii fr pierdere de informatie a
unui fisier care contine o secvent de ntregi.
a. Scrieti o procedur simpl (eventual n pseudocod) care primeste o secvent
de numere naturale a
1
, , a
n
si returneaz o secvent codat de ntregi b
1
,
, b
m
. Ideea central const n a genera secventa de iesire astfel ca o
subsecvent din secventa de intrare lung de 3 sau mai multe numere
consecutive identice s fie codat cu o pereche de ntregi: primul care indic
lungimea secventei, al doilea care este nsusi numrul repetat. De pild,
secventa 6, 2, 3, 4, 4, 4, 5, 6, 7, 7, 7, 7, 8 este codat ca 6, 2, 3, 3, 4, 5, 6,
4, 7, 8. Dup cum se observ, secventa codat este mai scurt dect cea
initial.
Solutie: Procedur (o posibilitate, n pseudocod):
citeste numr_nou;
contor=1;
numr_vechi=numr_nou;
repet
80
citeste numr_nou;
dac numr_nou=numr vechi
contor=contor+1;
altminteri
dac contor>1
scrie contor, mumr_vechi;
contor=1;
altminteri
scrie numr_vechi;
final_dac;
numr_vechi=numr_nou;
final_dac;
pn cnd EOF
dac contor>1
scrie contor, mumr_vechi;
altminteri
scrie numr_vechi;
final_dac
b. De ce este necesar semnul minus?
Solutie: Semnul minus este marcajul distinctiv pentru frecventele numerelor
care apar repetat n secventa de intrare.
c. Scrieti o procedur de decodare care primeste secventa codat si restituie
secventa de dinainte de codare
Solutie: Procedur (n pseudocod):
ct_timp EOF
citeste cod;
dac cod<0
n1= -cod;
citeste cod;
scrie (de n1 ori) cod;
altminteri
scrie cod;
final_dac
final_ct_timp
d. Descrieti tipul de secvente la intrare care produce cel mai ru caz de
complexitate temporal pentru combinatia de algoritmi de codare si de
decodare (numrati numai operatiile de comparare)
Solutie: Dac secventa de numere care este supus codrii este de lungime n,
atunci comparatia ntre numr_nou si numr-vechi se execut totdeauna de
n 1 ori. Comparatia contor > 1 se execut numai atunci cnd numr_nou
si numr-vechi sunt diferite. Dac secventa dat nu contine nici o succesiune
de 2 sau mai multe numere identice atunci comparatia se execut tot de n 1 ori
si acesta este cazul cel mai nefericit. n finalul operatiei de codare se mai
execut o comparatie contor > 1 ceea ce aduce totalul la 2n 1.
Operatia de decodare execut comparatia cod < 0 o dat la citirea primului
cod din cele n total m, m n. De fiecare dat cnd citeste un cod negativ,
81
urmeaz citirea unui cod pozitiv si comparatia cod < 0 este repetat dup
scrierea unei secvente de lungimea cuvenit, secvent de numere naturale
identice. Cazul cel mai ru este cel n care valorile cod citite succesiv sunt toate
pozitive. Atunci m = n si numrul comparatiilor este 1 + (m 1) = m = n.
Codarea si decodarea utilizeaz n acest caz, cel mai ru posibil, 3n 1
comparatii.
e. Produceti o formul pentru fiecare algoritm, care s exprime numrul de
comparatii necesare ca functie de lungimea secventei de intrare n n cazul
cel mai ru
Solutie: Formulele sunt date la punctul anterior.
f. Utilizati notatia big-O pentru a descrie cazul cel mai ru pentru algoritmii
utilizati.
Solutie: O(n).
82
83
CRIPTAREA
Lucrarea 7.
Tema 1: Criptarea RSA
Criptografia urmeaz scenarii de genul urmtor: dou persoane A si B doresc s
comunice desi simt n mediul de comunicare prezenta unei alte persoane
deosebit de curioase E. Se presupune c A vrea s trimit lui B mesajul x.
Criptografia ofer solutii n forma urmtoare: A calculeaz o functie de x, e(x),
utiliznd o cheie secret si trimite e(x) pe canalul ascultat si de E. B primeste
mesajul criptat e(x) si utiliznd cheia sa (care n criptografia traditional este
aceeasi cu cheia lui A, dar n criptografia modern nu este aceeasi) calculeaz o
functie d(e(x)) = x, recupernd astfel mesajul. Se prezum c E este incapabil s
recupereze pe x din e(x) deoarece nu are cheia necesar.
O metod criptografic clasic este substituirea de litere. A si B cad de acord
asupra unei permutri t a literelor A, , Z si un mesaj m = a
1
a
2
a
n
alctuit din
n litere devine e(m) = t(a
1
)t(a
2
)t(a
n
). n pofida faptului c exist cel putin
26! chei posibile (cu referire la limba englez), acesta este un sistem de criptare
foarte slab: el este expus la atacul evident prin frecventa literelor.
Cu concursul calculatoarelor, criptografii pot crea sisteme de criptare n care
sunt substituite blocuri ntregi de litere (sau de biti), rezistente astfel la atacul
prin frecvente. Cel mai de succes dintre ele a fost si nc este Data Encryption
Standard (DES), o metod de criptare acceptat de guvernul american, propus
de IBM n 1976. DES utilizeaz o cheie pe 64 de biti (pentru codarea fisierelor
mai lungi, acestea se sparg n blocuri de 8 biti). Cei care au propus DES pretind
c este un sistem sigur; sunt si detractori care-l suspecteaz c la modul subtil
nu este att de sigur. Dimensiunea cheii de 56 de biti este n general considerat
inadecvat pentru criptografia serioas, deoarece 2
56
nu mai este un numr
mare.
Cam la aceeasi vreme cnd DES a fost inventat, a fost propus o idee nou
foarte atractiv: criptografie cu cheie public (public-key cryptography). n
comunicare, persoana B ar avea dou chei: cheia sa privat k
d
, cunoscut numai
de el si o a doua cheie public, k
c
. Cheia k
c
este cunoscut tuturor este de
pild pe pagina gazd a lui B. Cu o metafor mai curnd dubioas, este ca si
cum ar exista mai multe cpii ale unui lact cu care oamenii pot nchide cutii
care contin mesaje si sunt trimise lui B. Dac cineva, de pil A doreste s
trimit un mesaj x lui B, atunci l cripteaz sub forma e(x) care utilizeaz cheia
public. B l decripteaz folosindu-se de cheia lui privat. Partea inteligent a
84
sistemului este c: (1) decriptarea este corect, adic d(e(x)) = x; (2) nu se poate
calcula ntr-un timp rezonabil cheia privat a lui B din cheia lui public si nici x
din e(x), astfel c protocolul este sigur, cam la fel cum nu exist o cale de a
imagina cheia pentru un lact bun.
Sistemul RSA de la intialele a trei cercettori (Ron Rivest, Adi Shamir si Len
Adleman) care l-au inventat este un mod inteligent de a realiza ideea de cheie
public. Iat cum lucreaz aceasta:
- Generarea cheii. B selecteaz dou numere prime mari, p si q. n zilele
noastre, mare nseamn cteva sute de digiti zecimali, curnd poate va
nsemna peste o mie. Pentru a gsi asemenea numere, B genereaz repetat
intregi din aceast gam si i supune unui test de primalitate datorat lui
Fermat, pn cnd dou din ele trec testul. Apoi B calculeaz n = p.q. De
asemenea, B genereaz la ntmplare un ntreg e < n, cu singura restrictie de
a fi prim cu (p 1) si cu (q 1). Perechea (n, e) este de acum cheia public
a lui B si o face cunoscut tuturor. Practic, pentru a face codarea mai
usoar, e este luat adesea 3. Desigur, trebuie evitate numerele prime care
sunt din clasa 1 mod 3.
Acum B poate genera cheia lui secret. Tot ce are de fcut este a calcula
prin mijlocirea algoritmului lui Euclid numrul d = e
1
mod (p 1)(q 1).
Perechea (n, d) este cheia privat a lui B.
- Operarea. Ori de cte ori A sau oricine altcineva doreste s-i trimit un
mesaj lui B procedeaz astfel:
o Fragmenteaz mesajul n siruri de biti de lungime ]
n log
obtinut
prin operatia
]
de trunchiere a unui numr real. Si aici este vorba
de mai multe sute de biti. Se codeaz fiecare sir de biti prin
algoritmul care urmeaz.
o Fie x un astfel de sir de biti si se consider ca fiind un ntreg mod n.
A calculeaz x
e
mod n. Acesta aste mesajul codat e(x) pe care A l
trimite lui B.
o La primirea lui e(x), B calculeaz e(x)
d
mod n. Putin algebr care
apeleaz la mica teorem a lui Fermat pent ru produsul a dou
numere prime produce:
e(x)
d
= x
d.e
= x
1 + m(p 1)(q 1)
= x mod n
De observat c aceast secvent de egalitti probeaz faptul c B decripteaz
corect mesajul primit. Prima egalitate tine seam de definitia lui e(x). A doua
decurge din faptul c d este inversul lui e mod (p 1)(q 1) si astfel, dac se
multiplic d cu e se obtine 1 plus un multiplu de (p 1)(q 1). Ultima egalitate
aminteste de mica teorem a lui Fermat: x
(p1)(q1)
= 1 mod n, cu exceptia
cazului n care x este un multiplu de p sau de q, o posibilitate foarte putin
probabil; astfel, multiplul de (p 1)(q 1) din exponent se poate ignora.
Astfel A poate coda folosind cheia public a lui B. B poate decoda utiliznd
cheia privat pe care numai el o cunoaste. Dar ce se poate spune despre
curiosi? Dac E preia e(x) = x
e
mod n, el poate face mai multe lucruri. Poate
ncerca toti x-ii posibili, s-i codeze cu cheia public a lui B si s gseasc x-ul
85
corect dar asta ia mult prea mult timp. Sau, poate s calculeze d = e
1
mod (p
1)(q 1) si din asta e(x)
d
mod n care este x. Dar pentru a face asta trebuie s
stie numrul (p 1)(q 1); si dac stie att p.q = n ct si (p 1)(q 1) stie p si
q. Cu alte cuvinte, E ar putea factoriza pe n, un produs arbitrar de dou numere
prime mari, dar nimeni nu stie cum s fac asta rapid. Sau, n sfrsit, E si-ar
putea utiliza propria metod ingenioas pentru a decoda e(x) fr factorizarea
lui n, dar este o convingere larg c nu exist o asemenea metod.
Astfel, dup toate dovezile existente, RSA este sigur pentru un n suficient de
mare.
Programul alturat este o ilustrare a modului cum lucreaz sistemul de criptare
RSA. Operatiile de criptare si de decriptare sunt puse laolalt, n sucesiunea
fireasc. Nu s-a recurs la numere prime p, q foarte mari pentru a nu depsi
posibilittile aritmetice curente ale pachetului Matlab. Studentii sunt ndemnati
s nlocuiasc numerele prime p, q propuse cu altele. Sistemul de
criptare/decriptare va functiona att timp ct numerele alese ndeplinesc
conditiile precizate mai sus. Se recomand si ncercarea unor numere p, q
compuse. Se va putea observa n acest caz functionarea defectuoas sau
nefunctionarea sistemului.
% Program de criptare/decriptare cu cheie publica RSA
clear
e=5; % Prima parte a cheii publice
prime=primes(1000); % Se genereaza numere prime < 1000
[i,m1]=size(prime);
pri=zeros(1,m1);
k=0;
for i=4:m1
if mod(prime(i)-1,e)~=0
k=k+1;
pri(k)=prime(i);
end
end
% Se retin numai numerele prime cu proprietatea "e nu divide pe
prim-1"
m1=k;
i2=max([1 1],floor(m1*rand(1,2)))
% Se retin la intamplare doua numere prime p si q
p=pri(i2(1));
q=pri(i2(2));
p_si_q=[p q]
n=p*q;
cheia_publica=[e n] % Se formeaza cheia publica: (e, n)
m=(p-1)*(q-1);
d=1;b=1;
while mod(d*e,m)~=1
d=d+1;
end
% Se stabileste partea secreta a cheii private
cheia_privata=[d n]
86
m=floor(n*rand); % Se genereaza mesajul de criptat (generat
aleator)
mesajul_de_criptat=m
b=1;
for i=1:e
b=m*b;
a=floor(b/n);
b=b-a*n;
end % Se executa operatia de criptare
m=b; % Se afiseaza mesajul criptat
mesajul_criptat=b
cheia_privata=[d n]
b=1;
for i=1:d
b=m*b;
a=floor(b/n);
b=b-a*n;
end % Se executa operatia de decriptare
mesajul_decriptat=b % Se afiseaza mesajul decriptat
Tema 2: Criptarea cu curbe eliptice
Curbe eliptice peste Z
p
: Fiind dat un numr prim p, o curb eliptic peste Z
p
este o congruen y
2
= x
3
+ ax + b mod p la care se adaug un punct O la infinit
astfel nct s fie satisfcut o conditie de nesingularitate 4a
3
+ 27b
2
0 mod
p.
Fiind date punctele P
1
= (x
1
, y
1
) si P
2
= (x
2
, y
2
), se defineste pe curba eliptic
P
1
+ P
2
= (
2
x
1
x
2
, x
1
x
3
) y
1
)
cu

=
+
=

=
2 1
1
2
1
2 1
1 2
1 2
2
3
P P pentru
y
a x
P P pentru
x x
y y

Se consider totodat c (x
1
, y
1
) + (x
1
, y
1
) = O si P
1
+ O = O + P
1
= P
1
. Acesta
este un grup abelian denumit E
p
(a, b).
Exemplu: Se consider curba eliptic y
2
= x
3
+ x + 6 peste Z
11
*
. Pentru a
determina punctele din E, se ia fiecare punct din Z
11
, se calculeaz x
3
+ x + 6 si
apoi se rezolv ecuatia y
2
x
3
+ x + 6 mod 11.
Calculul acesta cere evaluarea de radicali modulo 11. Exist o formul explicit
pentru aceasta deoarece 11 3 mod 4. De fapt, rdcinile ptrate ale unui rest
ptratic r sunt r
(11 + 1)/4
r
3
mod 11. Prin calcul si pentru calcule ulterioare se
completeaz tabelul de mai jos.
Curba eliptic are pe ea 13 puncte (x, y), dac se include si punctul de la infinit.
Fiind de ordinul 13 (prim) ea nssi trebuie s fie un grup ciclic. De pild, dac
se ia generatorul o = (2, 7), puterile lui o, de pild (2, 7) + (2, 7), pot fi
calculate dup cum urmeaz:
87
x x
3
+ x + 6 eQR
11
? y
0 6 nu
1 8 nu
2 5 da 4, 7
3 3 da 5, 6
4 8 nu
5 4 da 2, 9
6 8 nu
7 4 da 2, 9
8 9 da 3, 8
9 7 nu
10 4 da 2, 9
Se evalueaz mai nti :
= (32
2
+ 1)(27)
1
mod 11 = (23)
1
mod 11 = 24 mod 11 = 8
Asadar x
3
= 8
2
2 2 = 5 mod 11 si y
3
= 8(2 5) 7 = 2 mod 11. Decurge de
aici c (2, 7) + (2, 7) = (5, 2).
Apoi, (2, 7) + (2, 7) + (2, 7) = 2(2, 7) + (2, 7) = (5, 2) + (2, 7).
Sisteme de criptare cu curbe eliptice: Algoritmul foarte general ElGamal se
poate aplica la subgrupul ciclic
1
n
Z al lui E
p
(a, b), dar factorul lui de dezvoltare
este 4 (fat de 2 pentru Z
p
). n plus, spatiul textelor n clar (plaintext space)
const din punctele din E
p
(a, b) si nu exist metod convenabil de a genera n
mod determinist puncte din E
p
(a, b).
Se ia o curb eliptic E
p
care contine un subgrup ciclic H =
1
n
Z cu algoritm
discret intractabil. Spatiul textelor n clar este
* *
p p
Z Z si spatiul textelor cifrate
(ciphertext) este
* *
p p p
Z Z E .
Sistemul Menezes Vanstone bazat pe curbe eliptice:
Public: o,
e
E
p
Privat: a astfel ca = ao
Criptare: Se alege aleator
1
n
Z k e
(x, k) E(x, k) = (y
0
, y
1
, y
2
):
y
0
= ko, (c
1
, c
2
) = k
x = (x
1
, x
2
), y
1
c
1
x
1
mod p i y
2
c
2
x
2
mod p
Decriptare: (y
0
, y
1
, y
2
) D(y
0
, y
1
, y
2
) =
p c y p c y mod , mod
1
2 2
1
1 1

cu
ay
0
= (c
1
, c
2
).
Se propune spre studiu si experimentare programul Matlab alturat.
% Program de criptare/decriptare cu curbe eliptice
clear
prime=primes(100); % generare de numere prime
[m,n]=size(prime);
88
m=unidrnd(n,1,1);
p=prime(m)
p=11
a=1;b=6;
if mod(4*a^3+27*b^2,p)==0
mesaj='Nu merge!'
break
end
x=1:(p-1);
x2=mod(x.^2,p);
y2=mod(x.^3+a*x+b,p);
k=0;
for i=1:(p-1)
for j=1:(p-1)
if y2(i)==x2(j)
k=k+1;
per(k,1:2)=[i j]; % calculul punctelor de pe curba
eliptica
end
end
end
[m,n]=size(per)
n=unidrnd(m,1,1);
n=6
alfa=per(n,:) % alegere dintre punctele de pe curba eliptica
alfa=[2 7]
for i=1:(p-1)
for j=1:(p-1)
if mod(x(i)*x(j),p)==1
invx(i)=x(j);
end
end
end
exs=unidrnd(m-1,1,1) % alegere exponent secret
exs=7
la=mod(2*alfa(2),p)
la=invx(la)
la=mod((3*alfa(1)^2+exs)*la,p)
beta=[0 0];
for i=1:la
beta(1)=mod(la^2-alfa(1)-beta(1),p);
beta(2)=mod(la*(alfa(1)-beta(1))-alfa(2),p);
end
beta
Problema 61. Sistem RSA incorect
Se presupune c din eroare sau deliberat cineva alege o valoare pentru n care nu
este un produs de dou numere prime, adic n = pq cu p > 1, q > 1 si q este
compus. Ar fi, evident, mai usor de factorizat ceea ce ar pune o problem de
risc sub aspectul securittii. Dar vor functiona operatiile de criptare si de
decriptare cu acest n? Sustineti rspunsul.
89
Solutie: Nu, criptarea/decriptarea nu mai functioneaz. Pentru a avea un
contraexemplu, fie n = 45 = 5.9. Dac punem p = 5 si q = 9, atunci pentru o
cheie de criptare (e, 45), am alege o cheie de decriptare (d, 45) pentru care de
1 mod ((5 1)(9 1)), adic
de 1 (mod 32)
Astfel, dac e = 5, inversul mod 32 este d = 13. Dar dac criptm si decriptm
mesajul M = 2, obtinem
(2
5
)
13
= 2
65
32 (mod 45).
Mai general, RSA se bazeaz pe faptul c (M
e
)
d
1 (mod n), deoarece aceast
relatie este cea care asigur c decriptarea este inversa criptrii. Relatia se va
mentine dac de 1 (mod m(n)). Dar, dac q este compus, functia totient m(n)
(p 1)(q 1) si astfel vom avea propozitia de 1 mod ((p 1)(q 1)) fals. n
consecint, n cazul exemplificat criptarea RSA nu poate lucra.
Problema 62. Spargerea unui sistem RSA
Fie p si q numere prime si N = pq. Artati cum se pot determina p si q fiind date
N si (p 1)(q 1). Cu alte cuvinte, fiind dat cheia public (e, N), e exponentul
de criptare si N modulul RSA, precum si valoarea m(N) = (p 1)(q 1), este
posibil a calcula p si q prin operatii algebrice simple (n timp polinomial).
Aceasta arat c determinarea lui m(N) este la fel de grea ca si factorizarea.
Solutie: Fiind date pq = N si (p 1)(q 1) = m(N), urmeaz a afla numerele p si
q. Se poate pune q = N/p dup care o nlocuire n ecuatia a doua produce dup
cteva prelucrri algebrice ecuatia n p
p
2
+ (m(N) N 1)p + N = 0
care poate fi rezolvat aplicnd formula cunoscut. Dac p a fost gsit, este usor
a-l gsi si pe q.
Problema 63. O problem de criptare cu cadre didactice
a. Se presupune c la o anumit disciplin activeaz trei profesori si doi
asistenti. Solutiile la tema de cas urmtoare sunt criptate printr-o cheie de
criptare n uzul tuturor celor cinci. Cei trei profesori, sau un asistent si un
profesor, sau ambii asistenti trebuie s poat accesa solutiile. Sugerati o
schem de mprtire a secretului care s asigure aceste cerinte (Indicatie:
ncercati ponderi.).
Solutie: Utilizati o schem partajat 3-din-7 pentru a genera 7 prti ale acestui
secret. Dati o parte fiecrui profesor, si dou prti fiecrui asistent. Cei trei
profesori laolalt au 3 prti; un profesor si un asistent au mpreun 3 prti si cei
doi asistenti au 4 prti; astfel, n orice caz, aceste subseturi au prti suficiente
pentru a recupera secretul.
Mai precis, imaginati-v secretul ca ordonata la origine a unui polinom de
gradul al doilea modular f(x). Fiecrui profesor i se d cte un punct pe f(x) si
fiecrui asistent cte dou puncte pe curba f(x), punctele fiind diferite n
90
perechi. Pentru a descifra f(x) si ordonata ei la origine sunt necesare cel putin
trei puncte. Acest minim de puncte poate fi cumulat numai de trei profesori, de
un profesor si un asistent si de cei doi asistenti. Acelasi minim nu poate fi
ntrunit numai de doi profesori sau numai de un asistent.
b. Se presupune acum c grupa de cursanti este instruit de trei profesori,
fiecare cu doi asistenti proprii. Oricare doi profesori pot accesa datele att
timp ct unul din asistentii fiecrui profesor (un total de cel putin patru
persoane) este de asemenea prezent. Acum cum se procedeaz?
Solutie: Utilizati un sistem de partajare a secretului 2-din-3 pentru a genera
prtile s
1
, s
2
, s
3
ale secretului. Apoi, utilizati o schem de partajare 4-din-5
pentru a genera sub-prtile s
1,1
, , s
1,5
ale lui s
1
, tratnd s
1
ca secretul (unic); se
dau trei sub-prti primului profesor si o subparte fiecruia din asistentii lui. Se
procedeaz analog cu ceilalti profesori.
Iat o descriere mai exact. Mai nti se ia la ntmplare un polinom de gradul
1, P(x), astfel nct secretul este P(0). Apoi tot la ntmplare se iau trei
polinoame de gradul 3, Q
1
(x), Q
2
(x) si Q
3
(x), astfel nct Q
i
(0) = P(i) pentru
oricare i = 1, 2, 3. Cu alte cuvinte, secretul fiecrui polinom Q
i
(x) este una din
prtile derivate din partajarea secretului bazat pe P(x).
Acum pentru fiecare Q
i
(x) generm 5 sub-prti Q
i
(1), , Q
i
(5), atribuind 3 sub-
prti profesorului si cte una asistentilor lui. Atunci, pentru a recupera mesajul,
fiecare profesor i se ntruneste cu unul din asistentii si si recupereaz secretul
polinomului Q
i
(x), care este partea lui din secretul polinomului P(x). n final,
doi profesori se pot ntruni pentru a recupera P(0).
91
CODAREA PENTRU CANALE CU PERTURBATII
Lucrarea 8
Tema 1: Codurile Hamming (corectoare de o eroare)
Codurile Hamming n forma lor originar au cuvintele de lungime n = 2
m
1 cu
m = 3, 4, 5, Acestea sunt codurile care sunt propuse spre studiu n aceast
lucrare. Prin urmare, este vorba aici de coduri Hamming (7,4), (15,11), (31,26)
etc., cu primul numr lungimea n a cuvntului de cod, cu numrul al doilea
lungimea n m a prtii purttoare de informatie, de regul separat si usor
separabil de cei m biti de protectie, biti de paritate, cum mai sunt denumiti
oarecum impropriu.
n linia a doua a programului Matlab alturat, se face atribuirea pentru m a unei
valori naturale mai mari dect 2. Este singura modificare necesar pentru a
genera coduri Hamming diverse si a le studia functionarea. Programul suport
valori variate pentru m, dar nu se recomand depsirea valorii 5 deoarece
cazurile (7,4), (15,11), (31,26) sunt suficient de concludente si urmrirea
calculelor pe monitor este mult usurat.
La apelarea programului hamm, se genereaz mai nti matricea de control-
verificare a codului. Aceasta se obtine foarte simplu: este rezultatul numrrii n
binar de la 1 la n.
Pentru a face codul separabil (partea informational a cuvintelor codului
separat de partea redundant, de protectie) este necesar o ordonare a matricei
de verificare. Ordonarea deplaseaz coloanele care contin o singur unitate
binar la una din extremittile matricei aici la extremitatea din dreapta
pentru a constitui acolo o (sub)matrice unitate mm. Submatricea m(n m)
rmas devine dup transpunere matricea generatoare a bitilor de control
(numiti, cum s-a spus, si biti de paritate). Aceasta, alturat unei (sub)matrici
unitate (n m)(n m) conduce la matricea generatoare a codului.
Odat stabilite aceste matrici specifice codului, se genereaz aleator un cuvnt
informational de lungime n m si se face codarea lui. Pentru cuvntul de cod
rezultat se calculeaz sindromul. Cum este de asteptat, vectorul sindrom are
toate componentele nule.
Se inverseaz deliberat unul din bitii cuvntului de cod. Aceast schimbare este
simularea aparitiei unei erori n cuvntul transmis si receptionat astfel, cu
eroare. Sindromul va fi de aceast dat diferit de vectorul nul asociat exclusiv
cuvintelor receptionate care apartin codului. Se observ c vectorul simdrom se
potriveste pe una din coloanele matricei de verificare. Pozitia coloanei este
aceeasi cu pozitia bitului care trebuie corectat.
92
Se recomand executarea repetat a programului cu acelasi m sau cu valori m
diferite.
Sunt ncurajate modificrile constructive ale programului propus.
% Program hamm pentru codurile Hamming
clear
m=4;
n=2^m-1;
s=strcat('Codul Hamming (',int2str(n),',',int2str(n-m),')');
disp(' ')
disp(s)
for i=1:n
a=dec2binvec(i,m);
h1(:,i)=a';
end % generarea matricii de control
h=h1;
matricea_de_control=h
z=sum(h);
j=0;k=0;
for i=1:n
if z(i)>1
j=j+1;
h(:,j)=h1(:,i);
else
k=k+1;
h(:,n-m+k)=h1(:,i);
end
end % ordonarea matricii de control
matricea_de_control_ordonata=h % se afiseaza matricea de
control ordonata
g=[eye(n-m) (h(:,1:(n-m)))']; % construirea matricei
generatoare
matricea_generatoare=g'
for i=1:n
z(i)=binvec2dec(h(:,i)');
end
inf=unidrnd(2,1,n-m)-1; % se genereaza n-m biti
informaationali
biti_de_informatie=inf % se afiseaza bitii informationali
for j=1:m
p(j)=0;
for i=1:n-m
p(j)=bitxor(p(j),bitand(h(j,i),inf(i)));
end
end % se calculeaza cei m biti de protectie
cod=[inf p]; % se genereaza cuvantul de cod
cuvantul_de_cod=cod
b=h*cod';
b=b-2*(floor(b/2));
vectorul_sindrom=b % se afiseaza sindromul
l=unidrnd(n); % se introduce eroare pe bitul l
s=strcat('Se inverseaza bitul de pe pozitia');
disp(s)
disp(int2str(l))
93
cod(l)=bitxor(1,cod(l));
cuvantul_cu_eroare=cod
b=h*cod';
b=b-2*(floor(b/2));
vectorul_sindrom=b % se afiseaza sindromul
Tema 2: Un cod Hamming (7,4) n aciune
Programul acesta reproduce n bun msur programul precedent. Este limitat
numai la codul Hamming (7,4).
Programul codeaz un text relativ scurt, n jur 60 de caractere. Dup codare,
unul din cuvintele de cod este modificat: un bit este inversat. Se decodeaz sirul
de biti receptionat cu eroare, textul se afiseaz, dup o decodare simpl prin
separarea prtii de informatie, 4 biti, de surplusul de trei biti, 7 4 = 3, adugati
pentru protectie. Dac bitul modificat este n zona informational, efectul erorii
poate fi imediat observat. Dac bitul eronat este pe una din pozitiile 5, 6 sau 7
n cuvntul receptionat, eroarea nu se observ la afisaj desi ea exist.
n faza ultim, bitul eronat este localizat si corectat. Textul afisat dup decodare
si inversarea bitului eronat este din nou corect.
Se recomand repetarea executiei programului, eventual pentru alte siruri de
caractere de codat/transmis.
% Program cod_dec_hamm pentru codare-decodare Hamming (7,4)
clear
m=3; % a nu se modifica
n=2^m-1;
disp(' ')
sir='Transmiterea si codarea informatiei: o disciplina
prietenoasa';
disp('Se codeaza textul:')
disp(' ')
disp(sir)
s=strcat('Se utilizeaza codul Hamming
(',int2str(n),',',int2str(n-m),')');
disp(' ')
disp(s)
for i=1:n
a=dec2binvec(i,m);
h1(:,i)=a';
end % generarea matricii de control
h=h1;
z=sum(h);
j=0;k=0;
for i=1:n
if z(i)>1
j=j+1;
h(:,j)=h1(:,i);
else
k=k+1;
h(:,n-m+k)=h1(:,i);
end
94
end % ordonarea matricii de control
g=[eye(n-m) (h(:,1:(n-m)))']; % construirea matricei
generatoare
aski=double(sir); % codurile ASCII ale caracterelor din sir
[i,nc]=size(aski); % nc este numarul de caractere din sir
disp(' ')
s=strcat('Numar de caractere:',num2str(nc));
disp(s)
biti=zeros(1,14*nc);
for i=1:nc
vec=dec2binvec(aski(i),8);
prov=zeros(n-m:n);
for i1=1:n
prov(:,i1)=and(vec(1:4),(g(:,i1))');
end
pro=zeros(1,n);
for i1=1:n
for j=1:(n-m)
pro(i1)=xor(pro(i1),prov(j,i1));
end
end
biti(14*(i-1)+1:14*i-7)=pro;
prov=zeros(n-m:n);
for i1=1:n
prov(:,i1)=and(vec(5:8),(g(:,i1))');
end
pro=zeros(1,n);
for i1=1:n
for j=1:(n-m)
pro(i1)=xor(pro(i1),prov(j,i1));
end
end
biti(14*(i-1)+8:14*i)=pro;
end % se compun cuvintele de cod Hamming
k1=unidrnd(61); % se alege aleator cuvantul de cod purtator
de eroare
k2=unidrnd(7); % se alege aleator pozitia bitului eronat
s=strcat('Se introduce o eroare n cuvantul de
cod:',num2str(k1),' bitul:',num2str(k2));
disp(' ')
disp(s)
biti(14*(k1-1)+k2)=xor(1,biti(14*(k1-1)+k2)); % se inverseaza
un bit
b=zeros(1,nc);
for i=1:nc
a1=[biti(14*(i-1)+1:14*i-7-3) biti(14*(i-1)+8:14*i-3)];
b(i)=binvec2dec(a1);
end
disp(' ')
disp('Textul cu eroarea (eventual observabila):')
disp(' ')
disp(char(b))
for i=1:2*nc
cuv=(biti(7*(i-1)+1:7*i));
95
si=zeros(3,1);
for k=1:m
pro=and(h(k,:),cuv);
si(k)=mod(sum(pro),2);
end
if sum(si)~=0
for j=1:n
prov=xor(si,h(:,j));
if sum(prov)==0
k1=j;
end
end
biti(7*(i-1)+k1)=xor(1,biti(7*(i-1)+k1)); %
corectare!
end
end % se localizeaza eroarea si se corecteaza
b=zeros(1,nc);
for i=1:nc
a1=[biti(14*(i-1)+1:14*i-7-3) biti(14*(i-1)+8:14*i-3)];
b(i)=binvec2dec(a1);
end
disp(' ')
disp('Textul cu eroarea corectata:')
disp(' ')
disp(char(b))
disp(' ')
Tema 3: Coduri ciclice
Se propune spre executie si studiu scriptul Matlab urmtor:
clear
n=15;k=10; % lungimea cuvintelor de cod si lungimea cuvintelor
informationale
sn=int2str(n);sk=int2str(k);
s=strcat('Se determina toate polinoamele de grad (',sn,'-
',sk,')');
s=strcat(s,' generatoare ale unui cod cicilic (',sn,',',sk,')');
disp(' ')
disp(s)
pol=cyclpoly(n,k,'all')
pause
s=strcat('Se genereaza matricea de verificare si matricea
generatoare');
disp(s)
[H,G]=cyclgen(15,pol(2,:))
wt=gfweight(G);
swt=int2str(wt);
disp(strcat('Ponderea codului: ',swt))
pause
disp(' ')
disp('Un cuvant informational:')
info=dec2binvec(12,10)
96
disp('Cuvantul de cod asociat:')
c=mod(info*G,2)
sindrom=mod(H*c',2)
pause
c1(2:15)=c(1:14); % o permutare circulara a cuvantului de cod
c1(1)=c(15);
disp('Cuvantul de cod si o permutare circulara a lui')
[c' c1']'
sindrom=mod(H*c1',2)
pause
disp('Cuvintele de mai sus si suma lor')
c2=mod(c+c1,2);
[c' c1' c2']'
sindrom=mod(H*c2',2)
pause
disp('Se introduce o eroare pe bitul al cincilea')
cer=c;
cer(5)=xor(c(5),1);
[c' cer']'
sindrom=mod(H*cer',2)
pause
disp('Se introduc pana la patru erori pe pozitii aleatoare')
for i=1:10
r=unidrnd(15,1,4);
r=sort(r)
cer=c;
for j=1:4
cer(r(j))=xor(c(r(j)),1);
end
[c' cer']'
sindrom=mod(H*cer',2)
if sindrom==zeros(n-k,1)
disp('Incapacitatea codului de a detecta mai mult de
trei erori')
end
pause
end
Problema 64
Informatia generat de o surs se poate reprezenta prin numere binare de
lungime egal cu 7 biti. Se adaug un bit suplimentar, un bit de paritate, prin
care se obtine un cod de paritate constant care include si cuvntul de cod nul.
a. Artati c ponderea Hamming a acestui cod este 2.
Solutie: n evaluarea ponderii unui cod, cuvntul nul se omite dac el apartine
codului. Aici cuvntul nul, 00000000, este de o paritate care-l face s apartin
codului. Se caut un cuvt de pondere 1. Asemenea cuvinte de 8 biti exist dar
nu apartin codului deoarece paritatea lor nu corespunde. n schimb, cuvinte de
acceasi lungime, de pondere 2 exist si apartin codului: prezenta a dou (si
numai dou) unitti binare asigur paritatea necesar. Concluzia: ponderea
codului din enunt este 2.
97
b. Artati c acest cod este un cod liniar.
Solutie (1): Prin definitie, un cod este liniar dac suma bit-cu-bit modulo 2 a
dou cuvinte de cod (oricare ar fi acelea) conduce todeauna la un cuvnt care
apartine codului. Dac n cele dou cuvinte pozitiile unittilor binare sunt toate
diferite, ponderea cuvntului rezultat este suma ponderilor cuvintelor nsumate.
Suma a dou numere pare este tot un numr par, asadar cuvntul rezultat
apartine codului. Dac unele unitti binare coincid ca pozitie n cuvintele
nsumate, ele se anihilieaz n perechi si din suma ponderilor (numr par) se
scad 2, 4, 6 etc. totdeauna un numr par. Rezultatul este o pondere par si
cuvntul rezultat apartine codului.
Solutie (2): Ecuatia
x
1
+ x
2
+ x
3
+ x
4
+ x
5
+ x
6
+ x
7
+ x
8
= 0
sum modulo 2 a bitilor componenti, este sistemul liniar vrificat de cuvintele
codului. Concluzia: codul este liniar.
Problema 65
Se d un cod rectangular 34 cu dubl paritate, se d cuvntul de cod
1 1 1 1 1 0 1 0 0 1 0 1
1 1 1 1
1 0 1 0
0 1 0 1

a. Artati c ponderea Hamming a codului este 4.


Solutie: Prin verificare direct, ponderea nu poate fi 1, 2 sau 3 deoarece
conditiile de paritate pe linii si pe coloane n-ar fi ndeplinite. Cuvinte cu
ponderea 4 exist si ponderea codului este 4.
b. Scrieti un cuvnt de cod situat la distanta Hamming 4 fat de cuvntul dat.
Solutie: Prin inversarea unui singur bit n partea informational se obtine
inversarea altor trei biti de paritate. Se obtine astfel un cuvnt (din mai multe
posibile) care apartine codului si este la distanta Hamming 4 fat de cuvntul
propus n enunt. Exemplu:
0 0 1 1 1 0 1 0 1 0 0 1
0 0 1 1
1 0 1 0
1 0 0 1

c. Scrieti matricea de control a codului.


Solutie: Matricea cerut rezult din scrierea conditiilor de paritate pe linii si pe
coloane. Rezult un sistem omogen de 7 ecuatii cu 12 necunoscute verificat
numai de cuvintele codului. Coeficientii sistemului fac matricea de control.
Atentie! Din cele 7 ecuatii numai 6 sunt independente, una din ele, cea de a
saptea rezult din celelalte.
d. Se receptioneaz cuvntul
1 1 1 1 1 0 1 1 0 1 0 1
El nu apartine codului deoarece contine o eroare. Corectati eroarea.
Solutie: Se scrie codul n forma rectangular.
98
|

1 1 1 1
1 0 1 1
0 1 0 1
1 1 1 1 1 0 1 1 0 1 0 1
Pe linia si coloana marcate cu sgeti paritatea este necorespunztoare. Bitul
eronat se afl pe linia si pe coloana marcate. Inversarea lui rezolv eroarea.
Cuvntul corect(at) este
1 1 1 1 1 0 1 0 0 1 0 1
Problema 66. Coduri Golay
Detinnd cunostinte exclusiv despre codul Hamming (7, 4), Marcel J.E.Golay a
generalizat ideea lui Hamming la coduri perfecte corectoare de o eroare cu baza
orice numr prim. Dup ce a terminat acest aspect, Golay a nceput s caute
coduri perfecte corectoare de mai multe erori. Unul din codurile Golay este de
interes special deorece a fost utilizat mai trziu pentru a genera pachete n
spatiul 24-dimensional.
Se reaminteste c un cod corector de x erori trebuie s fie caracterizat de o
distant Hamming minim de cel putin 2x + 1. Pentru ca un cod s fie perfect,
numrul de vrfuri ale unui n-cub unitar dintr-o sfer de raz x care-l cuprinde
trebuie s fie o putere a lui r, unde r este rdcina codului. n cazul binar
k
x
i
i
n
C 2
0
=

=
pentru un anumit ntreg k. Aceasta este suma primilor x + 1 coeficienti/elemente
din linia a n-a a triunghiului lui Pascal. Golay a gsit dou asemenea numere
12
2
0
90
2 =

= i
i
C
si
11
3
0
23
2 =

= i
i
C
n cazul n = 90 Golay a artat c nu exist nici un cod perfect (90, 78) corector
a dou erori. Pentru n = 23 Golay a gsit un cod (23, 12) corector de 3 erori si a
si dat o matrice pentru el
]
]
]
]
]
]
]
]
]
]
]

=
1 1 1 1 1 1 1 1 1 1 1 0
1 0 1 1 0 0 0 0 1 1 1 1
1 1 0 0 0 1 0 1 0 1 1 1
0 1 1 0 1 0 1 0 0 1 1 1
0 1 0 1 1 0 0 1 1 0 1 1
1 0 0 0 1 1 1 0 1 0 1 1
0 0 1 1 0 1 1 1 0 0 1 1
0 0 1 0 1 1 0 1 1 1 0 1
0 1 0 1 0 1 1 0 1 1 0 1
1 0 0 1 1 0 1 1 0 1 0 1
1 1 1 0 0 0 1 1 1 0 0 1
A
Prin alipirea la aceasta a matricii unitate I
11
, se obtine o matrice de verificare de
aceeasi form cu acelea pentru codurile corectoare de o eroare.
Pentru a construi codul, din digitii mesajului y
1
, , y
r
se evalueaz digitii de
control (de paritate) x
1
, , x
k
astfel nct
99
2 mod 0
12
1
+

= j
j ij i
y a x , i = 1, 2, , 11
sau
2 mod
12
1

j
j ij i
y a x , i = 1, 2, , 11
Cuvintele de cod au forma y
1
, , y
r
, x
1
, , x
k
cu digitii de paritate plasati n
partea din urm a cuvntului.
a. Stabiliti ponderea codului.
Solutie: Cu scriptul Matlab urmtor se genereaz toate cuvintele de cod nenule,
n numr de 2
12
1 si se retine ponderea cea mai mic.
clear
% Se initializeaza matricea conform enuntului
a=[1 0 0 1 1 1 0 0 0 1 1 1;1 0 1 0 1 1 0 1 1 0 0 1
1 0 1 1 0 1 1 0 1 0 1 0;1 0 1 1 1 0 1 1 0 1 0 0
1 1 0 0 1 1 1 0 1 1 0 0;1 1 0 1 0 1 1 1 0 0 0 1
1 1 0 1 1 0 0 1 1 0 1 0;1 1 1 0 0 1 0 1 0 1 1 0
1 1 1 0 1 0 1 0 0 0 1 1;1 1 1 1 0 0 0 0 1 1 0 1
0 1 1 1 1 1 1 1 1 1 1 1]
po=23; % Se initilizeaza ponderea la valoarea maxima posibila
% Se genereaza toate cuvintele de cod nenule
% si se calcualeaza ponderea fiecaruia
for i=1:2^12-1
ci=dec2bin(i,12);
for k=1:12
b(k)=str2num(ci(k));
end
c=(mod(a*b',2))';
cc=[b c];
po=min(po,sum(cc));
end
% Se retine si se afiseaza ponderea minima
po
Ponderea codului Golay este 7. De aici capacitatea codului de a corecta pn la
3 erori.
b. Stabiliti codomeniul unui cuvnt de cod la alegere.
Solutie: Fie acel cuvnt de cod 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1. Se
retin ca apartinnd codomeniului cuvintele de cod la distanta Hamming cel mult
egal cu 3. nsumate, aceste cuvinte care difer prin 1, 2 sau 3 biti sunt n
numr de
2047 1771 253 23
3
23
2
23
1
23
= + + = + + C C C
la care se adaug cuvntul nsusi.
Codomeniul oricrui cuvnt de cod este alctuit din 2
11
cuvinte de 23 de biti.
Problema 67. Cod Hamming extins
100
Se defineste codul Hamming extins H
8
de lungime n = 8 ca o multime de
secvente (x
0
, x
1
, x
2
, x
3
, x
4
, x
5
, x
6
, x
7
) de 8 valori binare care satisfac (modulo 2)
urmtorul sistem de ecuatii liniare simultane:
x
0
+ x
1
+ x
2
+ x
3
+ x
4
+ x
5
+ x
6
+ x
7
= 0 (1)
x
0
+ x
1
+ x
2
+ x
3
= 0 (2)
x
0
+ x
1
+ x
4
+ x
5
= 0 (3)
x
0
+ x
2
+ x
4
+ x
6
= 0 (4)
S-a demonstrat c acest cod Hamming extins este capabil a corecta cel putin 1
eroare printr-o regul de decodare explicit (bazat pe un tabel de sindromuri)
capabil a corecta orice eroare pe un singur bit.
a. Listati toate cuvintele de cod din H
8
.
Solutie: Cuvintele codului sunt solutii ale sistemului de ecuatii omogen din
enunt. Matricea sistemului este
]
]
]
]
]

=
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
1 1 1 1 1 1 1 1
A
Prin operatii cu linii se obtine o form sistematic:
]
]
]
]
]

=
0 0 0 0 1 1 1 1
1 1 0 0 1 1 0 0
1 0 1 0 0 1 0 1
1 0 0 1 1 0 0 1
A
Dac se aleg ca biti de paritate x
0
, x
2
, x
3
si x
7
, dup ce x
7
devine x
1
si x
1
devine
x
7
, se obtine matricea
]
]
]
]
]

=
1 0 0 0 1 1 0 1
0 1 0 0 1 1 1 0
0 0 1 0 0 1 1 1
0 0 0 1 1 0 1 1
A
tot sistematic dar cu bitii de paritate separati de bitii informationali.
Cuvintele de cod se obtin numrnd pe 4 biti de la 0 la 15 si multiplicnd
cuvintele obtinute cu matricea A.
b. Determinati o matrice generatoare pentru H
8
.
Solutie: Matricea generatoare este matricea A n forma ultim obtinut la
punctul anterior.
c. Determinati o matrice de verificare pentru H
8
.
Solutie: Aceeasi matrice A este si matrice de verificare.
d. Determinati dimensiunea si rata codului H
8
.
Solutie: Cuvintele de cod au lungimea 8, rata codului este 8/4 = 2.
Problema 68.
Se ia n considerare din nou codul Hamming extins H
8
n versiunea definit n
Problema 67.
a. Eliminati prima restrictie, ecuatia (1) si definiti un nou cod H
8
*
alctuit din
secvente de 8 valori binare care satisfac (doar) restrictiile (2), (3), (4). Care
101
este dimensiunea si care este rata acestui nou cod? Este (si) H
8
*
capabil a
corecta 1 eroare? Explicati matematic.
Solutie: Matricea sistemului verificat de cuvintele de cod este n aceast
variant
]
]
]
]

=
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
A
cu bitul x
7
liber de orice restrictie.
Dimensiunea codului este 8, rata este 8/4 = 2. Codul nu este capabil a face
diferenta ntre corectitudinea si incorectitudinea bitului ultim, x
7
.
b. Eliminati acum restrictia (1) si stergeti bitul x
7
pentru a obtine un cod nou
H
7
alctuit din secvente mai scurte, de 7 biti (operatia se numeste perforarea
codului H
8
). Care sunt dimensiunea si rata noului cod? Este (nc) acest cod
capabil a corecta 1 eroare? Explicati matematic.
Solutie: Renuntarea la prima restrictie si la bitul x
7
transform codul H
8
*
n
codul H
7
. Dimensiunea noului cod este 7 si rata este 7/4 = 1,75. Da, codul este
capabil a corecta o eroare. Codul devine un cod Hamming H
7
.
Problema 69.
Se consider din nou codul H
7
dezvoltat n problema precedent. Artati c
orice secvent posibil de 7 biti receptionat poate fi convertit ntr-un cuvnt
de cod prin inversarea a cel mult unuia din bitii ei.
Solutie: Se calculeaz un sindrom care este un vector cu trei componente
binare. Dac sindromul este nul, nu trebuie inversat nici un bit. Un sindrom
nenul sunt sapte asemenea vectori sindrom este criteriul de corectie pentru
codul Hamming H
7
corector de o eroare: se inverseaz bitul de pe pozitia
coloanei din matricea de verificare care coincide cu sindromul.
Problema 70.
Fie H
7
utilizat pentru un canal cu stergere BEC(p) binary erasure channel cu
probabilitatea de stergere satisfcnd conditia 0 < p < 1.
Artai c H
7
este capabil a corecta toate tipurile de erori cu dou sau mai putine
stergeri.
Solutie: Codul H
7
are matricea de verificare n forma canonic (sistematic)
]
]
]
]

=
0 1 1 1 1 0 0
1 0 1 1 0 1 0
1 1 0 1 0 0 1
H
astfel c orice cuvnt de cod verific ecuatiile de verificare a parittii
x
0
= x
3
+ x
5
+ x
6
x
1
= x
3
+ x
4
+ x
6
x
2
= x
3
+ x
4
+ x
5
102
Se admite c stergerile apar n pozitiile x
i
, x
j
cu i j. Indiferent de alegerea
indicilor i si j, exist cel putin o ecuatie n care apare x
i
dar nu x
j
sau apare x
j
dar
nu x
i
. O astfel de ecuatie se foloseste pentru a obtine bitul din acea pozitie
modificat prin stergere. Orice alt ecuatie din cele de verificare a parittii poate
fi folosit pentru restabilirea celuilalt bit sters. Algoritmul acesta simplu arat
c H
7
este capabil a corecta toate cuvintele afectate de cel mult dou stergeri.
Problema 71.
Se consider urmtoarele matrici 36:
]
]
]
]

=
0 1 1 1 0 0
1 0 1 0 1 0
1 1 1 0 0 1
A
]
]
]
]

=
0 0 1 1 1 1
1 1 0 1 1 0
0 1 0 0 1 1
B
]
]
]
]

=
0 1 1 0 0 1
1 1 0 1 1 0
1 0 1 1 0 1
C
Este vreuna dintre aceste matrici generatoare a unui cod liniar binar (6, 3)?
Sunt printre ele matrici care genereaz acelasi cod?
Solutie: Matricea A este n forma canonic. Pentru a aduce pe B n forma
canonic se procedeaz pas cu pas la: adunarea liniei prime la a treia, adunarea
liniei a doua la prima si, n final, adunarea liniei a treia la prima si la a doua
(eliminarea Gauss):
]
]
]
]

]
]
]
]

]
]
]
]

0 1 1 1 0 0
1 0 1 0 1 0
1 1 1 0 0 1
~
0 1 1 1 0 0
1 1 0 1 1 0
1 0 0 1 0 1
~
0 1 1 1 0 0
1 1 0 1 1 0
0 1 0 0 1 1
~ B
Matricea aceasta coincide cu A.
Si pentru a aduce matricea C la forma canonic se aplic tot eliminarea Gauss:
se adun prima linie la a treia, apoi se adun linia a treia la prima si la a doua:
]
]
]
]

]
]
]
]

1 1 0 1 0 0
0 0 0 0 1 0
0 0 1 0 0 1
~
1 1 0 1 0 0
1 1 0 1 1 0
1 0 1 1 0 1
~ C
Forma canonic a matricei C este diferit si de A si de B n forma lor canonic
comun. Toate cele trei matrici au rangul 3, asadar toate genereaz coduri (6,
3). A si B generez acelasi cod, C genereaz un cod diferit.
Problema 72.
Se consider un cod rectangular C construit din H
7
astfel:
- Se aranjeaz 16 biti informationali ntr-o matrice 44
- Se face codarea H
7
pe fiecare linie, ceea ce conduce la o matrice 47
- Se face acelasi lucru pe fiecare coloan pentru a crea o matrice 77
103
- Codul C const n toate matricile 77 obtinute n acest mod.
Determinati distanta minim Hamming/ponderea pentru codul C.
Determinati multimea tuturor parametrilor t
c
si t
d
pentru care C este un cod
corector/detector de (t
c
, t
d
) erori, cu t
d
numrul cel mai mare posibil pentru un
t
c
ales.
Solutie: n scrierea matricial, codul arat astfel
]
]
]
]
]
]
]
]
]

48 47 46 45 44 43 42
41 40 39 38 37 36 35
34 33 32 31 30 29 28
27 26 25 24 23 22 21
20 19 18 17 16 15 14
13 12 11 10 9 8 7
6 5 4 3 2 1 0
x x x x x x x
x x x x x x x
x x x x x x x
x x x x x x x
x x x x x x x
x x x x x x x
x x x x x x x
cu partea informational plasat n submatricea 44 din coltul de sud-est.
Conform enuntului, codul trebuie s satisfac pe ultimele patru linii restrictiile
x
21 + i
= x
24 + i
+ x
26 + i
+ x
27 + i
x
22 + i
= x
24 + i
+ x
25 + i
+ x
27 + i
x
23 + i
= x
24 + i
+ x
25 + i
+ x
26 + i
pentru i = 0, 7, 14, 21, adic 12 ecuatii.
Analog, pe coloane, trebuie s satisfac restrictiile
x
0 + i
= x
21 + i
+ x
35 + i
+ x
42 + i
x
7 + i
= x
21 + i
+ x
28 + i
+ x
42 + i
x
14 + i
= x
21 + i
+ x
28 + i
+ x
35 + i
pentru i = 0, 1, 2, 3, 4, 5, 6, adic alte 21 de ecuatii. Totalul restrictiilor: 33.
Precizarea unui cuvnt informational conduce la determinarea unic a bitilor de
protectie/control. Cuvntul informational nul conduce la cuvntul de cod nul.
Dac un singur bit informational este nenul, fie acela x
24
, atunci alti biti din
partea de control devin nenuli. n cazul x
24
= 1 (n exclusivitate), mai sunt
nenuli bitii x
21
, x
22
, x
23
, x
3
, x
10
, x
17
dar si x
0
, x
1
, x
2
, x
7
, x
8
, x
9
, x
14
, x
15
, x
16
. Acesta
este un cuvnt cu ponderea 16. Dar nu toate cuvintele cu un singur bit nenul n
partea informational au ponderea 16. Dac bitul nenul este x
25
, atunci cuvntul
de cod are bitii x
22
, x
23
, x
4
, x
11
, x
18
si x
1
, x
2
, x
8
, x
9
, x
15
, x
16
nenuli. Acesta este un
cuvnt cu ponderea 12. Si nc, dac x
32
este bitul informational nenul, cuvntul
de cod are nenuli bitii x
29
, x
30
, x
11
, x
18
si x
8
, x
15
, x
9
, x
17
. Ponderea acestui cuvnt
este 9. Ce se poate afirma pe baza acestor explorri este c ponderea codului nu
este mai mare dect 9.
Pe de alt parte, orice linie din matricea de mai sus, care are n partea
informational cel putin un bit nenul este un cuvnt din codul Hamming H
7
cu
ponderea de cel putin 3, ca orice cuvnt nenul din H
7
. Tot asa, orice coloan
care contine o unitate binar este un cuvnt din H
7
, de asemenea cu ponderea 3
sau mai mare. Din aceste dou afirmatii rezult c ponderea codului propus este
cel putin 33 = 9.
Cazul particular evidentiat mai sus, cel cu x
32
= 1 si restul bitilor informationali
nuli aduce precizarea c ponderea codului este chiar 9.
104
Perechile (t
c
, t
d
) pot fi: (0, 8), (1, 6), (2, 4), (3, 1), (4, 0).
Problema 73.
Pentru fiecare cod de lungime n = 2 la 12, elaborati un tabel al codurilor bloc
liniare sistematice de dimensiune k = 2 cu cea mai bun posibil distant
Hamming minim d
min
. Tabelul trebuie s includ o matrice generatoare pentru
cod ca si valoarea d
min
.
Solutie: Cel mai simpl cale de tratare (si suficient de general) este a considera
urmtoarea structur a matricilor generatoare:
]
]
]

= =
1 1 1 1 0 0
0 0 1 1 1 1
1 0
0 1
] | [


P I G
cu P care are n prima linie b unitti consecutive aliniate la stnga si n a doua
linie d unitti consecutive aliniate la dreapta.
Calculele specifice conduc la solutiile urmtoare:
n = 2 d
min
= 1,
]
]
]

=
1 0
0 1
G
n = 3 d
min
= 2,
]
]
]

=
1
1
1 0
0 1
G
n = 4 d
min
= 2,
]
]
]

=
1 0
0 1
1 0
0 1
G
n = 5 d
min
= 3,
]
]
]

=
1 1 0
0 1 1
1 0
0 1
G
n = 6 d
min
= 4,
]
]
]

=
1 1 1 0
0 1 1 1
1 0
0 1
G
n = 7 d
min
= 4,
]
]
]

=
1 1 1 0 0
0 0 1 1 1
1 0
0 1
G
n = 8 d
min
= 5,
]
]
]

=
1 1 1 1 0 0
0 0 1 1 1 1
1 0
0 1
G
n = 9 d
min
= 6,
]
]
]

=
1 1 1 1 1 0 0
0 0 1 1 1 1 1
1 0
0 1
G
n = 10 d
min
= 6,
]
]
]

=
1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1
1 0
0 1
G
n = 11 d
min
= 7,
]
]
]

=
1 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 1
1 0
0 1
G
n = 12 d
min
= 8,
]
]
]

=
1 1 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 1 1 1
1 0
0 1
G
Pentru k = 2 si un n oarecare din cele recomandate, este usor de artat, dar
destul de miglos, c cea mai bun distant Hamming minim este
105
]
]
]

=
3
2
min
n
d
adic partea ntreag a numrului
3
2n
. Calculele prezentate mai sus pentru n =
2, 3, , 11, 12 sustin acest rezultat.
Problema 74.
Se consider C un cod binar [6, 3] cu matricea generatoare
]
]
]
]

=
0 0 1 1 1 1
1 1 0 1 1 0
0 1 0 0 1 1
G
Regula de codare c = (a
1
, a
2
, a
3
)G nu este sistematic. Stabiliti un operator
matricial J care s aplice cuvintele de cod (printr-un decodor) pe bitii de
informatie corespunztori (pentru utilizatorul ultim), adic
(a
1
, a
2
, a
3
) = cJ
Solutie: n exemplul acesta simplu, problema se poate rezolva prin ncercri,
poate prin inspectare repetat! Codurile mai lungi, mai complexe cer o tratare
mai sistematic. Tratarea aceasta urmeaz.
Se poate folosi un artificiu din algebra liniar. Fie A o matrice lm cu forma
canonic B si fie M = [A | I] matricea l(m + l) obtinut prin alipirea matricei
unitate I de dimensiune ll. Eliminarea Gauss aplicat matricei M conduce la
forma ei canonic [B | Q]. Submatricea Q are o proprietate interesant: QA = B.
De fapt, Q memoreaz pasii eliminrii Gauss care schimb pe A n B.
Pentru motive care vor fi evidente mai departe, se aplic artificiul schitat mai
sus matricei A = G
T
. Astfel
M = [G
T
| I] =
]
]
]
]
]
]
]

1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 1 1
0 0 1 0 0 0 1 0 0
0 0 0 1 0 0 1 1 0
0 0 0 0 1 0 1 1 1
0 0 0 0 0 1 1 0 1
~
~
]
]
]
]
]
]
]

1 0 0 0 1 1 0 0 0
0 1 0 1 0 1 0 0 0
0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 0
0 0 0 0 1 1 0 1 0
0 0 0 1 1 0 0 0 1
Etapele parcurse pn la forma ultim, cea canonic constau n operatii cu linii
si sunt urmtoarele:
- se adun linia 1 la liniile 2 si 5
- se adun linia 2 la linia 6 si linia 3 la linia 5
- se adun linia 2 la linia 3
- se adun linia 3 la linia 4
106
- se adun linia 3 la linia 1.
Matricile interesante sunt
]
]
]
]
]
]
]

=
0 0 0
0 0 0
0 0 0
1 0 0
0 1 0
0 0 1
B si
]
]
]
]
]
]
]

=
1 0 0 0 1 1
0 1 0 1 0 1
0 0 1 1 1 1
0 0 0 1 1 1
0 0 0 0 1 1
0 0 0 1 1 0
Q
Din c = aG, rezult c
T
= G
T
a
T
. Se stie totodat c QG
T
= B, astfel c
Qc
T
= QG
T
a
T
= Ba
T
=
]
]
]
]
]
]
]

0
0
0
3
2
1
a
a
a
Zerourile din vectorul ultim se pot ignora, asa nct fie A matricea 36 obtinut
din primele trei linii ale matricei Q. Atunci Ac
T
= a
T
si solutia problemei este
matricea
J = A
T
=
]
]
]
]
]
]
]

0 0 0
0 0 0
0 0 0
1 0 1
1 1 1
1 1 0
Problema 75.
Fie un cod C care admite urmtorul decodor optimal (de distant minim)
Sindromul Eroarea Sindromul Eroarea
[0000]
T
0000000 [0001]
T
0000001
[1000]
T
0001000 [1001]
T
0010100
[0100]
T
0000100 [0101]
T
0011000
[1100]
T
0001100 [1101]
T
0010000
[0010]
T
0000010 [0011]
T
0000011
[1010]
T
0001010 [1011]
T
0100000
[0110]
T
0000110 [0111]
T
1000000
[1110]
T
0111000 [1111]
T
0010010
a. Determinati o matrice generatoare pentru C.
Solutie: Matricea de verificare este
|
k n
I P H

=
]
]
]
]
]

= |
1 0 0 0 1 1 1
0 1 0 0 0 1 1
0 0 1 0 1 0 1
0 0 0 1 1 1 0
107
si se stabileste prin rezolvarea ctorva ecuatii simple. De pild cuvtul de cod
afectat de eroarea 0001000 filtreaz coloana [1 0 0 0]
T
din matricea H. Similar,
alti vectori de eroare cu un singur bit nenul filtreaz coloane din H care sunt
identice cu vectorii sindrom. Vectorii eroare cu mai multi biti nenuli sunt
utilizati pentru verificare.
Acum, matricea generatoare a codului se scrie prelund submatricea P din
partitia lui H de mai sus si completnd-o deasupra cu matricea unitate I
k
:
]
]
]
]
]
]
]
]

=
]
]
]
]

1 1 1
0 1 1
1 0 1
1 1 0
1 0 0
0 1 0
0 0 1
P
I
k
b. Utilizati decodorul pentru a decoda vectorul receptionat r = [1110111].
Solutie: Evaluarea produsului H
T
r produce sindromul [0110]
T
. Conform
tabelului, vectorul eroare este e = [0000110] si
r = r + e = [1110001]
n aritmetica potrivit (bit-cu-bit modulo 2).
Problema 76.
Se consider codul C bloc liniar [7, 3], cu matricea generatoare n form
sistematic urmtoare:
]
]
]
]

=
1 0 1 1 1 0 0
1 1 0 1 0 1 0
1 1 1 0 0 0 1
G
Acest cod este destinat transmiterii informatiei codate sistematic pe un BSC
(Binary Symmetric Channel) cu probabilitatea ncrucisat p. Utilizati matricea
standard
2
pentru C, dat imediat mai jos, pentru a rspunde la ntrebrile
privitoare la performantele decodrii.
Matricea standard
0000000 1000111 0101011 0011101 1101100 1011010 0110110 1110001
0000001 1000110 0101010 0011100 1101101 1011011 0110111 1110000
0000010 1000101 0101001 0011111 1101110 1011000 0110100 1110011
0000100 1000011 0101111 0011001 1101000 1011110 0110010 1110101
0001000 1001111 0100011 0010101 1100100 1010010 0111110 1111001
0010000 1010111 0111011 0001101 1111100 1001010 0100110 1100001
2
Matricea standard. n teoria codrii, matricea standard (sau matricea slepian) este o matrice
cu dimensiunile qnkqk care listeaz toate elementele unui spatiu vectorial particular F
q
n.
Matricea standard se utilizeaz pentru a decoda codurile liniare, adic pentru stabilirea
cuvntului de cod corespunztor unui vector-mesaj primit. n cazul de fat, dar si n general,
matricea standard are n prima linie cuvintele codului, n prima coloan vectorii eroare lideri de
comultimi/codomenii care se regsesc pe aceeasi linie. Celelalte elemente se obtin prin
nsumarea bit-cu-bit modulo 2 a vectorilor eroare cu cuvintele de cod, pe linia, pe coloana
corespunztoare.
108
0100000 1100111 0001011 0111101 1001100 1111010 0010110 1010001
1000000 0000111 1101011 1011101 0101100 0011010 1110110 0110001
0000011 1000100 0101000 0011110 1101111 1011001 0110101 1110010
0000110 1000001 0101101 0011011 1101010 1011100 0110000 1110111
0001100 1001011 0100111 0010001 1100000 1010110 0111010 1111101
0011000 1011111 0110011 0000101 1101100 1000010 0101110 1101001
0001010 1001101 0100001 0010111 1100110 1010000 0111100 1111011
0010100 1010011 0111111 0001001 1111000 1001110 0100010 1100101
0010010 1010101 0111001 0001111 1111110 1001000 0100100 1100011
0111000 1111111 0010011 0100101 1010100 1100010 0001110 1001001
a. Determinati P
U
(E) probabilitatea nedetectrii erorii ntr-un cuvnt.
Solutie: P
U
(E) = P(vectorul eroare este un cuvnt de cod nenul). Numrtorul
de pondere pentru cod este A(x) = 1 + 7x
4
. Sunt sapte cuvinte de cod nenule,
toate cu ponderea Hamming egal cu 4. Astfel,
P
U
(E) = 7p
4
(1 p)
3
Acelasi rspuns se obtine si cu formula
P
U
(E) = (1 p)
n
]
]
]

|
|
.
|

\
|

1
1 p
p
A
b. Determinati P(E) probabilitatea ca decodorul optimal prin distant minim
s produc un cuvnt de cod gresit (eroare de decodor).
Solutie: P(E) = P(vectorul eroare nu este lider de codomeniu). Se tabeleaz
distributia dup pondere a liderilor de codomeniu:
Ponderea Hamming 0 1 2 3
Numrul de lideri de codomeniu 1 7 7 1
Atunci
P(E) = 1 P(vectorul de eroare este lider de codomeniu) =
= 1 (1 p)
7
7p(1 p)
6
7p
2
(1 p)
5
p
3
(1 p)
4
c. Determinati probabilitatea ca decodorul optimal de distant minim s
decodeze incorect toti cei trei biti de informatie.
Solutie: Se admite c se transmite c
000
= (0000000). (Pentru alt cuvnt de cod
retinut, analiza este similar). Toti cei trei biti de informatie vor fi decodati
eronat atunci si numai atunci cnd decodorul produce cuvntul de cod c
111
=
(1110001). Astfel,
P(toti cei trei biti de informatie sunt eronati) =
= P(vectorul eroare este n coloana care are n cap pe c
111
)
Tabelarea distributiei dup ponderi n acea coloan conduce la
Ponderea Hamming 0 1 2 3 4 5 6 7
Numrul de lideri de codomeniu 5 5 3 3
Asadar,
P(toti cei trei biti de informatie sunt eronati) =
109
= 5p
3
(1 p)
4
+ 5p
4
(1 p)
3
+ 3p
5
(1 p)
2
+3p
6
(1 p)
d. Determinati P(F) probabilitatea ca un decodor de distant t = 1 limitat s
esueze si s nu produc vreun rspuns (cdere de decodor).
Solutie: P(F) = P(vectorul eroare este n liniile 9 16). Se tabeleaz distributia
dup ponderi a cuvintelor din aceste linii.
Ponderi Numr de aparitii
2 21
3 7
4 28
5 0
6 7
7 1
Cu aceste observatii
P(F) =

=

7
2
7
) 1 (
i
i i
i
p p N =
= 21p
2
(1 p)
5
+ 7p
3
(1 p)
4
+ 28p
4
(1 p)
3
+ 7p
6
(1 p) + p
7
Acest rezultat corespunde formulei
P(F) = 1

=

t
i
i n i i
n
p p C
0
) 1 ( P(E)
Problema 77.
Examinarea matricei standard din problema precedent arat c s-au fcut unele
alegeri arbitrare pentru cuvintele lider de comultimi/codomenii (cosets)
(pattern-uri de eroare corectabil) n linia 9 si urmtoarele. (Posibilittile
diferite corespund diferentelor n ordonarea elementelor slab-ponderate din lista
de baz (scratch) de la care pornind s-a construit matricea standard.)
a. n linia ultim, se presupune c 1001001 a fost ales n locul lui 0111000 ca
lider corect. Care va fi ultima linie a noii matrici standard? Calculati P(E)
pentru noul decodor cu noua matrice standard.
Solutie: Linia ultim din tabel care era
0111000 1111111 0010011 0100101 1010100 1100010 0001110 1001001
devine acum
1001001 0001110 1100010 1010100 0100101 0010011 1111111 0111000
Probabilitatea P(E) este aceeasi deoarce liderul ce codomeniu are aceeasi
pondere ca mai nainte si linia este doar reordonat. n fapt, att P
U
(E) ct si
P(E) rmn neschimbate.
110
b. Repetati punctul a. dar cu utilizarea lui 1111111 n loc de 0111000 ca lider
de codomeniu. (De observat c aceast alegere nu conduce la o matrice
standard! De ce?)
Solutie: n acest caz, noua linie ultim este
1111111 0111000 1010100 1100010 0010011 0100101 1001001 0001110
si atunci
P(E) = 1 P(vectorul eroare este lider de codomeniu) =
= 1 (1 p)
7
7p(1 p)
6
7p
2
(1 p)
5
p
7
ceea ce este mai mult dect rata erorii pentru decodorul optimal (prin ditanta
minim).
Problema 78.
Un sistem ce comunicatie care utilizeaz coduri bloc opereaz continuu.
Ocazional, echipamentul de transmitere greseste fr stirea receptorului. n
asemenea mprejurri, canalul este n esent un BSC cu p = 1/2. Pentru codurile
urmtoare, care este probabilitatea ca un decodor de distant t limitat s
decodeze incorect un sir de biti aleator receptionat ca un cuvnt de cod valid?
a. Codul Hamming [15, 11] cu t = 1
Solutie: Probabilitatea de acceptare fals este egal cu probabilitatea ca vectorul
aleator primit s se situeze n sfera de corectabilitate din jurul unui anumit
cuvnt de cod. n general, aceast probabilitate poate fi calculat ca raportul
numrului total de vectori din toate aceste sfere si numrul total de vectori
posibili. Astfel,
P(acceptare fals) = [MV(n, t)/2
n
] = V(n, t)/2
r
Codurile Hamming sunt perfecte si sunt si perfecte umpleri cu sfere a spatiului
cuvintelor de lungime n. Asadar, P(acceptare fals) = 1.
b. Codul liniar binar [23, 12] cu t = 3
Solutie: Pentru un cod binar liniar [23, 12] cu t = 3, se execut calculul
V(23, 3) = C
23
0
+ C
23
1
+ C
23
2
+ C
23
3
= 1 + 23 + 253 + 1771 = 2048
Asadar,
P(acceptare fals) = V(23, 3)/2
32 12
= 2048/2048 = 1
La acest punct este vorba de codul Golay.
Si codul Golay el face o umplere perfect cu sfere a spatiului cuvintelor binare
de lungime 23.
c. Codul liniar binar [63, 36] cu t = 6.
Solutie: n acest caz, se calculeaz
V(63, 6) = C
63
0
+ C
63
1
+ C
63
2
+ C
63
3
+ C
63
4
+ C
63
5
+ C
63
6
=
= 1 + 63 + 1953 + 39711 + 595665 + 7028847 + 67945521 = 75611761
astfel c
P(acceptare fals) = V(63, 6)/2
63 36
= 0,56335153
Problema 79.
111
Fie C un cod ciclic de lungime 15 generat cu polinomul generator g(x) = x
5
+ x
4
+ x
2
+ 1.
a. Verificati c g(x) | x
15
+ 1.
Solutie: Se verific fr dificultate c
(x
5
+ x
4
+ x
2
+ 1)(x
10
+ x
9
+ x
8
+ x
6
+ x
5
+ x
2
+ 1) = x
15
+ 1
b. Determinati numrul de cuvinte de cod din C.
Solutie: Se stie c r = grd[g(x)] = 5 astfel c se codeaz cuvinte informationale
de lungime k = n r = 15 5 = 10. Asadar codul C este alctuit din 2
10
= 1024
cuvinte.
c. Determinati matricea generatoare sistematic si matricea de verificare a
parittii pentru C.
Solutie: Matricea generatoare G
1
n forma ei nesistematic se obtine prin
completarea liniei i din G
1
(i = 1, 2, , 10) cu coeficientii polinomului 1 + x
2
+
x
4
+ x
5
multiplicat cu x
i 1
. Astfel se obtine
]
]
]
]
]
]
]
]
]
]

=
1 1 0 1 0 1 0 0 0 0 0 0 0 0 0
0 1 1 0 1 0 1 0 0 0 0 0 0 0 0
0 0 1 1 0 1 0 1 0 0 0 0 0 0 0
0 0 0 1 1 0 1 0 1 0 0 0 0 0 0
0 0 0 0 1 1 0 1 0 1 0 0 0 0 0
0 0 0 0 0 1 1 0 1 0 1 0 0 0 0
0 0 0 0 0 0 1 1 0 1 0 1 0 0 0
0 0 0 0 0 0 0 1 1 0 1 0 1 0 0
0 0 0 0 0 0 0 0 1 1 0 1 0 1 0
0 0 0 0 0 0 0 0 0 1 1 0 1 0 1
1
G
ntructva analog se obtine si matricea de verificare a parittii H
1
asociat cu
G
1
, prin completarea liniilor lui H
1
cu coeficientii polinomului x
10
+ x
9
+ x
8
+ x
6
+ x
5
+ x
2
+ 1 aliniati la dreapta pe prima linie si deplasati cu cte o pozitie spre
stnga n liniile urmtoare.
]
]
]
]
]
]

=
0 0 0 0 1 0 1 0 0 1 1 0 1 1 1
0 0 0 1 0 1 0 0 1 1 0 1 1 1 0
0 0 1 0 1 0 0 1 1 0 1 1 1 0 0
0 1 0 1 0 0 1 1 0 1 1 1 0 0 0
1 0 1 0 0 1 1 0 1 1 1 0 0 0 0
1
H
Cu o migal relativ se poate verifica egalitatea
G
1
H
1
T
= 0
echivalent n fond cu descompunerea
(x
5
+ x
4
+ x
2
+ 1)(x
10
+ x
9
+ x
8
+ x
6
+ x
5
+ x
2
+ 1) = x
15
+ 1
Matricea generatoare n forma sistematic/canonic G se poate obtine fie prin
operatii cu linii pe matricea G
1
, fie direct prin completarea liniei i din G (i = 1,
2, , 10) cu coeficientii polinomului c
i
(x) = x
r + i 1
+ rest{x
r + i 1
/g(x)}. (Se
propune ca exercitiu verificarea identittii rezultatelor obtinute pe cele dou
ci.).
ntr-un mod sau altul se ajunge la
112
]
]
]
]
]
]
]
]
]
]

=
1 0 0 0 0 0 0 0 0 0 1 1 0 1 0
0 1 0 0 0 0 0 0 0 0 0 1 1 0 1
0 0 1 0 0 0 0 0 0 0 1 1 1 0 0
0 0 0 1 0 0 0 0 0 0 0 1 1 1 0
0 0 0 0 1 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 1 0 0 0 0 1 1 0 0 1
0 0 0 0 0 0 1 0 0 0 1 0 1 1 0
0 0 0 0 0 0 0 1 0 0 0 1 0 1 1
0 0 0 0 0 0 0 0 1 0 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 1 0 1 0 1
G
Pentru a obtine matricea de verificare a parittii pentru codul sistematic se
aplic regula obisnuit de trecere de la G la H: se extrage din G submatricea de
la stnga submatricei unitate I
k
, se transpune si i se altur la stnga matricea
unitate I
r
.
]
]
]
]
]
]

=
1 0 1 0 0 1 1 0 1 1 1 0 0 0 0
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0
0 1 1 1 1 0 1 0 1 1 0 0 1 0 0
1 0 0 1 1 0 1 1 1 0 0 0 0 1 0
0 1 0 0 1 1 0 1 1 1 0 0 0 0 1
H
d. Executati codarea sistematic a polinomului mesaj m(x) = x
9
+ x
4
+ x
2
+ 1
utiliznd reprezentarea polinomial.
Solutie: Codarea sistematic
3
conduce la
c(x) = x
5
(x
9
+ x
4
+x
2
+ 1) + rest{x
5
(x
9
+ x
4
+x
2
+ 1)/g(x)} =
= x
14
+ x
9
+ x
7
+ x
5
+ x
4
+ x
3
+ x
2
+ 1
Cuvntul de cod obtinut: 101111010100001.
e. Calculati sindromul pentru polinomul mesaj receptionat r(x) = x
10
utiliznd
reprezentarea polinomial.
Solutie: Conform matricei de verificare a parittii n forma sistematic,
sindromul se calculeaz ca
s(x) = rest{x
10
/g(x)}
Deoarece
x
10
= (x
5
+ x
4
+ x
3
+ x + 1)g(x) + (x
2
+ x + 1),
sindromul n form polinomial este
s(x) = 1 + x + x
2
.
Problema 80.
Fie c
1
si c
2
cuvinte de cod din codul liniar C.
3
Alternativ, pentru a crea un cod sistematic, se folseste adesea metoda urmtoare:
Fiind dat un cuvnt de date d(x) de lungime n m, se multiplic mai nti d(x) cu x
m
, ceea ce are
ca efect deplasarea lui d(x) cu m pozitii spre stnga. n general, x
m
.d(x) nu este divizibil cu g(x),
deci nu este un cuvnt de cod. Exist totusi un cuvnt de cod unic care se poate obtine prin
ajustarea a m simboluri cele mai din dreapta ale polinomului x
m
.d(x). Pentru aceast operatie se
calculeaz restul mprtirii lui x
m
.d(x) prin g(x), x
m
.d(x) = g(x).q(x) + r(x), unde r(x) este de grad
mai mic dect m.
Cuvntul de cod care corespunde cuvntului de date d(x) este atunci p(x) = x
m
.d(x) + r(x)
113
a. Exprimati ponderea Hamming a cuvntului c = c
1
+ c
2
n raport cu ponderile
Hamming ale cuvintelor c
1
, c
2
si c
1
.c
2
cu . operatorul AND (I) bit-cu-
bit.
Solutie: Se observ c ntre ponderile cuvintelor exist relatia
wt(c) = wt(c
1
) + wt(c
2
) 2wt(c
1
.c
2
)
b. Artati c suma a dou cuvinte de cod de pondere par din C este de
pondere par.
Solutie: n operatia de adunare a dou cuvinte de cod nu apar biti unitari noi, iar
cei care dispar dispar n perechi.
c. Artati c suma a dou cuvinte de cod de pondere impar din C este de
pondere par.
Solutie: Aceeasi observatie de la punctul anterior, cu adaosul c suma a dou
numere impare are ca rezultat un numr par.
d. Artati c suma a dou cuvinte de cod de pondere par si impar din C este
de pondere impar.
Solutie: Ca si la punctele anterioare, suma unui numr par cu unul impar este un
numr impar. Ceilalti termeni din relatia de la primul punct nu schimb
paritatea.
Problema 81.
ntr-un cod liniar, multimea cuvintelor de cod de pondere Hamming par
formeaz un cod mai restrns care este tot liniar (problema anterioar). El este
numit subcodul de pondere par.
Fie C un cod ciclic de lungime n, de dimensiune k, care are ca generator
polinomul g(x). Se admite c x + 1 nu este factor al polinomului g(x). Artati c
un cod ciclic generat de (x + 1)g(x) este subcod al lui C, de pondere par.
(Indicatie: c(x) este de pondere Hamming par dac si numai dac c(1) = 0 mod
2.)
Solutie: Fie g
1
(x) = (x + 1)g(x) si C
1
codul ciclic pe care acest polinom l
genereaz. Se observ c x + 1 si g(x) sunt factori ai polinomului x
n
+ 1 fr s
aib vreun factor comun neconstant. Produsul (x + 1)g(x) este de asemenea
factor al polinomului x
n
+ 1 asa nct codul C
1
este un cod ciclic. Urmeaz
acum a demonstra c:
( ) orice cuvnt de cod din C
1
este cuvt de cod n C si este de pondere
par.
Orice cuvnt de cod din C
1
este cuvnt de cod n C deoarece orice multiplu al
lui g
1
(x) este n acelasi timp multiplu al lui g(x). Se retine acum un cuvnt de
cod c
1
(x) = m(x)g
1
(x). innd seam de Indicatia atasat la enuntul problemei,
se constat c wt[c
1
(x)] = m(1)g
1
(1) = (1 + 1)m(1)g(1) = 0 mod 2.
( :) orice cuvnt de cod din C de pondere par este cuvnt de cod din C
1
.
Afirmatie: orice polinom de pondere par este multiplu al lui x + 1. Pentru
demonstratie se presupune c p(x) este de pondere par. Prin mprtirea lui p(x)
la x + 1 se obtine ctul q(x) si restul r care satisfac teorema mprtirii ntregi
p(x) = (x + 1)q(x) + r
114
cu r un polinom de gradul zero (o constant).
Atunci,
0 = wt[p(x)] = p(1) = (1 + 1)q(1) + r = r
Asadar, p(x) = (x + 1)q(x), adic este un multiplu de (x + 1).
Acum se presupune c c(x) = m(x)g(x) este un cuvnt de cod de paritate par
din C. Rezult c(1) = m(1)g(1) = 0. Deoarece g(x) nu este divizibil cu x + 1, are
loc g(1) = 1. Astfel, m(1) = 0 si x + 1 este divizor al lui m(x). Fie m(x) = m
1
(x)(x
+ 1). Atunci c(x) = m
1
(x)(x + 1)g(x) = m
1
(x)g
1
(x) este cuvnt de cod din C
1
.
Problema 82.
Dou coduri se numesc echivalente dac se pot permuta coordonatele vectoriale
ntr-un mod n care cuvintele de cod ale unui cod se transform n cuvintele de
cod ale celuilalt cod. De pild codurile generate de matricile
]
]
]

=
1 1 0 1 0
0 1 1 0 1
1
G
si
]
]
]

=
1 1 0 0 1
0 1 1 1 0
2
G
sunt echivalente: primii doi biti sunt schimbati ntre ei. Performanta codurilor
echivalente este aceeasi pe canalele fr memorie de genul BSC. Explicati cum
codul ciclic generat de g(x) = x
3
+ x + 1 este echivalent cu un cod H
7
definit n
Problema 70, prin stabilirea permutrii care schimb un cod n altul.
Solutie: Din problema anterioar mentionat se extrage faptul c versiunea
canonic a martricei de verificare a parittii pentru codul Hamming H
7
este
]
]
]
]

=
0 1 1 1 1 0 0
1 0 1 1 0 1 0
1 1 0 1 0 0 1
H
Matricea generatoare corespunztoare este
]
]
]
]
]

=
1 0 0 0 0 1 1
0 1 0 0 1 0 1
0 0 1 0 1 1 0
0 0 0 1 1 1 1
G
Aceast matrice este diferit de matricea generatoare canonic a versiunii
ciclice a codului H
7
produs de polinomul generator g(x) = x
3
+ x + 1
]
]
]
]
]

=
1 0 0 0 1 0 1
0 1 0 0 1 1 1
0 0 1 0 1 1 0
0 0 0 1 0 1 1
ciclic
G
Prin inspectie, se poate vedea c primul bit de informatie (coloana a patra) din
versiunea necicilic este bitul de informatie al treilea din versiunea ciclic
(coloana a sasea); bitii de informatie al doilea si al doilea sunt aceeasi; bitul de
informatie al treilea n versiunea neciclic este bitul de informatie ultim din
versiunea ciclic si ultimul bit de informatie din versiunea neciclic este primul
bit de informatie din varianta ciclic. Cu alte cuvinte prin schimbarea ntre ele a
acestor coloane si prin rearanjarea liniilor pentru a restabili forma canonic se
poate trece de la codul neciclic la cel ciclic.
115
Problema 83.
Pentru a genera un cod perfect Golay G
23
se pot utiliza dou polinoame
generatoare, g
1
(x) = x
11
+ x
10
+ x
6
+ x
5
+ x
4
+ x
2
+ 1 si g
2
(x) = x
11
+ x
9
+ x
7
+ x
6
+
x
5
+ x + 1.
a. Artati c g
1
(x) si g
2
(x) sunt polinoame inverse unul altuia.
Solutie: Polinomul cu ordinea coeficientilor inversat fat de cea a polinomului
g
2
(x) este
11 10 6 5 4 2
5 6 7 9 11
11
2
11
1
1
1 1 1 1 1 1 1
x x x x x x
x x x x x x
x
x
g x
+ + + + + + =
=
|
.
|

\
|
+ + + + + + =
|
.
|

\
|

adic exact g
1
(x).
b. n ce relatie sunt cele dou versiuni de G
23
? Sunt codurile generate de g
1
(x)
si g
2
(x) identice? Sunt echivalente? De ce?
Solutie: Cele dou versiuni NU sunt identice deoarece polinomul generator al
unui cod ciclic nu este TOTDEAUNA unic. Dar cele dou versiuni ale codului
G
23
difer numai prin ordinea de prezentare a bitilor: cuvintele de cod dintr-o
versiune sunt cele ale celeilalte versiuni scrise n ordine inversat. Fie de pild
c(x) = m(x)g
1
(x) un cuvnt al codului generat de g
1
(x). Scris n ordine invers el
devine
c
back
(x) = x
n 1
c(1/x) = x
n 1
m(1/x) g
1
(1/x) = [x
k 1
m(1/x)][x
r
g
1
(1/x)] =
= m
back
(x) g
2
(x)
cu n = 23, k = 12, r = 11 si cu m
back
(x) polinomul informational scris n ordinea
invers a coeficientilor. Schimbarea este o simpl permutare a coordonatelor
astfel c cele dou versiuni ale codului Golay sunt echivalente. (De retinut c
scris invers este ntructva diferit de inversat deoarece avem o dimensiune
fixat a blocului independent de gradul polinomului.)
Problema 84.
O succesiune (exploziv) de erori (error burst) de lungime l este un pattern de
erori e = (e
0
, e
1
, , e
n 1
) n care pentru o parte din indicii 0 i < n erorile sunt
legate de pozitiile e
i
, e
(i + 1) mod n
, , e
(i + l 1) mod n
cu e
i
0 si e
(i + l 1) mod n
0, cu
bitii intermediari eronati sau nu, cu ceilati biti, dinaintea primului si de dup
ultimul din secventa eronat, corecti. De pild, pattern-urile (0010100) si
(1100001) sunt ambele succesiuni (explozive) de lungime 3.
Fie g(x) polinomul generator pentru un cod ciclic C[n, k].
a. Artati c C poate detecta toate erorile n succesiune (exploziv) de lungime
l n k.
Solutie: Fie e(x) o eroare n succesiune de lungime l r, nedetectabil.
Deoarece e(x) este nedetectabil, ea trebuie s fie un cuvnt de cod. Toate
permutrile circulare ale lui e(x) sunt si ele cuvinte de cod si sunt totodat erori
n succesiune de lungime l. Deoarece lungimea secventei (eronate) este l, exist
o permutare circular e
(i)
(x) de gradul l 1. Acel e
(i)
(x) este un cuvnt de cod
116
monic de gradul l 1 < r. Dar polinomul generator g(x) este polinomul monic
de gradul cel mai mic al codului si are gradul r. Contradictia aprut spune c
un asemenea e(x) nu exist.
b. Artati c nu toate erorile n succesiune (exploziv) de lungime l = n k + 1
pot fi detectate.
Solutie: Polinomul e(x) stabilit ca la punctul anterior este exact g(x) si este
asociat unei erori n succesiune de lungime r + 1. Eroarea este nedetectabil
deoarece g(x) este un cuvnt de cod.
Problema 85.
Demonstrati urmtoarele fapte interesante relativ la polinoamele binare:
a. Dac p(x) este un polinom binar, atunci (p(x))
2
= p(x
2
).
Solutie: Fie p(x) = a
0
+ a
1
x + + a
n
x
n
. Urmeaz c [p(x)]
2
= b
0
+ b
1
x + +
b
2n
x
2n
cu coeficientii b
k
obtinuti prin convolutia coeficientilor a ai polinomului
p(x) dat de
2 mod
0

=

=
k
i
i k i k
a a b
Mai detaliat, aceast sum se poate scrie
b
k
= a
0
a
k
+ a
1
a
k1
+ + a
k1
a
1
+ a
k
a
0
Din simetria acestei expresii rezult c prin nsumare termenii extremi se
anuleaz, la fel termenii extremi urmtori s.a.m.d. Dac numrul de perechi este
perfect, fr vreun termen nenperechiat, coeficientul b
k
este nul. Asa se
ntmpl cnd k este impar. Dac k este par, de pild k = 2l, atunci termenul
central a
l
a
l
nu se anuleaz, si b
k
= a
l
2
= a
l
. Astfel,
[p(x)]
2
= a
0
+ a
1
x
2
+ + a
n1
x
2n2
+ a
n
x
2n
= p(x
2
).
b. Dac o e GF(2
r
) este o rdcin a unui polinom binar, atunci tot rrdcini
sunt si o
2
, o
4
, o
8
etc.
Solutie: Dac p(o) = 0 atunci conform punctului anterior p(o
2
) = [p(o)]
2
= 0
astfel nct o
2
este de asemenea o rdcin. Iternd aceeasi idee, dac o
2
este
rdcin, atunci (o
2
)
2
= o
4
este rdcin, la fel (o
4
)
2
= o
8
este rdcin s.a.m.d.
Problema 86.
Construiti un cmp Galois GF(2
4
) folosind polinoamele ireductibile date mai
jos. Pentru ambele constructii determinati polinoamele minimale pentru fiecare
element al cmpului respectiv.
Indicatie: Urmriti cele dou multimi de polinoame din cele dou tabele
deoarece ele sunt aceleasi n GF(2
4
).
a. g
1
(x) = x
4
+ x + 1
Solutie: Fie o o rdcin a lui g
1
(x) = x
4
+ x + 1. Deoarece polinoml g
1
(x) = x
4
+
x + 1 este primitiv, puterile lui o dau toate elemente nenule din GF(2
4
).
Polinoamele minimale pot fi aflate printr-o tratare sistematic prin ncercri sau
prin examinarea codomeniilor ciclotomice modulo 15. De exemplu, codomeniul
117
ciclotomic al lui 3 mod 15 este C(3) = {3, 6, 12, 9}. Astfel, polinomul minimal
al lui o
3
(ca si al conjugatelor sale o
6
, o
9
si o
12
) este
M
3
(x) = (x + o
3
)(x + o
6
)(x + o
9
)(x + o
12
) = x
4
+ x
3
+ x
2
+ x + 1
Similar, codomeniul ciclotomic al lui 5 mod 15 este C(5) = {5, 10} asa nct
polinomul minimal pentru a5 si a10 este
M
5
(x) = (x + o
5
)(x + o
10
) = x
2
+ x + 1
Tabelul complet al elementelor cpului si al polinoamelor lor minimale este
urmtorul:
Element Polinom minimal Element Polinom minimal
0 x o
7
= 1 + o + o
3
x
4
+ x
3
+ 1
1 x + 1 o
8
= 1 + o
2
x
4
+ x + 1
o
x
4
+ x + 1 o
9
= o + o
3
x
4
+ x
3
+ x
2
+ x + 1
o
2
x
4
+ x + 1 o
10
= 1 + o + o
2
x
2
+ x + 1
o
3
x
4
+ x
3
+ x
2
+ x + 1 o
11
= o + o
2
+ o
3
x
4
+ x
3
+ 1
o
4
= 1 + o x
4
+ x + 1 o
12
= 1 + o + o
2
+ o
3
x
4
+ x
3
+ x
2
+ x + 1
o
5
= o + o
2
x
2
+ x + 1 o
13
= 1 + o
2
+ o
3
x
4
+ x
3
+ 1
o
6
= o
2
+ o
3
x
4
+ x
3
+ x
2
+ x + 1 o
14
= 1 + o
3
x
4
+ x
3
+ 1
b. g
2
(x) = x
4
+ x
3
+ x
2
+ x + 1
Solutie: Fie o rdcin a polinomului neprimitiv g
2
(x) = x
4
+ x
3
+ x
2
+ x + 1
asa nct
4
= 1 + +
2
+
3
. Puterile lui nu produc toate elementele nenule
ale cmpului GF(2
4
). Este necesar a explicita toate combinatiile liniare care
lipsesc. Deoarece n aceast reprezentare nu exist elemente primitive
convenabile, pentru a stabili polinoamele minimale nu este posibil recursul la
codomeniile ciclotomice modulo 15 cum s-a procedat la punctul anterior. De
data aceasta conjugatele trebuie calculat direct. De pild, conjugatele lui = +

2
sunt determinate astfel:

2
= ( +
2
)
2
=
2
+
4
= 1 + +
3

4
= ( +
2
)
4
=
4
+
8
= 1 + +
2

8
= ( +
2
)
8
=
8
+
16
= +
3
Polinomul minimal pentru aceste elemente este
M

(x) = (x + )(x +
2
)(x +
4
)(x +
8
) = x
4
+ x + 1
Pe calea aceasta se gsesc elementele din tabelul urmtor si polinoamele lor
minimale n reprezentarea :
Element Polinom minimal Element Polinom minimal
0 x 1 +
3
x
4
+ x
3
+ 1
1 x + 1 +
2
x
4
+ x + 1

x
4
+ x
3
+ x
2
+ x + 1 +
3
x
4
+ x + 1

2
x
4
+ x
3
+ x
2
+ x + 1
2
+
3
x
2
+ x + 1

3
x
4
+ x
3
+ x
2
+ x + 1 1 + +
2
x
4
+ x + 1

4
= 1 + +
2
+
3
x
4
+ x
3
+ x
2
+ x + 1 1 + +
3
x
4
+ x + 1
1 + x
4
+ x
3
+ 1 1 +
2
+
3
x
2
+ x + 1
118
1 +
2
x
4
+ x
3
+ 1 +
2
+
3
x
4
+ x
3
+ 1
De observat c se obtin aceleasi rdcini la acelasi set de polinoame. Aceasta
din cauz c exist numai un cmp GF(2
4
), indiferent cum este construit.
Problema 87.
Fie cmpul Galois GF(2
4
) construit prin adugarea la cmpul simplu F = {0, 1}
a unei rdcini o a polinomului primitiv g(x) = x
4
+ x
3
+ 1. Exprimati
elementele de mai jos n functie de elementele de baz {1, o, o
2
, o
3
}.
Indicatie: Se foloseste n calcule tabelul urmtor care contine elementele
cmpului finit generat de primitivul g(x).
0 o
7
= 1 + o + o
2
1 o
8
= o + o
2
+ o
3
o o
9
= 1 + o
2
o
2
o
10
= o + o
3
o
3
o
11
= 1 + o
2
+ o
3
o
4
= 1 + o
3
o
12
= 1 + o
o
5
= 1 + o + o
3
o
13
= o + o
2
o
6
= 1 + o + o
2
+ o
3
o
14
= o
2
+ o
3
a. = 1 + o
1
+ o
2
+ o
3
Solutie:
= 1 + o
1
+ o
2
+ o
3
= 1 + o
14
+ o
13
+ o
12
= o
3
.
b. = (o
5
(1 o
11
))/(1 + o
2
)
Solutie:
= (o
5
(1 o
11
))/(1 + o
2
) = o
5
( 1 + o
4
)/(1 + o
13
) = o
5
o
3
/o
7
= o.
c.

e
=
) 2 (
4
GF

Solutie: Este posibil ca punctele c. si d. s fie rezolvate prin calcul direct, ceea
ce este un bun exercitiu n aritmetica cmpurilor finite. Exist ns si o tratare
mai rafinat. Fie {
1
,
2
, ,
15
} o list complet a elementelor nenule din
cmpul GF(2
4
). Prin dezvoltarea produsului tuturor factorilor de forma (x +
i
),
i = 1, 2, , 15, se obtine:
(x +
1
)(x +
2
)(x +
15
) = x
15
+ (
1
+
2
+ +
15
)x
14
+ + (
1

2

15
).
Una din propriettile cmpurilor Galois este aceea c un produs de acest gen
este egal cu 1
1 2
+

r
x . Astfel,
0
) 2 (
4
=

eGF

si, pentru punctul d.,
119
1
} 0 { ) 2 (
4
=
I
eGF

.
d.
I
e
=
} 0 { ) 2 (
4
GF
.
Problema 88.
Se consider o surs de informatie binar pentru care iesirea este codat n
blocuri de intrare de 52 de biti prin codul Reed-Soomon n sens restrns de
lungime 15 si distant de proiectare 3. Utiliznd regula de codare nesistematic
c(x) = m(x)g(x), determinati cuvntul de cod transmis pentru secventa
informational binar
0001 0000 0000 0000 0000 0000 0000 0000 0000 1001 1110 0000 0101
Exprimati cuvntul de cod la iesire n notatia de la cmpuri finite (adic
folosind elementele cmpului finit ales, cu o o primitiv), dar si ca o secvent
binar. Fiti expliciti n ceea ce priveste ordinea bitilor si a simbolurilor
cuvntului de cod alese!
Solutie: Pentru a evita orice ambiguitate, trebuie specificat modul cum este
citit secventa de intare (de codat) ca un polinom din GF(16)[x]. Fiecare grup
de patru biti consecutivi trebuie interpretat ca o reprezentare n coordonate de
patru biti a unui element al unui element din cmpul Galois n raport cu baza
{1, o, o
2
, o
3
}, n care o este o rdcin a polinomului primitv p(x) = x
4
+ x + 1.
n fiecare simbol de patru biti, coeficientul binar al elementului din baz o
3
va
fi numit MSB (Most Significant Bit); coeficientul binar pentru elementul din
baz 1 va fi numit LSB (Least Significant Bit). Se admite c simbolurile de
patru biti sunt citite cu MSB la stnga si cu LSB la dreapta. Mai mult, se admite
c coeficientul de cel mai nalt ordin al polinomului de intrare este simbolul de
patru biti situat cel mai la stnga. Pe baza acestor reguli, de fapt arbitrare,
polinomul de intrare este dat de
m(x) = x
12
+ o
14
x
3
+o
11
x
2
+ o
8
.
Cuvntul de cod produs prin codarea nesistematic este dat de
c(x) = m(x)g(x)
unde g(x) = x
2
+ o
5
x + o
3
, polinomul minimal pentru rdcinile o si o
2
, n
general polinomul minimal pentru puterile pn la a k 1 ale primitivei o.
Prin efectuarea multiplicrii se obtine
c(x) = x
14
+o
5
x
13
+ o
3
x
12
+ o
14
x
5
+ o
13
x
4
+ o
5
x
3
+ o
6
x
2
+ o
13
x + o
11
.
Folosind aceeasi conventie n ordinea reprezentrii, cuvntul de cod corespunde
urmtoarei secvene de bii la iesire:
0001 0110 1000 0000 0000 0000 0000 0000 0000 1001 1101 0110 1100 1101 1110
Pentru calcule se poate recurge la tabelul care urmeaz, cu atentie la ordinea
puterilor care poate fi diferit!
120
k
o
Clase de resturi
modulo
q(x) = 1 + x + x
4
Repre-
zentare
binar
k
o
Clase de resturi
modulo
q(x) = 1 + x + x
4
Repre-
zentare
binar
o
0
1
1000 o
8
1 + o
2
1010
o
1

o
0100 o
9

o + o
3
0101
o
2

o
2
0010 o
10
1 + o + o
2
1110
o
3

o
3
0001 o
11

o + o
2
+ o
3
0111
o
4
1 + o
1100 o
12
1 + o + o
2
+ o
3
1111
o
5

o + o
2
0110 o
13
1 + o
2
+ o
3
1011
o
6

o
2
+ o
3
0011 o
14
1 + o
3
1001
o
7
1 + o + o
3
1101 o
15
1
1000
121
SEMNALE
Lucrarea 9
Tema 1: Serii Fourier
Un semnal priodic de perioad T
0
se poate dezvolta n anumite conditii conform
relatiei

=
+ + =
1
0 0
0
) sin cos (
2
) (
n
n n
t n b t n a
a
t s e e
.
Partea dreapt a acestei egalitti este o serie, seria Fourier a semnalului s(t), iar
coeficentii a
n
, n = 0, 1, 2, , b
n
, n = 1, 2, se calculeaz cu formulele

+
=
0
0
0
cos ) (
2
T
n
t n t s
T
a
o
o
e

+
=
0
0
0
sin ) (
2
T
n
t n t s
T
b
o
o
e
Frecventa unghiular (pulsatia) care apare n expresiile coeficentilor si n seria
Fourier este legat de perioad prin relatia e
0
= 2t/T
0
.
Fie acum un semnal periodic de form rectangular

t
t
t
s <
s <
= + =
t
t
n t s t s
0 1
0 1
) 2 ( ) (
Perioada lui este 2t si amplitudinea 1. Se pot verifica relativ usor urmtoarele
fapte: functia este impar si de aceea coeficientii termenilor n cosinus din
dezvoltarea Fourier sunt toti nuli; coeficientii termenilor n sinus sunt nenuli,
dar numai pentru indicii impari si au valorile 4/(nt) = 4/[(2k 1)t], k = 1, 2, .
Scriptul Matlab care urmeaz reconstituie semnalul dintr-un numr finit de
componente ale seriei Fourier asociate: 5, 10, 15 sau 20. Graficele obtinute la
executarea scriptului arat ct de (im)perfect este reconstituirea. Diferentele
fat de semnalul rectangular originar sunt din ce n ce mai reduse pe msur ce
sunt luate n calcul mai multe componente sinusoidale. Se mentin totusi
falduri de form ondulatorie, n zonele unde semnalul originar este de fapt
constant, 1. n vecintatea momentelor unde semnalul rectangular face saltul
abrupt de la 1 la +1 (sau invers) se observ depsiri ale unittii pozitive sau
negative cu circa 18%. Aceste depsiri se mentin oricte componente
sinusoidale s-ar lua n considerare. Fenomenul are un nume n literatura de
specialitate: fenomenul Gibbs.
% Program fald
122
% Recompunerea unui semnal rectangular periodic (impar)
% de perioada 2*pi dintr-un numar finit de componente
% Fourier
% Seria Fourier are toti termenii in cosinus nuli
clear
t=-pi:0.01:pi; % initializarea unui vector de timp
f=0*t;
subplot(2,2,1)
for k=1:5
f=f+sin((2*k-1)*t)/(2*k-1);
end % recompunerea din 5 componente
plot(t,(4/pi)*f)
hold on
grid on
plot([-4 4],[0 0],'k')
plot([0,0],[-2 2],'k')
title('n=5')
f=0*t;
subplot(2,2,2)
for k=1:10
f=f+sin((2*k-1)*t)/(2*k-1);
end % recompunerea din 10 componente
plot(t,(4/pi)*f)
hold on
grid on
plot([-4 4],[0 0],'k')
plot([0,0],[-2 2],'k')
title('n=10')
f=0*t;
subplot(2,2,3)
for k=1:15
f=f+sin((2*k-1)*t)/(2*k-1);
end % recompunerea din 15 componente
plot(t,(4/pi)*f)
hold on
grid on
plot([-4 4],[0 0],'k')
plot([0,0],[-2 2],'k')
title('n=15')
f=0*t;
subplot(2,2,4)
for k=1:20
f=f+sin((2*k-1)*t)/(2*k-1);
end % recompunerea din 20 de componente
plot(t,(4/pi)*f)
hold on
grid on
plot([-4 4],[0 0],'k')
plot([0,0],[-2 2],'k')
title('n=20')
Tema 2: Compensarea fenomenului Gibbs
123
n unele aplicatii fenomenul Gibbs poate deranja. De aceea este necesar ca ntr-
un fel sau altul el s fie compensat/corectat. Modalitatea cea mai utilizat
const ntr-o trecere a semnalului printr-un filtru. Scriptul Matlab urmtor
realizeaz aceast compensare printr-un filtru sinc. Functia sinc este
implementat n Matlab si poate fi nteleas prin obisnuitul apel help sinc. Se
poate observa diminuarea faldurilor, dar si o pierdere n viteza de trecere de la
valoarea 1 la valoarea +1 (si invers).
% Program sfald
% Compensarea efectului Gibbs
t=-pi:0.01:pi; % se initializeaza un vector temporal
f=0*t;
n=10;
% reconstiturea semnalului se realizeaza din 10 componente
for k=1:n
f=f+sin((2*k-1)*t)/(2*k-1);
end
plot(t,(4/pi)*f)
% se reprezinta reconstituirea fara compensare
hold on
grid on
plot([-4 4],[0 0],'k')
plot([0,0],[-2 2],'k')
f=0*t;
% se corecteaza semnalul reconstituit prin trecerea
% printr-un filtru sinc
for k=1:n
f=f+sin((2*k-1)*t)*sinc(k/n)/(2*k-1);
end
plot(t,(4/pi)*f,'r')
% se reprezinta reconstituirea dupa compensare
title('COMPENSAREA FENOMENULUI GIBBS LA N=10')
Lucrarea 10
Tema 1: Eantionarea semnalelor; reconstituirea din eantioane
Scriptul Matlab de mai jos face operatia de eantionare a semnalului
s(t) = cos(2tt) + cos(4tt m)
si de reconstituire a lui din eantioane. Spectrul semnalului contine numai dou
frecvente: 1 si 2 Hz. Conditia de aplicare a teoremei eantionrii este
indeplinit: semnalul este de spectru/band limitat(). Este necesar ca frecvena
esantioanelor s fie de cel putin 4 Hz, adic cel putin dublul celei mai mari
frecvene din spectru, si semnalul poate fi reconstituit din esantioanele sale.
Scriptul permite cteva intervenii premergtoare derulrii calculelor. Se poate
modifica faza m a componentei de 2 Hz, ceea ce modific forma semnalului
(dar nu spectrul lui). Se poate modifica durata semnalului, se poate modifica
frecvena prelevrii esantioanelor. Prin aceste modificri se pot observa
124
calitatea reconstituirii si magnitudinea efectelor de capt datorate lipsei unor
esantioane premergtoare primului esantion si urmtoare ultimului esantion.
Se poate experimenta si o frecven a esantioanelor inferioar celei limit
conform cu teorema esantionrii. n acest caz semnalul reconstituit este
altceva dect semnalul originar.
% Program esant
% Conditii tipice de executare a "script-ului"
%
% tmax=5 - timpul maxim de reprezentare
% fi=pi/2 - faza componentei secundare
% pasmic=0.001 - pasul utilizat la reprezentarea grafica
% fes=7.0 - frecventa de esantionare
% rep=0 - optiune de reprezentare:
% (rep=0) grafic unic, (rep>0) grafice separate
tmax=5;
fi=pi/2;
pasmic=0.001;
fes=7.0;
rep=1;
tes=1/fes; % perioada esantioanelor
t=0:pasmic:tmax;
y=cos(2*pi*t)+cos(4*pi*t-fi);
% pregatirea graficului 1 (semnal)
t1=0:tes:tmax;
n=floor(tmax/tes)+1;
y1=cos(2*pi*t1)+cos(4*pi*t1-fi); % esantionarea
y2=y1(1)*sinc(t/tes);
% pregatirea graficului 2 (reconstituire)
for k=1:(n-1)
y2=y2+y1(k+1)*sinc(t/tes-k);
end
if rep>0
subplot(3,1,1)
plot(t,y)
% trasarea graficului 1 (semnal)
hold on
plot([0 tmax],[0 0])
for i=1:n
plot([t1(i) t1(i)],[0 y1(i)],'b:')
% trasarea graficului 2 (reconstituire)
end
ylabel('Original')
title('ESANTIONAREA SEMNALELOR')
subplot(3,1,2)
plot(t,y2,'k')
hold on
plot([0 tmax],[0 0])
for i=1:n
plot([t1(i) t1(i)],[0 y1(i)],'b:')
end
ylabel('Reconstituire')
subplot(3,1,3)
125
plot(t,y-y2,'r')
% trasarea graficului 3 (diferente)
hold on
plot([0 tmax],[0 0])
ylabel('Diferente')
xlabel('Timp(s)')
else
plot(t,y)
% trasarea graficului 1 (semnal)
hold on
plot([0 tmax],[0 0])
for i=1:n
plot([t1(i) t1(i)],[0 y1(i)],'b:')
% trasarea graficului 2 (reconstituire)
end
plot(t,y2,'k')
plot(t,y-y2,'r')
% trasarea graficului 3 (diferente)
plot([0 tmax],[0 0])
title('ESANTIONAREA SEMNALELOR')
ylabel
('Semnal(albastru)/Reconstituire(negru)/Diferente(rosu)')
xlabel('Timp(s)')
end
Problema 89.
Se d semnalul periodic

|
.
|

e
|
.
|

e
= + =
4
3
,
4
0
4
,
4
) 100 cos(
) ( ) (
T T
t
T T
t t
nT t s t s
t
,
pentru orice n ntreg, cu T = 0,02 s. (o tensiune alternativ cu frecvena de 50
Hz si amplitudinea de 1 V, redresat ideal pe alternana pozitiv, pe o sarcin
pur rezistiv de 1 ohm).
Se cer componentele de diverse frecvene din dezvoltarea Fourier. Aceeasi
problem pentru redresarea ideal dubl alternan.
Cum se modific spectrul de componente cnd elementul redresor ideal se
deschide mai trziu cu o, 0 < o < T/2, fa de momentul T/4 (redresare cu
comand pe un tiristor)?
Solutie: n cazul redresrii complete a alternanei pozitive, semnalul este o
funcie par de timp, asadar toti coeficientii b
k
ai funciilor sinus din dezvoltare
sunt nuli. Pentru termenii n cosinus, pentru k = 0, 1, 2, , se obtin coeficientii
= = =


4
4
4
3
4
) 100 cos( ) 100 cos(
2
) 100 cos( ) (
2
T
T
T
T
k
dt t k t
T
dt t k t s
T
a t t t
126


= + + =
005 , 0
005 , 0
005 , 0
005 , 0
] ) 1 ( 100 cos[ 50 ] ) 1 ( 100 cos[ 50 dt t k dt t k t t
=


+
+
+
=

005 , 0
005 , 0
005 , 0
005 , 0
) 1 ( 2
] ) 1 ( 100 sin[
) 1 ( 2
] ) 1 ( 100 sin[
t
t
t
t
k
t k
k
t k
t
t
t
t
) 1 (
] 2 / ) 1 sin[(
) 1 (
] 2 / ) 1 sin[(

+
+
+
=
k
k
k
k
n particular, pentru k = 0, a
0
= 2/t, pentru k = 1, a
1
= 1/2.
Pentru cazul deschiderii cu ntrzierea o a elementului redresor, limita
inferioar a integralelor de mai sus se modific n 0,005 + o.
Pentru redresarea ambelor alternane, semnalul trebuie redefinit. El devine
s(t) = |cos(100tt)|
Perioada se modific, devine T = 0,01 s, componenta continu se dubleaz,
componenta de 50 Hz din dezvoltare se anuleaz.
Problema 90.
Este cunoscut transformata Fourier a semnalului aperiodic rectangular de
amplitudine A si de durat t, simetric fat de originea timpului:
2
2
sin
) (
2
2
et
et
t e
t
t
e
A dt Ae S
t j
= =

Folosind acest rezultat si propriettile transformrii Fourier se cere scrierea


transformatelor Fourier ale urmtoarelor semnale aperiodice:
a. Acelasi semnal rectangular ntrziat cu timpul o.
Solutie: ntrzierea se traduce n domeniul frecventelor printr-o multiplicare cu
eo j
e

. Asadar, transformata cerut este


2
2
sin
) (
et
et
t e
eo j
e A S

=
b. Semnalul

e
e
e
=
) , [ 0
) , 0 [ 1
) 0 , [ 1
) (
t t
t
t
R t
t
t
t s
Solutie: Semnalul este o sum a doua semnale rectangulare de amplitudini 1,
+1 decalate n timp fat de semnalul din enunt cu t/2, respectiv cu +t/2.
Transformarea Fourier este o transformare liniar. Asadar
2
2
sin
2
sin 2
2
2
sin
) 1 (
2
2
sin
) 1 ( ) (
2 2
et
et
et
et
et
t
et
et
t e
t
e
t
e
j e e S
j j
= + + =

127
c. Semnalul

e
e
e
=
) 2 , 2 [ 0
) , [ 2
) 2 , [ ) , 2 [ 1
) (
t t
t t
t t t t
R t
t
t
t s
Solutie: Semnalul este o sum a dou semnale de amplitudine A = 1, simetrice
fat de originea timpului, unul de durat 4t, cellalt de durat 2t. Liniaritatea
transformrii Fourier si schimbarea lui t n 4t, respectin n 2t produc rezultatul
et
et
t
et
et
t e
sin
2
2
2 sin
4 ) ( + = S
d. Semnalul

e
e
=
) 1 , 1 [ 0
) 1 , 1 [ 1
) (
R t
t t
t s
(functia cort)
Solutie: Prin derivarea functiei cort se obtine semnalul de la punctul b), cu t = 1
si multiplicat cu 1. Reciproc, functia cort se obtine prin integrarea de la la
t a semnalului de la punctul b) particularizat (t = 1). Operatia de integrare n
domeniul timp are ca efect n domeniul frecventelor multiplicarea cu factorul
1/je. Asadar
2
2
2
2
sin
1
2
2
sin
2
sin 2 ) (
|
.
|

\
|
|
.
|

\
|
= =
e
e
e
e
e
e
e
j
j S
N.B. Transformarea Fourier a derivatei, respectiv a integralei unui semnal se
obtine prin multiplicarea sau divizarea cu je a transformatei Fourier a
semnalului. Se recomand ca exercitiu demonstrarea acestei afirmatii.
Problema 91.
S se calculeze functia de autocorelatie a semnalului
) exp( ) ( t j A t s e =
unde A este o constant.
Solutie: Semnalul este periodic de perioad T = 2t/e, asa nct functia de
autocorelatie este
= + = + =


2
2
2 2
2
)] 2 ( exp[ )] ( exp[ ) exp(
1
) (
T
T
T
T
dt t j
T
A
dt t j A t j A
T
f t e t e e t
et
t
et et
e
t e
e
sin
2 2
) exp( ) exp(
)] 2 ( exp[
2
2 2
2
2
2
A
j
j j
T
A
t j
T j
A
T
T
=

= + =

si este o functie periodic de aceeasi perioad T.
Problema 92.
128
S se calculeze functia de autocorelatie pentru semnalul
) exp( ) ( t j A t s e =
unde A este o variabil aleatoare uniform repartizat pe intervalul [0, 1].
Solutie: Pentru o realizare n care A ia valoarea A
(k)
, functia de autocorelatie este
cea de la Problema 91 cu deosebirea c n loc de A
2
apare [A
(k)
]
2
. Lund acum
media tuturor realizrilor, trebuie pus n formul media ptratului variabilei
aleatoare A uniform repartizate pe intervalul [0, 1], adic momentul de ordinul 2
al acelei variabile
3
1
3
1 ) (
1
0
3 1
0
2 2
= = =

+

A
dA A dA A f A
astfel c, n final, functia de autocorelatie este
et
t
sin
6
1
Problema 93.
Se d semnalul
t B t A t s e e sin cos ) ( + =
cu A si B constante. Se cere functia de autocorelatie a semnalului.
Solutie: Semnalul este periodic de perioad T = 2t/e asa nct functia de
autocorelatie este
= + + + + =

2
2
)] ( sin ) ( cos )[ sin cos (
1
) (
T
T
dt t B t A t B t A
T
f t e t e e e t
+ + + + =


2
2
2
2
2
2
) ( sin sin
1
) ( cos cos
1
T
T
T
T
dt t t B
T
dt t t A
T
t e e t e e

+ + + +
2
2
)] ( sin cos ) ( cos [sin
1
T
T
dt t t t t AB
T
t e e t e e
etc.
O alt posibilitate de calcul trece prin relatiile lui Euler:
j
e e
a
e e
a
ja ja ja ja
2
sin ,
2
cos

=
+
=
Prin nlocuire n expresia semnalului se obtine
) exp( ) exp( ) ( t j B t j A t s e e ' + ' =
cu A, B numere complexe. La Problema 91 a fost evaluat o functie de
autocorelatie utilizabil n problema de fat.
129
Problema 94.
Determinati functia de autocorelatie a semnalului aperiodic
2
) ( Ct Bt A t s + + =
stiind c A si C sunt variabile aleatoare independente uniform repartizate pe
intervalul [ 1, 1] si B este o constant.
Solutie: Desigur, semnalul n forma dat nu poate fi dect limitat ca durat,
altminteri energia ar fi infinit, integralele de evaluat n-ar fi convergente. Se
admite asadar c semnalul dureaz T, n particular de la 0 la T, n rest fiind nul.
Pentru o realizare particular
s
(k)
(t) = A
(k)
+ Bt + C
(k)
t
2
functia de autocorelatie este
| |


+ + + + + + =
= + =
) , min(
) , 0 max(
2 ) ( ) ( 2 ) ( ) (
) ( ) ( ) (
) ( ) (
) ( ) ( ) (
t
t
t t
t t
T T
k k k k
k k k
dt t C t B A t C Bt A
dt t s t s f
integrala definit a unui polinom de gradul 4 n t, a crui primitiv este
imediat. Rezultatul contine termeni ai cror coeficienti sunt sume de termeni
de forma [A
(k)
]
2
, A
(k)
B, A
(k)
C
(k)
, B
2
, BC
(k)
, [C
(k)
]
2
. Medierea pe toate realizrile (k)
ale semnalului va produce medii ale acestor mrimi care sunt respectiv
3
1
6 2
1
) (
1
1
3 1
1
2 2
= = =



x
dx x dx x f x , 0 (deoarece media variabilei A este nul, iar
B este o constant), valoarea corelatiei variabilelor aleatoare A si C (n
particular 0 dac ele sunt independente), B
2
(ca media unei constante, care este
egal totdeauna cu acea constant), 0 si, din nou, 1/3.
130

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