Documente Academic
Documente Profesional
Documente Cultură
Panaitescu
Aplicaii la disciplina
TRANSMITEREA I CODAREA
INFORMAIEI
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
CUPRINSUL
APLICATII DIN TEORIA PROBABILITTILOR
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
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
SEMNALE
121
Lucrarea 9
Tema 1: Serii Fourier
Tema 2: Compensarea fenomenului Gibbs
Lucrarea 10
Tema 1: Eantionarea semnalelor; reconstituirea din eantioane
ceea ce echivaleaz cu
1 + 1 Pr(A B)
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 B 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 B C) = 0,3 (v.figura)
Dar probabilitatea
P(A B C) = P(A) + P(B) + P(C) P(A B) P(A C) P(B C) +
+ P(A B 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
P( A B C ) = P[ A ( B C )] =
= P[ A ( B C )] = P( A B C ) = P( A B C )
Dar
+ P( A B C)
P( A B) + P(A B) = P(B)
B,
N (i, j )
N (i )
10
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
11
2
A
B
3
B
3
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?
12
13
Afisati sub form de tabel cele 14 valori ale functiei de repartitie FX(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
14
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 FY(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 pZ(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:
pZ (0) = Pr(U 11) = 2 / 11
pZ (1) = Pr[(8 U < 11) = 3 / 11
pZ (2) = Pr[(7 U < 8) = 1 / 11
pZ (3) = Pr[(4 U < 7) = 3 / 11
pZ (4) = Pr[U < 4) = 2 / 11
15
B
B
3 x 0
0< x 3
Q(x) =
cu B o constant ntre 0 si 3.
a. Determinati valoarea unic C care face din fX(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:
f ( x ) dx = 1
3 1
3
(3 + x)dx =
2 9
4
E[(X Q(x))2| 3 X 0] = 2 x +
3
E[(X Q(x))2] =
3 1
3 x + 2 9 (3 + x)dx +
3 1
3
(3 x )dx =
2 9
4
2
3 1
3
0 x 2 9 (3 x)dx = 4
B = 2
1
x (3 x )dx = 1
9
2
E[(X Q(x))2| 3 X 0] = 2 ( x + 1)
3
2
E[(X Q(x))2| 0 < X 3] = 2 ( x 1)
0
E[(X Q(x))2] =
2
( x + 1)
1
(3 + x )dx +
9
1
1
(3 + x)dx =
9
2
1
1
(3 x)dx =
9
2
( x 1)
0
1
1
(3 x )dx =
9
2
16
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)
re r
f R (r ) =
0
/2
r 0
n rest
17
18
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.
clear
n=8;
% numarul de simboluri ale sursei
if n>15
19
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;
for i=1:m
if s(i)>0
ent=ent-s(i)*log(s(i));
20
end
end
ent=ent/log(2);
entropie=ent;
21
1
=
1
=
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.
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.
22
23
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.
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
24
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
for i=1:n
s=dec2bin(i-1,ordin);
stari(i,:)=s;
starin(i)=i-1;
25
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);
ent=0;
for i=1:m
if s(i)>0
ent=ent-s(i)*log(s(i));
26
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:
rn =
n= 1
r
,
1 r
nr n =
n= 1
r
(1 r ) 2
n= 1
1
log 2 n =
2n
1/ 2
1
n= 1 n 2 = (1 1 / 2) 2 = 2
nu cu probabilitatea
1
1
= k (a 1 < k a).
n
2
n= k + 1 2
1 k log 1 k k log k
2
2 2
2
etc.
Problema 20. Regula gruprii pentru entropie.
Fie p = (p1, p2, , pm) 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 q1 = p1, q2 = p2, ,
qm 2 = pm 2 si qm 1 = pm 1 + pm, cu alte cuvinte distributia nou este aceeasi cu
27
pm 1
pm
H ( p ) = H (q ) + ( p m 1 + p m ) H 2
,
p m 1 + p m p m 1 + p m
unde H2(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:
H ( X , g ( X )) = H ( X ) + H ( g ( X ) / X ) = H ( X )
H ( X , g ( X )) = H ( g ( X )) + H ( X / g ( X )) H ( g ( X ))
prin urmare H ( g ( X )) H ( X ) .
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) = xp(x)H(g(X)|X = x) = 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.
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).
28
log 256 2
log 256 2
log 256 2
Astfel
H2(X) = 8H256(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;
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 3k rezultate ceea ce face posibil distincia ntre cel
mult 3k stri diferite. Asadar, 2n + 1 3k, sau n (3k 1)/2.
29
Din punct de vedere al informaiei, fiecare cntrire aduce cel mult log 23
biti de informatie. Sunt 2n + 1 stri posibile, cu un maxim de entropie de
log2(2n + 1) biti. n consecin, n aceast situaie sunt necesare cel puin
log2(2n + 1)/log23 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)30 + 031 + 132 = 8. Se formeaz o matrice cu coloanele
reprezentnd numere pozitive
0
3
31
32
1
1
0
0
2
1
1
0
3
0
1
0
4
1
1
0
5
1
1
1
6
0
1
1
7
1
1
1
8
1
0
1
9
0
0
1
10
1
0
1
11
1
1
1
12
0
1
1
1 = 0
2 = 2
3 = 8
3
31
32
1
1
0
0
2
1
1
0
3
0
1
0
4
1
1
0
5
1
1
1
6
0
1
1
7
1
1
1
8
1
0
1
9
0
0
1
10
1
0
1
11
1
1
1
12
0
1
1
1 = 0
2 = 0
3 = 0
30
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
1/3
0
1/3
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.
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.
31
H p = p k log p k
k=1
H q = q k log q k
k=1
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
Hq H p = 2
( pi + p j )
( pi + p j )
+ pi log pi + p j log p j =
2
2
1
1 1
1
1
1
log
= 2
32
1
H(X )
d
H(X) =
p ( x ) log
1
dx
p( x)
log
1
d
p ( x )dx = log
1
d
1
1
Pr{ p ( x ) d } log
d
d
X
cu probabilitatea
X = 1
X 2 cu probabilitatea 1
33
X cu probabilitatea
X= 1
X 2 cu probabilitatea 1
Se defineste o functie de X
1 pentru X = X 1
= f ( X ) =
2 pentru X = X 2
Apoi, ca n Problema 21,
H(X) = H(X,f(X)) = H() + H(X|) =
= H() + p( = 1)H(X| = 1) + p( = 2)H(X| = 2) =
= H() + H(X1) + (1 )H(X2)
cu H() = log (1 )log(1 ).
b. Punnd F() = H() + H(X1) + (1 )H(X2), se observ c F este o functie
concav de a asa nct ea este maxim n punctul de anulare a derivatei.
Rezolvnd
F() = log + log(1 ) + H(X1) H(X2) = 0
se obtine succesiv
2H ( X 1 )
= H ( X1 ) H ( X 2 )
2
+ 2
H ( X1 )
*
F ( ) = log( 2
+ 2H ( X 2 ) ) .
*
Asadar,
H(X )
H(X )
*
H(X) = H() + H(X1) + (1 )H(X2) = F() F ( ) = log 2 1 + 2 2
n final,
2H ( X ) 2H ( X1 ) + 2H ( X 2 )
34
f ( x) = e 0 + 1x + 2 ln x = cx 2 e 1 x
care face parte din familia distributiilor Gamma. Constantele se aleg pentru a
satisface relatiile restrictive.
Graful 1
Graful 2
Graful 3
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
w
H = i pij log pij = i log wi
i
j
i w
Pentru graful 1, {wi} ={2, 2, 2} de unde rezult H = 3[(2/6)log2] = 1.
Pentru graful 2, {wi} ={1, 1, 1, 3} de unde rezult H = (3/6)log3 0,79.
Pentru graful 3, {wi} ={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.
35
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:
N1
n N1
36
N1
N1 N2
N3
n N1 N3
H (Tn ) =
=
=
=
=
H ( N1 , Tn )
H ( N1 ) + H (Tn | N1 )
log(n 1) + H (Tn | N1 )
1 n 1
log(n 1) +
[ H (Tk ) + H (Tn k )]
n 1 k=1
2 n 1
log(n 1) +
H (Tk )
n 1 k=1
37
n 1
p( N1 = k ) H (Tn | N1 = k ) =
n 1
k=1
H (Tn k ) =
n 1
k =1
H (Tk )
(n 1) H n = (n 1) log(n 1) + 2 H k
k=1
n 2
(n 2) H n 1 = (n 2) log(n 2) + 2 H k
k=1
=
+ Cn
n
n 1
n
n(n 1)
n 1
Asupra termenului Cn se mai poate lucra:
Cn =
+
n
n(n 1)
n
n1
n(n 1)
H
2 log(i 2)
2 log(i 1)
2
lim n n =
=
log i
2
2
n
i (i 1)
(i 1)
i= 3
i= 3
i= 2 i
Pentru i suficient de mare, log i i 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
38
Se d matricea
1 / 2 1 / 4 1 / 4
P = [ Pij ] = 1 / 4 1 / 2 1 / 4
1 / 4 1 / 4 1 / 2
Fie X1 distribuit uniform pe strile {0, 1, 2}. Fie {Xi}1 un lan Markov cu
matricea de tranzitie P, astfel nct Pr(Xn + 1 = j|Xn = i) = Pij, i, j {0, 1, 2}.
a. Este {Xn} stationar?
b. Aflati limn H(X1, , Xn).
Considerati acum procesul derivat Z1, Z2, , Zn n care
Z1 = X1
Zi = Xi Xi 1 (mod 3), i = 2, 3, , n
Asadar, Zn face o codare a tranzitiilor, nu a strilor.
c. Aflati H(Z1, Z2, , Zn).
d. Aflati H(Zn) si H(Xn) pentru n 2.
e. Aflati H(Zn|Zn 1) pentru n 2.
f. Sunt, pentru n 2, Zn 1 si Zn independente?
Solutie:
a. Fie n functia de probabilitate la momentul n. Deoarece 1 = (1/3, 1/3, 1/3)
si 2 = 1P = 1, n = 1 = (1/3, 1/3, 1/3) pentru orice n si {Xn} este
stationar.
Alternativ, observatia c P este dublu stochastic conduce la aceeasi
concluzie.
b. Deoarece {Xn} este un proces Markov stationar
lim n H ( X 1 ,..., X n ) = H ( X 2 | X 1 ) =
= 3
k= 0
P( X 1 = k ) H ( X 2 | X 1 = k ) =
1
1 1 1 3
H , , =
3
2 4 4 2
k=1
H ( X k | X 1 ,..., X k 1 ) =
3
(n 1)
2
k= 2
Ca alternativ, se pot utiliza rezultatele de la punctele urmtoare, (d), (e) si
(f). Deoarece Z1, , Zn sunt independente si Z2, , Zn sunt distribuite
identic, cu functia de probabilitate (1/2, 1/4, 1/4),
= H ( X1) +
H ( X k | X k 1 ) = H ( X 1 ) + (n 1) H ( X 2 | X 1 ) = log 3 +
3
( n 1)
2
39
0 cu probabiltatea 1 / 2
Z n = 1 cu probabiltatea 1 / 4
2 cu probabiltatea 1 / 4
Asadar,
H(Zn) = H(1/2, 1/4, 1/4) = 3/2.
e. Datorit simetriei lui P, Pr[Zn|Zn1] = Pr[Zn] pentru orice n 2. Astfel, H[Zn|
Zn1] = H[Zn] = 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 Zk+1 = Xk+1 Xk este independent
de Xk. Acum din
Pr[Zk+1|Xk, Xk1] = Pr[Xk+1 Xk|Xk, Xk1] = Pr[Xk+1 Xk|Xk] =
= Pr[Xk+1 Xk] = Pr[Zk+1]
rezult c Zk+1 este independent de (Xk, Xk1) si este deci independent si de Zk
= Xk Xk1. Pentru k = 1, din nou din simetria lui P rezult imediat c Z2 este
independent de Z1 = X1.
Problema 38. Markov de ordinul doi
Fie {Xn}, Xn {0, 1} un proces stochastic binar. Fie Xn + 1 = Xn Xn 1 Zn + 1,
cu operatorul de adunare modulo 2 si {Zn} un proces Bernoulli(p). Care
este rata entropiei pentru {Xn}? Ar putea fi util a redefini acest proces Markov
de ordinul doi ca un proces Markov de primul ordin.
Solutie: Fie Yi = (Xi, Xi1) pentru orice i. Este usor de vzut c lim nH(Xn)/n =
limnH(Yn)/n, si c {Yi} este un proces Markov de ordinul 1. Asadar rata
entropiei pentru {Xn} este aceeasi cu rata entropiei procesului {Yn}. Deoarece
{Yn} este un proces Markov de ordinul nti, are loc
1
1 n
1 n
lim n H (Yn ) = lim n H (Yi | Yi 1 ) = lim n H ( p ) = H ( p)
n
n i= 1
n i= 1
Se poate conchide c {Xn} are rata entropiei H(p).
Alternativ, se poate ataca direct rata entropiei unui proces Markov de ordinul 2
{Xn} astfel
1
1 n
lim n H ( X n ) = lim n H ( X i | X i 1 ) =
n
n i= 1
1 n
H ( X i | X i 1, X i 2 ) H ( p)
n i= 1
n ultima egalitate se evidentiaz ordinul procesului, 2, iar limita provine din
faptul c H ( X n | X n 1 , X n 2 ) = H ( p ) pentru orice n 3 (Cesro).
= lim n
40
41
42
43
44
end
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
2 / 3 1/ 3
P = 1 / 3 1 / 3
0
1/ 3
0
1 / 3
2 / 3
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) = [ p q r ] cu p +
q + r = 1. Atunci, probabilittile simbolurilor de iesire sunt
2 / 3 1/ 3 0 2
1
1 1
2
P( B) = [ p q r ] 1 / 3 1 / 3 1 / 3 = p + q
q + r
3
3 3
3
0 1 / 3 2 / 3 3
si probabilittile simbolurilor de la intrare (A), conditionate de cele de la iesire
(B) sunt
0
2 p /( 2 p + q ) q /(2 p + q )
P( A / B) =
p
q
r
0
q
/(
q
+
2
r
)
2
r
/(
q
+
2
r
)
45
1
1
1
+ q log + r log
p
q
r
2p
2p + q
q
2p + q
log
+
log
2p + q
2p
2p + q
q
1
1
1
H ( A / b2 ) = p log + q log + r log = H ( A)
p
q
r
q
q + 2r
2r
q + 2r
H ( A / b3 ) =
log
+
log
q + 2r
q
q + 2r
2r
H ( A / b1 ) =
2p + q
1
q + 2r
H ( A / b1 ) + H ( A / b2 ) +
H ( A / b3 ) =
3
3
3
2
1
1
1 1
1
= p log
+ q log + (2 p + q ) log(2 p + q ) + H ( A) +
3
2p 3
q 3
3
1
1 2
1 1
+ q log + r log
+ (q + 2r ) log(q + 2r ) =
3
q 3
2r 3
2
2
1
= H ( A) ( p + r ) + H ( A) +
3
3
3
1
1
+ (2 p + q ) log(2 p + q ) + (q + 2r ) log(q + 2r ) =
3
3
2
2 2p + q
2
2 q + 2r
2
2
= H ( A) ( p + r )
log
log
+
3
3 2
2p + q 3 2
q + 2r 3
H ( A / B) =
2
2 2p + q
2
q + 2r
2 2
( p + r ) +
log
+
log
3
3
2
2p + q
2
q + 2r 3
Paranteza contine expresia entropiei unei surse cu dou simboluri. Aceasta este
maxim cnd simbolurile sunt echiprobabile
2 p + q q + 2r
=
2
2
46
47
1p
0
p
p
1p
1
1 / 3 1 / 3 1 / 3
X = Y = {0, 1, 2}, p ( y | x) = 1 / 3 1 / 3 1 / 3
1 / 3 1 / 3 1 / 3
1/ 2 1/ 2 0
X = Y = {0, 1, 2}, p ( y | x) = 0 1 / 2 1 / 2
1 / 2 0 1 / 2
0
0
p 1 p
1 p
p
0
0
X = Y = {0, 1, 2, 3}, p ( y | x ) =
0
0
q 1 q
0
0
1 q
q
0
0
p
4 1 p
p
1 p
0
1
X2
0
p
1 p
3 1 p
0
p
1
2
Y
3
2 Y ?
3
48
49
X 1 (n) 0 1 1 X 1 (n 1)
X 2 ( n) = 1 0 0 X 2 (n 1) = AX(n 1)
X (n) 0 1 0 X ( n 1)
3
3
50
0
P = 1
0
0
1
1
0
0
1
3
1
3
X=A
Y=X+Z
51
1
2
f ( x) =
e 2
2
definit pe ntreaga ax real, depinznd de parametrii m (media) si 2
(dispersia). Acesti parametri sunt n cazul de fat, respectiv, A si 100.
Prima valoare K cerut se calculeaz prin rezolvarea ecuatiei n x
x
f ( x )dx = 0,9
punnd n f(x), m = A.
A doua valoare K cerut se calculeaz prin rezolvarea unei alte ecuatii n x
x
f ( x ) dx = 0,9
repartitie ia valoarea 0,9, respectiv 0,1, atunci cnd media variabilei este zero si
abaterea medie ptratic este = 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
52
X = A Y < A + K
A altfel
53
54
55
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:(nj+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
56
57
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
58
[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')
59
60
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;
61
%
%
%
References:
[1] Sayood, K., Introduction to Data Compression,
Morgan Kaufmann, 2000, Chapter 4, Section 4.4.3.
62
63
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,
% 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
64
code(code_index:code_index+N-2) = bin_low(2:N);
code_index = code_index + N - 1;
end
65
% Check to make sure that finite positive integer values (noncomplex) 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
%
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 177symbol 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:
%
66
%
%
%
%
%
%
%
%
References:
[1] Sayood, K., Introduction to Data Compression,
Morgan Kaufmann, 2000, Chapter 4, Section 4.4.3.
67
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_updec_low+1)*cum_counts(ptr-1+1)/total_count );
% Compute the new upper bound
dec_up = dec_low + floor( (dec_updec_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))
| ...
( 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);
68
% 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
end
end % end while
end % end while length(dseq)
% Set the same output orientation as code
if (row_cd > 1)
dseq = dseq.';
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)
69
70
71
0 dac x = 1
C ( x) = 01 dac x = 2
11 dac x = 3
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
Z1Z2Z3 = C(X1)C(X2)C(X3) ?
n
(Exemplu: x = 2311 produce procesul codat zn = 011100.)
Solutie: n medie, pentru o succesiune de n simboluri generate de sursa X,
numrul de zerouri n secventa codat zn este (1/2)n + (1/4)n = (3/4)n, iar
1
72
i= 1
pi ci li .
qi =
pi ci
m
i= 1
pi ci
, i = 1, 2, , m.
Inegalitatea din enunt este inegalitatea lui Kraft. Dac lungimile cuvintelor de
cod ar putea fi li* = log(qi), inegalitatea ar fi verificat chiar cu egalitate.
Costul C este minim odat cu costul
C
C = m
pi ci
i= 1
C * = pi ci E (q) .
i= 1
b. Cum ati folosi procedura de obtinere a unui cod Huffman pentru a minimiza
costul mediu C peste toate codurile unic decodabile? Fie CHuffman acest
minim.
73
C* CHuffman C* +
i=1
pi ci
m
i=1
pi ci se obtine dubla
p(x)
1/2
1/4
1/8
1/16
1/16
q(x)
1/2
1/8
1/8
1/8
1/8
C1(x)
0
10
110
1110
1111
C2(x)
1
100
101
110
111
74
Problema 56.
Se consider o variabil aleatoare care ia echiprobabil m valori. Se stie c
entropia acestei surse de informatie este log2 m biti.
a. Pentru ce valori ale lui m lungimea medie a cuvntului de cod egaleaz
entropia H = log2 m?
Solutie: Este necesar a fi satisfcut egalitatea
m
1
i = 1 m li = log 2 m
echivalent succesiv cu
m
m
1 m
l
=
log
m
l
=
m
log
m
, i
, i = 1 li
.
i
2
2
2
= mm
m i= 1
i= 1
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 redundan a unui
cod diferenta = L H. Pentru ce valori ale lui m, 2k m 2k+1, redundanta
codului optim este maxim? Care este valoarea limit a acestei redundante
maxime, pentru m ?
Solutie: Pentru valorile extreme, 2k si 2k+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 2k cu 1, 2, , 2k 1 unitti, cuvintele de cod de lungime k + 1
sunt n numr de 2, 4, , 2 k+1 2, adic 2(m 2k), iar cuvintele de cod de
lungime k sunt n numr de m 2, m 4, , m 2k+1 + 2, adic m 2(m 2k) =
2k+1 m.
Lungimea medie a codului este
L=
1
((2k + 1 m)k + 2(m 2k )(k + 1))
m
1
2k + 1
m ( k + 2) 2 k + 1 = ( k + 2)
m
m
Functia
75
2k + 1
log 2 m
m
f ( x ) = ( k + 2)
2k + 1
log 2 x
x
2
x
x ln 2
k+1
adic pentru x = 2 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
|
A1
|
A2
|
A3
Am
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - |
B1
|
B2
|
B3
Bn
|
unde fiecare Ai si Bi sunt cuvinte de cod, pot aprea situatii de acest gen. Se
observ c B1 poate fi prefix pentru A1, 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 SardinasPatterson) 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 li, 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
76
i 1
k=1
pk
U n 1 \ U n S1
S1
1/ 2
S2
1/ 4
S3
0
S2
1/ 4
1/ 2
1/ 2
S3
1/ 4
1/ 4
1/ 2
77
Pr.
1/2
1/4
1/4
C1
0
10
11
S2
S1
S2
S3
Pr.
1/4
1/2
1/4
C2
10
0
11
S3
S1
S2
S3
Pr.
0
1/2
1/2
C3
11
0
10
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, (Si Sj), 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.
Si Sj
(i, j) = (1, 1)
(i, j) = (1, 2)
(i, j) = (1, 3)
(i, j) = (2, 1)
(i, j) = (2, 2)
(i, j) = (2, 3)
(i, j) = (3, 1)
(i, j) = (3, 2)
(i, j) = (3, 3)
Probabilitti
1/9
1/18
1/18
1/9
2/9
1/9
0
1/6
1/6
Cod Huffman
110
1010
10110
111
01
100
10111
000
001
78
79
n1= -cod;
citeste cod;
scrie (de n1 ori) cod;
altminteri
scrie cod;
final_dac
final_ct_timp
80
81
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 a literelor A, , Z si un mesaj m = a1a2an alctuit din
n litere devine e(m) = (a1)(a2)(an). 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.
82
83
84
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]
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
85
y2 y1
x x
= 22 1
3x1 + a
2 y1
pentru P1 P2
pentru P1 = P2
x3 + x + 6
6
8
5
3
8
4
8
4
9
7
4
QR11?
nu
nu
da
da
nu
da
nu
da
da
nu
da
y
4, 7
5, 6
2, 9
2, 9
3, 8
2, 9
86
87
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
88
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
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 s1, s2, s3 ale secretului. Apoi, utilizati o schem de partajare 4-din-5
pentru a genera sub-prtile s1,1, , s1,5 ale lui s1, tratnd s1 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, Q1(x), Q2(x) si Q3(x), astfel nct Qi(0) = P(i) pentru
oricare i = 1, 2, 3. Cu alte cuvinte, secretul fiecrui polinom Qi(x) este una din
prtile derivate din partajarea secretului bazat pe P(x).
Acum pentru fiecare Qi(x) generm 5 sub-prti Qi(1), , Qi(5), atribuind 3 subprti 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 Qi(x), care este partea lui din secretul polinomului P(x). n final,
doi profesori se pot ntruni pentru a recupera P(0).
89
90
La apelarea programului hamm, se genereaz mai nti matricea de controlverificare 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.
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
91
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))
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
92
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
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
93
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));
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(' ')
94
95
[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.
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
x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 = 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 0 1 0
0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1
1 1 1 1
a. Artati c ponderea Hamming a codului este 4.
96
i= 0
Cni = 2k
97
i= 0
i
C90
= 212 si
i= 0
i
C23
= 211
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
A= 1
1
1
1
1
0
0
0
0
0
1
1
1
1
1
1
1
0
1
1
1
0
0
0
1
1
1
1
1
0
1
1
0
1
1
0
0
1
1
1
1
0
1
1
0
1
0
1
0
1
1
1
1
0
1
1
0
1
0
0
1
0
0
1
1
1
1
0
0
1
0
1
0
1
0
1
0
1
1
1
0
0
1
0
1
1
0
1
0
1
0
0
1
1
1
0
0
1
1
0
0
1
0
1
1
1
0
1
0
0
0
1
1
1
0
1
1
1
0
0
0
1
0
0
1
1
1
12
j=1
aij y j 0 mod 2 , i = 1, 2, , 11
sau
xi
12
j=1
aij y j mod 2 , i = 1, 2, , 11
98
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
1
A = 11
1
1
1
0
1
1
0
1
1
1
0
0
1
0
1
1
1
0
1
0
99
1
0
0
1
1
0
0
0
1
A = 10
0
0
0
1
1
A = 10
1
1
1
0
0
1
1
1
1
0
1
1
1
0
0
0
0
1
0
0
0
0
1
0
1
1
1
0
Dac se aleg ca biti de paritate x0, x2, x3 si x7, dup ce x7 devine x1 si x1 devine
x7, se obtine matricea
0
1
1
1
1
0
1
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1 1 1 1 0 0 0 0
A = 1 1 0 0 1 1 0 0
1 0 1 0 1 0 1 0
cu bitul x7 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, x7.
b. Eliminati acum restrictia (1) si stergeti bitul x7 pentru a obtine un cod nou
H7 alctuit din secvente mai scurte, de 7 biti (operatia se numeste perforarea
codului H8). Care sunt dimensiunea si rata noului cod? Este (nc) acest cod
capabil a corecta 1 eroare? Explicati matematic.
100
1 0 0 1 0 1 1
H = 0 1 0 1 1 0 1
0 0 1 1 1 1 0
astfel c orice cuvnt de cod verific ecuatiile de verificare a parittii
x0 = x3 + x5 + x6
x1 = x3 + x4 + x6
x2 = x3 + x4 + x5
Se admite c stergerile apar n pozitiile xi, xj cu i j. Indiferent de alegerea
indicilor i si j, exist cel putin o ecuatie n care apare xi dar nu xj sau apare xj dar
nu xi. 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 H7 este capabil a corecta toate cuvintele afectate de cel mult dou stergeri.
Problema 71.
Se consider urmtoarele matrici 36:
1 0 0 1 1 1
A = 0 1 0 1 0 1
0 0 1 1 1 0
101
1
B = 0
1
1
C = 0
1
1 0 0 1 0
1 1 0 1 1
1 1 1 0 0
0 1 1 0 1
1 1 0 1 1
0 0 1 1 0
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):
1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1
B ~ 0 1 1 0 1 1 ~ 0 1 1 0 1 1 ~ 0 1 0 1 0 1
0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0
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 0 1 1 0 1 1 0 0 1 0 0
C ~ 0 1 1 0 1 1 ~ 0 1 0 0 0 0
0 0 1 0 1 1 0 0 1 0 1 1
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 H7 astfel:
Se aranjeaz 16 biti informationali ntr-o matrice 44
Se face codarea H7 pe fiecare linie, ceea ce conduce la o matrice 47
Se face acelasi lucru pe fiecare coloan pentru a crea o matrice 77
Codul C const n toate matricile 77 obtinute n acest mod.
Determinati distanta minim Hamming/ponderea pentru codul C.
Determinati multimea tuturor parametrilor c si d pentru care C este un cod
corector/detector de (c, d) erori, cu d numrul cel mai mare posibil pentru un
c ales.
Solutie: n scrierea matricial, codul arat astfel
102
x0
x7
x
14
x21
x28
x35
x
42
x1
x8
x15
x22
x29
x36
x43
x2
x9
x16
x23
x30
x37
x44
x3
x10
x17
x24
x31
x38
x45
x4
x11
x18
x25
x32
x39
x46
x5
x12
x19
x26
x33
x40
x47
x6
x13
x20
x27
x34
x41
x48
103
P] = 1
0
0 1
1 0
1
0
1 1
1 1
0
1
0
1
1
n = 3 dmin = 2, G = 0
0 1
1 1
1 0 1 0
n = 4 dmin = 2, G = 0 1 0 1
1 0 1 1 0
n = 5 dmin = 3, G = 0 1 0 1 1
1 0 1 1 1 0
n = 6 dmin = 4, G = 0 1 0 1 1 1
1 0 1 1 1 0 0
n = 7 dmin = 4, G = 0 1 0 0 1 1 1
1 0 1 1 1 1 0 0
n = 8 dmin = 5, G = 0 1 0 0 1 1 1 1
1 0 1 1 1 1 1 0 0
n = 9 dmin = 6, G = 0 1 0 0 1 1 1 1 1
1 0 1 1 1 1 1 1 0 0
n = 10 dmin = 6, G = 0 1 0 0 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 0 0
n = 11 dmin = 7, G = 0 1 0 0 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 0 0 0
n = 12 dmin = 8, G = 0 1 0 0 0 1 1 1 1 1 1 1
104
1 1 0 0 1 0
G = 0 1 1 0 1 1
1 1 1 1 0 0
Regula de codare c = (a1, a2, a3)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
(a1, a2, a3) = 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 = GT. Astfel
1
1
0
M = [GT | I] =
0
1
0
1 0
0 1
0 0
~
0 0
0 0
0 0
0
1
1
0
1
1
0
0
1
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
0
1
0
1
0
0
0
0
1
0
1
1
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0 ~
0
0
1
0
0
0
0
0
1
105
1
0
B = 00
0
0
0
1
0
0
0
0
0
0 1
0
1 1
1 si Q = 1 1
0
1 1
0
1 0
0
1 1
1
0
1
1
1
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
a1
a2
QcT = QGTaT = BaT = a3
0
0
0
Zerourile din vectorul ultim se pot ignora, asa nct fie matricea 36 obtinut
din primele trei linii ale matricei Q. Atunci cT = aT si solutia problemei este
matricea
0
1
1
J = T =
0
0
0
1
1
0
0
0
0
1
1
1
0
0
0
Problema 75.
Fie un cod C care admite urmtorul decodor optimal (de distant minim)
Sindromul
[0000]T
[1000]T
[0100]T
[1100]T
[0010]T
[1010]T
[0110]T
[1110]T
Eroarea
0000000
0001000
0000100
0001100
0000010
0001010
0000110
0111000
Sindromul
[0001]T
[1001]T
[0101]T
[1101]T
[0011]T
[1011]T
[0111]T
[1111]T
106
Eroarea
0000001
0010100
0011000
0010000
0000011
0100000
1000000
0010010
0
H = 11
1
0
1
1
1
1
0
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0 = [ P | I ]
n k
0
1
1
0
Ik 0
= 0
P 1
1
0
1
0
1
0
1
1
0
0
1
1
1
0
1
1 0 0 0 1 1 1
G = 0 1 0 1 0 1 1
0 0 1 1 1 0 1
Acest cod este destinat transmiterii informatiei codate sistematic pe un BSC
(Binary Symmetric Channel) cu probabilitatea ncrucisat p. Utilizati matricea
standard2 pentru C, dat imediat mai jos, pentru a rspunde la ntrebrile
privitoare la performantele decodrii.
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 Fqn.
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.
107
0000000
0000001
0000010
0000100
0001000
0010000
0100000
1000000
0000011
0000110
0001100
0011000
0001010
0010100
0010010
0111000
1000111
1000110
1000101
1000011
1001111
1010111
1100111
0000111
1000100
1000001
1001011
1011111
1001101
1010011
1010101
1111111
0101011
0101010
0101001
0101111
0100011
0111011
0001011
1101011
0101000
0101101
0100111
0110011
0100001
0111111
0111001
0010011
Matricea standard
0011101 1101100
0011100 1101101
0011111 1101110
0011001 1101000
0010101 1100100
0001101 1111100
0111101 1001100
1011101 0101100
0011110 1101111
0011011 1101010
0010001 1100000
0000101 1101100
0010111 1100110
0001001 1111000
0001111 1111110
0100101 1010100
1011010
1011011
1011000
1011110
1010010
1001010
1111010
0011010
1011001
1011100
1010110
1000010
1010000
1001110
1001000
1100010
0110110
0110111
0110100
0110010
0111110
0100110
0010110
1110110
0110101
0110000
0111010
0101110
0111100
0100010
0100100
0001110
1110001
1110000
1110011
1110101
1111001
1100001
1010001
0110001
1110010
1110111
1111101
1101001
1111011
1100101
1100011
1001001
1
A
1 p
PU(E) = (1 p)n
0
1
1
7
2
7
3
1
Atunci
P(E) = 1 P(vectorul de eroare este lider de codomeniu) =
= 1 (1 p)7 7p(1 p)6 7p2(1 p)5 p3(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 c000 = (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 c111 =
(1110001). Astfel,
P(toti cei trei biti de informatie sunt eronati) =
= P(vectorul eroare este n coloana care are n cap pe c111)
108
0 1 2 3 4 5 6 7
5 5 3 3
Asadar,
P(toti cei trei biti de informatie sunt eronati) =
= 5p3(1 p)4 + 5p4(1 p)3 + 3p5(1 p)2 +3p6(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
2
3
4
5
6
7
Numr de aparitii
21
7
28
0
7
1
Cu aceste observatii
7
P(F) =
i= 2
N i p i (1 p ) 7 i =
P(F) = 1
i= 0
Cni p i (1 p ) n i 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
109
1100010
0001110
1001001
devine acum
1001001
0001110
1100010
1010100
0100101
0010011
1111111
0111000
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 7p2(1 p)5 p7
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)/2n] = V(n, t)/2r
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) = C230 + C231 + C232 + C233 = 1 + 23 + 253 + 1771 = 2048
Asadar,
P(acceptare fals) = V(23, 3)/232 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.
110
1
0
0
0
G1 = 00
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
1
1
0
1
0
1
0
0
0
0
0
1
1
0
1
0
1
0
0
0
0
0
1
1
0
1
0
1
0
0
0
0
0
1
1
0
1
0
1
0
0
0
0
0
1
1
0
1
0
1
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
1
0
0
H1 = 0
0
1
0
0
0
1
1
0
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
0
0
1
1
0
0
1
1
0
0
1
111
1
0
0
1
0
0
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
1
0
0
0
1
0
0
0
0
G1H1T = 0
echivalent n fond cu descompunerea
(x5 + x4 + x2 + 1)(x10 + x9 + x8 + x6 + x5 + x2 + 1) = x15 + 1
Matricea generatoare n forma sistematic/canonic G se poate obtine fie prin
operatii cu linii pe matricea G1, fie direct prin completarea liniei i din G (i = 1,
2, , 10) cu coeficientii polinomului ci(x) = xr + i 1 + rest{xr + i 1/g(x)}. (Se
propune ca exercitiu verificarea identittii rezultatelor obtinute pe cele dou
ci.).
ntr-un mod sau altul se ajunge la
1
1
1
0
G = 11
0
0
1
0
0
1
1
1
0
1
1
0
0
1
1
1
0
1
0
1
1
1
1
0
0
1
1
0
1
0
1
1
1
1
1
1
0
1
1
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
H = 0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
1
0
1
0
1
1
1
1
1
1
1
1
0
1
0
0
1
1
0
1
1
0
0
1
1
1
1
1
0
0
0
1
1
1
0
0
0
1
1
1
1
0
1
1
0
0
1
0
1
1
112
113
factor al polinomului xn + 1 asa nct codul C1 este un cod ciclic. Urmeaz acum
a demonstra c:
( ) orice cuvnt de cod din C1 este cuvt de cod n C si este de pondere
par.
Orice cuvnt de cod din C1 este cuvnt de cod n C deoarece orice multiplu al
lui g1(x) este n acelasi timp multiplu al lui g(x). Se retine acum un cuvnt de
cod c1(x) = m(x)g1(x). innd seam de Indicatia atasat la enuntul problemei,
se constat c wt[c1(x)] = m(1)g1(1) = (1 + 1)m(1)g(1) = 0 mod 2.
( ) orice cuvnt de cod din C de pondere par este cuvnt de cod din C1.
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
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) = m1(x)(x
+ 1). Atunci c(x) = m1(x)(x + 1)g(x) = m1(x)g1(x) este cuvnt de cod din C1.
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
0 1 1 0
G1 = 1
G = 0 1 1 1 0
0 1 0 1 1 si 2 1 0 0 1 1
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) = x3 + x + 1 este echivalent cu un cod H7 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 H7 este
1 0 0 1 0 1 1
H = 0 1 0 1 1 0 1
0 0 1 1 1 1 0
Matricea generatoare corespunztoare este
1
G = 10
1
1
0
1
1
1
1
0
1
0
0
0
114
0
1
0
0
0
0
1
0
0
0
0
1
Gciclic
1
= 10
1
1
1
0
0
1
1
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
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.
Problema 83.
Pentru a genera un cod perfect Golay G23 se pot utiliza dou polinoame
generatoare, g1(x) = x11 + x10 + x6 + x5 + x4 + x2 + 1 si g2(x) = x11 + x9 + x7 + x6 +
x5 + x + 1.
a. Artati c g1(x) si g2(x) sunt polinoame inverse unul altuia.
Solutie: Polinomul cu ordinea coeficientilor inversat fat de cea a polinomului
g2(x) este
1
1
1
1 1
1
1
x11 g 2 = x11 11 + 9 + 7 + 6 + 5 + + 1 =
x
x
x
x
x
x
x
2
4
5
6
10
11
= 1+ x + x + x + x + x + x
115
Problema 84.
O succesiune (exploziv) de erori (error burst) de lungime l este un pattern de
erori e = (e0, e1, , en 1) n care pentru o parte din indicii 0 i < n erorile sunt
legate de pozitiile ei, e(i + 1) mod n, , e(i + l 1) mod n cu ei 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
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(x2).
Solutie: Fie p(x) = a0 + a1x + + anxn. Urmeaz c [p(x)]2 = b0 + b1x + +
b2nx2n cu coeficientii bk obtinuti prin convolutia coeficientilor a ai polinomului
p(x) dat de
bk =
i= 0
ai ak i mod 2
116
Polinom minimal
Element
Polinom minimal
0
1
2
3
4
=1+
5 = + 2
6 = 2 + 3
x
x+1
x4 + x + 1
x4 + x + 1
x4 + x3 + x2 + x + 1
x4 + x + 1
x2 + x + 1
4
x + x3 + x2 + x + 1
7 = 1 + + 3
8 = 1 + 2
9 = + 3
10 = 1 + + 2
11 = + 2 + 3
12
= 1 + + 2 + 3
13 = 1 + 2 + 3
14 = 1 + 3
x4 + x3 + 1
x4 + x + 1
4
x + x3 + x2 + x + 1
x2 + x + 1
x4 + x3 + 1
4
x + x3 + x2 + x + 1
x4 + x3 + 1
x4 + x3 + 1
b. g2(x) = x4 + x3 + x2 + x + 1
Solutie: Fie o rdcin a polinomului neprimitiv g2(x) = x4 + x3 + x2 + x + 1
asa nct 4 = 1 + + 2 + 3. Puterile lui nu produc toate elementele nenule
ale cmpului GF(24). 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:
117
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) = x4 + x + 1
Pe calea aceasta se gsesc elementele din tabelul urmtor si polinoamele lor
minimale n reprezentarea :
Element
Polinom minimal
Element
Polinom minimal
0
1
2
3
4
= 1 + + 2 + 3
1+
1 + 2
x
x+1
x4 + x3 + x2 + x + 1
x4 + x3 + x2 + x + 1
x4 + x3 + x2 + x + 1
x4 + x3 + x2 + x + 1
x4 + x3 + 1
x4 + x3 + 1
1 + 3
+ 2
+ 3
2 + 3
1 + + 2
1 + + 3
1 + 2+ 3
+ 2+ 3
x4 + x3 + 1
x4 + x + 1
x4 + x + 1
x2 + x + 1
x4 + x + 1
x4 + x + 1
x2 + x + 1
x4 + x3 + 1
2
3
4 = 1 + 3
5 = 1 + + 3
6 = 1 + + 2 + 3
7 = 1 + + 2
8 = + 2 + 3
9 = 1 + 2
10 = + 3
11 = 1 + 2 + 3
12 = 1 +
13 = + 2
14 = 2 + 3
a. = 1 + 1 + 2 + 3
Solutie:
= 1 + 1 + 2 + 3 = 1 + 14 + 13 + 12 = 3.
b. = (5(1 11))/(1 + 2)
Solutie:
118
c. =
GF ( 2 4 )
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(24). Prin dezvoltarea produsului tuturor factorilor de forma (x + i),
i = 1, 2, , 15, se obtine:
(x + 1)(x + 2)(x + 15) = x15 + (1 + 2 + + 15)x14 + + (12 15).
Una din propriettile cmpurilor Galois este aceea c un produs de acest gen
este egal cu x 2 1 + 1 . Astfel,
=0
r
GF ( 2 4 )
GF ( 2 4 ) { 0}
d.
GF ( 2 4 ) {0}
=1
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
119
0
1
2
3
4
5
6
7
Clase de resturi
modulo
q(x) = 1 + x + x4
1
2
3
1+
+ 2
2 + 3
1 + + 3
Reprezentare
binar
1000
0100
0010
0001
1100
0110
0011
1101
8
9
10
11
12
13
14
15
120
Clase de resturi
modulo
q(x) = 1 + x + x4
1 + 2
+ 3
1 + + 2
+ 2 + 3
1 + + 2 + 3
1 + 2 + 3
1 + 3
1
Reprezentare
binar
1010
0101
1110
0111
1111
1011
1001
1000
SEMNALE
Lucrarea 9
Tema 1: Serii Fourier
Un semnal priodic de perioad T0 se poate dezvolta n anumite conditii conform
relatiei
a
s (t ) = 0 + (an cos n 0t + bn sin n 0t ) .
2 n= 1
Partea dreapt a acestei egalitti este o serie, seria Fourier a semnalului s(t), iar
coeficentii an, n = 0, 1, 2, , bn , n = 1, 2, se calculeaz cu formulele
+ T0
2
an =
s (t ) cos n 0 t
T0
+T
0
2
bn =
s
(t ) sin n 0 t
T0
Frecventa unghiular (pulsatia) care apare n expresiile coeficentilor si n seria
Fourier este legat de perioad prin relatia 0 = 2/T0.
Fie acum un semnal periodic de form rectangular
121
dezvoltarea Fourier sunt toti nuli; coeficientii termenilor n sinus sunt nenuli,
dar numai pentru indicii impari si au valorile 4/(n) = 4/[(2k 1)], 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
% 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
122
Lucrarea 10
123
124
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)
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
cos(100 t )
s (t ) = s (t + nT ) =
125
T T
t ,
4 4
,
T 3T
t ,
4 4
2
T
3T
4
2
T
T
4
T
4
0 , 005
0 , 005
0 , 005
0 , 005
= 50
=
cos[100(k + 1) t ]dt + 50
sin[100( k + 1) t ]
2( k + 1)
0 , 005
+
0 , 005
cos[100(k 1) t ]dt =
sin[100( k 1)t ]
2( k 1)
0 , 005
=
0 , 005
sin[(k + 1) / 2] sin[( k 1) / 2]
+
(k + 1)
( k 1)
sin
2
2
S ( ) = Ae j t dt = A
2
2
Folosind acest rezultat si propriettile transformrii Fourier se cere scrierea
transformatelor Fourier ale urmtoarelor semnale aperiodice:
a. Acelasi semnal rectangular ntrziat cu timpul .
126
sin
j
2
e j . Asadar, transformata cerut este S ( ) = A e
2
t [ , 0)
b. Semnalul s (t ) = 1
0
t [0, )
t R [ , )
sin
sin
sin
j
j
2 + (+ 1) e 2
2 = 2 j sin
2
S ( ) = ( 1) e 2
2
2
2
2
1
c. Semnalul s (t ) = 2
0
t [ 2 , ) [ ,2 )
t [ , )
t R [ 2 ,2 )
d. Semnalul s(t ) =
sin 2
sin
+ 2
2
t [ 1,1)
(functia cort)
t R [ 1,1)
sin
2
2 1 =
2
2
2
sin
127
1
T
T
2
T
2
A
T
T
2
A2
A2 exp( j ) exp( j ) A2
2
=
exp[ j (2t + )] T =
=
sin
2 j T
T
2j
2
2
si este o functie periodic de aceeasi perioad T.
Problema 92.
S se calculeze functia de autocorelatie pentru semnalul
s (t ) = A exp( j t )
A 2 f ( A) dA =
A 2 1dA =
A3
3
=
0
1
3
Problema 93.
Se d semnalul
s (t ) = A cos t + B sin t
128
f ( ) =
1
T
T
2
( A cos t +
T
2
T
2
T
2
1 2
1
A cos t cos (t + )dt + B 2 sin t sin (t + )dt +
T
T
T
T
T
2
1
AB [sin t cos (t + ) + cos t sin (t + )]dt etc.
T
T
e ja + e ja
e ja e ja
, sin a =
2
2j
(k )
( ) =
(k )
(t ) s ( k ) (t + ) dt =
min(T ,T )
(k )
[ A
][
+ Bt + C ( k )t 2 A( k ) + B (t + ) + C ( k ) (t + ) 2 dt
max( 0 , )
1
x3
x
f
(
x
)
dx
=
x
dx
=
2
6
1
2
1
, 0 (deoarece media variabilei A este
3
129
particular 0 dac ele sunt independente), B2 (ca media unei constante, care este
egal totdeauna cu acea constant), 0 si, din nou, 1/3.
130