Sunteți pe pagina 1din 10

Capitolul 5

Coduri grup - coduri Hamming


5.1 Breviar teoretic
Dac n capitolul precedent s-a pus problema codrii surselor pentru eficientiezarea unei transmisiuni ce se presupunea a nu fi perturbat de erori, de aceast dat ne adresm unei transmisiuni n condiii de zgomot, cnd mesajul transmis este modificat de erori. Cerina este s se genereze coduri capabile s detecteze i corecteze erorile aprute pe parcurs. Operaii cu elemente ale mulimii {0, 1} Simbolurile ce intr n discuie nu pot lua dect valori de 0 sau 1. Operaiile obinuite n acest caz se desfoar conform tabelelor: + 0 1 0 0 1 1 1 0 Tabela 5.1: Adunarea elementelor mulimii {0, 1}. 0 1 0 0 0 1 0 1 Tabela 5.2: nmulirea elementelor mulimii {0, 1}. Distana Hamming Distana Hamming ntre dou cuvinte este egal cu numrul poziiilor n care cele dou cuvinte difer. De exemplu: distana Hamming ntre 0010101 i 1010101 este 1 ntruct difer doar simbolul de pe prima poziie. distana Hamming ntre 0010101 i 0000000 este 3 ntruct difer simbolurile de pe poziile 3, 5 si 7. Erori. Detecie i corecie Dac v este un cuvnt (vector de simboluri) de cod valid, cuvnt care este transmis pe un canal cu perturbaii, iar este vectorul perturbator, atunci v_ = v + este cuvntul recepionat. Dac perturbarea a fost cu o singur eroare, atunci cuvntul eroare va avea un singur 1, pe poziia modificat i n rest 0. Distana Hamming ntre cuvntul transmis i cuvntul recepionat este 1 (i este egal cu numrul erorilor introduse. Dac toate combinaiile posibile cu k bii sunt considerate cuvinte, atunci distant minim ntre cuvinte este 1. n acest caz cnd toate combinaiile posibile ale simbolurilor de informaie sunt cuvinte de cod, iar n timpul transmisiunii apare o eroare atunci cuvntul recepionat va fi tot un cuvnt cu sens dei este greit. De aceea dac se dorete detecia erorilor cuvintele de cod trebuie spaiate (crescut distant ntre ele). Acest lucru se realizeaz prin adugarea simbolurilor de control. Acestea sunt numr de m, iar lungimea unui cuvnt de cod este: n = k + m. Simbolurile de control vor fi combinaii ale simbolurilor de informaie care vor fi transmise astfel de mai multe ori, crescndu-se redundana. Pentru detecie a ed erori, distana minim ntre dou cuvinte de cod trebuie s fie dmin =ed + 1; n acest mod, orice cuvnt cu sens, ce ulterior va fi eronat, va fi plasat la o distan maxim ed i va conduce la un cuvnt fr sens. Pentru corecie distana trebuie mrit. Dac se dorete un cod cabapil s corecteze ec erori atunci distana minim trebuie s fie dmin = 2ec +1; n acest fel, fiind dat un cuvnt fr sens, se poate identifica i cuvntul cu sens din care a provenit. Identificarea erorii se face cu ajutorul simbolurilor de control. Dac un cod este capabil s corecteze 1 eroare, aceasta poate fi pe oricare din cele n poziii ale cuvntului de cod. Pentru 2 erori, acestea pot fi n orice combinaie de n luate cte 2. Generaliznd, dac sunt ec erori atunci cazurile posibile sunt

_ec Avnd m simboluri de control numrul cuvintelor construibile cu acestea sunt 2m. Dac reinem o poziie pentru cuvntul corect iar restul sunt folosite pentru identificarea erorilor atunci putem scrie relaia cunoscut ca marginea Hamming: 2m 1 _ec
i=1 Cin . i=1

Cin(5.1) Codarea Codarea presupune construcia cuvntului de cod pornind de la simbolurile de Informaie. Exist dou variante de codare: 1. Codarea v = iG, unde v este vectorul asociat cuvntului de cod, i este vectorul asociat cuvntului de informaie, iar G este matricea generatoare. Aceasta are k linii i n coloane. Dac g1, g2, . . . gk sunt liniile matricei G, iar i1, i2, . . . ik sunt simbolurile de informaie atunci relaia de codare se poate rescrie astfel: v = i1g1 + i2g2 + . . . ikgk (5.2) De aici rezult c cuvintele de cod sunt toate combinaiile liniare ale liniilor matricei generatoare. 2. Codarea HvT = 0, unde H este o matrice de m linii i n coloane ce este denumit matrice de control. Pentru aflarea relaiilor de codare, n acest caz, se vor plasa simboluri de control pe poziiile corespunztoare coloanelor matricei H avnd un singur 1, i se va rezolva sistemul rezultant, avnd drept necunoscute simbolurile de control. Decodarea. Coreca erorilor Decodarea se face pe baza relaiei HvT = 0. Dac v este un cuvnt cu sens (cuvnt nealterat de erori) atunci nmulindul cu cu H se va obine 0. Dac rezultatul este nenul atunci sunt erori. n acest caz, dac circuitul funcioneaz n regim: 1. detecie atunci se va semnala existena unor erori. 2. corecie atunci se vor corecta erorile Pentru corecia erorii se calculeaz sindromul s. Dac cuvntul recepionat este v_ = v + atunci H(v_)T = HvT + HT = 0+HvT = s (5.3) Sindromul s identific eroarea. Dac de exemplu exist o singur eroare, pe poziia 2 atunci sindromul va fi egal cu coloana a 2 a matricei H. Odat identificate poziia erorilor (sau cu alte cuvinte identificat vectorul eroare) corecia se obine adunnd 1 simbolurilor corecpunztoare recepionate. Adic v = v_ + .

5.2 Probleme rezolvate


1. [8] Un cod grup are matricea de control : H =[ ] 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 (a) S se determine numrul de simboluri de informaie i numrul de simboluri de control. S se determine proprietile de corecie / detecie ale acestui cod. Acest cod este perfect? (b) S se calculeze matricea generatoare a codului. (c) S se deduc relaiile de codare. (d) S se realizeze codarea att cu matrice G ct i c matricea H. (e) Cuvntul [11111] este cuvnt de cod?. S se explice funcionare decodorului n cazul

in care se recepioneaz acest cuvnt. Rezolvare: (a) Parametrii codului : se tie c matricea H are m (numrul de simboluri de control) linii i n (lungimea cuvntului de cod) coloane: m = 3, n = 5 = k = 2 Avnd k simboluri de informaie numrul maxim de mesaje care se pot coda cu acest cod sunt: 2k = 4 mesaje ale sursei Numrul de erori corectabile este de dat de marginea Hamming (aceasta este o condiie necesar nu i suficient): 2m 1 _ec
i=1 Cin

Membrul stng este: 2m 1 = 7. Membrul drept este: n cazul unei erori n = 5 < 2m1 n cazul a 2 erori C1n + C2n > 7 = codul e corector de o eroare Un cod corector de ec erori poate detecta ed = 2ec erori.Un cod capabil s corecteze ec erori are distana minim dmin = 2ec + 1 = ed + 1. Codul nu este perfect (nu se obine egalitate n marginea Hamming). Un cod perfect are exact numrul de corectori necesari pentru a detecta orice variant de eroare. (b) Matricea de control a codului este scris n forma canonic: H = [ImQ]. Matricea generatore (n form canonic) se poate obine ca: G = [QtIk].; Q= 1 1 0 1 1 0 = Qt = _ 1 0 1 1 1 0 _ = G = [QtIk] = _ 1 0 1 1 0 1 1 0 0 1 _ (c) Structura unui cuvnt de cod sistematic presupune o separare a biilor de control de cei de informaie. Fcnd convenie c bii de control corespund coloanelor din H care au un singur 1 succesiunea simbolurilor ntr-un cuvnt de cod este: v = [c1c2c3i1i2]. De fapt forma canonic a matricelor de control i generatoare impune un cod sistematic.Relaiile de codare presupun aflarea modului n care se formeaz biii de control din biii de informaie. Vom considera ca punct de pornire relaia HvT = 0

1 0 0 1 1

0 1 0 0 0 0 0 1 1 0 c1 c2 c3 i1 i2 = c1 + i1 + i2 c2 + i2 c3 + i1 = 0 n baza 2 scderea cu x este echivalent cu adunarea cu x. Adic: c1 = i1 + i2 c2 = i2 c3 = i1 Schema codorului este prezentat n figura 5.1; (d) Pentru a calcula cuvintele de cod avem doua variante: s calculm relaiile de codare folosind matricea H sau s calculm cuvintele de cod folosind direct matricea G: v = iG Figura 5.1: Codorul. Schema logic urmareste relaiile de codare. Fiecare simbol este stocat ntr-o celul a unui registru de deplasare; la fiecare tact, o celul comunic valoarea celulei din stnga sa. Dup formarea cuvntului de cod intrrile (bii de infomaie) sunt blocate i coninutul este vrsat la ieire sub forma unui tren de impulsuri. Un cuvnt de infomaie conne dou simboluri: i = _ _ . Matricea generatoare poate scris pe linii G = _ g1 g2 _ . Atunci relaia de codare devine: V = iG = _ _ _ g1 g2 _

= g1 + g2 n acest caz cuvintele de cod sunt: v = g1 + g2 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 Tabela 5.3: Cuvintele de cod.Se poate observa c ponderea minim a unui cuvnt de cod este 3. (e) Cuvntul recepionat este: v_ = [11111] Considerm corectorul: Hv,T = 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 = z= 1 0 0

_= 0
Fiindc corectorul este nenul exist erori. Atunci se poate spune: dac decodorul funcioneaz n regim de corecie este capabil s corecteze o eroare (orice variant de eroare). Eroare este pe poziia 1.Poziia erorii se determin prin identificare coloanei din matricea de control H egal cu corectorul calculat z. Acelai lucru se constat i dac se compara cuvntul eronat cu cuvintele cu sens determinate n tabelul 5.3. n acest caz cuvntul cu sens este v = [01111]. Dac cuvntul recepionat conine dou erori atunci corectorul d informaii greite. S considerm alt exemplu : v = [10110] = [00011] v _ = v + = 10101 Corectorul calculat este: Hv,T = 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 1 = z= 0

0 1 Adic eroare este pe poziia 3 i deci cuvntul cu sens este v=[10001]. Ceea ce nu este adevrat.Un cod corector de o eroare nu poate corecta dou erori dac decodorul funcionez n regim de detecie, fiindc corectorul este nenul nseman c exist erori. n regim de detecie nu se poate spune nimic despre numrul i poziia erorilor. Dac exist mai multe erori dect codul poate detecta, se obin aberaii. De exemplu pentru un cuvnt eroare = [11001] i pentru cuvntul cu sens v = [11001] se obine alt cuvnt cu sens i, deci nu se detecteaz nimic. Adic un cod detector de 2 erori nu poate detecta trei erori. 2. [8] Cele 6 simboluri generate de o surs sunt transmise pe un canal binar cu perturbaii folosind un cod Hamming grup corector de o eroare. (a) S se determine numrul de simboluri de informaie, de control i lungimea cuvintelor de cod. Codul este perfect? (b) S se scrie matricile de control i generatoare a codului? Codul este sistematic? (c) S se scrie cuvintele de cod i s se determine ponderea minim a acestora. (d) S se explice ce se ntmpl dac ntr-un cuvnt recepionat apar dou erori, pe Poziiile 1 si 2. Rezolvare: (a) Cele 6 simboluri pot fi reprezentate folosin k bii de informaie: 2k 6 = k = 3 Marginea Hamming pentru un cod corector de ec = 1 erori este: 2m 1 n = m + k = m + 3 2m 4 m = m = 3 n= k+ m= 6 Dat fiind ca nu i atinge margine (nu avem egalitate) codul nu e perfect. (b) Matricea de control a unui cod Hamming se obine codnd pe fiecare coloana indicele ei n baza 2: H= _ h1 h2 h3 h4 h5 h6 _ 0 0 0 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 Dac facem convenia c plasm simbolurile de control pe poziiile corespunztoare colanele matricei de control care conin un singur unu, cuvntul de cod este de forma: v = [c1c2i1c3i2i3] n acest caz, codul nu e sistematic. HvT = 0 0 0 0 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0

c1 c2 i1 c3 i2 i3 = c3 + i2 + i3 c2 + i1 + i3 c1 + i1 + i2 = 0 c1 = i1 + i2 c2 = i1 + i3 c3 = i2 + i2 Se poate arta foarte uor c pe linii G are cuvinte de cod. v = iG = _ i1 i2 i3 _ g1 g2 g3 = i1g1 + i2g2 + i3g3 i1 = 0; i2 = 0; i3 = 1 = v = g3 = [010101] i1 = 0; i2 = 1; i3 = 0 = v = g2 = [100110] i1 = 1; i2 = 0; i3 = 0 = v = g1 = [111000] G= 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 Alte cuvinte de cod sunt: i1 = 0, i2 = 0, i3 = 0 = v = [000000] i1 = 0, i2 = 0, i3 = 0 = v = g1 + g2 + g3 = [101011] i1 = 1, i2 = 1, i3 = 0 = v = g1 + g2 = [110011]

i1 = 0, i2 = 1, i3 = 1 = v = g2 + g3 = [011110] i1 = 1, i2 = 0, i3 = 1 = v = g1 + g3 = [101101] (c) = [110000] HT = 0 1 1 _= 0 Dat fiind faptul ca corectorul este nenul, se poate spune c: Dac funcionarea este n regim de corectie se hotrte c eroarea este pe poziia 3. Greeala se datoreaz apariiei a dou erori cnd codul poate corecta numai una. Pentru a corecta dou erori este necesar ca suma a oricare doua coloane a lui H s aib rezultat diferit. Aici:h1 + h2 = h3. Dac corectorul obinut era z = [111]T , care este diferit de orice coloana a lui H, nseamn c au fost dou erori: fie pe poziiile 1 i 6, fie pe 2 i 5. Acest fenomen se datoreaz faptului c codul nu e perfect. Dac funcionarea este n regim de detecie se depisteaz apariia unor erori.

5.3 Probleme propuse


1. [7] Se consider o surs de informaie avnd un alfabet de dimensiune Q = 15 simboluri echiprobabile. (a) S se determine parametrii k,m, n ai unui cod bloc Hamming corector de erori singulare. (b) S se scrie matricea H de control a codului. (c) S se precizeze structura cuvntului de cod. (d) Codul este sistematic? De ce? (e) S se efectueze codarea utiliznd matricea H de control a codului. (f) S se scrie matricea G generatoare a codului. (g) S se verifice prin calcul direct relaia de ortogonalitate ntre matricile H si G. (h) S se efectueze codarea utiliznd matricea G generatoare a codului. (i) S se deseneze schema codorului i s se explice funcionarea sa. (j) S se scrie toate cuvintele de cod. (k) S se efectueze codarea Hamming sistematic extins cu matricea Hext a vectorului Informaional avnd nenule doar primul i ultimul simbol. (l) S se scrie matricea generatoare de cod sistematic extins Gext. (m) Se consider cuvntul de cod extins avnd simbolul de control a paritii eronat. S se scrie vectorul eroare extins. S se calculeze vectorul corector (extins). (n) S se scrie vectorul eroare pentru eroare dubl, de simboluri informaionale consecutive n partea central a zonei informaionale a cuvntului de cod sistematic. (o) S se scrie corectorul extins pentru eroarea dubl de mai sus i s se explice utilizarea sa. 2. [7] Un numr de 20 simboluri se transmit pe un canal cu perturbaii utiliznd cod Hamming grup corector de o eroare. (a) S se determine numrul simbolurilor de informaie k, al celor de control m i lungimea n a fiecrui cuvnt de cod. (b) S se scrie matricea de control a codului H.

(c) S se scrie formele canonice ale matricei de control. (d) S se scrie formele canonice ale matricei generatoare. (e) S se deduc matricea generatoare. (f) S se scrie toate cuvintele de cod. (g) S se stabileasc expresia corectorului pentru cazul c se eroneaz poziia 4 din cuvntul de cod. (h) S se explice ce se ntmpl dac ntr-un cuvnt de cod se eroneaz poziiile 2 i 7. (i) S se stabileasc schema codorului. 3. [8] Se d matricea de control a unui cod grup: H= 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 (a) S se determine numrul de simboluri de control, numrul de simboluri de informaie, lungimea cuvintelor de cod, numrul de simboluri ce pot fi transmise cu acest cod i numrul de erori ce pot fi corectate. Codul este perfect? Codul este sistematic? (b) S se precizeze structura cuvintelor de cod i s se scrie ecuaiile de codare. (c) S se determine matricea generatoare a codului. (d) S se calculeze corectorul i s se explice decizia luat la decodare dac se recepioneaz un cuvnt eronat pe poziiile 2 si 3? 4. [4] Fie matricea de control H= 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 (a) Artai c, prin transformri elementare, aceast matrice poate fi adus la forma H_ = [I3Q]. (b) Artai c respectivele transformri pot fi astfel alese nct proprietile de detecie i corecie a erorilor s rmn aceleai. (c) S se determine simbolurile de control n funcie de cele de informaie att pentru matricea H ct i pentru matricea H_. 5. [4] Considernd matricea H= 0 0 0 1 1 1 1 0 1 1 0 0 1 1

1 0 1 0 1 0 1 s se determine matricea generatoare G = [PIk] i s se realizeze codarea dup aceasta. 6. [4] Se consider un cod cu n = 6 i k = 3 a crui matrice de control este: H= 1 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 (a) Codul este sau nu perfect? (b) Ce decizie de ia pentru un corector cu valoarea zt = [010]? Dar pentru zt = [111]

Bibliografie
[1] Mihai Ciuc. Note de seminar. [2] A. T. Murgan, I. Spnu, I. Gavt, I. Sztojanov, V. E. Neagoe, si A. Vlad. Teoria Transmisiunii Informatei - probleme. Editura Didactic i Pedagogic, Bucureti, Romnia, 1983. [3] Alexandru Sptaru. Teoria Transmisiunii Informattiei. Editura Didactic i Pedagogic,Bucureti, Romnia, 1983. [4] Alexandru Sptaru. Fondements de la theorie de la transmisssion de lnformation. Presses polytechniques romandes, Lausanne, Elveia, 1987. [5] Rodica Stoian. Note de seminar. [6] Dan Alexandru Stoichescu. Note de seminar. [7] Eugen Vasile. Note de seminar. [8] Constantin Vertan. Note de seminar. 67

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