Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf ·...

178
Gheorghe M.Panaitescu Universitatea Petrol-Gaze Ploieşti Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori (o compilaţie) Introducere Lucrarea aceasta se adresează tuturor celor interesaţi de transmiterea informatiei prin medii afectate de perturbaţii. Perturbatiile pot denatura informatia de la niveluri acceptabile până la grave desfigurări. Detectarea si/sau corectarea erorilor, cuantificarea diferenţelor între informaţia transmisă si cea recepţionată, recuperarea într-un fel sau altul a informatiei corecte sunt de mare importanţă în practica transmiterii si stocării informatiei. Ceea ce urmează reprezintă numai părţi, capitole – cum am şi scris în supratitlul lucrării – din ştiinţa complexă a codării si transmiterii informatiei, în particular codurile protectoare la erori în variantele algebrică si convolutională. S-a inclus aici si un aparat matematic bogat, situat în limite poate uşor depăşite faţă de strictul necesar pentru întelegerea corectă si completă a subiectelor de strictă specialitate. Autorul are în pregătire încă un capitol despre codare, acea codare care ascunde conţinutul informaţional, cunoscută uzual sub numele de criptare. Acel capitol va fi pus sub acelasi titlu, în acelasi loc, într-o nouă versiune a lucrării prezente. Lucrarea nu are pretenţii de originalitate. De pildă, linia directoare urmată în capitolul de coduri algebrice este aceea a cursului EE 387 predat de profesorul John Gill la Stanford University în semestrul de toamnă al anului 2010. Capitolul despre codurile convolutionale este o adaptare a lucrării editate de Charan Langton si postate la http://www.complextoreal.com în 1999. Acolo unde la lectura postărilor consultate pe Internet au apărut dificultăţi de întelegere sau acolo unde formulările originare au părut inadecvate, autorul a recurs la alte lecturi lămuritoare. Lucrarea poate fi apropiată de o mereu mobilă perfecţiune prin contribuţia utilizatorilor textelor care urmează. Autorul invită cititorul să nu ezite a trimite sugestii de ameliorare la [email protected] . 10 mai 2013 1

Transcript of Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf ·...

Page 1: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Gheorghe M.PanaitescuUniversitatea Petrol-Gaze Ploieşti

Capitole de

Transmiterea si codarea informaţieiCoduri protectoare la erori

(o compilaţie)

Introducere

Lucrarea aceasta se adresează tuturor celor interesaţi de transmitereainformatiei prin medii afectate de perturbaţii. Perturbatiile pot denaturainformatia de la niveluri acceptabile până la grave desfigurări. Detectarea si/saucorectarea erorilor, cuantificarea diferenţelor între informaţia transmisă si cearecepţionată, recuperarea într-un fel sau altul a informatiei corecte sunt de mareimportanţă în practica transmiterii si stocării informatiei.Ceea ce urmează reprezintă numai părţi, capitole – cum am şi scris în supratitlullucrării – din ştiinţa complexă a codării si transmiterii informatiei, în particularcodurile protectoare la erori în variantele algebrică si convolutională. S-a inclusaici si un aparat matematic bogat, situat în limite poate uşor depăşite faţă destrictul necesar pentru întelegerea corectă si completă a subiectelor de strictăspecialitate.Autorul are în pregătire încă un capitol despre codare, acea codare care ascundeconţinutul informaţional, cunoscută uzual sub numele de criptare. Acel capitolva fi pus sub acelasi titlu, în acelasi loc, într-o nouă versiune a lucrării prezente.Lucrarea nu are pretenţii de originalitate. De pildă, linia directoare urmată încapitolul de coduri algebrice este aceea a cursului EE 387 predat de profesorulJohn Gill la Stanford University în semestrul de toamnă al anului 2010.Capitolul despre codurile convolutionale este o adaptare a lucrării editate deCharan Langton si postate la http://www.complextoreal.com în 1999. Acolo unde la lectura postărilor consultate pe Internet au apărut dificultăţi deîntelegere sau acolo unde formulările originare au părut inadecvate, autorul arecurs la alte lecturi lămuritoare.Lucrarea poate fi apropiată de o mereu mobilă perfecţiune prin contribuţiautilizatorilor textelor care urmează. Autorul invită cititorul să nu ezite a trimitesugestii de ameliorare la [email protected].

10 mai 2013

1

Page 2: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

CUPRINS (selectie de titluri)

Tipuri de erori: caracteristicile perturbaţiilor (zgomotului) p.3CODURI BLOC 7Capacitatea de a detecta/corecta erori 10Coduri produs simple 13Coduri Hamming 14Coduri produs generale 18Coduri non-binare corectoare de o singură eroare 19Elemente de algebră pentru coduri protectoare la erori 27Coduri bloc liniare si coduri grup 49Coduri liniare modificate 60Coduri ciclice 76Coduri BCH binare corectoare a două erori 86Erori incidentale (burst) 90Coduri Fire: definiţie 95Coduri intercalate 97Definitia codurilor BCH 110Coduri Reed-Solomon 111Algoritmi de decodare pentru codurile BCH 120Corectarea ştergerilor 142CODURI CONVOLUŢIONALE 151Decodarea secvenţială 163Decodarea maximum verosimilă (decodarea Viterbi) 165

2

Page 3: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

GENERALITĂŢI

Multe sisteme de comunicaţie au structura ilustrată în schema bloc din figuraalăturată.

Blocurile functionale din această schemă destul de generală sunt încadrate douăcâte două în dreptunghiuri cu laturile din segmente discontinue. Se evidentiazăprin aceasta complementaritatea lor.Lucrarea de faţă se ocupă numai de o parte din componentele reprezentate înfigură. Discutia de aici se va limita la proiectarea si analiza codurilor detectoaresi corectoare de erori, la tehnicile algebrice si probabilistice de decodare acodurilor bloc si a codurilor convolutionale.În alte capitole au fost sau vor fi dezbătute si aspecte legate de codarea surselorde informatie, de criptarea informatiei cu chei private sau chei publice, la felproblemele specifice modulării si demodulării.În această parte se studiază modalitătile de obtinere a comunicatiilor fiabile, cufiabilitate ameliorată prin utilizaarea unor coduri cu redundanţe rezonabile si cuo complexitate a decodării acceptabilă. Se întelege de aici că la transmitereaprin canal a simbolurilor de informatie se adaugă simboluri suplimentare careconstituie o redundanţă controlată. Această redundanţă diminuă rata datelorbrute, dar dacă este utilizată la corectarea erorilor reduce rata erorilor.Efectul net este de creştere a ratei la care sunt livrate date fiabile.

Tipuri de erori: caracteristicile perturbaţiilor (zgomotului)

Din schema generală a comunicatiilor se retine pentru moment numai portiuneacanal, în care s-a inclus si partea de modulare/demodulare. Se disting cuuşurintă informaţia-mesaj (m1, m2, …), rezultatul operatiei de codare (x1, x2, …),

Sursă Codor sursă

CriptareCodor canal

Modulator

Canal

Can

al

Demodu-lator

Decodorcanal

DecriptareDecodor

sursăReceptor

Zgomot

3

Page 4: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

efectul agomotului (n1, n2, …) care suprapus peste mesajul codat duce la iesireadin canal (y1, y2, …) si rezultatul decodării ( ,...ˆ,ˆ 21 mm ).

Se defineste ca rata brută a erorilor fracţia din simboluri receptionată incorect:

∑=

∞→ ≠n

iiin yx

n 1

)Pr(1

lim

Definiţia presupune că iesirea demodulatorului este alcătuită din date hard.Caz special important: un canal i.i.d. – independent identically distributed –ceea ce înseamnă că erorile sunt independente si distribuite identic. Pentru unasemenea canal rata erorilor brute este exact Pr(xi ≠ yi).Uzual se consideră că zgomotul, perturbatiile este/sunt aditiv(e). Zgomotul esteastfel diferenţa dintre simbolurile recepţionate si cele transmise:

ni = yi – xi ⇔ yi = xi + ni

Zgomotele canalelor pot fi clasificate (şi) după dependenţa între evenimenteleperturbatoare. Zgomotele pot fi:1. aleatoare, adică simbolurile sunt independente, poate i.i.d. sau Bernoulli.

Orice eveniment perturbator afectează simboluri izolate.2. incidentale (burst), ceea ce înseamnă că un eveniment perturbator produce o

secventă contiguă de simboluri nesigure. Printre cauzele zgomotelorincidentale se numără persistenţa mai îndelungată (fată de durata unuisimbol) a unui eveniment perturbator sau dimensiunea fizică, intensitateamai mare a perturbatiei (din nou fată de cea normală a unui simbol).Zgomotele incidentale pot apărea si prin generare de erori datoratedemodulatorului.

3. catastrofale, când canalul devine inutilizabil pentru un interval de timpcomparabil cu sau mai lung decât un pachet de date. Exemplu: coliziunileethernet. Este necesară retransmiterea, probabil mult mai târziu, deoarecepachetele sunt corupte/afectate fără speranţă de recuperare imediată prinmetodele obisnuite.

O clasificare a controlului erorilor

Controlul erorilor poate fi clasificat în mai multe moduri.• După tipul erorilor sub aspectul grupării – aleatoare, incidentale (burst),

catastrofale.• După iesirea modulatorului care poate fi digitală (hard) sau analogică (soft).• După tipul protecţiei la erori care poate fi prin detectare sau prin corectare.• După tipul codului care poate fi bloc sau convoluţional.

y1, y

2, …

Canal

Zgomot

n1, n

2, …

x1, x

2, …

Codor canalm

1, m

2, …

Decodor,...ˆ,ˆ

21 mm

4

Page 5: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• După tipul decodorului care poate fi algebric sau probabilistic.Primele două clasificări sunt utilizate la alegerea schemei de codare potrivităultimelor trei criterii de clasificare.

Tipuri de protejare la erori

Detectarea erorilor. Scopul este acela de a evita utilizarea de date false,eronate. Datele pierdute pot însemna o situatie nefericită; datele gresite pot ducela un dezastru. Solutia: în mesaje, pachete, frames, sectoare de memorie suntincluse sume de control (checksums). Cu mare probabilitate sumele acestea nusunt valide dacă vreo parte a continutului este alterată.Corectarea erorilor la destinatie. În limba engleză FEC – forward errorcorrection sau, despre coduri, ECC – error correcting codes. Redundanţele dinmesajul codat sunt utilizate pentru estimarea corectă din datele primite amesajului realmente expediat. Cea mai bună estimare este de obicei mesajulcel-mai-apropiat. Estimarea optimă o reprezintă mesajul cel mai probabil înraport cu mesajul receptionat (MAP – Maximum A Posteriori Probability).Corectarea erorilor este mai complexă decât detectarea lor. Un cod corector deerori poate fi utilizat si pentru detectare pe schema: se refuză orice mesaj careare nevoie de corectie.

Tipuri de coduri protectoare la erori

Coduri bloc. Datele sunt grupate în blocuri care sunt de fapt vectori de k digitiinformaţionali. Aceste blocuri sunt codate în cuvinte de cod de n digiti fiecare(n ≥ k) prin adăugarea a p = n – k digiti redundanţi de verificare. Nu există nicio memorie de la un bloc la altul. Codarea fiecărui bloc este independentă deblocurile anterioare sau de cele care urmează.

O codare în care digitii de informatie apar nemodificati în cuvintele de cod senumeste codare sistematică, iar codul rezultat, sistematic.Coduri convolutionale. Schemele de codare sunt invariante în timp. Un cuvântde cod de lungime dată depinde nu numai de digitii de informatie curenţi ci şide alte blocuri informaţionale precedente.

Cuvânt mesaj

Codor

Cuvânt de cod

Cuvânt mesaj

Cuvânt mesaj

Codor(sistematic)

Protectie

5

Page 6: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Există un ordin al memoriei. Există o restrictie de lungime exprimată canumărul de biti pe care codorul/decodorul îi ia în considerare la codare şi ladecodare. În figura alăturată este dat un codor convolutional.

Acest codor generează un cod cu rata de 1/2, fiecare din cei k = 1 biti aplicati laintrarea codorului produce n = 2 biti la iesire.

Aplicatii ale controlului erorilor

• Sondele interplanetare (zgomot gaussian, decodare la solul terestru).• Subsistemele de memorie (SIMM-uri – Single In-line Memory Module – de

9 biti pentru detectare, DIMM-uri – Dual In-line Memory Module – de 72de biti pentru corectare).

• Magistralele (buses) din calculatoare (viteze mari, lungime de bloc scurtă).În unele sisteme de calcul posibilitatea erorilor este ignorată.

• Modemurile V.32/V.90 utilizează codurile pe spalier (trellis). ModemurileV.42 utilizează detecţia erorilor cu repetarea transmiterii.

• Reţelele datacomm (Ethernet, FDDI – fiber distributed data interface –,WAN, WiFi, Bluetooth) fac uz de obicei numai de detecţia erorilor.

• Discuri si benzi magnetice (detectie soft pentru erori, corectie pentru erorileincidentale).

• CD-uri, DAT-uri, minidiscuri, DVD-uri. Sunetul digital necesită codarecorectoare de erori.

• Televiziunea prin satelit.

Scheme de codare

Exemplele de mai sus arată o gamă foarte diversă de rate ale datelor, dedimensiuni spatiale, de rate ale erorilor.• Nici o schemă de protejare la erori nu lucrează la fel de eficient în indiferent

ce aplicatie.• Unele aplicatii utilizează tehnici de codare multiple. O combinatie obisnuită

foloseste un cod convolutional interior1 si un cod Reed-Solomon exterior.• Alegerea unei scheme de codare potrivită poate fi adesea dificilă deoarece

caracteristicile erorilor nu sunt cunoscute. Solutia comună: se recurge la1 Calificativele interior si exterior aplicate codurilor se referă la pozitia logică fată deutilizator/sursă. Interior înseamnă mai apropiat de utilizator/sursă, exterior înseamnă maidepărtat de utilizator/sursă.

ui - 1

ui

v1

v2

u

6

Page 7: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

metodele care corectează categorii multiple de erori. Dezavantaj: solutiaaleasă poate să nu fie optimă pentru o împrejurare particulară.

Multimi alfabetice

Definitie: Un alfabet este o multime discretă (de obicei finită) de simboluri.Exemple:• B = 0, 1 este un alfabet binar.• T = –1, 0, +1 este un alfabet ternar. Acest alfabet ternar este utilizat de

modulatia cu semne alternative; entitătile binare succesive sunt reprezentateprin ±1 în alternanţă.

• X = 00, 01, …, FF este alfabetul simbolurilor pe 8 biti. Este utilizat pentruCD-uri, pentru DVD-uri si pentru cele mai multe dintre hard discuri.

Un simbol al alfabetului de canal poate fi:• O unitate indivizibilă transmisă, cum ar fi un punct dintr-o varietate de

semnale sau• o secvenţă de simboluri modulate codate printr-un simbol al unui alfabet de

codare.Multimile alfabetice întâlnite/utilizate în acest capitol au uzual 2m simboluri, cum întreg pozitiv.

Coduri bloc: definitii

Alfabetul canalului este multimea de simboluri de iesire ale unui codor de canal– aceeasi cu multimea de simboluri care intră în canal, în modulator dacă acestaexistă.Alfabetul cuvintelor receptionate (denumite uneori în englezeste senseword)este multimea de simboluri de iesire din canal sau din demodulator, totuna cuintrarea decodorului de canal. Alfabetul cuvintelor receptionate poate fi maicuprinzător decât alfabetul canalului, de pildă când simbolurile primitereprezintă informatie soft. Exemple:• Canalele binare cu stergere au alfabetul de intrare 0, 1 si alfabetul de

iesire 0, ?, 1.• Unele circuite de citire ale discurilor hard (iesirea din canal) cuantizează

semnalul de intrare la 6 biti; alfabetul canalului are în acest caz 94 desimboluri.

Definitie: Un cod bloc de lungime n peste alfabetul X este o multime nevidă desecvenţe de n simboluri din X.

C = (c11, …, c1n), …, (cM1, …, cMn)Secventele de n simboluri ale codului se numesc cuvinte de cod.

Rata codurilor bloc

7

Page 8: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Fie un alfabet al canalului alcătuit din Q simboluri. Rata unui cod bloc culungimea blocului n si M cuvinte se defineste ca

R = (1/n)logQMTipic, cuvintele de cod de lungime n sunt generate prin codarea a k simboluriinformationale (simboluri-date sau simboluri-mesaj). Se utilizează totdeauna ofunctie de codare inversabilă.În cazul acesta, numărul de cuvinte de cod este M = Qk si rata codului este R =(1/n)logQQk = (1/n)k = k/n.Un cod cu lungimea blocului n si rata k/n este cunoscut ca un cod (n, k). Rataeste o fractie adimensională (biti/biti), este fractia din simbolurile transmiseprin canal, care poartă informatie.

Codare sistematică

Capacitatea de protectie la erori a unui cod bloc depinde numai de mulţimeacuvintelor de cod, nu de modul cum sunt aplicate mesajele sursei pe cuvintelede cod.Evident, în aplicatiile practice este necesar un codor (vezi o figură de mai sus).Un codor este numit sistematic dacă el copiază cele k simboluri ale mesajuluifără vreo modificare, de obicei în pozitii consecutive ale cuvâtului de cod, cazîn care cuvintele de cod pot fi de forma

c = [m | p] sau c = [p | m]în care m este vectorul celor k simboluri ale mesajului, iar p este vectorul celorn – k simboluri redundante, simboluri de protectie/verificare.Aproape toate codurile fac uz de codoare sistematice. O exceptie o constituiecodurile Reed-Muller.

Coduri bloc: exemple foarte simple

• C = 00010110 = SYNLungimea blocului n = 8, M = 1, rata R = (1/8)log21 = 0. Codurile cu rata 0sunt denumite coduri inutile. Acest cod ar putea fi utilizat pentru analizaratei erorilor sau pentru sincronizarea octeţilor.

• C = 00, 01, 10, 11Lungimea blocului n = 2, M = 4, rata R = (1/2)log24 = 1. Acest cod nu areredundanţă; el nu poate nici să corecteze, nici să detecteze erori.

• C = 001, 010, 100Lungimea blocului n = 3, M = 3, rata R = (1/3)log23 = 0,528. Acest cod arputea fi utilizat pentru un canal care face bitii “să cadă” (se poate să apară 1→ 0 dar nu 0 → 1), deoarece orice 1 căzut poate fi detectat. Codul C’ =011, 101, 110 este încă mai bun pentru acest gen de canal.

Coduri bloc: exemple mai interesante

8

Page 9: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• Codul pentru paritatea SIMM-urilor are rata 8/9 si lungimea blocului 9 sau36. El poate detecta o eroare pe orice secventă de 8 biti (pe un byte sauoctet).

• Codurile corectoare de erori pentru DIMM-uri au lungimea blocului 72 sirata 8/9. Ele pot corecta o eroare si pot detecta două erori în orice secvenţăde 72 de biti.

• Dimensiunea pachetelor Ethernet se situează între 64 si 1518 octeţi (bytes)adică între 512 si 12144 biţi. Suma de control utilizată pentru protejarea laerori este reprezentată pe numai 32 de biti, ceea ce face ca rata codului săfie foarte înaltă pentru pachete mari.

• Numărul de secvente binare de lungime 5 si de pondere 2 sau 3 (aproapeechilibrate în componenta lor continuă) este

C52 + C5

3 = 10 + 10 = 20 > 16 = 24

• Codul 4B5B TAXI (Transparent Asynchronous Transmitter/ReceiverInterface) pentru FDDI (Fiber Distributed Data Interface) utilizează 16 dinaceste seturi de 5 pentru a purta 4 biti de informatie. Seturile de 5 biti carefac parte din cod sunt, în sistemul hexadecimal, următoarele:

1E 09 14 15 0A 0B 0E 0F 12 13 16 17 1A 1B 1C 1DCelelalte patru seturi sunt utilizate pentru control.

Distanţa Hamming

Distanţa Hamming între două cuvinte fiecare de n simboluri este numărul decomponente prin care acele cuvinte diferă:

dH(x, y) = ∑=

n

iiiH yxd

1

),( cu dH(xi, yi) =

=≠

ii

ii

yxyx

dacã0dacã1

Distanţa Hamming satisface axiomele cunoscute asociate oricărei distanţe:• d(x, y) ≥ 0, cu egalitate dacă si numai dacă x = y (nenegativitate)• d(x, y) = d(y, x) (simetrie)• d(x, y) ≤ d(x, z) + d(z, y) (inegalitatea triunghiului).Distanţa Hamming este o măsură grosieră, pesimistă a diferenţei dintre douăcuvinte.Alte distanţe utile care apar în codarea orientată pe controlul erorilor:• Distanta Lee, distanţa pe un cerc, aplicabilă în codarea cu manipulare în

fază.• Distanta euclidiană utilizată pentru cuvinte recepţionate în Rn.

Distanţa minimă

Distanţa (Hamming) minimă d* a unui cod bloc este distanţa între două cuvintede cod diferite cele mai apropiate:

d* = min dH(c1, c2): pentru c1, c2 cuvinte ale codului si c1 ≠ c2

9

Page 10: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Câteva proprietăti evidente ale distantei minime pentru un cod cu lungimeablocului n:• d* > 1 deoarece distanta Hamming între două cuvinte distincte este un întreg

pozitiv.• d* ≤ n dacă un cod are cel putin două cuvinte• d* = n + 1 sau d* = ∞ pentru codul inutil, codul cu un singur cuvânt de cod

(prin conventie).• d*(C1) ≥ d*(C2) dacă C1 ⊆ C2 – codurile mai restrânse au distanţa minimă

mai mare sau cel puţin egală.Distanta minimă a unui cod determină atât capacitatea lui de a detecta erori câtsi capacitatea lui de a corecta erori.

Capacitatea de a detecta erori

Fie un cod bloc utilizat exclusiv pentru a detecta erori.• Dacă setul de n simboluri recepţionat nu este un cuvânt al codului, a apărut

o eroare detectabilă.• Dacă setul de n simboluri recepţionat este un cuvânt al codului dar nu este

cuvântul de cod transmis, a apărut o eroare care nu poate fi detectată.Fie c cuvântul transmis si fie r cuvântul recepţionat. Dacă d(c, r) < d*, atuncicuvântul recepţionat nu poate fi un cuvânt de cod incorect, incorect daraparţinând codului. Altminteri c si r ar fi două cuvinte de cod între care distantaar fi mai mică decât distanta minimă ceea ce este absurd.Fie acum c1 si c2 două cuvinte de cod diferite, dintre cele mai apropiate unul dealtul. Dacă se transmite c1 si se receptionează c2 atunci apare o eroare depondere d* care nu poate fi detectată.Teoremă: Capacitatea de detectare a erorilor garantată este e = d* – 1.Capacitatea de detectare a erorilor este o măsură a celui mai rău caz pentru cod.Codurile proiectate pentru detectarea erorilor pot detecta marea majoritate aerorilor când sunt incorecte mai mult de d* simboluri.

Capacitatea de a corecta erori

Despre un cod bloc se poate gândi ca despre o multime de M vectori într-unspaţiu n-dimensional. Spaţiul acesta cu distanta Hamming – destul de diferită dedistanţa euclidiană, dar totusi o distanţă – devine un spaţiu metric. Alături dematematica implicată, intuiţia geometric-vizuală poate fi utilă.Procedura de decodare optimă este uzual aceea a căutării vecinului-cel-mai-apropiat. Cuvântul receptionat r este decodat la cel mai apropiat cuvânt de codc :

c = argmindH(c, r) : c este cuvânt de codRegiunile de decodare în spatiul metric euclidian R2 se pot obtine prin asa-numitele descompuneri Voronoi. Dacă multimea în raport cu care se facedescompunerea este o mulţime finită de puncte, regiunile Voronoi sunt

10

Page 11: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

delimitate de mediatoarele segmentelor de dreaptă care conectează perechile depuncte care în particular pot fi cuvinte ale codului. Apartenenţa la una sau laalta din regiuni implică distanta cea mai mică faţă de un cuvânt de cod. Acelcuvânt este vecinul-cel-mai-apropiat si de-aici rezultă decizia de decodare.

Spatiul Hamming este într-un fel mult mai complicat.Teoremă: La utilizarea decodării la cel-mai-apropiat-vecin, erorile de pondere tpot fi corectate dacă si numai dacă 2t < d* sau 2t + 1 ≤ d*.Demonstratie: “Sferele” de rază t care înconjoară cuvintele de cod nu au punctecomune. Altminteri ar exista două cuvinte de cod mai apropiate decât 2t.Asadar, dacă apar cel mult t erori, decodorul poate decide fără vreo ambiguitatecare cuvânt al codului a fost transmis.Regiunea de decodare maximală este uzual mai mare decât sfera de decodare.Cele mai multe decodoare corectează numai când cuvântul recepţionat rapartine unei sfere de decodare de rază t. Aceste decodoare sunt numite culimitare de distantă.

Rezultatele decodării

Un cod bloc particular poate avea mai multe variante de decodare, depinzând detipul de erori aşteptat sau observat, de rata erorilor, de capacitatea de calculdisponibilă la decodare.Admiţând că se transmite cuvântul de cod c, se receptionează cuvântul r si seface (sau nu se face) decodarea la cuvântul de cod c , rezultatul decodării poatefi clasificat astfel:

c = c, succes al decodării corectare corectă (include si cazul lipseivreunei erori)

c = ?, esec al decodării detectare a unei erori necorectabile, lipsaunei decizii (situatie nu foarte gravă)

c ≠ c, eroare la decodare corectare incorectă (ceea ce este foarterău).

Important de reţinut: decodorul nu poate deosebi rezultatul c = c de c ≠ c.

Regiune de decodare

d*

Sfere de decodare

11

Page 12: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Totusi, la decodare se pot atribui probabilităţi diferitelor situaţii posibile. Deregulă, mai multi biti detectati ca eronati indică o probabilitate mai mare caestimarea cuvântului de cod efectiv transmis să fie gresită.Cuvântul de cod transmis si zgomotul care eventual îl afectează sunt variabilealeatoare asa încât rezultatele decodării sunt ele înseşi evenimente aleatoare cuprobabilitătile lor:

c = ? Pued eroare detectată dar nu corectată (esec al decodorului).(indicele ued = uncorrectable error detected).

c ≠ c Pmc corectare incorectă (eroare a decodorului).(indicele mc = miscorrection).

c ≠ c Pue eroare nedetectabilă (numai eroare de detectare).(indicele ue = undetectable error).

Definitie: Un decodor complet este un decodor care decodează orice cuvântrecepţionat la un cuvânt al codului; decodorul nu eşuează niciodată (pentru odecizie hard).Pentru un decodor complet, Pued = 0.Definitie: Un decodor limitat prin distantă corectează toate erorile de ponderecel mult t, dar nu corectează nici o eroare cu ponderea mai mare decât t. Erorileîn număr mai mare decât t produc un eşec al decodării sau o eroare de decodare.Exemplu: Codul cu repetiţie simplă. Fiecare simbol de informatie se transmiterepetat de n ori.Pentru alfabetul binar sunt două cuvinte de cod: C = 00…00, 11…11.Rata codului: 1/n.Distanta minimă: d* = n.Detectarea erorilor: până la n – 1 simboluri eronate.Pr[eroare nedetectată] = εn, cu ε probabilitatea/rata erorii pe bit.Corectarea de erori: până la (n – 1)/2 simboluri eronate.Pr[corectie gresită] = Pr[mai mult de n/2 erori] (pentru alfabet binar).Pentru alfabetul binar, pot fi utilizate două cuvinte de cod complementare. Deexemplu, C’ = 01010101, 10101010 = 55, AA, forma a doua a scrierii fiindîn baza 16 (hexadecimal). Codul C’ ar putea fi mai bun dacă erorile ar fi degenul toate simbolurile recepţionate zerouri sau toate unităţi binare.Exemplu: Coduri cu verificarea simplă a paritătii. Cuvântului-mesaj i seatasează un bit de verificare astfel încât toate cuvintele codului să aibă aceeasiparitate – pară sau impară.Cuvintele de paritate pară sunt definite printr-o singură ecuaţie de verificare aparităţii:

c1 ⊕ c2 ⊕ … ⊕ cn = (c1 + c2 + … + cn) mod 2 = 0cu “⊕”, operatia sau-exclusiv.Dacă se adaugă cn cu sau-exclusiv (XOR) în ambii membrii ai ecuatiei de maisus se obtine ecuatia de codare

cn = c1 ⊕ c2 ⊕ … ⊕ cn – 1

Această relatie arată cum se calculează bitul de verificare cn din biţii de date,bitii informationali sau bitii-mesaj c1, c2, …, cn – 1.

12

Page 13: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Oricare bit ci poate fi considerat bit de control deoarece el se poate calcula dinceilalti n – 1 biti.Capacitatea de protectie la erori a codurilor cu paritate simplă: Orice eroare peun bit (sau pe un număr impar de biti) poate fi detectată.Rata codului: (n – 1)/n = 1 – 1/n.Detectia erorilor: 1 bit eronat si orice număr impar de biti eronati.Erorile pe biti sunt considerate i.i.d. cu probabilitatea ε, functia de probabilitatepentru numărul de erori în cuvântul de lungime n este binomială:

Pr[1 eroare] = Cn1ε(1 – ε)n – 1 ≈ nε

Pr[2 erori] = Cn2ε2(1 – ε)n – 2 ≈ (1/2)n2ε2

Pr[k erori] = Cnkεk(1 – ε)n – k ≈ (1/k!)nkεk

Aproximările sunt valabile pentru n mare si ε << 1/n.Pentru ε = 1/2, probabilitatea erorii nedetectate este 1/2 – 2 – n. Acesta este uncaz special al regulii generale conform căreia probabilitatea erorii nedetectatecu p biti de verificare este aproximativ 2 – p.Exercitiu: A se verifica: Pr[număr impar de erori] = ∑k imparCn

kεk(1 – ε)n – k = (1/2)– (1/2)(1 – 2ε)n.Exemplu: Coduri non-binare cu verificare simplă. Se presupune că s-a definit ooperaţie de adunare pe un alfabet non-binar, de pildă adunarea modulo 5 pealfabetul 0, 1, 2, 3, 4. Un cod bloc poate fi definit printr-o singură ecuaţie deverificare sau prin ecuaţia de codare corespunzătoare:

c1 + c2 + … + cn = 0 ⇔ cn = – c1 – c2 – … – cn – 1

Acest cod poate detecta orice eroare care constă dintr-un simbol eronat singularşi cele mai multe din pattern-urile cu două sau mai multe simboluri eronate.Unele operatii de adunare sunt mai bune decât altele. Pentru simbolurile de 8biti:• 8-biti exclusiv paralel: doi biti eronati situati în aceleasi pozitii în doi octeti

(bytes) diferiti nu pot fi detectati, ceea ce este foarte rău.• Pentru adunarea pe 8 biti fără semn, două erori în aceleasi pozitii ale bitilor

sunt detectate numai atunci când bitii schimbă valoarea transferului înpozitiile următoare, ceea ce este rău.

• Aritmetica cu complementele la unitate pare o alegere mai bună pentruoperatorul de adunare (utilizat în suma de control Fletcher2 pentru OSI –open systems interconnection). Este încă mai bine.

Coduri produs simple

Biţii mesajului, bitii de informatie sunt aranjaţi într-o matrice bidimensională.Se adaugă biţi de paritate pe fiecare linie si pe fiecare coloană.

2 Suma de control Fletcher – Fletcher checksum – este un algoritm de calcul al unei sume decontrol sensibilă la pozitie. Datează din anii 1970 târzii. Obiectivul sumei de control Fletchereste acela de a furniza proprietăti de detectare a erorilor apropiate de cele ale CRC – CyclicRedundancy Check – dar cu efort de calcul mai redus decât cel asociat tehnicilor de însumare.

13

Page 14: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

O eroare singulară face ca una din ecuatiile de paritate pe linii şi una dinecuatiile de paritate pe coloane să nu fie verificate. Bitul incorect este localizatla intersectia liniei neconforme cu coloana neconformă.Erorile duble pot fi detectate – două linii sau două coloane (sau ambele) auparitate necorespunzătoare – dar nu pot fi corectate.Unele erori triple pot genera corectări gresite. Exercitiu: Care din ele?Aproape toate erorile multiple pot fi detectate – codul produs are redundanţă înexces.Aceste coduri produs sunt simple dar ineficiente. O ecuaţie de paritateneverificată localizează linia sau coloana în care este eroarea, dar o ecuatieverificată dă informatie puţină despre cuvântul de cod.Exerciţiu: Ce fracţie din erori nu se poate detecta?

Coduri Hamming

O ecuaţie de verificare eficientă oferă informatii asupra locaţiei erorii. Este ca oprivire la bitii dintr-o parte a cuvântului de cod si este independentă de celelalteecuatii de verificare.Tabelul următor defineste un cod cu verificare de paritate Hamming (7, 4).

c1 c2 c3 c4 c5 c6 c7

1 0 1 0 1 0 1 3 ecuatii deverificare a paritătii

0 1 1 0 0 1 10 0 0 1 1 1 1

Unitătile binare indică bitii din cuvântul de cod care intervin în ecuatiile deverificare a paritătii3.Ecuatiile de verificare a paritătii petru codul Hamming (7, 4) sunt cele treiecuatii care urmează si sunt satisfăcute de toate cuvintele de cod valide si numaide cuvintele de cod.

c1 ⊕ c3 ⊕ c5 ⊕ c7 = 0c2 ⊕ c3 ⊕ c6 ⊕ c7 = 0c4 ⊕ c5 ⊕ c6 ⊕ c7 = 0

Ecuatiile de verificare pot fi scrise condensat într-o formă matricială. Matriceacu elemente binare

3 Termenul de paritate are aici un sens extins, diferit de cel comun, par/impar = cu soţ/fără soţdin aritmetica obisnuită.

Mesaj:k

1×k

2 biti B

iti d

e p

arit

ate

pe

linii

Biti de paritate pe coloane

n = (k1 + 1)(k

2 + 1)

k = k1k

2

n – k = k1 + k

2 + 1

14

Page 15: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

H =

111100011001101010101

este matricea de verificare (a parităţii).Cuvintele de cod sunt caracterizate analitic de ecuatiile

07

1

=

c

cH ⋮ ⇔ [c1 … c7]HT = 0

Zerourile din partea dreaptă a semnelor de egalitate reprezintă vectori dedimensiuni corespunzătoare, cu toate componentele nule. Cu alte cuvinte, unbloc c de 7 biti este un cuvânt de cod dacă si numai dacă cHT = 0.Ecuatiile de codare pentru codurile Hamming (7, 4), cele care permit calcululbitilor redundanţi, de protecţie în functie de bitii mesajului se deduc astfel: bitiiunui cuvânt de cod situati în pozitiile 1, 2, 4 apar fiecare într-o singură ecuatieastfel că c1, c2, c4 se pot calcula din ceilalti biti, c3, c5, c6, c7, bitii mesajului.

c1 = c3 ⊕ c5 ⊕ c7

c2 = c3 ⊕ c6 ⊕ c7

c4 = c5 ⊕ c6 ⊕ c7

Aceste ecuaţii ale codorului (liniar) pot fi scrise ca un produs vector-matrice.

[c1 c2 c4] = [c3 c5 c6 c7]P = [c3 c5 c6 c7]

111110101011

Şi alti 3 biti pot fi aleşi ca set al bitilor de control al paritătii, de pildă c2, c3,c4, dar nu orice set de 3 biti din cei 7. În particular, ca exemplu, c1, c2, c3 nu potfi calculati din c4, c5, c6, c7 deoarece cele 3 coloane situate în stânga extremă amatricei H formează o matrice singulară, neinversabilă.Detectarea si corectarea erorilor cu codurile Hamming (7, 4) se bazează pefaptul că fiecare bit al unui cuvânt de cod este prezent în cel putin o ecuaţie dincele de verificare, ceea ce implică posibilitatea detectării oricărei erori pe unsingur bit. Fiecare bit este verificat printr-un set unic de ecuatii, asadarlocalizarea erorii poate fi făcută prin reţinerea acelor ecuatii de paritate care nusunt verificate.Definitie: Sindromul s = [s0 s1 s2] al unui vector recepţionat r = [r1 r2 … r7]este vectorul binar care indică ecuatiile de paritate care nu sunt verificate.

r1 ⊕ r3 ⊕ r5 ⊕ r7 = s0

r2 ⊕ r3 ⊕ r6 ⊕ r7 = s1 ⇔ [s0 s1 s2] = [r1 r2 … r7]HT

r4 ⊕ r5 ⊕ r6 ⊕ r7 = s2

Dacă s = 0, decodorul admite că r nu conţine nici o eroare. Aceasta este cea maiplauzibilă concluzie în conditiile unor ipoteze raţionale.Fiecare valoare nenulă pentru s corespunde unei erori într-o pozitie diferită dincele 23 – 1 = 7 ale cuvântului recepţionat. Dacă a apărut o singură eroare,

15

Page 16: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

sindromul serveste la identificarea acelei pozitii. Pentru matricea H deverificare a parităţii pentru codul Hamming (7, 4) dată mai sus, sindromul s =[s0 s1 s2] este reprezentarea binară a locatiei acelei erori (cu bitul s2 cel maisemnificativ).Distanţa minimă pentru codurile Hamming (7, 4). Codurile Hamming îngeneral pot corecta o singură eroare, deci d* ≥ 2t + 1 = 2⋅1 + 1 = 3. CodurileHamming pot detecta erorile duble (atunci când sunt utilizate exclusiv pentrudetecţie).Distanţa minimă este de fapt 3. Asadar codurile Hamming pot fie să corecteze oeroare, fie să detecteze două erori, niciodată si una si alta.În cazul unui cod Hamming cu m ≥ 3 biti de paritate, sunt 2m – 1 vectorisindrom nenuli, deci lungimea blocului este n = 2m – 1. Rata codului se apropierepede de 1 pentru n mare. Câteva coduri Hamming:

m n k Rata2 3 1 0,33333 7 4 0,57144 15 11 0,73335 31 26 0,83876 63 57 0,90478 255 247 0,968615 32767 32752 0,999532 4294967295 4294967263 1,0000

Coduri Hamming modificate4 (prin expandare, prin purjare). Două modalităţisimple de a modifica un cod Hamming:• Se adaugă în prima coloană un bit de paritate global: c0 = c1 ⊕ … ⊕ c7 ⇔

c0 ⊕ … ⊕ c7 = 0 si o linie, ultima, de unităţi binare.

H1 =

11111111

11110000

11001100

10101010

Acest cod expandat are lungimea blocului 8 dar acelasi număr de cuvinte decod. Parametrii codului sunt (8, 4, 4), rata este 1/2. Ecuatia prin care secalculează bitul suplimentar c0 este încă o ecuaţie de verificare.

• Se adaugă o conditie de verificare a paritătii efective, în sensul clasic: c1 ⊕c2 ⊕ … ⊕ c6 ⊕ c7 = 0.

4 Vezi si secţiunea Coduri liniare modificate

16

Page 17: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

H2 =

1111111

1111000

1100110

1010101

Acest cod purjat (expurgated) constă din cuvintele de cod Hamming de paritatepară (în sens clasic). Parametrii codului sunt (7, 3, 4), iar rata este 3/7.Distanta minimă pentru codurile Hamming modificate. Aceste coduri Hammingmodificate, cel expandat si cel purjat sunt construite prin suplimentarearedundantei codului Hamming (7, 4) care are distanta minimă 3.• Distanta minimă a codurilor extinse nu este mai mică, ci este cel putin 3.• Toate cuvintele de cod sunt de paritate pară, deci distanta între ele este pară.

De aceea si distanta minimă este un număr par care trebuie să fie cel putin4.

• Codurile Hamming conţin cuvinte de cod de pondere 3.• Bitul de paritate suplimentar face să crească distanţa prin cel putin o unitate.

Astfel, distanta minimă a codurilor Hamming extinse este d* = 4. Acestecoduri pot corecta o eroare si pot detecta simultan erorile duble. O eroaredublă este indicată de o paritate generală pară, dar de sindrom nenul, ceeace corespunde nesatisfacerii uneia sau mai multor ecuatii Hamming din celem originare.

Coduri produs generale

Fie C1 un cod bloc (n1, k1) si C2 un cod bloc (n2, k2). Codul produs C1 ⊗ C2 esteun cod (n1n2, k1k2).

Un codor (sistematic) pentru un cod produs general se realizează astfel:• Mai întâi se aranjează cele k1k2 simboluri informationale într-o matrice cu

dimensiunile k1× k2.• Se codează apoi primele k2 linii folosind codul C1.• În final se codează fiecare din cele n1 coloane folosind codul C2.Distanta minimă pentru codul produs C1 ⊗ C2 este d* = d1

*⋅d2*.

Prin definiţie, fiecare coloană este cuvânt de cod din C2. Codurile C1 si C2 suntliniare, de unde rezultă că liniile sunt cuvinte de cod din C1.Definitia aceasta presupune codoare sistematice pentru C1 si pentru C2.

k1

n1 – k

1

n2 – k

2

k2

17

Page 18: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Exemplu de cod produs în general: Se consideră produsul a două coduriHamming expandate (8, 4, 4).

Parametrii codului produs sunt (n, k, d*) = (64, 16, 16), rata lui este 1/4.Capacitatea de a corecta erori a codului este t = (16 – 1)/2 = 7. Codurileprodus pot fi decodate până la capacitatea de corectare a erorilor garantată.Procedura de decodare cere un decodor de coloane care poate corecta atât eroricât si stergeri. Există coduri mai eficiente, de pildă codul BCH expandat (64,25, 16) care include numai 39 de biti de verificare pentru aceeasi distanţăminimă.

Coduri non-binare corectoare de o singură eroare

Ecuaţia de verificare unicăc1 + c2 + … + cn = 0

permite detectarea unui singur simbol eronat în setul de n recepţionat.Mai mult, sindromul definit ca

s = r1 + r2 + … + rn

indică magnitudinea erorii. Dacă locatia erorii este i si simbolul incorect este ri

= ci + ei sis = r1 + r2 + … + rn = c1 + … (ci + ei) + … + cn = ei

Sindromul spune exact cât trebuie scăzut din simbolul eronat pentru a obţinecuvântul de cod expediat.Ce nu se stie este unde este situată eroarea, care simbol este greşit. Pentru aidentifica locatia erorii este necesară o a doua ecuatie. Efectul magnitudinii uneierori asupra sindromului ar trebui să fie diferit pentru localizări diferite.O alegere rezonabilă pentru această a doua ecuatie este

1⋅c1 + 2⋅c2 + … + n⋅cn = 0Acum, orice cuvânt al codului trebuie să satisfacă două ecuatii

1⋅c1 + 1⋅c2 + … + 1⋅cn = 01⋅c1 + 2⋅c2 + … + n⋅cn = 0

Acestea sunt si ecuatiile de codare, cele din care se pot exprima c1, c2 în functiede c3, …, cn.Exemplu: Fie simbolurile valori pe 4 biti cu adunarea modulo 16. Pentru n = 15,

= 15321

1111⋯⋯H

Mesaj

4 4

4

4

18

Page 19: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

este matricea de verificare a paritătii pentru un cod care ar putea corecta erorilepe un singur simbol, cum se poate constata, nu totdeauna.Procedura de decodare. Se presupune că există o singură eroare de magnitudineei ≠ 0, situată în locatia i. Sindromul s = [s0 s1] poate fi exprimat în functie denecunoscutele i si ei:

i

n

jji

n

jj ecers =+== ∑∑

== 110

i

n

jji

n

jj iejciejrs =+== ∑∑

== 111

Acum ei si i se pot determina din ecuatiile sindromului:ei = s0

i = iei/ei = s1/s0

Din nefericire, împărţirea nu-i definită totdeauna în aritmetica modulo 16. Depildă, dacă s0 = 4, s1 = 8, ecuatia în i, s1 = is0 mod 16 are patru solutii: 2, 6, 10,14. Aşadar, nu există o certitudine asupra poziţiei erorii unice detectate.

Corpuri finite

Problema aceasta a împărtirii cu rezultat incert se rezolvă prin utilizarea uneialte operatii de multiplicare, mai bună. Pentru aceasta se defineste GF(16)5,corpul cu 16 elemente. În corpul GF(16) multiplicarea are o operatie inversă deîmpărtire si cele mai multe dintre proprietătile familiare din aritmetica obişnuităsunt valide.O altă tratare posibilă este aceea cu aritmetica modulo 17, cu alfabetul canalului0, 1, 2, ..., 16. Matricea de verificare a paritătii pentru un cod corector de oeroare peste GF(17) este

= 16321

1111⋯⋯H

Pattern-ul erorii si locatia ei pot fi calculate folosind ecuatiile de mai devreme:pattern: ei = s0

locatie: i = iei/ei = s1/s0

Folosind aritmetica din corpul GF(16) sau aritmetica modulo 17, aceste ecuatiipot fi rezolvate de fiecare dată când s0 ≠ 0.

Coduri Reed-Solomon

Codurile de mai sus peste GF(16) sau peste GF(17) sunt exemple de coduriReed-Solomon. Codurile Reed-Solomon utilizează simboluri dintr-un corp finitGF(Q) si au lungimea cuvintelor n = Q – 1.

5 GF – Galois field, termenul în limba engleză pentru corp finit sau corp Galois (notaţia s-apăstrat aici pentru a da coerenţă lecturii acestui text cu alte posibile lecturi ale cititorului înlimba engleză, limbă în care sunt publicate extrem de multe lucrări în domeniu).

19

Page 20: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Fiecare linie din matricea de verificare H constă din puteri consecutive ale unorelemente din GF(Q). Dacă elementele sunt alese cu grijă, fiecare ecuatie deverificare suplimetară sporeste distanta minimă cu o unitate. De exemplu,matricea de verificare a paritătii

=

=

16131081116941

16432111111

40966427812561694116432111111

⋯⋯⋯⋯

⋯⋯⋯⋯

H

corespunde unui număr de 4 ecuatii. Această matrice defineste un cod pestecorpul finit GF(17) care are o distantă minimă de 5. Codul poate corecta până ladouă simboluri eronate, în cuvinte de cod de lungime 16. Procedurile dedecodare a codurilor Reed-Solomom sunt printre obiectivele principale aleacestei părti a lucrării prezente.

Tipurile de erori în canal (revedere)

Rata brută a erorilor într-un canal de comunicatie este numărul mediu desimboluri eronate pe simbol transmis. Rata brută a erorilor poate varia în timp,asa încât se recurge la medierea pe segmente de date.Cum se măsoară rata erorilor?• Se trimit date cunoscute si se contorizează simbolurile incorecte.• Se tin evidenţe ale numărului de erori corectate si ale cuvintelor

receptionate necorectabile.Un alt parametru al perturbatiilor este persistenţa (aglomerarea, dependenţastatistică).• Erorile catastrofale fac canalul de neutilizat pentru mult timp – sunt afectate

multe pachete de date. Retransmiterea devine absolut necesară.• Erorile incidentale apar atunci când canalul pe durate scurte devine foarte

perturbat, foarte zgomotos, ceea ce se traduce într-o secventă contiguă desimboluri greşite sau incerte.

• Erorile aleatoare sunt simboluri de zgomot independnete, i.i.d. sau cu ostatistică lent variabilă în timp. Fiecare eveniment perturbator afecteazăsimboluri izolate.

Exemple. Trei canale cu rata bitilor eronati 10 – 3:• Situatie catastrofală. Un canal de comunicatie care este inutilizabil 9 ore în

fiecare an (furtuni solare, poate), dar altminteri lipsit de zgomote, are o ratămedie a bitilor eronati de cca. 10 – 3.O redundanţă suplimentară mică permite detectarea pachetelor alterate.Redundanţa generală este de cca. 1% necesar pentru pachetele retransmise.

• Erori incidentale. Se presupune că erorile apar în aglomerări (clusters) de10-100 de biti. Capitolul prezent se referă si la coduri care tratează eficienterorile incidentale. Aceste coduri sunt utilizate adesea ca un al doilea nivel,în combinatie cu coduri de nivel primar care rezolvă erorile distribuiteuniform.

20

Page 21: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• Erori aleatoare. Pr[xi ≠ yi] = ε, o constantă independentă de momentul i si dedatele xi. Probabilitatea ca un bit receptionat oarecare să fie eronat esteegală cu rata medie a biţilor eronati.

La o rată a bitilor eronati dată, erorile aleatoare sunt mai dificil de tratat decâterorile incidentale, care la rândul lor sunt mai dificil de rezolvat decât erorilecatastrofale. O susţinere a acestei afirmaţii: reordonarea unui bloc mare de datepentru a separa bitii care erau initial laolaltă transformă erorile incidentale înerori izolate.

Canale de comunicatie

Se reia aici o parte din schema bloc de comunicatie prezentată la începutullucrării.

Modulatorul transformă iesirea digitală a codorului de canal în forme de undăpotrivite transmiterii printr-un anumit canal fizic, demodulatorul estimeazăvalorile digitale din formele de undă recepţionate.Schema adoptată pentru codare trebuie să tină seamă de metoda de modulatie.Dar, odată codul de canal ales, modulatorul si demodulatorul pot fi incluse înblocul canalului. Se obtine astfel un model simplificat.

Acest canal simplificat are intrări si iesiri digitale.

Modelul canalului digital

Modelul matematic al unui canal de comunicatie discret în timp (digital)prezentat aici este probabilistic.

Codor canal

Modulator Canal Demodu-lator

Zgomot

Decodorcanal

Codor canal

Canal digital

Zgomot

Decodorcanal

Codor canal

Canal digital

Zgomot

Decodorcanalx

1, x

2, …, x

ny

1, y

2, …, y

n

21

Page 22: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Un canal discret este caracterizat deplin de un set de probabilităti condiţionatePr[iesiri y1, y2, …, yn|intrări x1, x2, …, xn]

Se admite cauzalitatea canalului: yj este independent de xi pentru i > j.Un canal este discret dacă mulţimile alfabetice de intrare si de iesire X si Y suntdiscrete. Un canal este fără memorie dacă iesirea la momentul i depinde numaide intrarea la acelaşi moment i. Atunci

Pr[y1, y2, …, yn|x1, x2, …, xn] = Pr[y1|x1]Pr[y2|x2]…Pr[yn|xn]Definitia unui canal discret fără memorie (DMC – Discrete MemorylessChannel) cere ca probabilitătile de trecere, de tranziţie Pr[yi|xi] să nu depindă demomentul i.

Canale binare simetrice

Cel mai simplu, cel mai popular si ocazional6 si cel mai adecvat model al unuicanal este modelul canalului binar simetric (BSC – binary symmetric channel).

≠=−=

−−=

xyxyxy ε

εεε

εε 11

1]|Pr[

Modelul sub forma unei graf de trazitie este următorul:

6 Robert Gallager, un reputat cercetător în teoria informatiei declara într-o conversatie laStanford că n-a avut ocazia vreodată să lucreze pe un canal binar simetric. El vrea să spună căcele mai multe canale au zgomote corelate.

1 – ε

1 – ε

ε

ε

0 0

1 1

22

Page 23: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

0 0 . 1 0 . 2 0 . 3 0 . 4 0 . 5 0 . 6 0 . 7 0 . 8 0 . 9 10

0 . 1

0 . 2

0 . 3

0 . 4

0 . 5

0 . 6

0 . 7

0 . 8

0 . 9

1

R a t a e r o r i l o r

E n t r o p i e

C a p a c i t a t e

Capacitatea unui canal binar simetric (BSC) este foarte uşor de calculat dar estefoarte greu de atins. Expresia capacitătii canalului este

C(ε) = 1 – H(ε)îu care H(ε) = – ε log2ε – (1 – ε)log2(1 – ε) este funcţia entropică binară. H(ε)este o măsură a cantitătii de informatie sau de incertitudine într-o decizie binarăcu probabilitătile a priori ε, 1 – ε. Alăturat sunt date curbe care reprezintăcapacitatea si entropia la rate diverse ale bitilor eronati. Tabelul însoţitorilustrează numeric cele două functii, H(ε) si C(ε).

Rata bitilor eronati (ε) H(ε) C(ε)10 – 1 0,4689955935893 0,531004406410710 – 2 0,0807931358959 0,919206864104110 – 3 0,0114077577375 0,988592242262510 – 4 0,0014730335283 0,998526966471710 – 5 0,0001805232830 0,999819476717010 – 6 0,0000213742629 0,999978625737110 – 7 0,0000024696192 0,999997530380810 – 8 0,0000002801812 0,999999719818810 – 9 0,0000000313401 0,9999999686599

Erori aleatoare asupra biţilor

Referirea la biţi eronaţi aleator presupune un canal binar cu erori independenteidentic distribuite (i.i.d. – independent identically distributed), cu alte cuvinteun canal binar simetric.Un canal binar simetric are un singur parametru de zgomot, ε:

23

Page 24: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

rata bitilor eronati = ε = Pr[ri ≠ ci] = probabilitatea de inversareAcest model de canal presupune că erorile nu depind de mesaj.Numărul de erori într-un cuvânt de n biti recepţionat are o distributie binomială:

Pr[i erori] = Cniεi(1 – ε)n – i, i = 0, …, n

Un cod bloc cu distanţa minimă d* ≥ 2t + 1 poate corecta până la t erori. Dacăapar mai mult de t erori, decodorul produce două rezultate posibile:• poate recunoaşte că cuvântul receptionat este la distanţă mai mare decât t de

orice cuvânt de cod sau• poate corecta gresit la cuvântul de cod (unic) c situat la mai putin de t de

cuvântul recepţionat r.Când se produce o corectie gresită, c este o estimare mai proastă decât rînsusi.

Probabilitătile de eroare pentru coduri cu repetiţie

Se consideră codul cu repetiţie (n, 1) cu lungimea blocului n = 2t + 1 impară.Este codat numai un bit din mesaj, fie acela m. Decodorul estimează pe m prinvot majoritar. O eroare de decodare apare atunci când cuvântul recepţionat aremai mult de n/2 biti eronati.Probabilitatea unei corectii gresite, Prmc (miscorrection) este

Prmc = Pr[eroare la decodare] = Pr[erori pe mai mult de t biti] =

= )!1(

)()1()1(

1111

1 +≈−≈−

+−−++

+=

−∑ t

nCC

ttntt

n

n

ti

iniin

εεεεε

Aproximările se aplică dacă rata erorilor este mică, ε << 1/n si dacă lungimeacuvântului este mult mai mare decât numărul erorilor în cuvânt, n >> t.Deoarece numai un bit este informaţional, rata erorii este totuna cu rata eroriidecodorului.

Pr[ mm ≠ˆ ] = Pr[ cc ≠ˆ ] = Prmc

Utilizând inegalitatea lui Chernoff sau aproximarea lui Stirling, se poate arătacă dacă ε < 1/2, atunci Prmc → 0 exponenţial cu n → ∞.

Probabilitatea erorii pentru codurile Hamming

Un cod Hamming (7, 4) are 24 = 16 cuvinte de cod. Fiecare cuvânt al coduluiare o regiune de decodare corectă care contine 1 + 7 = 8 cuvinte recepţionate.Regiunile de decodare nu au zone comune, astfel că ele conţin 16⋅8 = 128 = 27

vectori, adică toate seturile de n = 7 biti posibile.

344

Zgomot

Mesaj m Cuvânt de cod c

4 3 4 3

Cuvânt receptionat r Cuvânt estimat

24

Page 25: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Pentru două erori, dH(c, r) = 2 si corectarea greşită făcută de decodor producedH(c, c ) = 3.Rata bitilor eronati evaluată între c si c este Pr[2 erori]·(3/7).Se poate arăta că pentru codorul sistematic greşelile în c sunt distribuiteuniform peste cei sapte biti ai cuvântului de cod.

Modele ale unor canale mai generale

Uneori nu este disponibil un model statistic bun al sursei de zgomot. Se admiteuneori fără verificare ipoteza că erorile sunt i.i.d. (independent identicallydistributed), erori independente distribuite identic.Un cod protector la erori ar trebui să asigure protecţia la mai multe tipuri deerori. Figura de mai jos ilustrează o posibilă actiune concomitentă aperturbatiilor aleatoare si a perturbatiilor incidentale, generatoare de erorialeatoare si de erori incidentale.

Mai sus s-au adus în discuţie modele pentru perturbatiile si erorile aleatoare.Iată acum un model clasic al erorilor incidentale, modelul Gilbert-Elliot.

Acesta este un model markovian. Probabilitătile ε1, ε2 diferă uzual prin multeordine de mărime, de pildă ε1 = 10 – 6, ε2 = 10 – 1.Exemplu de model al erorilor. Se presupune o combinatie de erori aleatoare (1bit) si incidentale (până la 45 de biti).

Pr[eroare aleatoare] = 10 – 6, Pr[eroare incidentală] = 4×10 – 7

Rata brută a bitilor eronati este 1·10 – 6 + 45·4×10 – 7/2 = 10 – 5.Se presupune că se transmit pachete de 1000 de biti si se cere ca rata bitiloreronati după corectare să fie 10 – 12. Pentru a obtine această performanţă cu uncod corector de erori aleatoare se consideră

Pr[5 erori] ≈ (1000·10 – 5)5/5! = 10 – 10/120 ≈ 0,83×10 – 12

Corectarea a 5 erori aleatoare ar fi suficientă numai dacă apar erori aleatoare.Dar pachetele cu secvenţa incidentală de până la 45 de biti nu pot fi corectate.Erorile incidentale contribuie la rata totală a erorilor cu cca. 9×10 – 6 >> 10 – 12.În plus, cerinţa de corectarea a 5 erori aleatoare este supradimensionată.

Codor canal

Canal

Zgomot aleator

Decodorcanal

x1, x

2, … y

1, y

2, …

Zgomot incidental+

m1, m

2, …

Starea normală Starea incidentală

1 – ε1

1 – ε2

ε1

ε2

25

,...ˆ,ˆ21 mm

Page 26: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Pr[4 erori|fără erori incidentale] ≈ (1000·10 – 6)4/4! = 10 – 12/24 ≈ 4,2×10 – 14

Din aceste calcule apare necesară o metodă specială de corectare a amesteculuide erori aleatoare si incidentale.Metode de corectarea mixturilor de erori aleatoare si incidentale:• Se intercalează cuvintele de cod astfel încât un incident provoacă vătămări

mai reduse repartizate pe mai multe cuvinte de cod. Un incident pe 45 debiti poate afecta cel mult 5 biti în fiecare din cele 10 cuvinte de cod care aralcătui un supercuvânt de cod lung de 10000 biti. Astfel se poate utiliza uncod corector de 5 erori. Acest cod necesită 50 de biti de verificare la fiecaresubcuvânt de cod de 1000 de biţi, adică un total de 500 de biti suplimentari.

• Se utilizează un cod care corectează erori pe simboluri, simboluri formatedin mai multi biti. Un cod Reed-Solomon cu simboluri ale canalului de 10biti are lungimea blocului de 210 – 1 simboluri sau 10230 biti. Cu 500 de bitide verificare se poate corecta orice pattern de erori restrâns la 25 desimboluri. În particular, un incident de 45 de biti afectează cel mult 6simboluri, asa încât incidentele multiple – până la 4 – pot fi corectate.

Câteva reguli simple:1. Fiind dati p biţi de redundanţă, se poate atinge o probabilitate a erorii

nedetectate de 2 – p sau mai mică. De exemplu codul CRC-16 este o sumă deverificare care asigură o rată a erorilor nedetectate de 2 – 16 = 1,6×10 – 5.

2. Pentru mesaje de n biti, aproximativ tlog2n biti sunt necesari si suficienţipentru a corecta până la t biti eronati. De pildă, codurile BCH cu lungimeablocului 255 poate corecta o eroare cu 8 biti de control, două erori cu 16 bitide control ş.a.m.d.

3. Se poate face un compromis raţional în ceea ce priveste capacitatea de acorecta si cea de a detecta erorile: la o rată a bitilor eronati dată, un biteronat corectat pentru doi biti eronati detectati. De pildă, un cod care poatecorecta 2 erori poate detecta 4 erori sau poate corecta o eroare si detecta 2erori.

Elemente de algebră pentru coduri protectoare la erori

Sectiunea prezentă a acestui curs se concentrează asupra codurilor bloc liniare.• Codarea produce cuvinte de cod ale căror componente sunt combinatii

liniare ale simbolurilor mesajului.• Detectia erorilor utilizează sindromul, o combinatie liniară a simbolurilor

cuvântului de cod.• Corectarea erorilor necesită aflarea zerourilor unor polinoame cu coeficienti

functii rationale de componentele sindromului.Toate aceste operatii implică adunări şi multiplicări efectuate cu simboluri alecanalului.Decodarea include la rându-i operatii de împărtire, iar simbolurile nenule aunevoie adesea de un reciproc, de un invers multiplicativ.

26

Page 27: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

De aceea se definesc corpuri (fields) – structuri algebrice cu operatii aditive şimultiplicative inversabile.Corpurile moştenesc proprietăti ale altor structuri algebrice (grupuri, inele) şisunt multimi de scalari pentru anumite spatii vectoriale. Este nevoie asadar şi dedefinirea unor grupuri, inele şi spatii vectoriale.

Elemente de teoria numerelor şi de aritmetică modulară (motivaţie)

Codurile protectoare la erori folosesc ecuatii de verificare. Aceste ecuatii cer oaritmetică definită pentru simboluri ale cuvintelor de cod.Aritmetica de precizie finită este mai usor de implementat decât cea de precizienelimitată.Corpurile finite (cu operatiile/operatorii +, –, ×, ÷) sunt definite printr-oaritmetică modulară:• Aritmetica întregilor modulo un număr prim:

12345678⋅87654321 mod 2147483647 = 652912986• Aritmetica polinoamelor modulo un polinom prim (cu coeficientul cel mai

putin semnificativ în prima pozitie):(x3 + x + 1).(x2 + 1) mod (x4 + x + 1) = 1 ⇔ 1101.1010 = 1000

De observat că produsul a doi vectori de 4 biţi este tot un vector de 4 biţi.Aritmetica modulară are şi alte aplicatii: generarea de numere pseudoaleatoare,criptografia cu cheie publică etc.

Elemente de teoria numerelor

Dacă a·b = m atunci m se numeste produsul factorilor a şi b. Despre numărul mse mai spune că este un multiplu al lui a şi al lui b. Numerele a şi b suntdivizori ai lui m, ceea ce se scrie a|m şi b|m şi se citeste a divide pe m, b dividepe m. Un divizor propriu este un divizor care satisface dubla inegalitate 1 < a <|m|. Exemple de numere si divizorii lor proprii:

m Divizori proprii6 2, 3

28 2, 4, 7, 14256 2, 4, 8, 16, 32, 64, 128

Observaţie: Numerele 6 = 1 + 2 + 3 si 28 = 1 + 2 + 4 + 7 + 14, egale cu sumadivizorilor inferiori lor ca valoare sunt numite numere perfecte.Un număr prim – sau mai simplu un prim – este un întreg p > 1 care nu aredivizori proprii. Singurii divizori (pozitivi) ai unui număr prim p sunt 1 şi p.Câteva numere prime: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37. Singurul numărprim par este 2. Cazul p = 2 este adesea exclus în teoremele relativ la corpurilefinite, dar este cazul cel mai important pentru aplicaţiile corpurilor finite lacodurile protectoare la erori.

27

Page 28: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Euclid a arătat că numerele prime sunt infinit de multe. Demonstratia se faceprin reducere la absurd. Se admite că ar exista numai un număr finit de prime,p1, p2, …, pt. Atunci m = (p1·p2·…·pt) + 1 ar fi un număr care nu se divide cunici un pi. Astfel că fie m este prim, fie m are un divizor prim care ar trebui sădifere de orice pi.Desi nu există o formulă simplă pentru primul al x-lea, teorema numerelorprime spune că:Numărul primelor mai mici decât x, π(x) este aproximativ x/lnx. Mai precis,π(x) → ∞ odată cu x → ∞.Un fapt demonstrat de Bertrand: Pentru orice întreg n ≥ 2, între n şi 2n, existăun prim. În particular, există cel putin un prim de m biti pentru orice m ≥ 1.Când d > 0 nu este un factor al lui n, împărtirea lui n la d produce un rest nenul.Algoritmul împărtirii exprimă deîmpărtitul n ca suma unui multiplu qd alîmpărtitorului d şi un “mic” rest r:

n = qd + rcu 0 ≤ r < d.Restul este notat cu n mod d (citit: n modulo d). De observat că potrivit acesteidefinitii a împărtirii, câtul q = n/d nu este totdeauna întregul cel mai apropiatde numărul rational n/d.Câtul şi restul generat de algoritmul împărtirii sunt unice.Admitând că q1d + r1 = q2d + r2 cu r1 ≤ r2 < d, rezultă 0 ≤ r2 – r1 = (q1 – q2)d < d,astfel că r2 – r1 este un multiplu nenegativ al lui d mai mic decât d. Absurd! Deaici r2 – r1 = 0 şi r2 = r1 şi în cele din urmă q2 = q1.Cele mai multe arhitecturi de calcul au o instructiune de împărtire carereturneazǎ atât câtul cât şi restul în registre separate, partial şi pentru cǎimplementǎrile standard ale împǎrtirii produc ambele valori. Câtul, rotunjitadecvat este rezultatul necesar în calculele numerice, dar restul este mai utilpentru codarea în scopul protejǎrii la erori şi pentru criptare.Cel mai mare divizor cumun, gcd(m, n), al unei perechi de întregi m şi n este celmai mare numǎr care divide şi pe m şi pe n. Surprinzǎtor, gcd(m, n) este şi celmai mic întreg pozitiv de forma am + bn cu a şi b întregi. De exemplu, 1 =gcd(13, 8) = – 3·13 + 5·8.Demonstratie: Este limpede cǎ orice divizor comun al lui m şi n este divizor allui d = am + bn. Pentru a arǎta cǎ d este un divizor al lui m, se utilizeazǎteorema împǎrtirii întregi pentru m şi d:

m = q(am + bn) + rcu 0 ≤ r < d = am + bn.Restul r este tot o combinatie liniarǎ întreagǎ de m şi n:

r = m – q(am + bn) = (1 – qa)m – qbn < dDeoarece d este cea mai micǎ combinatie liniarǎ pozitivǎ de m şi n, restul rtrebuie sǎ fie nul, astfel d este un divizor al lui m. Similar, d este şi divizor al luin.Din gcd(m, n) = am + bn se vede cǎ gcd(m, n) nu este numai cel mai maredivizor comun al lui m şi n, ci şi un multiplu al tuturor divizorilor comuni ai lui

28

Page 29: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

m şi n. Utilizând aceastǎ reprezentare a celui mai mare divizor comun, se poatearǎta cǎ dacǎ gcd(m, n) = d atunci gcd(cm, cn) = cd.Demonstratie: Evident, cd este divizor comun al numerelor cm şi cn. Dar

d = am + bn ⇒ cd = c(am + bn) = a(cm) + b(cn)ceea ce aratǎ cǎ orice divizor comun al numerelor cm şi cn este şi un divizor allui cd.Douǎ numere sunt relativ prime sau coprime dacǎ cel mai mare divizor comunal lor este 1, adicǎ nu au nici un divizor comun propriu. Dacǎ m şi n sunt relativprime, atunci gcd(m, n) = 1. În acest caz, existǎ întregii a şi b astfel încât am +bn = 1. De aici

bn = 1 – am = 1 mod m ⇒ b = n – 1 mod mAsadar b este reciprocul lui n modulo m.O metodǎ de a calcula atât cel mai mare divizor comun cât şi coeficientii a şi bo constituie algoritmul lui Euclid.Iatǎ acum o proprietate utilǎ a numerelor coprime: dacǎ m|nq şi gcd(m, n) = 1atunci m|q.Demonstratie: Dacǎ gcd(m, n) = 1 atunci gcd(mq, nq) = q = amq + bnq estesuma a doi multipli ai lui m, astfel q este multiplu al lui m şi m|q. Un caz specialimportant al acestui rezultat: dacǎ p este prim şi p|ab atunci p divide pe a sau pdivide pe b (nu şi pe a şi pe b).Demonstratie: Deoarece p este prim, fie p|a, fie gcd(a, p) = 1, caz în care p|b.O factorizare a lui m este o reprezentare m = a1·a2·…·at.Orice întreg m ≥ 2 poate fi factorizat în prime.Demonstratie: Se face prin inductie dupǎ m. Dacǎ m este prim atuncifactorizarea lui este m = m. Altminteri, m = a·b cu a < m şi b < m. Prin inductie,a şi b au factorizǎrile lor în prime a = p1·p2·…·pr şi b = q1·q2·…·qs. Asadar, m =a·b = p1·p2·…·pr·q1·q2·…·qs este o factorizare pentru m.Teorema fundamentalǎ a aritmeticii spune cǎ factorizarea în prime a oricǎruiîntreg pozitiv este unicǎ, abstractie fǎcând de ordinea factorilor.Demonstratie: Se admite cǎ un întreg n are douǎ factorizǎri diferite.Simplificând cu primele comune, egalitatea celor douǎ reprezentǎri se aduce laforma p1·p2·…·pr = q1·q2·…·qs cu primele pi şi qj diferite pentru orice i şi orice j.Dar p1|q1·q2·…·qs impune pe p1 ca divizor al unuia dintre factorii qj şi atunci p1 =qj, ceea ce este contradictoriu.Cel mai mic multiplu comun al întregilor m şi n, lcm(m, n) este cel mai micnumǎr întreg pozitiv care este un multiplu atât pentru m cât şi pentru n. Fiinddate factorizǎrile lui m şi n (cu unii exponenti ei, fj posibil nuli)

tet

ee pppm ...2121= , tf

tff pppn ...21

21=cel mai mare divizor comun şi cel mai mic multiplu comun sunt

gcd(m, n) = ),min(),min(2

),min(1 ...2211 tt fe

tfefe ppp

lcm(m, n) = ),max(),max(2

),max(1 ...2211 tt fe

tfefe ppp

Deoarece ei + fi = min(ei, fi) + max(ei, fi), rezultǎ cǎ mn = gcd(m, n)·lcm(m, n).Algoritmul lui Euclid este o metodǎ eficientǎ de a afla gcd(m, n) fǎrǎ

29

Page 30: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

factorizare, astfel cǎ cel mai mic multiplu comun lcm(m, n) poate fi calculat cuusurintǎ.Conceptele de divizibilitate, primalitate, cel mai mare divizor comun şi cel maimic multiplu comun apar şi în alte capitole de algebrǎ. Un inel este o structurǎalgebricǎ cu opearatii de adunare şi înmultire cu proprietǎti “rezonabile”. Undomeniu cu factorizare unicǎ este un inel în care teorema factorizǎrii unice estesatisfǎcutǎ. Un inel care are un algoritm de împǎrtire care produce un rest careeste mai mic decât împǎrtitorul este numit domeniu euclidian. Orice domeniueuclidian este totodatǎ un domeniu de factorizare unicǎ şi demonstratia esteanalogǎ demonstratiei de mai sus conform cǎreia orice întreg are o factorizareîn prime unicǎ.Un corp este un inel în care orice element nenul are un invers multiplicativ (unreciproc). Cel mai restrâns corp este GF(2): el are elementele 0, 1, operatiaaditivă “sau-exclusiv” (XOR), operatia multiplicativă “si” (AND). Un inelimportant pentru codurile corectoare de erori îl formeazǎ polinoamele cucoeficienti în GF(2).Dacǎ p este un numǎr prim, atunci orice întreg a cuprins între 0 şi p are uninvers multiplicativ modulo p, adicǎ existǎ un întreg i astfel încât ai = 1 mod p.Demonstratie: Se considerǎ primii p multipli ai lui a, ai: i = 0, 1, …, p – 1. Searatǎ mai întâi cǎ fiecare multiplu are un rest distinct modulo p. Dacǎ ai = ajmod p cu 0 ≤ i < j < p atunci aj – ai = a(j – i) este un multiplu de p şi p|(j – i)deoarece p nu este divizor al lui a. Dar 0 ≤ j – i < p asa încât j – i = 0 şi j = i.Aceasta aratǎ cǎ multimea ai mod p: i = 0, 1, …, p – 1 contine p elementedistincte din multimea de p numere 0, 1, …, p – 1, astfel cǎ prin principiulpigeonhole7, pentru un i, ai = 1 mod p. De aici rezultǎ cǎ întregii modulo pformeazǎ un corp (un inel în care orice element nenul are un inversmultiplicativ) dacǎ (si numai dacǎ) p este prim.Teorema restului chinezesc. Fie m1, …, mr întregi pozitivi, doi câte doi relativprimi şi fie m = m1m2…mr. Pentru orice secventǎ de întregi a1, …, ar astfel încât0 ≤ ai < mi, existǎ exact un întreg a astfel încât 0 ≤ a < m şi a = ai mod mi (1 ≤ i≤ r).Demonstratie: În timp ce x parcurge m întregi distincţi 0, …, m – 1,secventele de r resturi (x mod m1, …, x mod mr) parcurg toate cele m = m1m2…mr valori posibile, din care exact una trebuie sǎ fie (a1, …, ar) pe acelasiprincipiu pigeonhole.De fapt, existǎ o formulǎ explicitǎ pentru a în functie de a1, …, ar. Fie Mi =(m/mi)ϕ(mi) mod m, cu ϕ(·) functia totient a lui Euler definitǎ mai jos. Astfel

mMaajiji

aMr

iiiijji mod

01

mod1

=⇒

=== ∑=

δ

7 În matematică, principiul pigeonhole spune că dacă n obiecte sunt depuse în m cutii(pigeonholes) si n > m, atunci cel putin o cutie trebuie să contină mai mult de un obiect.

30

Page 31: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Numǎrul de întregi între 0 şi un întreg pozitiv n, care sunt relativ primi cu n estecunoscut ca functia totient a lui Euler şi se noteazǎ cu ϕ(n). Cu factorizarea n =

tet

ee ppp ...2121 , pentru ϕ(n) existǎ o formulǎ generalǎ destul de simplǎ

∏∏==

−=−==

t

i i

t

i

eii

et

ee

pnpppppn it

11

121

11)1()()...()()( 21 ϕϕϕϕ

în particular, ϕ(n) = p – 1 dacǎ n = p, un numǎr prim şi ϕ(n) = (p – 1)pe – 1 = (1– 1/p)pe dacǎ n = pe, o putere a unui numǎr prim. Întregii relativ primi cu nformeazǎ un grup multiplicativ cu ϕ(n) elemente. Cu alte cuvinte, produsul adouǎ numere întregi de acest gen este şi el relativ prim cu n, numǎrul 1 esteelementul neutru la înmultire şi fiecare astfel de întreg are un inversmultiplicativ.O functie f(n), cum este ϕ(n), pentru care f(mn) = f(m)f(n) ori de câte ori m şi nsunt numere mutual prime se numeste functie multiplicativǎ. O altǎ functiemultiplicativǎ utilǎ este functia Möbius definitǎ mai departe. Un numǎr esteliber de pǎtrate dacǎ nu este divizibil cu vreun numǎr care este un pǎtrat, adicǎnu are nici un divizor de forma a2. Altfel spus, un numǎr este liber de pǎtratedacǎ şi numai dacǎ factorizarea primǎ a lui este de forma p1p2…pt fǎrǎ ca vreunfactor prim sǎ aparǎ mai mult de o datǎ. Functia Möbius µ(n) este definitǎ ca

=−

==

distincte prime a produsul este...)1(|, primun pentru adica, patrate, deliber estenu 0

11)(

21

2

tpppnnppn

nn

tt

µ

De exemplu, µ(2) = µ(3) = µ(5) = –1, µ(4) = 0, µ(6) = 1.Un fapt important care va fi stabilit mai târziu este acela cǎ existǎ polinoameireductibile de orice grad, peste orice corp finit. De fapt, se poate gǎsi numǎrulexact de polinoame ireductibile folosind formula de inversiune a lui Möbius:

∑∑∑

=

=⇒=

ndndnd d

ngddg

d

nnfdfng

|||

)()()()()( µµ

cu toate sumele luate pe toti divizorii d ai lui n (inclusiv 1 şi n).De exemplu, divizorii lui 12 pot fi aranjati în urmǎtoarea latice a divizibilitǎtii.Nodurile grafului sunt etichetate cu divizorii lui 12, iar arcele sunt etichetate cudivizorii primi.

12 1

4 2

6 3

3

32

2

2

32

31

Page 32: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Imediat în tabel sunt date douǎ exemple de utilizare a formulei de inversareMöbius pentru divizori ai lui 12.

d m(d) g1(d) g1(n/d) g2(d) g2(n/d) f2(d)1 1 1 28 2 4096 22 –1 3 12 4 64 23 –1 4 7 8 16 64 0 7 4 16 8 126 1 12 3 64 4 5412 0 28 1 4096 2 4020

Mai întâi, pentru f1(n) = n valorile lui g1(d) sunt arǎtate în tabel. Se pot utilizavalorile g(d) din tabel pentru a verifica formula de inversiune a lui Möbiuspentru f1(12):

12|

)(12

d

dgd

µ =

= µ(12)g1(1) + µ(6)g1(2) + µ(4)g1(3) + µ(3)g1(4) + µ(2)g1(6) + µ(1)g1(12) == g1(2) – g1(4) – g1(6) + g1(12) = 3 – 7 – 12 + 28 = 12 = f1(12)

Al doilea, pentru g2(n) = 2n valorile lui f2(d) pot fi calculate utilizând formula deinversiune Möbius şi sunt cuprinse în acelasi tabel. În general, dacǎ g(n) este 2n

atunci

f(n) = ∑

nd

dgd

n

|

)(µ = 2n + ∑<

ndnd

dgd

n

,|

)(µ ≥ 2n – ∑<≤ nd

dd1

= 2n – (2n –

2) = 2.Aceastǎ inegalitate aratǎ faptul cǎ un corp GF(2n) cu 2n elemente are cel putindouǎ elemente de gradul n astfel încât existǎ totdeauna un polinom ireductibilcu coeficienti binari, de gradul n.

Algoritmul lui Euclid şi împărţirea în corpuri finite

Cel mai mare divizor comun al unei perchi de întregi r şi s (gcd(r, s) – greatestcommon divisor) este cel mai mare întreg care divide atât pe r cât şi pe s.Algoritmul lui Euclid este o metodă eficientă de a găsi gcd(r, s); este mult mairapid decât factorizarea lui r şi s urmată de reţinerea factorilor comuni. Caprodus secundar al algoritmului lui Euclid, se pot găsi întregii a şi b astfel încâtd = gcd(r, s) = ar + bs. Dacă gcd(r, s) = 1 atunci algoritmul produce valoareareciprocă (inversul multiplicativ) a(l) lui r în inelul întregilor modulo s.Idea algoritmului lui Euclid este de a reduce calculul lui gcd(r, s) pentru r, s > 0la calculul lui gcd(r’, s’) cu perechea de numere (r’, s’) “mai mici” decât celedin perechea (r, s). “Mai mici” înseamnă că ambele componente sunt în relatiar’ ≤ r, s’ ≤ s, dar fie r’ < r, fie s’ < s. Dacă r < s atunci (s mod r) < r asa încât(r’, s’) = (r mod s, r) reprezintă o problemă “mai mică” potrivit acestei definitii.

32

Page 33: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Algoritmul lui Euclid generează o secvenţă descrescătoare r1 > r2 > … > rn > 0în care fiecare ri este obtinut din două numere anterioare prin ri = ri – 2 mod ri – 1

şi valoarea ultimă este rn = gcd(r, s). Resturile sunt definite iterativ astfel:

s = Q1r + r1 0 < r1 < |r|r = Q2r1 + r2 0 < r2 < r1

r1 = Q3r2 + r3 0 < r3 < r2

. . . . . . . . . . . . . . . . . . . . . . .rn – 2 = Qnrn – 1 + rn 0 < rn < rn – 1

rn – 1 = Qn + 1rn

Procedura se opreste după un număr finit de pasi deoarece fiecare rest este unnumăr pozitiv mai mic decât restul precedent.Resturile succesive satisfac o relatie de recurenţă liniară

ri = ri – 2 – Qiri – 1

cu conditiile initiale r – 1 = s şi r0 = r.Decurge de aici că fiecare divizor comun al numerelor ri – 1 şi ri – 2 divide şi pe ri

şi fiecare divizor comun al numerelor ri şi ri – 1 divide şi pe ri – 2.Asadar gcd(ri, ri – 1) = gcd(ri – 1, ri – 2) pentru orice etapă i. În particular, rn =gcd(rn, rn – 1) = gcd(r0, r– 1) = gcd(r, s).Fiecare rest ri este o combinatie liniară întreagă a celor două resturi anterioare.Astfel, tot inductiv, restul ultim este o combinatie liniară a primelor două resturir0 = r şi r – 1 = s, adică rn = gcd(r, s) = ar + bs, cu a şi b întregi. (Evident, a şi bsunt de semne diferite.) Coeficientii a şi b pot fi calculati iterativ prin generareasecventelor ai şi bi astfel

ri = air + bis pentru i = –1, 0, 1, …, nValorile initiale pentru ai şi bi sunt evident a – 1 = 0, b – 1 = 1 şi a0 = 1, b0 =0. Perechile ai, bi se pot determina din ai – 1, ai – 2, bi – 1, bi – 2 astfel

ri = – Qiri – 1 + ri – 2 = – Qi(ai – 1r +bi – 1s) + (ai – 2r +bi – 2s) == (– Qiai – 1 + ai – 2)r + (– Qibi – 1 + bi – 2)s = air + bis

Se observă că secventele ai şi bi satisfac pe etape aceeasi relatie derecurenţă care defineste şi secvenţa de resturi ri:

ai = – Qiai – 1 + ai – 2

bi = – Qibi – 1 + bi – 2

Exemplu: Stabilirea numerelor a şi b astfel încât gcd(17, 37) = 17a + 37b.

ri Qi ai bi

37 – 0 117 – 1 03 2 –2 12 5 11 –51 1 –13 60 2 – –

33

Page 34: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Verificarea rezultatului: 17·(−13) + 37·6 = −221 + 222 = 1.O aplicatie importantă a algoritmului lui Euclid extins este calculul reciprocelorîn corpuri finite GF(p), cu p un număr prim. Dacă r este un element nenul dinGF(p) atunci 0 < r < p şi r este relativ prim cu p, asa încât gcd(r, p) = 1.Algoritmul lui Euclid în varianta extinsă produce întregii a şi b astfel încât 1 =ar + bp. Asadar, reciprocul elementului r este r – 1 = a mod p. Exemplul parcursmai sus arată că reciprocul lui 17 în GF(37) este –13 = 24.La utilizarea algoritmului lui Euclid pentru aflarea de valori reciproce în GF(p),coloana bi este numai pentru verificare. Se poate arăta că valoarea an dată dealgoritm este totdeauna mai mică (în modul) decât p, astfel că a mod p este fiea, fie p + a.

Împărţirea simplificată

Algoritmul lui Euclid în descrierea de mai sus implică uzual împărtiri repetate.Pentru a garanta că restul este mic, 0 ≤ ri < ri – 1, câturile trebuie definite ca Qi =ri – 2/ri – 1. În fapt, sunt suficiente şi divizări mult mai grosiere şi alte alegeripentru Qi pot fi mai eficiente din punct de vedere al calculelor. Alegând pe Qi

ca puterea lui 2 cea mai mare dar inferioară raportului ri – 2/ri – 1, se obtine oimplementare a algoritmului lui Euclid a cărui complexitate este aproape la felcu aceea a algoritmului uzual de împărtire binară.Exemplu: Aflarea reciprocei lui 32 în GF(109) prin diviziune incompletă.

ri Qi ai bi

109 – 0 132 – 1 045 2 –2 132 0 1 013 1 –3 16 2 7 –21 2 –17 50 6 – –

Asadar, în GF(109) valoarea reciprocă a lui 32 este – 17 = 92.O altă metodă de calcul al celui mai mare divizor comun (gcd), care evităîmpărtirea este algoritmul binar gcd datorat lui Stein.

Algoritmul lui Euclid pentru polinoame

Algoritmul lui Euclid poate fi utilizat şi pentru calculul divizorului comun celmai mare al polinoamelor cu coeficienti într-un corp. Algoritmul euclidianextins pentru polinoame produce polinoamele a(x) şi b(x) astfel încât

gcd(r(x), s(x)) = a(x)r(x) + b(x)s(x)

34

Page 35: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Dacă r(x) şi s(x) sunt relativ prime, atunci a(x) este reciprocul lui r(x) în inelulpolinoamelor mod s(x). Dacă s(x) este ireductibil, atunci orice polinom nenulr(x) de grad mai mic decât al lui s(x) este relativ prim cu s(x), astfel că toatepolinoamele nenule din inelul polinoamleor mod s(x) au un reciproc, un inversmultiplicativ. Decurge de aici că polinoamele cu aritmetica modulo un polinomireductibil formează un corp.Exemplu: A se afla reciprocul lui x3 + x2 modulo x4 + x + 1 peste GF(2).

ri(x) Qi(x) ai(x) ri(x) Qi(x) ai(x)x4 + x + 1 – 0 10011 – 0x3 + x2 – 1 1100 – 1x2 + x + 1 x + 1 x + 1 111 11 11x x x2 + x + 1 10 10 1111 x + 1 x3 + x 1 11 10100 x – 0 10 –

Asadar, (x3 + x2) – 1 mod (x4 + x + 1) = x3 + x. Tabloul al doilea continereprezentarea sintetică a polinoamelor ca vectori de biti (primul, cel maisemnificativ). Reprezentarea binară este naturală pentru implementarea pecalculatoare de aritmetici polinomiale atât software cât şi hardware. Adunareaşi scăderea sunt simple operatiuni “sau-exclusiv” bit-cu-bit, multiplicarea şiîmpărtirea cer pasi de deplasare şi operatii “sau-exclusiv”.Implementarea algoritmului lui Euclid pentru polinoame poate fi simplificatăprin alegerea câturilor Qi(x) ca fiind monoame xj şi nu rezultatul unei împărtiricomplete ri – 2/ri – 1. Această versiune a algoritmului necesită uzual mai multipasi decât versiunea cu obtinerea lui Qi(x) prin divizarea polinomială completă,dar calculul câtului, al restului şi al lui ai(x) este mult facilitat la fiecare pas.Exemplu: A se găsi reciprocul lui x3 + x + 1 modulo x5 + x2 + 1 în GF(2) prindivizări sintetice incomplete.

ri Qi ai

100101 – 01011 – 11001 100 100

10 1 1011 100 100000 10 –

Asadar, (x3 + x + 1) – 1 mod (x5 + x2 + 1) = x4.

Complexitatea calculelor pentru algoritmul lui Euclid

O cale de a evalua timpul de calcul consumat de algoritmul lui Euclid pentruîntregi constă în a număra pasii de diviziune. Un pas de divizare reduce

35

Page 36: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

problema cu foarte putin când câtul este mic, de pildă când Qi = 1. Dar înmedie, resturile din algoritmul euclidian descresc exponential la o rată nu maimică decât φ = (1 + 5 )/2 ≈ 1,61803 (celebrul număr cunoscut ca proportia deaur).Cazul cel mai dezavantajos pentru algoritmul lui Euclid este calculul celui maimare divizor comun (gcd) pentru doi termeni succesivi ai sirului Fibonacci.Numerele Fibonacci sunt definite de relatia de recurenţă Fn = Fn – 1 + Fn – 2 cuconditiile de start F0 = 0, F1 = 1. Primele câteva numere: 0, 1, 1, 2, 3, 5, 8, 13,21, 34, 55, 89. Se poate arăta că Fn + 2 şi Fn + 1 alcătuiesc cea mai mică pereche denumere pentru care calculul gcd necesită n pasi de divizare.Exemplu: Este uşor a arăta că gcd(Fn + 1, Fn + 2) = 1. (Un fapt amuzant: gcd(Fm,Fn) = Fgcd(m, n).). Algoritmul lui Euclid consumă numai câtiva pasi pentru a arătaaceasta. Se ia ca exemplu F8 = 21 şi F9 = 34.

ri Qi ai bi ri Qi ai bi ri Qi ai bi

34 – 0 1 35 – 0 1 34 – 0 121 – 1 0 21 – 1 0 22 – 1 013 1 –1 1 14 1 –1 1 12 1 –1 18 1 2 –1 7 1 2 –1 10 1 2 –15 1 –3 2 0 2 – – 2 1 –3 23 1 5 –3 0 4 – –2 1 –8 51 1 13 –80 1 – –

Algoritmul lui Euclid cere mai multi pasi pentru a găsi gcd(34, 21) decât a găsigcd pentru perechile de numere mai mari, vecine (35, 21) şi (34, 22).Calculul reciprocelor în GF(2m) folosind algoritmul lui Euclid extins pentrupolinoame poate fi efectuat în cca. m cicluri ale ceasului uzând de deplasări dem biti şi de “sau-exclusiv”. Intrările algoritmului lui Euclid sunt p(x), polinomulprim peste GF(2) de gradul m care defineste aritmetica în GF(2m) şi r(x), unpolinom de grad inferior lui m al cărui reciproc în GF(2m) se calculează. Fiecarepas de diviziune de polinoame produce un rest al cărui grad este mai mic decâtgradul restului anterior. Sunt necesari cel mult m pasi de diviziune pentru aobtine gcd (care e cunoscut în avans a fi 1) şi polinomul a(x) care satisfacerelatia a(x)r(x) = 1 mod p(x).Unii pasi de diviziune cer mai multe cicluri deoarece împărtirea printr-unpolinom de grad mult mai mic decât cel al împărtitorului reclamă ciclurisuplimentare. Dar în acest caz, restul rezultat este de grad mic. Calculele îngeneral constă într-un amestec de pasi de diviziune facili şi dificili, dar numărultotal de cicluri necesar est O(m) în cel mai rău caz. (Constanta multiplicativăascunsă în notatia O(m) este mică, apropiată de 1 într-o implementare îngrijită.)

De la grupuri la corpuri

36

Page 37: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Această sectiune se ocupă de coduri bloc liniare. Vectorii cuvinte de cod sunttransformări liniare ale vectorilor mesaj: c = mG.• Cuvintele de cod c sunt vectori cu n componente (n-tuple).• Mesajele m sunt vectori cu k componente (k-tuple).• Matricea G, matricea generatoare a codului are dimensiunile k×n.Operatiile cu c, m, G sunt adunarea, scăderea, înmultirea si împărtirea.Structurile algebrice utilizate în codarea algebrică sunt – de la cele maicomplexe la cele mai simple – spatiile vectoriale, corpurile, inelele si grupurile.Polinoamele cu coeficienti si matricile cu elemente într-un corp sunt deasemenea foarte importante.

Grupuri

Definitie: Un grup este o structură algebrică (G, ⋅) compusă dintr-o multime Gsi o operatie ⋅ care satisfac axiomele următoare:1. Închidere: pentru orice a, b din G, a⋅b apartine lui G.2. Asociativitate: (a⋅b)⋅c = a⋅(b⋅c) = a⋅b⋅c.3. Existenta uni element neutru e astfel încât e⋅a = a⋅e = a.4. Existenta inverselor: pentru orice element a din G există un element a – 1

astfel încât a – 1⋅a = a⋅a – 1 = e.Exemple de grupuri: permutările unei multimi finite, translatiile si rotatiile dinplan, numerele (întregi, rationale, reale, complexe) cu operatia de adunare,întregii cu adunarea modulo m (grupuri finite), întregii relativ primi cu m simultiplicarea modulo m (grupuri finite).Alte exemple de grupuri:Grupurile numerice sunt de obicei comutative (abeliene), grupurile de permutărinu sunt comutative.Cel mai restrâns grup nonabelian este cel alcătuit din cele 3! = 6 permutări de 3obiecte, S3. Acest grup de permutări poate fi reprezentat prin următoarelematrici de permutare 3×3:

100010001

,

010100001

,

001010100

,

100001010

,

001100010

,

010001100

.

Exemplu de produs necomutativ:

37

Page 38: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

100001010

010100001

=

010001100

010100001

100001010

=

001100010

Fapt: orice grup este un subgrup (o submultime care este grup) al unui grup depermutări.

Proprietăti ale grupurilor

• Orice grup are un element neutru unic.• Orice element al unui grup are un invers unic.• Inversul elementului a⋅b este b – 1⋅ a – 1.• Posibilitatea de simplificare: din ab = ac ⇒ b = c si din ba = ca ⇒ b = c.

Grupuri finite

Definitie: Ordinul unui grup finit este numărul de elemente din grup.Pentru orice întreg n ≥ 1 există cel putin un grup de ordinul n: Z/(n) = 0, 1, …,n – 1, întregii cu adunarea modulo n.Cum se poate arăta că întregii cu operatia de adunare modulo n formează ungrup?Primele trei axiome sunt evident satisfăcute:1. Închiderea: 0 ≤ (a + b) mod n < n – 1.2. Elementul neutru este 0 deoarece a + 0 = 0 + a = a.

3. Inversul aditiv al lui a este (n – a) mod n = 000

=>−

aaan

.

Asociativitatea decurge din lema fundamentală a calculului modular.Lemă: Orice formulă întreagă care contine numai operatorii +, − si × poate ficalculată modulo n folosind reduceri modulo n ale oricărei subexpresii.Demonstratie: Lema se demonstrează prin inductie.

Subgrupuri

Definitie: Un subgrup al unui grup G este o submultime H a lui G care este eaînsăsi grup cu operatia din G:• H este închisă la operatia din G.• H contine elementul neutru.• H contine inversul oricărui element din H.Un subgrup propriu este un subgrup altul decât e si G.

38

Page 39: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Numărul de elemente ale unui subgrup propriu H satisface inegalitatea 1 < |H| <|G| în care |S| este numărul de elemente dintr-o multime S, cardinalul aceleimultimi. De fapt, |H| divide pe |G|.Teorema lui Lagrange: Ordinul unui subgrup (propriu) este un divizor (propriu)al numărului |G|.

Exemple de subgrupuri

Două din cele cinci grupuri abeliene de ordinul 16.

G1 = Z16 = 0, 1, …, 15 cu adunarea modulo 16. G1 are numai un subgrup cu 8elemente, multimea întregilor pari 0, 2, …, 14.

G2 = Z24 = 0, 14, vectorii de 4 biti cu adunarea “sau-exclusiv” bit-cu-bit. G2

are mai multe subgrupuri de 8 elemente, inclusiv 0×0, 13 si multimea devectori binari cu 4 componente de paritate pară.Alte grupuri de ordinul 16 sunt Z8×Z2, Z4×Z4 si Z4×Z2×Z2.

Subgrupuri generate de un element

Subgrupul generat de o multime S ⊆ G este cel mai mic subgrup al lui G carecontine toate elementele lui S. Subgrupul generat de un element a este

39

Page 40: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

e, a, a – 1, a⋅a = a2, (a – 1)2 = a – 2, …si toate celelalte puteri negative sau pozitive ale lui a, adică ai | i ∈ Z.Într-un grup finit, unele elemente din e, a, a2, a3, ... apar de două (sau maimulte) ori.Se admite că ai = ai + n, i ≥ 0, n > 0, cu i primul exponent pentru care aparerepetitia si n cel mai mic număr pentru acel i.Multiplicând egalitatea cu a – i = (ai) – 1 se obtine e = an. Astfel, subgrupulgenerat de a este e, a, a2, …, an – 1.

Dacă 0 ≤ i, j < n – 1 atunci ai⋅(aj) – 1 =

<≥

+−

jiajia

nji

ji

.

Subgrupul generat de a “seamănă” cu Zn.Ordinul lui a este ordinul subgrupului generat de a.

Codomenii

Un subgrup H poate fi considerat un subspatiu al lui G, de dimensiune mairedusă. H poate fi deplasat prin translatie dacă se adaugă un element fix gfiecărui element din H. Mulţimile acestea obtinute prin translatie se numesccodomenii.

Definitie: Un codomeniu la stânga al unui subgrup H este g⋅H = g⋅h|h ∈ H.Similar, un codomeniu la dreapta al subgrupului H este H⋅g = h⋅g|h ∈ H.Într-un grup care nu este comutativ, codomeniile la stânga si la dreapta ar puteafi diferite.

Descompunerea în codomenii

Lemă: Orice element al lui G apartine exact unui codomeniu al subgrupului H.Demonstratie: Se discută cazul codomeniilor la stâga. Cazul codomeniilor ladreapta este similar si demonstratia este practic aceeasi.Evident g = g⋅e apartine cel putin unui codomeniu si anume lui g⋅H.Urmează a se dovedi faptul că două codomenii distincte sunt disjuncte.Se presupune că g se regăseste în două codomenii, g1⋅H si g2⋅H. Se poate scrie g= g1⋅h1 = g2⋅h2 cu h1, h2 ∈ H de unde g1 = g2⋅h2⋅h1

– 1.

40

Page 41: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Acum, pentru orice h3 din H, g1⋅h3 = (g2⋅h2⋅h1– 1)⋅h3 = g2⋅(h2⋅h1

– 1⋅h3) ∈ g2⋅H.Faptul acesta spune că elementele lui g1⋅H apartin lui g2⋅H si g1⋅H ⊆ g2⋅H. La felse arată că g2⋅H ⊆ g1⋅H.În concluzie cele două codomenii se suprapun deplin, altfel spus: sunt identice.

Teorema lui Lagrange

Prin proprietatea de simplificare, există o corespondentă biunivocă între H sig⋅H. Astfel fiecare codomeniu are acelasi număr de elemente ca si subgrupulînsusi. Deoarece codomeniile sunt disjuncte, pentru orice grup finit G si oricesubgrup H, |G| = |H|⋅(numărul de codomenii ale lui H).Teorema lui Lagrange: Ordinul oricărui subgrup (propriu) al unui grup finiteste un divizor (propriu) al ordinului grupului.Corolar: Un grup de ordin prim nu are subgrupuri proprii.Corolar: Ordinul unui element oarecare este un divizor al ordinului grupului.Reciproca teoremei lui Lagrange nu este totdeauna adevărată. Fiind dat undivizor d al lui |G| nu există cu necesitate un subgrup al lui G de ordinul d.Totusi, dacă G este abelian, atunci există un subgrup de ordinul d. O reciprocăpartială este teorema lui Cauchy care spune că dacă |G| are un divizor prim patunci G are un element de ordinul p.

Inele

Definitie: Un inel este o multime R cu operatiile binare + si ⋅ care satisfacaxiomele următoare:1. (R, +) este grup comutativ2. Asociativitatea multiplicării: (a⋅b)⋅c = a⋅(b⋅c)3. Distributivitate: a⋅(b + c) = (a⋅b) + (a⋅c), (b + c)⋅a = (b⋅a) + (c⋅a). (Se dau

două relatii de asociativitate deoarece multiplicarea poate fi necomutativă)Iată un exemplu de proprietate “evidentă” care este adevărată pentru toateinelele.Propozitie: În orice inel, 0⋅a = 0.Demonstratie: Conform legii distributivitătii,

0⋅a = (0 + 0)⋅a = (0⋅a) + (0⋅a) ⇒ 0 = 0⋅aprin scăderea lui 0⋅a din ambele părti ale egalitătii.

Inele importante

În acest curs sunt utilizate cu precădere câteva inele:• Inelul întregilor: Z = …, −3, −2, −1, 0, 1, 2, 3, …• Inelul întregilor modulo m: Zm = 0, 1, …, m – 1• Inelul polinoamelor cu coeficienti într-un corp:

F[x] = f0 + f1x + f2x2 + … + fnxn | n ≥ 0, fi ∈ F

41

Page 42: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• Inelul polinoamelor peste un corp modulo un polinom prim p(x) de gradulm

• Matricile n×n cu coeficienti într-un corp.Sunt unele similitudini, dar si diferente între inelul întregilor si inelulpolinoamelor binare.Similitudini:• Elementele pot fi reprezentate prin siruri de biti• Multiplicarea prin algoritmi deplasare-şi-adunare.Diferente:• Aritmetica pentru polinoame nu necesită transfer• Factorizarea polinoamelor binare este facilă, factorizarea întregilor pare

dificilă.

Inele cu proprietăti suplimetare

Prin adăugarea unor proprietăti suplimentare inelelor, se ajunge la corpuri.Inel comutativ: a⋅b = b⋅a.Matricile 2×2 sunt un exemplu familiar de inel necomutativ:

0100 ⋅

0010

=

1000

0001

=

0010 ⋅

0100

Unele subgrupuri ale grupului matricilor 2×2 sunt comutative. Asa suntnumerele complexe

abba ⋅

cddc

=

−+−−−bdacbcad

bcadbdac =

cddc ⋅

abba

Inel cu unitate: Există un element 1 astfel încât 1⋅a = a⋅1 = a.Inel fără element unitate: multimea întregilor 2Z = …, −4, −2, 0, +2, +4, ….Dacă există, elementul unitate este unic.

Inverse si divizori

Inversul sau reciprocul lui a: un element a – 1 astfel încât a⋅a – 1 = a – 1⋅a = 1.Dacă există un invers, ele este unic.Un element cu un invers este numit inversabil. Inversabile în inele familiare:• Întregii ±1.• Polinoame peste un corp: constantele nenule.• Matrici peste un corp: matrici cu determinantul nenul.Divizor: Dacă c = a⋅b atunci a si b sunt divizori ai lui c.Unitătile dintr-un inel sunt divizori ai lui 1.Un element c diferit de unităti este ireductibil ori de câte ori dacă c = a⋅b atunciori a ori b este unitar.Divizori al lui zero: Dacă a⋅b = 0 dar a ≠ 0 si b ≠ 0, atunci a si b sunt divizori ailui zero. Întregii si polinoamele peste un corp nu au divizori ai lui zero.

42

Page 43: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Domeniu de integritate, inel cu împărtire, corp

Domeniu de integritate: un inel comutativ fără divizori ai lui zero.Domeniile de integritate au multe proprietăti în comun cu întregii. De pildă,multimea întregilor este submultime a numerelor rationale,

Q =

≠∈ 0,,| qZqp

q

p

polinoamele sunt o submultime a multimii fractiilor rationale

F(x) =

≠∈ 0)(],[0(),(|

)(

)(xqxFxqxp

xq

xp

Câtul de elemente din orice domeniu de integritate alcătuiesc un corp.Inel cu împărtire sau corp asimetric: inel necomutativ în care orice elementnenul are un invers multiplicativ.Cel mai faimos corp asimetric: cuaternionii lui W.Hamilton – extensie anumerelor complexe obtinută prin adăugarea a încă două elemente imaginare, jşi k, astfel încât

i2 = j2 = k2 = ijk = −1Corp: un inel cu împărtire comutativ.

Corpuri, polinoame si spatii vectoriale

Un corp constă într-o multime F dotată cu operatorii asociativi si comutativi +si ⋅ care satisfac axiomele următoare:4. (F, +) este grup comutativ5. (F – 0, ⋅) este grup comutativ6. Distributivitate: a(b + c) = (ab) + (ac) = ab + ac.Corpurile au 4 operatii aritmetice de bază: +, ⋅ şi inversele lor – si ÷.Exemple de corpuri infinite: numerele rationale Q, numerele reale R, numerelecomplexe C, functiile rationale.Corpurile finite, toate posibile:• GF(p) = întregii cu aritmetica modulo un număr prim p• GF(pm) = polinoamele peste GF(p) cu aritmetica modulo un polinom prim

de gradul m.

Corpul finit GF(p)

Unicul corp finit cu p elemente (p prim) este

Zp = 0, 1, 1 + 1, …, 1

1...11−

++p

= 0, 1, …, p – 1

cu adunarea si multiplicarea mod p. Acest corp este numit GF(p).Asociativitatea si comutativitatea adunării si multiplicării mod p decurge dinproprietătile corespunzătoare din aritmetica întregilor.Singura axiomă care rămâne de verificat este aceea referitoare la existentainveselor multiplicative.

43

Page 44: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Dacă p este un număr prim, atunci gcd(r, p) = 1 pentru orice r pozitiv si maimic decât p.Deoarece gcd(r, p) = ar + bp pentru anumiti întregi a si b,

1 = gcd(r, p) = ar + bp ⇒ ar = 1 – bp ≡ 1 mod pAsadar, reciprocul lui r în GF(p) este a mod p.

Polinoame

Polinoamele peste un corp F, notat F[x] sunt expresii de formaf0 + f1x + f2x2 + … + fnxn, n ∈ N, fi ∈ F

F[x] cu aritmetica uzuală a polinoamelor este un inel cumutativ cu unitate sifără divizori ai lui zero, adică un domeniu de integritate.Unghiuri diferite de vedere a polinomului f(x) cu coeficienti într-un corp F:• Functie: x → f0 + f1x + f2x2 + … + fnxn cu x, f0, f1, …, fn ∈ F• Serie finită de puteri: f0 + f1x + f2x2 + … + fnxn + 0xn + 1 + …• Secventă finită: (f0, f1, …, fn - 1, fn) cu elemente din F.• Serie cu un număr finit de termeni nenuli: (f0, f1, …, fn - 1, fn, 0, 0, ...).Varianta functională nu se potriveste corpurilor finite; polinoamele binare, depildă, sunt extrem de multe dar numai 22 = 4 functii de la 0, 1 la 0, 1.Definitie: Gradul unui polinom este exponentul termenului cu cea mai mareputere a nedeterminatei x. Prin conventie, gradul lui 0 este −∞.Proprietăti ale gradelor polinoamelor:• gradf(x) ± g(x) ≤ max[gradf(x), gradg(x)]• gradf(x)g(x) = gradf(x) + gradg(x)• gradf(x)/g(x) = gradf(x) – gradg(x) cu conditia ca g(x) ≠ 0.

Polinoame prime

Definitie: Un polinom monic este un polinom cu coeficientul principal unitar.Exemplu: x3 + 2x2 + 3x + 4 este monic, 2x3 + 4x2 + 5x + 7 nu este monic.Orice polinom monic nu este nul. Toate polinoamele nenule peste GF(2) suntmonice.Definitie: Un polinom ireductibil este un polinom care nu are divizori proprii(divizori de grad mai mic).Definitie: Un polinom prim este un polinom monic ireductibil.Exemple:• Peste corpul numerelor reale, 2x2 + 1 este ireductibil, dar prim este x2 + 1/2.

• Peste corpul numerelor complexe, x2 + 1/2 =

+

22

ix

ix nu este

prim.De observat că ireductibilitatea depinde de care anume coeficienti sunt admisiîn polinoamele factor.

Algoritmul împărtirii pentru polinoame

44

Page 45: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Pentru orice polinom dempărtit a(x) ∈ F[x] si pentru orice polinom împărtitord(x) ∈ F[x] există un cât unic q(x) si un rest unic r(x) astfel încât

a(x) = q(x)d(x) + r(x), cu gradr(x) < gradd(x)Se pot defini acum multiplii si divizorii polinoamelor întocmai ca la numereleîntregi.Cel mai mare divizor comun al polinoamelor r(x) si s(x), gcd(r(x), s(x)) estepolinomul monic de cel mai mare grad care este divizor comun al celor douăpolinoame si de cel mai mic grad de forma a(x)r(x) + b(x)s(x).Dacă p(x) este prim si 0 ≤ gradr(x) < gradp(x = m atunci gcd(r(x), p(x)) =1.

a(x)r(x) + b(x)p(x) = 1 ⇒ a(x)r(x) mod p(x) = 1 ⇒ a(x) = r(x) – 1 mod p(x).Asadar, r(x) are un invers multiplicativ (un reciproc).Polinoamele peste F de grad inferior lui m cu aritmetica mod p(x) formează uncorp.Dacă F este GF(p), atunci corpul finit GF(pm) constă în m-tuplele din GF(p).

Corpul finit GF(24)

Un polinom prim de gradul 4 peste GF(2) este x4 + x + 1 si mai sunt alte două.Elementele lui GF(24) pot fi reprezentate prin polinoame sau prin siruri de biti(primul bit cel mai semnificaiv). De pildă:

0101 = 1 + x2

1011 = 1 + x + x3

1000 = x3

Puterile mai mari ale lui x pot fi reduse prin operatii cu resturi:x4 = x4 mod (x4 + x + 1) = x + 1x⋅x3 = x + 1 ≡ 0010⋅1000 = 0011

Această unică ecuatie determină deplin multiplicarea în GF(24) definităutilizând această reprezentare.

Tabelul de multiplicare pentru GF(24)

45

Page 46: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Spatii vectoriale

Un spatiu vectorial este o multime V de vectori peste un corp de scalari F, cuun operator binar + pe V si un produs scalar-vector care satisfac axiomele:1. (V, +) este un grup comutativ.2. Există un scalar (1) pentru care 1⋅v = v pentru orice vector v din V.3. Asociativitate: (a1a2)⋅v = a1⋅(a2⋅v).4. Distributivitate: a⋅(v1 + v2) = a⋅v1 + a⋅v2, (a1+ a2)⋅v = a1⋅v + a2⋅v.Revenind la definitia unui corp: o multime F cu operatorii asociativi sicomutativi + si ⋅ care satisfac axiomele:1. (F, +) este un grup comutativ2. (F – 0, ⋅) este un grup comutativ3. Distributivitate: a⋅(b + c) = (a⋅b) + (a⋅c)se observă similitudinea axiomelor pentru spatii vectoriale si pentru corpuri. Uncorp este un spatiu vectorial peste el însusi de dimensiune 1.

Acoperire, bază, independenţă liniară

Definitie: Acoperirea unei multimi de vectori v1, …, vn este multimea tuturorcombinatiilor liniare ale acelor vectori:

a1⋅v1 + … + an⋅vn | a1, …, an ∈ FDefinitie: O multime de vectori v1, …, vn este liniar independentă (LI) dacănici un vector din acea multime nu este o combinatie liniară a celorlalti vectori;echivalent, nu există o multime de scalari a1, …, an nu toti nuli astfel încât

a1⋅v1 + a2⋅v2 + … + an⋅vn = 0.

46

Page 47: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Definitie: O bază pentru un spatiu vectorial este o multime de vectori LI careacoperă spatiul vectorial.Definitie: Un spatiu vectorial este finit dimensional dacă are o bază finită.Lemă: Numărul vectorilor dintr-un set liniar independent este cel mult egal cunumărul de vectori dintr-un set acoperitor.Teoremă: Toate bazele pentru un spatiu vectorial de dimensiune finită auacelasi număr de elemente. Astfel dimensiunea unui spatiu vectorial estebinedefinită.

Coordonatele unui vector

Teoremă: Orice vector poate fi exprimat ca o combinatie linară unică avectorilor din bază.Demonstratie: Se presupune că v1, …, vn este o bază si că

a1⋅v1 + a2⋅v2 + … + an⋅vn = b1⋅v1 + b2⋅v2 + … + bn⋅vn.sunt două reprezentări distincte ale aceluiasi vector în baza dată. Atunci

(a1 – b1)⋅v1 + (a2 – b2)⋅v2 + … + (an – bn)⋅vn = 0Dar vectorii bazei sunt liniar independenti si (a1 – b1) = 0, …, (an – bn) = 0, deunde egalitatea coeficientilor şi unicitatea reprezentării.Se spune că V este izomorf cu spatiul vectorial Fn = (a1, …, an) | ai ∈ F cuadunarea si multiplicarea scalară componentă cu componentă.Teoremă: Dacă V este un spatiu vectorial de dimensiune n peste un corp cu qelemente, atunci numărul de elemente din V este qn.

Produs scalar si complement ortogonal

Definitie: Un subspatiu vectorial (liniar) al unui spatiu vectorial V este osubmultime W care este ea însăşi spatiu vectorial – închisă la adunarea devectori si la multiplicarea cu scalari.Teoremă: Dacă W este un subspatiu al lui V atunci dimensiunea lui W este maimică sau egală cu dimensiunea lui V.Demonstratie: O bază w1, …, wk pentru subspatiul k-dimensional W poate fiextinsă la o bază a lui V prin adăugarea a n – k vectori vk + 1, …, vn.În consecintă relatia între dimensiunile lui W si V este cea din enuntul teoremei.Definitie: Produsul scalar (interior) al vectorilor a si b dintr-un spatiu vectorialV peste un corp F este

(a1, …, an)⋅(b1, …, bn) = a1b1 + … + anbn.Definitie: Două n-tuple sunt ortogonale dacă produsul lor scalar este zero.Definitie: Complementul ortogonal al unui subspatiu W de n-tuple estemultimea W⊥ de vectori ortogonali fiecărui vector din W.

v ∈ W⊥ dacă si numai dacă v⋅w = 0 pentru orice w ∈ WTeoremă (a dimensiunii): Dacă dim(W) = k atunci dim(W⊥) = n – k.Teoremă: Dacă W este un subspatiu al unui spatiu vectorial finit dimensional,atunci W⊥⊥ = W.

47

Page 48: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Transformări liniare si multiplicarea matricilor

Definitie: O transformare liniară pe un spatiu vectorial V este o functie T careaplică vectori din V pe vectori din V astfel încât pentru orice vectori v1, v2 siorice sclari a1, a2

T(a1v1 + a2v2) = a1T(v1) + a2T(v2).Orice transformare liniară T poate fi descrisă de o matrice M de dimensiunilen×n.Coordonatele vectorului T(v1, …, vn) sunt componentele produsului vector-matrice (v1, …, vn)M.Fiecare componentă a lui w = vM este produsul scalar al lui v cu o coloană dinM:

wj = v1m1j + … + vnmnj = ∑=

n

iijimv

1

Iată un alt mod de a privi pe w = vM. Fie mi linia i din M. Atunci(v1, …, vn)M = v1m1 + … + vnmn

Astfel vM este o combinatie liniară de linii ale lui M ponderate cu coordonatelelui v.Dacă v se află printre n-tuple, vM se află printre vectorii subspatiului generat deliniile lui M.

Rangul unei matrici

Definitie: O matrice pătrată este nesingulară dacă are inversă (multiplicativă).Definitie: Determinantul matricii A = (aij) este

det A = ∑ −σ

σσσ

)()( ...)1(11 nn iiii aa

cu σ permutări ale multimii 1, …, n si (−1)σ semnl permutării σ.Teoremă: O matrice este nesingulară dacă si numai dacă determinantul ei estenenul.Definitie: Rangul unei matrici este dimensiunea celei mai mari submatricinesingulare.Rangul unei matrici poate fi calculat eficient astfel:1. Prin eliminarea Gauss se aduce matricea la forma (superior) triunghiulară.2. Rangul este numărul de linii nenule ale matricei în forma (superior)

triunghiulară.Teoremă: Rangul unei matrici este dimensiunea spatiului liniilor, care egaleazădimensiunea spatiului coloanelor. Asadar, numărul de linii liniar independenteeste acelasi cu numărul de coloane liniar independente.

Coduri bloc liniare si coduri grup

48

Page 49: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Definitie: Un cod bloc liniar peste un corp F este un subspatiu liniar al lui Fn cun lungimea blocului pentru acel cod.Definitie: Un cod grup este un subgrup al n-tuplelor peste un grup aditiv.Fapte despre coduri bloc liniare si despre codurile grup.• Într-un cod grup suma si diferenta cuvintelor de cod sunt cuvinte de cod.• Într-un cod bloc liniar si multiplii scalari ai cuvintelor de cod sunt cuvinte

de cod.• Orice cod bloc liniar este un cod grup, dar nu si invers.• Un cod grup binar este cod bloc liniar deoarece singurii scalari sunt 0 si 1.• Codurile cu verificare a paritătii sunt coduri bloc liniare peste GF(2). Orice

cod cu verificarea paritătii este definit de un set de ecuatii binare omogene.• Dacă C este un cod bloc liniar peste GF(Q) de dimensiune k, atunci rata lui

este R = logQQk/n = k/n.

Ponderea minimă

Ponderea Hamming wH(v) este numărul de componente nenule ale lui v.Fapte evidente:• wH(v) = dH(0, v)• dH(v1, v2) = wH(v1 – v2) = wH(v2 – v1)• wH(v) = 0 dacă si numai dacă v = 0.Definitie: Ponderea minimă (Hamming) a unui cod bloc este pondereacuvântului nenul cu cea mai mică pondere:

wmin = w* = minwH(c) : c ∈ C, c ≠ 0Exemple de ponderi minime:Coduri cu verificarea simplă a partitătii: w* = 2Codurile cu repetitie: w* = nCodul Hamming (7, 4): w* = 3 (sunt 7 cuvinte de cod de pondere 3).Enumeratorul ponderilor: A(x) = 1 + 7x3 + 7x4 + x7.Codul produs simplu: w* = 4.

Distanta minimă este egală cu ponderea minimă

Teoremă: Pentru orice cod liniar, d* = w*.Demonstratie: Se dovedeste că w* ≥ d* si w* ≤ d*.(≥) Fie c0 un cuvânt de cod nenul de pondere minimă. Vectorul nul este uncuvânt de cod astfel că

w* = wH(c0) = dH(0, c0) ≥ d*.(≤) Fie c1 ≠ c2 două cuvinte de cod dintre cele mai apropiate. Atunci c1 – c2 esteun cuvânt de cod nenul astfel că

d* = dH(c1, c2) = wH(c1 – c2) ≥ w*.Din cele două inegalităţi demostrate rezultă că d* = w*. Relatia se mentine sipentru codurile grup deoarece în demonstratie se foloseste numai scăderea.

49

Page 50: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Este mai usor a găsi ponderea minimă decât a stabili distanta minimă deoareceminimizarea ponderii este uniparametrică.Căutarea prin calcul: se testează toti vectorii de pondere 1, 2, 3, .., până estegăsit un cuvânt de cod. Şi determinarea distributiei ponderilor unui cod liniareste în general mai facilă decât determinarea distributiei distanţelor acelui cod.

Matricea generatoare

Definitie: O matrice generatoare a unui cod bloc liniar C de lungime a bloculuin si de dimensiune k este o matrice G, k×n, cu liniile alcătuind o bază pentru C.Fiecare cuvânt de cod este o combinatie liniară de linii ale matricii generatoareG.

c = mG = [m0 m1 … mk – 1][ g0T g1

T … gk – 1T]T =

= m0g0 + m1g1 + ... + mk – 1gk – 1.Deoarece G are rangul k, reprezentarea lui c este unică. Fiecare componentă alui c este produsul scalar al vectorului m cu coloana corespunzătoare din G:

cj = m0g0,j + m1g1,j + ... + mk – 1gk – 1,j.Ambele seturi de ecuatii pot fi folosite pentru codare. În ambele cazuri, fiecaresimbol al cuvântului de cod necesită k multiplicări cu constante şi k – 1 adunări.

Matricea de verificare a paritătii

Definitie: Codul dual al lui C este complementul ortogonal C⊥.Definitie: O matrice de verificare a paritătii pentru un cod bloc liniar C este omatrice H de dimensiunile r×n cu liniile care parcurg (span) complementulortogonal C⊥. Evident, r ≥ n – k.Exemplu: G si H pentru codul cu paritate simplă (5, 4).

G =

11000011000011000011

⇒ H = [1 1 1 1 1]

(H este matricea generatoare pentru codul cu repetitie (5, 1) – codul dual).Exemplu: G si H pentru codul Hamming ciclic (7, 4).

G =

1000101010011100101100001011

⇒ H =

111010001110101101001

(Un cod ciclic este un cod bloc liniar pentru care permutarea circulară a unuicuvânt de cod produce tot un cuvânt de cod).

Cuvintele de cod sunt definite de H

50

Page 51: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Teoremă: Dacă C este un cod bloc liniar (n, k) cu matricea de verificare aparitătii H, atunci un n-tuplu c este cuvânt de cod dacă si numai dacă cHT = 0.Demonstratie:(⇒) Se admite că c este cuvânt de cod.Fiecare componentă a produsului cHT este produsul scalar al lui c cu o coloanădin HT, linie în H. Deoarece liniile din H sunt din C⊥, oricare linie din H esteortogonală lui c. Asadar, fiecare componentă a produsului cHT este chi = 0.(⇐) Deoarece liniile lui H mătură (span) C⊥, orice n-tuplu care satisface cHT =0 aparţine complementului ortogonal C⊥. Conform teoremei dimensiunii, C⊥⊥ =C. Asadar, dacă cHT = 0 atunci c apartine codului C.(⇔) În concluzie C constă din vectorii c care satisfac ecuatia cHT = 0.

Matrici generatoare si matrici de verificare a paritătii

Uzual H se alege astfel încât să aibă n – k linii independente si în anasambludimensiunile (n – k)×n.Uneori este convenabil sau elegant ca matricea de verificare a paritătii să aibălinii redundante (de exemplu la codurile BCH binare discutate mai departe).Fiecare linie a lui H corespunde unei ecuatii care trebuie verificată de toatecuvintele de cod.Deoarece fiecare linie a matricei G este un cuvânt de cod, pentru orice matricede verificare a paritătii H,

rkT

nrnk HG ××× =⋅ 0 (r ≥ n – k)

Fiecare 0 din matricea 0k×r corespunde unui cuvânt de cod si unei ecuatii.Invers, dacă GHT = 0 si rangul lui H = n – k atunci H este o matrice deverificare a paritătii.Cum se poate deduce H din G? H s-ar putea afla din G prin găsirea a n – ksolutii liniar independente ale ecuatiei GHT = 0. Ecuatiile acestea sunt usor derezolvat atunci când G este sistematică.

Matrici generatoare sistematice

Definitie: O matrice generatoare sistematică este de forma

G = [P | I] =

−−−−

−−

−−

100

010001

1,10,1

1,10,1

1,00,0

⋯⋯⋮⋱⋮⋮⋮⋱⋮

⋯⋯

⋯⋯

knkk

kn

kn

pp

pppp

Avantajele matricilor generatoare sistematice:• Simbolurile mesajului apar în cuvintele de cod separate, nu amestecate, în

pozitiile cele mai din dreapta, n – k, …, n – 1.• Complexitatea codorului este redusă. Numai simbolurile de verificare

trebuie calculate:cj = m0g0,j + m1g1,j + … + mk – 1gk – 1,j (j = 0, …, n – k – 1)

51

Page 52: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• Ecuatiile codorului pentru simbolurile de verificare produc usor ecuatiile deverificare a paritătii:

cj – cn – kg0,j – cn – k + 1g1,j – … – cn – 1gk – 1,j = 0 (mi = cn – k + i)• Matricea de verificare a paritătii sistematică este usor de găsit: H = [I | –PT].

Matricea de verificare a paritătii sistematică

Fiind dată matricea generatoare k×n sistematică (v.mai sus), matricea deverificare a paritătii (n – k)×n corespunzătoare este

H = [In – k | −PT] =

−−

−−−−

−−−

knkkn

k

k

pp

pppp

,1,0

1,11,0

0,10,0

100

010001

⋯⋯⋮⋱⋮⋮⋱⋮⋮

⋯⋯

⋯⋯

(Semnele minus nu sunt necesare pentru corpurile de caracteristică 2, de pildăpentru GF(2m)).Fiecare linie din H corespunde unei ecuatii satisfăcute de orice cuvânt de cod.Aceste ecuatii spun cum se calculează simbolurile de verificare c0, …, cn – k – 1 înfunctie de simbolurile informationale cn – k, …, cn – 1.

Ponderea minimă si coloanele lui H

Deoarece pentru orice cuvânt de cod c = (c0 c1 … cn – 1), cHT = 0, orice cuvântde cod nenul stabileste o dependenţă liniară între o submultime de linii ale luiHT. Astfel

(cHT)T = HcT = c0h0 + c1h1 + … + cn – 1hn – 1 = 0este o dependenţă liniară între o submulţime de coloane din H.Teoremă: Ponderea minimă a unui cod bloc liniar este cel mai mic număr decoloane liniar dependente ale matricii de control al paritătii.Demonstratie: O submultime de w coloane liniar dependente corespunde unuicuvânt de cod de pondere w. Un set de coloane din H este liniar dependent dacăo coloană este o combinatie liniară de celelalte coloane.Un cod bloc liniar are w* ≤ 2 dacă şi numai dacă o coloană a lui H este unmultiplu al unei alte coloane.Codurile Hamming binare au w* = 3 deoarece H nu are coloane identice.O întrebare de bază: cum se poate stabili o matrice H astfel încât nici ocombinatie de 5 (sau de 7 sau mai multe) coloane să nu prezinte dependenţăliniară?

Calculul ponderii minime

Rangul lui H este numărul maxim de coloane liniar independente. Rangul poatefi determinat într-un timp de O(n3) prin operatii liniare – eliminarea Gauss.Distanta minimă este cel mai mic număr de coloane liniar independente.

52

Page 53: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Aflarea distantei minime este dificilă (NP-hard). Trebuie lucrat cu un numărfoarte mare de submultimi de coloane.Soluţia: se proiectează coduri a căror distantă minimă poate fi verificată caavând limite inferioare dorite.Dimensiunea spatiului coloanelor lui H este n – k. Astfel oricare n – k + 1coloane sunt liniar dependente. Asadar,

d* = w* ≤ n – k + 1pentru orice cod bloc liniar. Aceasta este cunoscută ca limita Singleton.Exercitiu: Să se arate că limita Singleton se mentine pentru orice cod bloc (n,k), nu numai pentru codurile bloc liniare.

Coduri separabile de maximă distantă

Codurile care ating limita Singleton sunt numite coduri separabile de maximădistantă (MDS – maximum-distance separable).Codurile cu repetitie satisfac limita Singleton cu egalitate:

d* = n = (n – 1) + 1 = (n – k) + 1O altă clasă de coduri MDS o reprezintă codurile cu paritate simplă

d* = 2 = 1 + 1 = (n – k) + 1Cele mai cunoscute coduri MDS nonbinare sunt codurile Reed-Solomon pesteGF(Q). Parametrii unui cod Reed-Solomon sunt

(n, k , d*) = (Q – 1, Q – d*, d*) ⇒ n – k = d* – 1.Exercitiu: Arătati că codurile cu repetiţie si codurile cu paritate simplă suntsingurele coduri MDS binare netriviale.

Coduri bloc liniare: recapitulare

• Un cod bloc liniar (n, k) este un subspatiu al unui corp finit Fn. Sumele şidiferentele cuvintelor de cod precum si multiplii cu scalari ai cuvintelorcodului sunt la rândul lor cuvinte de cod.

• Un cod grup peste un grup aditiv G este închis sub operatiile de sumă sidiferentă.

• Un cod bloc liniar (n, k) peste un corp finit F = GF(q) are M = qk cuvinte decod si o rată de k/n.

• Un cod bloc liniar C poate fi definit prin două matrici: o matricegeneratoare G si o matrice de verificare a paritătii H. Liniile matricii G sunto bază pentru C cu C = mG: m ∈ Fk. Matricea H generează pe C⊥, deci C= c ∈ Fn: cHT = 0.

• Ponderea Hamming a unui n-tuplu este numărul componentelor nenule.• Ponderea minimă w* a unui cod bloc este ponderea Hamming a cuvintelor

nenule de pondere minimă.• Distanta minimă a oricărui cod bloc liniar este egală cu ponderea minimă.• Ponderea minimă a unui cod bloc liniar este cel mai mic număr de coloane

ale matricii de verificare a paritătii liniar dependente.

53

Page 54: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Decodarea prin sindrom

Codurile bloc liniare sunt mai simple decât codurile bloc în general:• Codarea este o multiplicare vector-matrice. (Codurile ciclice sunt chiar mai

simple – se foloseste multiplicarea/împărtirea de polinoame).• Decodarea este inerent neliniară. Un fapt: decodoarele liniare sunt foarte

slabe. Totusi, câtiva pasi ai procesului de decodare sunt liniari: calcululsindromului, corectarea finală după ce au fost găsite pattern-ul erorii silocalizarea erorilor, extragerea mesajului estimat din estimatul cuvântuluide cod.

Definitie: Vectorul eroare sau pattern-ul erorilor e este diferenta dintre n-tuplulreceptionat r si cuvântul de cod transmis c.

e = r – c ⇒ r = c + eDe retinut: modelul fizic al zgomotului poate să nu fie de tip aditiv si distributiaprobabilistică a erorii e poate depinde de c. Se admite un model al erorilor decanal determinat de Pr[e].Prin multiplicarea cu H a ecuatiei r = c + e se obtine

s = rHT = (c + e)HT = cHT + eHT = 0 + eHT = eHT.• Sindromul unui cuvânt receptionat r este vectorul s = rHT.• Sindromul lui r (cunoscut la receptie) este egal cu sindromul pattern-ului

erorilor e (necunoscut de receptor dar estimabil).• Decodarea constă în găsirea celui mai plauzibil pattern e astfel încât eHT = s

= rHT. Plauzibilitatea depinde de caracteristicile erorilor.• Pentru canale binare simetrice, cel mai plauzibil pattern însemnă cel mai

mic număr de biti eronati. Decodorul selectează pattern-ul erorilor de ceamai mică pondere care satisface eHT = s.

• Pentru canalele cu evenimente incidentale, pattern-urile de eroare suntplauzibile dacă simbolurile eronate sunt grupate.

Tabloul decodării prin sindrom constă în pasii următori:1. Se calculează sindromul s = rHT pentru n-tuplul receptionat.2. Se stabileste cel mai plauzibil pattern de eroare e cu eHT = s.3. Se estimează cuvântul de cod transmis, c = r – e.4. Se determină mesajul m din ecuatia de codare Gmc ˆˆ = .Numai pasul al doilea necesită operatii neliniare.Pentru valori mici ale diferentei n – k, la pasul al doilea se pot utiliza căutareaîn tabele.Pentru codurile BCH si Reed-Solomon, locatiile erorilor sunt zerourile unoranumite polinoame peste alfabetul canalului.Aceste polinoame locatoare ale erorilor sunt functii liniare de sindrom. Oprovocare: aflarea, apoi rezovarea acestor polinoame.Pasul al patrulea nu este necesar pentru codurile sistematice deoarece m este unfragment din estimatul lui c, imediat lizibil.

54

Page 55: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Decodarea prin sindrom: exemplu

Un cod bloc liniar (8, 4) este definit de matricile sistematice

H =

0111|10001011|01001101|00101110|0001

⇒ G =

1000|01110100|10110010|11010001|1110

Fie două mesaje si rezultatele codării lorm1 = [0 1 1 0] c1 = [0 1 1 0 0 1 1 0]m2 = [1 0 1 1] c2 = [0 1 0 0 1 0 1 1].

Se admite pattern-ul de eroare e = [0 0 0 0 0 1 0 0] care se adaugă ambelorcuvinte de cod. Rezultatul:

r1 = [0 1 1 0 0 0 1 0] s1 = [1 0 1 1]r2 = [0 1 0 0 1 1 1 1] s2 = [1 0 1 1]

Sindromurile sunt aceleasi si se potrivesc pe coloana 6 a lui H. De aceea secorectează bitul 6.Codul din acest exemplu este un cod Hamming expandat, cu enumeratorul deponderi A(x) = 1 + 14x4 + x8.

Matricea standard

Decodarea prin tabele de sindromuri poate fi descrisă la fel de bine utilizândasa-numita matrice standard.Matricea standard a unui cod grup C este descompunerea în codomenii a lui Fn

în raport cu subgrupul C.

0 c2 c3 … cM

e2 c2 + e2 c3 + e2 … cM + e2

e3 c2 + e3 c3 + e3 … cM + e3

… … … ⋱ …eN c2 + eN c3 + eN … cM + eN

1. Prima linie este codul C, cu vectorul nul în prima coloană2. Fiecare din celelalte linii este un codomeniu.3. n-tuplul din prima coloană a unei linii este numit lider de codomeniu.

Liderul de codomeniu se alege uzual a fi pattern-ul de eroare cel maiplauzibil, de pildă pattern-ul de eroare cu cea mai mică pondere.

Decodarea cu matricea standard

55

Page 56: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Un cod bloc liniar (n, k) peste GF(Q) are M = Qk cuvinte de cod.Fiecare n-tuplu apare exact o dată în matricea standard. Asadar, numărul de liniiN satisface relatia

MN = Qn ⇒ N = Qn – k

Toti vectorii dintr-o linie a matricii standard au acelasi sindrom. Există deci ocorespondentă biunivocă între liniile matricii standard şi cele Qn – k valori alesindromului.Decodarea prin utilizarea matricii standard: se decodează cuvântul receptionat rla cuvântul de cod din topul coloanei care-l contine pe r.Regiunea de decodare pentru un cuvânt de cod este coloana cu acel cuvât decod situat pe linia cea mai de sus.Decodorul scade liderul de codomeniu din vectorul receptionat pentru a obtinecuvântul de cod estimat.

Matricea standard si regiunile de decodare

0 Cuvinte de codPondere 1 Bula de rază 1Pondere 2 Bula de rază 2Lider de codomeniu ⋮

Pondere t Bula de rază tPondere peste t Vectori de pondere peste t

Matricea standard: un exemplu

Matricile generatoare si de verificare sistematice pentru un cod bloc liniar sunt

G =

100|011010|101001|110

⇒ H =

011|100101|010110|001

Matricea standard are şase lideri de codomeniu de pondere 1 si unul de pondere2.

000000 001110 010101 011011 100011 101101 110110 111000000001 001111 010100 011010 100010 101100 110111 111001000010 001100 010111 011001 100001 101111 110100 111010000100 001010 010001 011111 100111 101001 110010 111100001000 000110 011101 010011 101011 100101 111110 110000010000 011110 000101 001011 110011 111100 100110 101000100000 101110 110101 111011 000011 001101 010110 011000001001 000111 011100 010010 101010 100100 111111 110001

La http://www.stanford.edu/class/ee387/src/stdarray.pl se găseste un script Perlcare generează matricea standard alăturată. Codul este un cod Hamming scurtat.

56

Page 57: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Matricea standard: recapitulare

Matricea standard este un aranjament al tuturor n-tuplelor după conceptiadecodării.

0 c2 c3 … cM

e2 c2 + e2 c3 + e2 … cM + e2

e3 c2 + e3 c3 + e3 … cM + e3

… … … ⋱ …eN c2 + eN c3 + eN … cM + eN

• Prima linie este codul C cu vectorul nul în prima coloană.• Celelalte linii sunt fiecare câte un codomeniu.• n-tuplul din prima coloană de pe fiecare linie se numeste lider de

codomeniu.• Cuvântul receptionat r este decodat la cuvântul de cod din topul coloanei

care-l contine pe r.• Regiunea de decodare pentru un cuvânt de cod este coloana care contine

acel cuvânt de cod.• Decodorul scade liderul de codomeniu din r pentru a obtine cuvântul de cod

estimat.

Decodarea prin sindrom: recapitulare

Decodarea prin sindrom este apropiată de decodarea cu matricea standard.1. Se calculează sindromul s = rHT pentru n-tuplul receptionat.2. Se găseste cel mai plauzibil pattern de eroare e cu eHT = s. Acest pattern de

eroare este lider al codomeniului care-l contine pe r. 3. Se estimează cuvântul de cod transmis: c = r – e. Cuvântul de cod estimat

c este în topul coloanei din matricea standard care-l contine pe r.4. Se determină mesajul m din ecuatia de codare c = mG. În genral, m = cR

unde R este o pseudoinversă a matricii G. Dacă codul este sistematic, atunciR = [0(n – k)×k | Ik×k]T.

Operatii neliniare reclamă numai pasul 2 si sunt cele mai dificile conceptual.Surprinzător, efortul de calcul este dedicat în cea mai mare măsură evaluăriisindromului.

Limite asupra distantei minime

Distanta minimă a unui cod bloc este măsură a capacitătii unui cod de acontrola erorile.• O distantă minimă mare garantează fiabilitatea în faţa erorilor aleatoare.

57

Page 58: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• Totusi, un cod cu distantă minimă redusă poate fi fiabil dată fiindprobabilitatea redusă de a transmite cuvinte de cod apropiate de altecuvintele de cod.

Distanta minimă se utilizează ca măsură a fiabilitătii unui cod deoarece:• Un singur număr este mai usor de înteles decât o distributie de ponderi sau

de distante.• Capacitătile garantate de a detecta si de a corecta erori sunt, respectiv e = d*

– 1, t = (d* – 1)/2.• Codurile algebrice descrise în aceste pagini sunt limitate de distanta minimă

– aceste coduri nu pot corecta mai mult de t erori chiar dacă există uncuvânt de cod foarte apropiat.

Limita Hamming (sfere împachetate)

Limita Hamming pentru un cod bloc (n, k) atunci când alfabetul canalului are Qcaractere:Un cod corectează t erori dacă si numai dacă raza t în jurul cuvintelor de cod nuconduce la suprapuneri. Asadar

Qk = numărul cuvintelor de cod ≤≤ (volumul spaţiului)/(volumul sferei de rază t) = Qn/V(Q, n, t)

în care V(Q, n, t) este “volumul” (numărul de elemente ale) unei sfere de rază tîn spatiul Hamming de n-tuple peste alfabetul de Q simboluri al canalului:

V(Q, n, t) = 1 + Cn1(Q – 1) + Cn

2(Q – 1)2 + ... + Cnt(Q – 1)t.

După o rearanjare a inegalitătii se obtine o limitare inferioară asupra lui n – k.Qn – k ≥ V(Q, n, t) ⇒ n – k ≥ logQV(Q, n, t)

şi de aici o limitare superioară pentru rata R a coduluiR ≤ 1 – (1/n)logQ(1 + Cn

1(Q – 1) + Cn2(Q – 1)2 + ... + Cn

t(Q – 1)t)

Limitarea Hamming: exemplu

Un pachet de date pentru comunicatii fără fir contine 192 de esantioane audio,16 biti pentru două canale. Numărul de biti de informatie este 192⋅2⋅16 = 6144.Legătura este un canal binar simetric cu o rată brută a erorilor de 10 – 3.

t n – k n Rata codului Pr[> t erori]10 105 6249 0,983 5.4×10 – 02

12 123 6267 0,980 1.2×10 – 02

14 141 6285 0,978 2.2×10 – 03

16 158 6302 0,975 3.0×10 – 04

18 175 6319 0,972 3.5×10 – 05

20 192 6336 0,970 3.3×10 – 06

22 208 6352 0,967 2.6×10 – 07

24 225 6369 0,965 1.8×10 – 08

58

Page 59: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

26 241 6385 0,962 1.1×10 – 09

28 257 6401 0,960 5.5×10 – 11

30 272 6416 0,958 2.5×10 – 12

32 288 6432 0,955 1.0×10 – 13

Câti biti de protectie sunt necesari pentru o comunicare fiabilă?Limitarea Hamming arată că mai mult de 4% din redundanţă este necesarăpentru a atinge o rată rezonabilă a erorilor per bit.

Alte limitări asupra distantei minime

Limita superioară McEliece-Rodemich-Rumsey-Welch (MRRW)R ≤ H(0,5 – )1( δδ − )

în care H este functia entropie binară si δ = d*/n este distanta minimănormalizată.Limita superioară Plotkin pentru coduri bloc binare liniare (exercitiu):

12

2 1*

−⋅≤

k

knd ⇒ d = d*/n ≤ 0,5 pentru k mare.

Limita inferioară Varshamov-Gilbert pentru codurile bloc binare. Dacă d* < n/2atunci există un cod cu distanta minimă d* si rata R care satisface relatia

R ≥ 1 – log2 ∑−

=

1

0

d

i

inC ≈ 1 – H(d*/n) = 1 – H(δ).

Pentru comparatie, limita Hamming este R ≤ 1 – H(δ/2).

Grafice pentru rată în functie de distanta minimă normalizată

59

Page 60: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Limita MRRW este mai tare decât limita Hamming cu exceptia ratelor înalte.Limita Hamming este destul de strânsă. De pildă, pentru a corecta 10 erori la1000 de biti, limita Hamming cere 78 de biti de verificare, dar există un codBCH care are 100 de biti de verificare.

Coduri perfecte

Definitie: Un cod bloc este numit perfect dacă orice cuvânt receptionat este ladistanta t de exact un cuvânt de cod.Alte definitii pentru codurile perfecte:• Sferele de decodare se împachetează perfect• Au decodoare complete limitate prin distantă• Satisface limitarea Hamming cu egalitate.Există clase de coduri perfecte, dar în număr finit:• Codurile fără redundantă (k = n)• Codurile cu repetitie cu lungimea blocului impară: n = 2m + 1, k = 2m, t =

m• Codurile Hamming binare: n = 2m – 1, n – k = m• Codurile Hamming nonbinare: n = (qm – 1)/(q – 1), n – k = m, q > 2• Codul Golay binar: q = 2, n = 23, k = 12, t = 3• Codul Golay ternar: q = 3, n = 11, k = 6, t = 2.Codurile Golay datează din 1949.

Coduri cvasiperfecte

60

Page 61: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Definitie: Un cod este cvasiperfect dacă orice n-tuplu este la distanta t de celmult un cuvânt de cod si este în distanta t + 1 de cel putin un cuvânt de cod.Echivalent, un cod este cvasiperfect dacă sferele de rază t centrate pe cuvintelede cod nu se suprapun în timp ce sferele de rază t + 1 acoperă complet spatiulde n-tuple.Exemple de coduri cvasiperfecte:• Codurile cu repetitie de lungime a blocului pară• Codurile Hamming si Golay expandate cu bit de verificare a paritatătii

generale.Exercitiu: Să se arate că oricare din codurile Hamming purjate (obtinute prinadăugarea unei ecuatii de verificare a paritătii generale) nu este cvasiperfect.

Coduri liniare modificate

Lungimea de bloc proiectată a unui cod bloc liniar este determinată deproprietătile algebrice si combinatoriale ale matricilor si polinoamelor.Lungimea de bloc dorită a unui cod bloc liniar este adesea diferită de ceaproiectată.Exemplu: Lungimea proiectată a unui cod Hamming binar este 2m – 1 (7, 15, 31,…). Numărul de simboluri informationale poate însă să nu fie k = 2m – 1 – m (4,11, 26, …).Sunt şase modalităti de a modifica parametrii unui cod bloc liniar (n, l, n – k)prin creşterea unuia dintre parametri, diminuarea altuia si lăsarea neschimbată aceluilalt.Modificarea cea mai obişnuită este scurtarea codului prin renunţarea lasimboluri informationale.Alte modificări pot fi făcute prin lungire, purjare, augmentare, perforare,expandare.

Coduri scurtate

Scurtare: se menţine n – k, se diminuă k, implicit n.Simbolurile informationale sunt şterse pentru a obtine o lungime de bloc dorită,mai mică decât lungimea de bloc proiectată.Simbolurile informationale lipsă sunt de obicei imaginate a fi la începutulcuvântului de cod si sunt considerate nule.Exemplu: Frame-urile Ethernet sunt pachete de lungime variabilă. Dimensiuneamaximă a pachetului este de cca. 1500 de octeti de informatie sau 12000 de biti.Suma de control ethernet pe 32 de biti provine din codul Hamming culumgimea blocului proiectată de 232 – 1 = 4294967295 biti sau 536870907octeti.Costul codorului/decodorului poate fi redus prin stergerea de simboluri cu grijăalese.

61

Page 62: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Exemplu de cod scurtat

Matricea sistematică de verificare a paritătii pentru un cod Hamming binar (15,11) este

H =

11110101100011110101100011110101111101011001

1000010000100001

Acest cod poate fi scurtat la (12, 8) prin stergerea coloanelor de ponderemaximă, 12 la 14.

H’ =

10101100010101100110101111011001

1000010000100001

Codul scurtat poate corecta erorile pe un singur bit într-un cuvânt de informatiede 8 biti. Fiecare ecuatie de verificare este un “sau-exclusiv” de 5 sau 6 biti,mai putin decât 8 intrări în codul originar.

Coduri lungite

Lungire: se menţine n – k, se măreşte k, în consecinţă n.Sunt introduse simboluri informationale suplimentare şi se includ în ecuatiile deverificare.Lungirea este dificil de realizat fără reducerea distantei minime a codului.Exemplu: Codurile Reed-Solomon extinse, obţinute lungind codurile Reed-Solomon (Q – 1, k) la (Q + 1, k + 2) prin adăugarea a două coloane în stângamatricei H. De la

H =

)2(2

)2(242

22

1

11

Qddd

Q

Q

ααα

αααααα

⋯⋮⋱⋮⋮⋮

⋯⋯

se trece la

H’ =

)2(2

)2(242

22

110

100101

Qddd

Q

Q

ααα

αααααα

⋯⋮⋱⋮⋮⋮⋮⋮

⋯⋯

Coduri purjate (expurgated)

Purjare: se mentine n, se scade k si se majorează n – k.

62

Page 63: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Cuvintele de cod sunt sterse prin adăugarea de ecuatii de verificare, reducânddimensiunea codului. Scopul este cresterea capacitătii de protectie la erori.Exemplu: Codul Hamming (7, 3) purjat.Exemplu: Codul BCH binar (15, 7) corector de două erori se obtine din codulHamming (15, 11) prin adăugarea a patru linii la matricea H

H+ =

111101111011110101001010010100110001100011000100011000110001

Matricea de verificare a partităţii combinată este

=

+ 423936963

14131232

11

αααααααααααα

⋯⋯

HH

Se poate verifica independenţa liniară a oricăror 4 coloane peste GF(2) astfel căd* ≥ 5.

Coduri augmentate

Augmentare: Se menţine n, se măreste k si se micşorează n – k.Se adaugă cuvinte de cod prin suplimentarea bazei cu vectori noi – linii noi alematricei generatoare. Această actiune face să crească rata codului în timp ceposibil face să scadă distanta lui minimă.Exemplu: Matricea generatoare a codului Reed-Muller R(r, m) este definită prinaugmentare:

G = [G0 G1 … Gr]T

Submatricea Gi are Cmi linii si n = 2m coloane. Numărul bitilor de informatie

estek = Cm

0 + Cm1 + … + Cm

r

Se poate arăta că ponderea minimă este 2m – r.Codurile Reed-Muller au o gamă largă de distante minime si de ratecorespunzătoare. Codurile cu rata 1/2 au d* = n ceea ce este în esentă optim.

Coduri expandate

Expandare: Se mentine k, se măresc n – k si n.Se adaugă simboluri de verificare noi si ecuatiile resprective.Exemplu: Codul Hamming expandat se obtine prin adăugarea unui bit deparitate generală; se creste prin aceasta distanta minimă de la 3 la 4.Constatare: Dacă distanta minimă a unui cod bloc liniar binar este impară, bitulde paritate generală sporeste distanta minimă cu o unitate la numărul parimediat următor.Exemplu: Codul Golay binar este un cod (23, 12) cu distanta minimă 7, este uncod perfect corector de trei erori. Adăugarea unui bit de paritate generală

63

Page 64: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

modifică distanta minimă la 8. Codul Golay binar, cu parametrii (24, 12, 8) afost utilizat pentru protectie la erori pe navele spatiale Voyager I si Voyager II.

Coduri perforate

Perforare: Se mentine k la aceeasi valoare, se diminuă n – k si n.Stergerea unor simboluri de verificare poate conduce la o reducere a distanteiminime. Cu toate acestea, codurile perforate pot corecta marea majoritate aerorilor până la distanta minimă a codului originar.Perforarea poate reduce distanta minimă dar nu reduce semnificativ fiabilitateacodului. Codurile perforate pot fi obtinute din codurile simple care auredundanţă în exces.Exemplu: Se poate perfora un cod produs simplu (9, 4) care are d* = 4 pentru aobtine un cod (8, 4) cu d* = 3. La expandarea codului perforat prin adăugareaunui bit de paritate generală, se recuperează codul produs simplu.Decodoarele cu decizie soft si decodoarele corectoare de erori-si-ştergeri pottrata simbolurile de verificare lipsă ca simboluri nesigure.

Modificări ale codurilor bloc liniare (sumar)

Se schimbă doi din cei trei parametri ai codului bloc, n, k, n – k.Scurtare: se sterg simboluri ale mesajului

n – k fixat, k si n diminuateLungire: se adaugă simboluri ale mesajului

n – k fixat, k si n majoratePerforare: se şterg simboluri de verificare

k fixat, n – k si n diminuateExpandare: se adaugă simboluri de verificare

k fixat, n – k si n majoratePurjare: se sterg cuvinte de cod, se adaugă ecuatii de verificare

n fixat, k diminuat, n – k majoratAugmentare: se adaugă cuvinte de cod, se şterg ecuatii de verificare

n fixat, k majorat, n – k diminuatÎntr-o imgine:

Corpuri finite: motivatie

k simboluri informaţionale n – k simboluri de verificare

purjare

augmentare

lungire

scurtare

expandare

perforare

64

Page 65: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Codurile bloc algebrice tratează fiecare simbol al canalului ca un element alunui corp finit. Un codor liniar multiplică simbolurile cu constante siacumulează produsele pentru a genera fiecare simbol cuvânt de cod. Calcululsindromului utilizează de asemenea multiplicarea-acumularea. Singurelecunostinte despre corpuri necesare la detectarea erorilor se referă lamultiplicarea si adunarea elementelor.Sunt totusi necesare mai multe cunostinte despre structura corpurilor pentru aproiecta coduri bune, pentru a implementa eficient unităti aritmetice peoperatiile care structurează corpul, pentru a dezvolta decodoare pentru codurilebazate pe polinoame (codurile ciclice).În cele ce urmează sunt disecate corpurile finite.

Corpuri finite: sumar executiv

• Un corp finit cu q elemente este notat cu GF(q) (Galois field, după EvaristeGalois (1811-1832) un matematician foarte bun, mult mai puţin bun trăgătorla ţintă).

• Dacă p este un număr prim, atunci aritmetica în GF(p) coincide cuaritmetica cu numere întregi modulo p.

• Orice corp finit GF(q) = GF(pm) este un spaţiu vectorial de m-tuple pesteGF(p) cu adunarea modulo p pe componente, cu multiplicarea de polinoamemodulo un polinom prim.

• Orice element nenul din GF(q) este de un ordin multiplicativ care-l dividepe q – 1.

• Grupul multiplicativ din GF(q) este ciclic: orice element nenul este deforma αi cu α un element primitiv si 0 ≤ i ≤ q – 2.

• Multiplicarea si împărtirea pot fi făcute prin adunarea sau scăderea delogaritmi.

• xq – 1 – 1 = ∏−∈

−0)(

)(qGF

β = ∏ )(xfβ cu fβ(x) polinoame prime de

grade egale cu divizori ai lui m, dimensiunea lui GF(q).

Caracteristica corpului

Caracteristica unui corp este numărul pozitiv cel mai mic de unităti careadunate dau zero (dacă nici o astfel de sumă nu dă zero, caracteristica se zice căeste zero).Teoremă: Caracteristica unui corp finit este un număr prim.Demonstratie: Se face prin reducere la absurd. Fie rs cel mai mic număr pozitivde unităti care adunate dau zero, cu r > 1 si s > 1. Prin asociativitate

rs

1...1 ++ = r

1...1 ++ + r

1...1 ++ + … + r

1...1 ++ = s

rr ++ ...

cu termenii din suma intermediară de sume în număr de s. Prin distributivitate

65

Page 66: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

rs = s

rr ++ ... = r( s

1...1 ++ ) = 0

Dar r ≠ 0, asa încât rs = 0 implică s = 0, adică

s

1...1 ++ = s = 0

cu alte cuvinte, o sumă de s unităti este nulă, ceea ce contrazice presupunerea cănumărul rs este cel mai mic număr de unităti de sumă nulă.

Întregii unui corp

În orice corp, subgrupul aditiv generat de 1 este denumit întregii corpului. Într-un corp finit F de caracteristică p, întregii corpului sunt

0, 1, 1 + 1, 1 + 1 + 1, …, 1

1...1−

++p

Aritmetica este aceeasi cu aritmetica întregilor modulo p, deoarece orice sumă aunui multiplu de p unităti este zero. De asemenea, întregii corpului suntmultime închisă la împărtire deoarece orice întreg nenul al corpului are unreciproc modulo p.De aceea întregii corpului sunt un subcorp al lui F. Ei formează cel mai micsubcorp deoarece orice corp trebuie să contină pe 1 si toate sumele si produselede unităti.Orice corp F este un spatiu vectorial peste subcorpul GF(p) al întregilor lui F.Astfel dacă m este dimensiunea lui F peste GF(p) atunci F are pm elemente. Deunde:Teorema: Un corp finit de caracteristică p are pm elemente.Un corp de caracteristică zero este infinit. Întregii lui se comportă ca întregiiobişnuiti si numerele rationale – câturile întregilor corpului – sunt cel mai micsubcorp.

Aritmetica în corpuri finite

Fie F un corp finit de caracteristică p. F este un spatiu vectorial peste GF(p).Elementele lui F au reprezentări în coordonate ca m-tuple peste GF(p). Se alegeo bază arbitrară.Adunarea este imediată. Dacă a = (a0, …, am – 1) si b = (b0, …, bm – 1) atunci sumaeste a + b = (a0 + b0, …, am – 1 + bm – 1). Se adună pur si simplu componentele înGF(p).Multiplicarea este întrucâtva mai dificilă. De pildă

(1, 0, …, 0)⋅(1, 0, …, 0) = ),...,,( 001

001

000 −mmmm

cu 00im ce de a i-a coordonată a produsului primului vector cu el însusi.

O descriere completă a multiplicării ar putea necesita m3 componente scalare,jk

im , cu jkim coordonata a i-a a produsului vectorilor unitate ej si ek.

O bază potrivit aleasă pentru F peste GF(p) simplifică mult multiplicarea:baza = 1, α, …, αm – 1 ⇒ αi⋅αj = αi + j (0 ≤ i, j ≤ m – 1)

66

Page 67: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Primele 2m – 1 puteri, 1, α, α2, …, α2m – 2 determină multiplicarea în F.

Corpul finit GF(4)

Fie GF(4) = 0, 1, β, δ, în care 0, 1 sunt elementele neutre pentru adunare simultiplicare.Axiomele corpurilor permit numai operatiile din aceste tabele:

+ δβ10 × δβ10

δβ10

0110

0110

βδδβ

βδδβ

δβ10

βδδβ

δβ

1010

100000

Orice element nenul din grupul aditiv are ordinul 2, adică este propriul săuinvers (opus).Grupul multiplicativ de dimensiune 3 trebuie să fie ciclic deoarece 3 este prim.Atât β cât si δ sunt elemente generatoare. De observat că β si δ sunt indistincte:schimbând între ele aceste două elemente tabelele de operatii rămân aceleasi.Cele două operatii sunt distributive, dar distributivitatea lor nu este evidentă.Pentru a întelegecorect tabelele de operatii, este necesară o interpretare oarecumdiferită.O modalitate bună de a defini corpul finit GF(4) o oferă polinoamele (binare)peste GF(2) luate modulo un anumit polinom de gradul 2 peste GF(2).Singurul polinom prim de gradul 2 peste GF(2) este x2 + x + 1. Alte polinoamede gradul 2 sunt factorizabile cu factori proprii (de grad inferior): x2 = x⋅x, x2 +x = x(x + 1), x2 + 1 = (x + 1)2

Asadar GF(4) = 0, 1, x, x + 1 cu aritmetica modulo x2 + x + 1.Tabelele de operatii pentru GF(4), care utilizează reprezentarea polinomială:

+ 0 1 x x + 1 × 0 1 x x + 1

1

10

+xx

011101

101110

xxxx

xxxx

++

++

1

10

+xx

xxxx

xx

110110

1100000

++

+

Prin substitutiile x → β, x + 1 → δ, se obtin tabelele de mai devreme.Aritmetica modulo x2 + x + 1 este echivalentă cu înlocuirea tuturor aparitiilorlui x2 + x + 1 cu 0. În particular, peste GF(2)

x2 + x + 1 = 0 ⇔ x2 = x + 1Astfel x2 si toate puterile mai mari ale lui x modulo x2 + x + 1 pot fi înlocuite cupolinoame de grad cel mult 1.Orice element nenul din GF(4) este o putere a lui x:

GF(4) = 0, 1, x, x2 = x + 1

67

Page 68: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Altfel spus, x este un element primitiv.Definitie: Un element primitiv al unui corp finit este orice element α caregenerează grupul multiplicativ al corpului.GF(4) este mai usor de înteles dacă se înlocuieste nedeterminata x cu α. Atunciorice element din GF(4) este o combinatie liniară a vectorilor din bază, 1 si α:

GF(4) = 0, 1, α, α + 1Asadar, multiplicarea în GF(4) este determinată de produse de 1 si α.Produsele vectorilor din bază definesc multiplicarea (o functie biliniară):

× 1 α

× 0 1 α α + 1

α1

11

+ααα

1

10

+αα

αααα

αα

110110

1100000

++

+

Polinoamele binare în α de grad inferior lui 2 pot fi reprezentate prin vectoribinari (primul bit cel mai putin semnificativ), a0 + a1α = (a0, a1).Tabelele de multiplicare în GF(4) binar (primul bit este cel mai puţinsemnificativ) si în cuaternar:

× 11011000

× 3210

11011000

01101100101101001101100000000000

3210

2130132032100000

Notă: în tabelele de mai sus 2 ≡ β si 3 ≡ δ.

Aritmetica în corpul finit în GF(8)

Pentru a defini corpul finit GF(8) este necesar un polinom f(x) prim de gradul 3peste GF(2).În acest polinom, coeficientul liber f0 trebuie să fie 1, altminteri f(x) ar fidivizibil cu x.Paritatea coeficientilor ar trebui să fie impară, altminteri f(x) ar fi dixizibil cu x– 1 deoarece

(x – 1)|f(x) ⇔ f(1) = 0 ⇔ f0 ⊕ f1 ⊕ f2 ⊕ f3 = 0Dintre cele 8 polinoame monice de gradul 3, două satisfac cerinţele de mai sus:x3 + x + 1 si x3 + x2 + 1.Ambele sunt prime deoarece nu au factori de gradul 1 (adică pe x sau pe x + 1).Oricare poate fi utilizat pentru a defini aritmetica din GF(8). Tabelele cuartimetica sunt întrucâtva mai simple când se utilizează x3 + x + 1.

68

Page 69: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Când GF(8) este reprezentat ca polinoame binare modulo x3 + x + 1, ecuatiacheie este

α3 + α + 1 = 0 ⇒ α3 = α + 1în care elementul α este polinomul x.

Puteri în GF(8)

Puterile lui α pot fi calculate folosind ecuatiaα3 + α + 1 = 0 ⇒ α3 = α + 1

În tabelul de mai jos, reprezentările pe 3 biti ale elementelor corpuluimultiplicativ au ca prim bit pe cel mai putin semnificativ.

i α i

0 100 1 11 010 2 α2 001 4 α 2

3 110 3 α 3 = α + 14 011 6 α 2 + α5 111 7 α 3 + α 2 = α 2 + α + 16 101 5 α 3 + α 2 + α = α 2 + 17 100 1 α 2 + α = 1

Orice element nenul din GF(8) este o putere a lui α, α este un element primitiv.Orice element din GF(8) este o combinatie liniară binară de 1, α, α2.

Bază pentru GF(8)

GF(8) poate fi reprezentat sub forma combinatiilor liniare binare de 1, α, α2.Multimea 1, α, α2 este liniar independentă peste GF(2) deoarece oricedependenţă liniară

f0⋅1 + f1⋅α + f2⋅α2 = 0ar corespunde unui polinom f(x) de gradul 2 peste GF(2) astfel încât f(α) = 0.Dar polinomul minimal al lui α este x3 + x + 1.GF(8) are ca elemente cele 8 combinatii liniare ale acestor vectori din bază.Tabela de multiplicare este determinată de produsele vectorilor din bază:

αi⋅αj = αi + j (0 ≤ i, j ≤ 2) sau αi (i = 0, …, 3)Multiplicarea este asociativă si distributivă fată de adunare deoarece estederivată din multiplicarea de polinoame modulo x3 + x + 1.Multiplicarea este inversabilă deoarece polinomul definitor x3 + x + 1 este prim.Reciprocele pot fi găsite în tabele de puteri ale lui α deoarece α – i = α7 – i.

Tabele de operatii în GF(8)

69

Page 70: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Elementele lui GF(8) pot fi reprezentate prin cifrele octale 0, ..., 7:1 = 100 = 1, α = 010 = 2, α2 = 001 = 4, α3 = 110 = 3, …

cu bitul cel mai putin semnificativ la stânga.Tabelele de operatii în GF(8):

+ 76543210 × 76543210

76543210

0123456710325476230167453210765445670123547610326745230176543210

76543210

3461257042351760637241501526734021475630571364207654321000000000

Multiplicarea este determinată de 2⋅4 = 3 ⇔ α⋅α2 = α3 = α + 1.Important: simbolurile 0, 1, …, 7 pentru elementele din GF(8) sunt simpleabrevieri pentru reprezentarea prin vectori de 3 biti. Elementele lui GF(8) nu secomportă ca întregii.

Aritmetica corpului finit GF(9)

Cel mai mic corp nonbinar de dimensiune mai mare decât 1 este GF(32) =GF(9). GF(9) poate fi definit de un polinom prim pătratic peste GF(3).Sunt trei polinoame prime de gradul al doilea peste GF(3):

x2 + 1, x2 + x + 2, x2 + 2x + 2Acestea sunt prime deoarece 0, 1, 2 nu sunt zeroruri si nu apar în factori liniari.GF(9) ar putea fi definit utilizând x2 + 1. Dacă α2 + 1 = 0 atunci α este rădăcinapătrată a lui –1, un element “imaginar” cu proprietăti similare lui i din numerelecomplexe.Dar α nu este o primitivă deoarece α4 = (α2)2 = (–1)2 = 1.Celelalte două polinoame sunt polinoame primitive. Zerourile lor sunt elementeprimitive si puterile lor generează elementele nenule ale lui GF(9).

Puteri în GF(9)

Fie a un zero al lui x2 + 2x + 2. Atunciα2 + 2α + 2 = 0 ⇒ α2 = – 2α – 2 ⇒ α2 = α + 1.

(Aceeasi expresie a fost folosită pentru GF(4), dar aici aritmetica scalarilor estemodulo 3).Puterile lui α calculate utilizând definitia:

i α i

0 10 1

70

Page 71: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

1 01 α2 11 α 2 = α + 13 12 α 2 + α = 2α + 14 20 2α 2 + α = 3α + 2 = 25 02 2α6 22 2α 2 = 2α + 27 12 2α 2 + 2α = 4α + 2 = α + 28 10 α 2 + 2α = 3α + 1 = 1

Cum era de asteptat, α 8 = 1. Ordinul multiplicativ al lui α este 8.

Multiplicarea si împărtirea în GF(9)

Produsul elementelor a = a0 + a1α si b = b0 + b1α din GF(9):(a0 + a1α)(b0 + b1α) = a0b0 + (a0b1 + a1b0)α + a1b1α2 =

= a0b0 + (a0b1 + a1b0)α + (a1b1α + a1b1) = (a0b0 + a1b1) + (a0b1 + a1b0 + a1b1)α(Expresie folosită si pentru GF(4), dar aici multiplicările si adunările suntmodulo 3).

(a0, a1)⋅(b0, b1) = (a0b0 + a1b1, a0b1 + a1b0 + a1b1)Exercitiu: Aflati formula pentru reciproca (a0 + a1α) – 1 = (b0 + b1α).Indicatie: Una din tratările posibile: rezolvarea sistemului în b0 si b1

a0b0 + a1b1 = 1a1b0 + (a0 + a1)b1 = 0

Aritmetica în corpul finit GF(16)

Există trei polinoame prime de gradul 4 peste GF(2):x4 + x + 1, x4 + x3 + 1, x4 + x3 + x2 + x + 1

Cel mai simplu este x4 + x + 1. Fie α un element care satisface α4 + α + 1 = 0⇒ α4 = α + 1.Puterile lui α pot fi coloanele unei matrici de verificare a paritătii, în variantasistematică.

H =

111101011001000011110101100100001111010110010111010110010001

În GF(16), folosind α4 = α + 1, componentele produsului y = a⋅b sunt:y0 = a0b0 + a1b3 + a2b2 + a3b1

y1 = a0b1 + a1b0 + a1b3 + a2b2 + a3b1 + a2b3 + a3b2

y2 = a0b2 + a1b1 + a2b0 + a2b3 + a3b2 + a3b3

y3 = a0b3 + a1b2 + a2b1 + a3b0 + a3b3

Teorema fundamentală a algebrei

71

Page 72: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Lemă: Fie f(x) un polinom peste GF(q) ⊆ GF(Q). Un element β din GF(Q) esteun zero al lui f(x) dacă si numai dacă x – β este un divizor al lui f(x) pesteGF(Q).Demonstratie: Prin algoritmul împărtirii

f(x) = q(x)(x – β) + r(x), cu gradr(x) < grad(x – β) = 1Astfel gradr(x) ≤ 0, adică r(x) este un polinom constant, r(x) = r0. Asadar

r0 = r(β) = f(β) – q(β)(β – β) = f(β)si f(x) este un multiplu de x – β dacă si numai dacă f(β) = 0.Lemă: Un polinom f(x) de gradul n peste un corp are cel mult n zerouri.Demonstratie: Fiecare zero al lui f(x) corespunde unui factor liniar al lui f(x).Deoarece gradf(x) = n, există cel mult n factori liniari, aşadar cel mult nzerouri distincte.Aceasta trece drept teorema fundamentală a algebrei. Varianta lui Gauss: oecuatie polinomială cu coeficienti complecşi si gradul cel putin 1 are cel putin orădăcină complexă.

Exemple de factori si de zerouri

Exemplu: Polinoame de gradul 2 peste GF(2):x2 = x⋅x, x2 + 1 = (x + 1)(x + 1), x2 + x = x(x + 1), x2 + x + 1

Singurul polinom prim de gradul 2 peste GF(2) are zerourile în GF(4) = 0, 1,β, δ

(x + β)(x + δ) = x2 + (β + δ)x + βδ = x2 + x + 1Dacă un polinom este prim depinde de ce coeficienti sunt admisi în factori. Exemplu: GF(24) poate fi reprezentat prin polinoame în α de grad inferior lui 4,cu α un zero al polinomului prim peste GF(2) x4 + x + 1.Asadar x + α este un factor al lui x4 + x + 1 peste GF(24).Un alt zero este α2:

(α2)4 + α2 + 1 = (α4 + α + 1)2 = 02 = 0.Similar, α4 = (α2)2 si α8 = (α4)2 sunt zerouri. Peste GF(16) există factorizarea

x4 + x + 1 = (x + α)(x + α2)(x + α4)(x + α8).

GF(Q) constă din zerourile lui xQ – x

Ordinul grupului multiplicativ al lui GF(Q) este Q – 1.Fie e ordinul lui β din GF(Q). Conform teoremei lui Lagrage, e|(Q – 1) astfel că

βQ – 1 = βe⋅(Q – 1)/e = (βe)(Q – 1)/e = 1(Q – 1)/e = 1.Acest fapt arată că orice element nenul din GF(Q) este un zero pentru xQ – 1 – 1.Cazul special al lui 0 necesită un factor în plus, x – 0, care conduce la

x(xQ – 1 – 1) = xQ – xAcest polinom are cel mult Q zerouri. Asadar, GF(Q) coincide cu multimeazerourilor lui xQ – x.

72

Page 73: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Similar, pentru orice subcorp, GF(q) este multimea zerourilor lui xq – x. Seobtin factorizările peste GF(Q).

xQ – x = ∏∈

−)(

)(QGF

β , xq – x = ∏∈

−)(

)(qGF

β

xQ – x = x(xQ – 1 – 1) = x(xq – 1 – 1)(xQ – 1 – (q – 1) + … + xq – 1 + 1)În ultima expresie intervine faptul că (q – 1)|(Q – 1).

Elemente primitive

Fapt: Grupul multiplicativ al corpului finit GF(q) este ciclic de ordinul q – 1.Demonstratia face uz de lema asupra grupurilor: dacă pentru orice divizor d alordinului unui grup sunt cel mult d elemente de un ordin care-l divide pe d,atunci grupul este ciclic.Definitie: Un element primitiv al lui GF(q) este un generator al grupuluimultiplicativ.Fie α un element primitiv al lui GF(q). Toate elementele primitive sunt α i cugcd(i, q – 1) = 1.• 1 = ai + b(q – 1) ⇒ α = αai + b(q – 1) = αai = (αi)a

• Dimpotrivă, dacă gcd(i, q – 1) = d > 1 atunci ordinul lui αi este (q – 1)/d < q– 1.

Dacă q – 1 este prim atunci sunt q – 2 elemente primitive. Acest fapt esteposibil numai pentru q = 3 si pentru q = 2m cu m impar.GF(4), GF(8), GF(16), GF(32) au respectiv 2, 6, 8, 30 de elemente primitive.În general, GF(q) are φ(q – 1) elemente primitive.

Functia φ a lui Euler: revedere

Functia lui Euler φ(n) este numărul de întregi între 0 si n care sunt relativ primicu n.

Formula pentru φ(n) poate fi pusă în relatie cu factorizarea n = tet

ee ppp ...2121 :

• Dacă p este prim atunci φ(n) = p – 1 (1, 2, …, p – 1 sunt coprime cu p)• Dacă p este prim atunci φ(pe) = pe – pe – 1 (numai multiplii lui p nu sunt

coprimi cu p)• φ(n) este o functie multiplicativă: dacă gcd(r, s) = 1 atunci φ(rs) = φ(r)φ(s).Prin combinarea acestor adevăruri se obtine formula:

=−

=−=−

=

∏=

generalîn...)1(

primunuiaputereo)1(prim1

)(

2121

1

1

1

ti et

eet

i

epi

ee

pppnpp

pnpppnp

Polinoame minimale

73

Page 74: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Fie β ∈ GF(Q) si GF(q) ⊆ GF(Q).Definitie: Polinomul minimal al lui β peste GF(q) este polinomul monic f(x)peste GF(q) de cel mai mic grad astfel încât f(β) = 0.Exemplu: GF(4) = 0, 1, β, δ. Polinoamele minimale peste GF(2) sunt

0 → x, 1 → x + 1, β, δ → x2 + x + 1Teoremă: Se presupune că GF(q) ⊆ GF(Q) cu Q = qm.1. Orice β din GF(Q) are un polinom minimal peste GF(q) f(x) de grad cel

mult m.2. Polinomul minimal este unic.3. Polinomul minimal este prim peste GF(q).4. Dacă g(x) este un polinom oarecare peste GF(q) astfel încât g(β) = 0 atunci

f(x)|g(x).Orice β din GF(Q) este un zero al polinomului xQ – x, ai cărui coeficienti (1, 0,– 1) apartin lui GF(q). Astfel polinomul minimal există si are gradul cel mult Q.Demonstratie:1. GF(Q) este un spatiu vectorial de dimensiune m peste GF(q). Asadar, orice

set de m + 1 elemente este dependent liniar peste GF(q). În particular, seconsideră primele m + 1 puteri ale lui β: 1, β, β2, …, βm. Există în GF(q)m + 1 scalari f0, f1, …, fm, nu toti nuli, astfel încât

f0⋅1 + f1⋅β + … + fm⋅βm = 0 = f(β).Cu alte cuvinte, β este un zero al polinomului

f(x) = f0 + f1x + … + fmxm

un polinom nenul peste GF(q) de grad cel mult m.Asadar, polinomul minimal al lui β are gradul cel mult m.

2. Dacă f1(x) si f2(x) sunt polinoame distincte de acelasi grad, atuncif(x) = f1(x) – f2(x)

ar fi un polinom nenul de grad mai mic. Deoarece f(β) = 0, apare ocontradictie.

3. Dacă f(x) = f1(x)f2(x) are divizori proprii, atuncif(β) = f1(β)f2(β) = 0 ⇒ f1(β) = 0 sau f2(β) = 0

ceea ce contrazice minimalitatea lui f(x).4. Prin algoritmul împărtirii,

g(x) = q(x)f(x) + r(x), cu gradr(x) < gradf(x)Dacă g(β) = 0 atunci

r(β) = g(β) – q(β)f(β) = 0Dacă r(x) ≠ 0 atunci f(x) nu este minimal. Asadar r(x) = 0 ⇒ f(x)|g(x).

Punctul 4 semnifică faptul că polinoamele minimale sunt minimale într-un sensmai tare decât cel mai mic grad. De observat că punctul 2 decurge din acestpunct 4.

Elemente si polinoame primitive

Fie α un element primitiv pentru GF(Q) si fie GF(q) un subcorp al lui GF(Q).

74

Page 75: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Fie f(x) un polinom minimal al lui α peste GF(q) si m = gradf(x).• Orice element nenul al lui GF(Q) este o putere a lui α:

GF(Q) = 1, α, α2, …, αQ – 2• Orice element al lui GF(Q) este un polinom în α de grad cel mult m – 1.

b = b0 + b1α + b2α2 + … + bm – 1αm – 1

Multiplicarea unui polinom în α cu α utilizează ecuatia f(α) = 0:α(b0 + b1α + b2α2 + … + bm – 1αm – 1) =

= b0α + b1α2 + … + bm – 2αm – 1 – bm – 1(f0 + … + fm – 1αm – 1)• Un polinom primitiv este polinomul minimal al unui element primitv.• O definite echivalentă: f(x) peste GF(q) de gradul m este primitiv dacă

ordinul lui f(x) este qm – 1, adică cel mai mic n astfel încât xn = 1 mod f(x)este n = qm – 1.

Conjugate

Definitie: Conjugatele lui β peste GF(q) sunt zerourile polinomului minimal allui β peste GF(q), inclusiv β.Exemplu: GF(4) = 0, 1, β, δ. β si δ = β + 1 sunt conjugate deoarece

(x + β)(x + δ) = x2 + (β + δ)x + βδ = x2 + x + 1Exemplu: GF(8) = 0, 1, α, 1 + α, α2, …, 1 + α + α2, cu α3 = α + 1.Polinomul minimal al lui α este f(x) = x3 + x + 1. Un alt zero al lui f(x) este α2:

f(α2) = (α2)3 + α2 + 1 = (α3 + α + 1)2 = 0Astfel α2 si α4 = α + α2 sunt conjugatele lui α, ceea ce dă factorizarea

x3 + x + 1 = (x + α)(x + α2)(x + α4) = (x +

010

)(x +

100

)(x +

110

)

Triplele din reprezentările αi au în prima linie bitul cel mai putin semnificativ.Conjugatele sunt de nedistins din punct de vedere algebric. De pildă numărulcomplex +i are coodonatele (0, 1) numai prin conventie.

Coeficienti binomiali si numere prime

Lemă: Dacă p este prim si 0 < k < p atunci p este un divizor al numărului Cpk.

Demonstratie:Cp

k = [p(p – 1)(p – 2)…(p – k + 1)]/k! = p⋅[(p – 1)(p – 2)…(p – k + 1)]/k!Numitorul k! divide pe p(p – 1)(p – 2)…(p – k + 1) si este relativ prim cu p.Asadar k! divide pe (p – 1)(p – 2)…(p – k + 1). De aici rezultă că Cp

k estemultiplu al lui p.Lemă: În GF(pm), (a + b)p = ap + bp.Demonstratie: Din dezvoltarea binomială

(a + b)p = ap + ∑−

=

−1

1

p

k

kkpkp baC + bp = ap + bp

75

Page 76: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

deoarece Cpk este multiplu de p pentru 0 < k < p si în GF(pm) multiplii de p sunt

zero.Corolar: În GF(2m), (a + b)2 = a2 + b2. Cu alte cuvinte, ridicarea la pătrat este ooperatie liniară.Corolar: În GF(q) cu q = pm rezultă (a + b)q =

mpba )( + = mpa +

mpb = aq +bq.

Conjugatele lui β

Teoremă: Conjugatele lui β peste GF(q) sunt β, qβ , 2qβ ,

1−rqβ , cu r cel maimic întreg pozitiv pentru care

rqβ = β.

Observatie: mqβ = Qβ = β, asa încât r ≤ m. De fapt, r|m.

Demonstratie: Mai îmtâi se arată că iqβ sunt conjugate. Pentru orice f(x) peste

GF(q)[f(β)]q = (f0 + f1β + f2β2 + …)q =

= ...2210 +++ qqqqq fff ββ = f0 + f1βq + f2β2q + … = f(βq)

deoarece fiq = fi pentru coeficientii din GF(q).

Fie f(x) polinomul minimal al lui β. Şi pentru acesta f(βq) = [f(β)]q = 0q = 0.Conlcluzia: βq este un zero al polinomului minimal deci este conjugat al lui β.Se dovedeste acum că toate conjugatele lui β sunt în

iqβ . Se considerăprodusul

))...()()(()(12 −

−−−−=rqqq xxxxxf ββββ

de factori liniari asociati tuturor conjugatelor lui β de forma iqβ .

)())...()((

))...()(()]([2

2

qqqqq

qqqqqq

xfxxx

xxxxfr

=−−−=

=−−−=

βββ

βββ

deoarece rqβ = β. Asadar,

rqqr

qqq xfxff +++ ...10 = f0 + f1xq +…+ fr

rqx

Deoarece fiq = fi, toti coeficientii lui f(x) sunt în GF(q).

Evident, β este un zero pentru f(x). Orice alt polinom peste GF(q) care-l are peβ ca zero trebuie să aibă aceeiasi r factori liniari. Asadar f(x) este un divizor aloricărui astfel de polinom şi este de aceea minimal.

Conjugate: recapitulare

Conjugatele lui β sunt zerourile polinomului minimal al lui β.Conjugatele lui β peste GF(q) sunt β, qβ ,

2qβ , …, 1−rqβ .

Polinomul minimal al lui β este prim peste GF(q) dar se factorizează peste oricecorp GF(Q) care-l contine pe β (si implicit conjugatele sale).

))...()()(()(12 −

−−−−=rqqq xxxxxf ββββ

Dacă β ∈ GF(qm) atunci are cel mult m conjugate (inclusiv el însusi).

76

Page 77: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Dacă β are r conjugate, atunci subspatiul liniar al lui GF(qm) generat de 1, β,β2, …, βr – 1 este un corp cu qr elemente. Reciprocele există deoarece f(x) esteprim.Dacă r < m atunci β apartine lui GF(qr), un subcorp propriu al lui GF(qm).Deoarece GF(qm) este spatiu vectorial peste GF(qr), se deduce că r|m.

Coduri ciclice

Un cod bloc liniar este ciclic dacă orice permutare circulară a unui cuvânt decod este un cuvânt de cod.Codurile ciclice au multe particularităti avantajoase.Au o descriere algebrică plină de eleganţă• c(x) = m(x)g(x), cu g(x) polinomul generator• c(x)h(x) = 0 mod (xn – 1), cu h(x) polinomul de verificare a paritătii• c(β1) = 0, …, c(βt) = 0, cu βi ∈ GF(qm).Codoare si unităti de sindrom realizate cu registre de deplasare.Corectarea simplă a erorilor incidentale (error trapping).Corectarea erorilor aleatoare prin rezolvarea de ecuatii polinomiale.Codurile ciclice sunt (prin definitie) un caz foarte special al codurilor liniare.Aproape toate codurile bloc uzuale sunt coduri ciclice (eventual scurtate).

Permutările circulare ale n-tuplelor si polinoamele

Definitie: Deplasatul spre dreapta a lui (v0 v1 ... vn – 1) este (vn – 1 v0 ... vn – 2).

Deplasatul spre deapta al vectorului v este notat cu v(1).Când n-tuplele sunt polinoame de grad cel mult n – 1, deplasatul spre dreapta allui

v(x) = (v0 v1 ... vn – 2 vn – 1) = v0 + v1x + ... + vn – 2xn – 2 + vn – 1xn – 1

este tot un polinom de grad cel mult n – 1.v(1)(x) = (vn – 1 v0 v1 ... vn – 2) = vn – 1 + v0x + v1x2 + ... + vn – 2xn – 1

Deplasatul spre dreapta cu i pozitii al lui v = v(x) este notat cu v(i) = v(i)(x).

Proprietăţi ale permutărilor circulare

Unele aspecte evidente ale deplasărilor circulare ale n-tuplelor:• v(n) = v

Ceas

77

Page 78: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• Deplasatul spre stânga cu i pozitii v(–i) este acelasi cu deplasatul spre dreaptav(n – i)

• v(i) = v(i mod n).Primele două afirmatii sunt cazuri particulare ale celei de a treia.Deplasarea ciclică spre dreapta este o transformare liniară v(1) = vS1, cu S1

matricea permutare următoare:

S1 =

00011000

01000010

⋯⋯

⋮⋱⋮⋮⋮⋯⋯

Orice registru de deplasare liniar cu feedback corespunde unei matrici în formacanonică ratională. Registrul ciclic este cel mai simplu registru de deplasare cufeedback.

Numere si plinoame

Când n-tuplele binare reprezintă întregi, deplasarea cu un număr de pozitii (debiţi) echivalează cu o multiplicare sau o împărtire cu puteri ale lui 2.Deplasarea simplă spre stânga este o multiplicare cu 2, deplasarea simplă spredreapta este o împărtire la 2 cu ignorarea restului. Deplasările ciclice sprestânga si spre dreapta sunt multiplicări si împărtiri cu 2 modulo 2n – 1.Când n-tuplele reprezintă polinoame peste un corp (finit), deplasările ciclicecorespund la multiplicări si împărtiri cu puteri ale lui x modulo (xn – 1)8.Polinoamele se scriu cu coeficientul cel mai semnificativ la dreapta.

(v0 v1 ... vn – 2 vn – 1) ⇔ v0 + v1x + ... + vn – 2xn – 2 + vn – 1xn – 1

Deplasările ciclice elementare spre dreapta sunt multiplicări cu x, cu exceptiacoeficientului lui xn care devine coeficientul lui x0 = 1. Astfel deplasatul ciclicspre dreapta diferă de produsul cu x printr-un multiplu al lui xn – 1.

Descrierea polinomială a deplasărilor ciclice

Lemă: Deplasatul ciclic spre dreapta al lui v(x) estev(1)(x) = xv(x) – vn – 1(xn – 1) = xv(x) mod (xn – 1).

Demonstratie: Prin definitia deplasatului ciclic spre dreaptav(1)(x) = vn – 1 + v0x + v1x2 + ... + vn – 2xn – 1 =

= vn – 1 + v0x + v1x2 + ... + vn – 2xn – 1 + vn – 1xn – vn – 1xn == xv(x) – vn – 1(xn – 1) = xv(x) mod (xn – 1)

Când vn – 1 = 0, deplasarea ciclică spre dreapta coincide cu deplasarea logicăspre dreapta:

vn – 1 = 0 ⇔ v(1)(x) = xv(x)8 Polinomul xn – 1 este numit polinomul “ciclic” de gradul n. Polinomul nul este singurulpolinom de grad inferior lui n care este divizibil cu xn – 1. Astfel xn – 1 generează codul careconstă dintr-un vector cu toate componentele nule.

78

Page 79: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Coduri ciclice: definitie şi proprietăti de bază

Definitie: Un cod ciclic este un cod bloc liniar pentru care permutarea ciclicăspre dreapta a oricărui cuvânt de cod este un cuvânt de cod.Prin iterare, toate permutările ciclice ale cuvintelor de cod sunt cuvinte de cod;astfel prin permutarea circulară cu i pozitii a unui cuvânt de cod c(x) se obtinetot un cuvânt al codului

c(i)(x) = xic(x) mod (xn – 1)Deoarece codurile ciclice sunt liniare, sumele deplasatelor ciclice sunt cuvintede cod; astfel pentru orice polinom a(x) = a0 + a1x + ... + amxm

a(x)c(x) mod (xn – 1) = ∑=

−m

i

nii xxcxa

0

))1(mod)((

este un cuvânt al codului. Caz special important: grada(x) < n – gradc(x)conduce la

grada(x)c(x) < n ⇒ a(x)c(x) mod (xn – 1) = a(x)c(x)ceea ce arată că a(x)c(x) este cuvânt de cod.

Polinom generator

Teoremă: Fie C un cod ciclic (n, k) peste GF(q).1. Există un polinom monic g(x), numit polinom generator, astfel încât n-

tuplul c(x) este un cuvânt de cod dacă si numai dacă g(x) este un divizor allui c(x).

2. Polinomul generator este unic.3. Gradul polinomului generator este n – k.4. Polinomul generator este un divizor al lui xn – 1.Demonstratie: Pentru k = 0 se poate lua g(x) = xn – 1. În cazul acesta toateafirmatiile sunt evident adevărate.Se presupune acum k > 0 si implicit n – k < n.1. Fie g(x) cel mai mare divizor comun monic al cuvintelor nenule ale codului,

ci(x). Există atunci polinoamele ai(x) astfel încât

g(x) = ∑i

ii xcxa )()( =

iii xcxa )()( mod (xn – 1) =

= ( )∑ −i

nii xxcxa )1(mod)()(

deoarece gradg(x) < n.Expresia ultimă arată că g(x) este o combinatie liniară de cuvinte de cod sieste în consecintă un cuvânt de cod care este un divizor al tuturor celorlalte.

2. Dacă ar exista două polinoame generatoare, fiecare din ele ar fi un divizor alceluilalt si deoarece ambele sunt monice, raportul lor este 1.

3. Fie r = gradg(x).Dacă gradm(x) < n – r atunci gradm(x)g(x) < n astfel că m(x)g(x) esteun cuvânt de cod.

79

Page 80: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Invers, orice cuvânt de cod este de forma c(x) = m(x)g(x), de undegradm(x) < n – r. Există asadar qn – r cuvinte de cod.Un cod (n, k) peste GF(q) are qk cuvinte de cod.Aşadar qn – r = qk ⇒ n – r = k ⇒ r = n – k.

4. (Un truc) Deplasarea ciclică spre dreapta a lui g(x) cu k digiti este un cuvântde cod

g(k)(x) = (1 0 … 0 g0 g1 … gn – k – 1) == 1 + g0xk + g1xk + 1 + … + gn – k – 1xn – 1 + xn – xn =

= xkg(x) – (xn – 1)De aici

xn – 1 = xkg(x) – g(k)(x)o sumă de multipli ai lui g(x) ceea ce face şi din xn – 1 un multiplu de g(x).

Matricea generatoare nesistematică

Fie C un cod ciclic (n, k) generat de polinomul g(x) de gradul r = n – k.Cuvintele de cod xig(x) (i = 0, 1, …, k – 1) formează o bază pentru C deoareceorice cuvânt de cod

m(x)g(x) = m0g(x) + m1xg(x) + ... + mk – 1xk – 1g(x)este o combinatie liniară de xig(x).Matricea cu linii xig(x) este matricea generatoare nesistematică a codului.

G1 =

=

r

r

r

r

k

k

gggggg

gggggg

xgxxgx

xxgxg

⋯⋯

⋮⋱⋱⋱⋱⋱⋮⋮⋯⋯⋯⋯

10

10

10

10

1

2

00000000

000000

)()(

)()(

Fiecare linie a matricii G1 este o deplasată ciclică la dreapta a primei linii.Fiecare simbol al mesajului produce aceeasi iesire a codorului, numai căîntârziată. Matricea G1 este baza pentru două codoare simple care folosescmultiplicarea cu g(x).

Exemple de coduri ciclice binare

• Codul (n ,0) care constă în vectorul nul: g(x) = xn – 1.• Codul (n, n) al tuturor n-tuplelor, un alt cod ciclic trivial: g(x) = 1. Codurile

(n, 0) si (n, n) sunt duale. Produsul polinoamelor lor generatoare este xn – 1.• Codurile cu verificarea simplă a paritătii, de paritate pară sunt ciclice: g(x) =

x – 1 = x + 1. Matricea lor generatoare nesistematică este

80

Page 81: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

G =

110000011000

000110000011

⋯⋯

⋮⋮⋮⋱⋮⋮⋮⋯⋯

Codurile cu paritate simplă impară nu sunt liniare si, de aceea, nu sunt niciciclice. Aceste coduri sunt codomenii ale codurilor cu paritate simplă pară si deaceea au aceeasi capacitate de protectie la erori în multe situatii.• Codurile cu repetitie au polinomul generator g(x) = 1 + x + … + xn – 1 si

G = [1 1 1 … 1 1 1].

Matrici generatoare sistematice

Un codor sistematic copiază digitii mesajului în pozitii consecutive alecuvântului de cod.Conventie: sunt transmişi mai întâi digitii cei mai semnificativi cn – 1, cn – 2, …, cn

– n.Pentru ca digitii mesajului (k digiti) să apară la finalul cuvântului de cod, eitrebuie deplasati spre dreapta cu n – k pozitii

m(x) → (0 0 … 0 m0 m1 … mk – 1) = xn – km(x)Pentru a genera un cuvânt de cod valid, coeficientii de ordin scăzut în număr den – k trebuie aleşi astfel încât n-tuplul complet să fie multiplu de g(x).Se presupune că xn – km(x) are un rest nenul la împărtirea cu g(x). Atunci uncuvânt de cod valid poate fi obtinut prin scăderea acelui rest din xn – km(x).Un exemplu cu numere întregi: 31 mod 7 = 3, deci 31 – 3 = 28 este un multiplude 7.Codorul sistematic pentru codul ciclic generat de polinomul g(x) parcurgeurmătoarea schemă:

m(x) → xn – km(x) – (xn – km(x) mod g(x)) = xn – km(x) – Rg(x)(xn – km(x)) == (0 0 … 0 m0 m1 … mk – 1) – (p0 p1 … pn – k – 1 0 0 ... 0)

Cele două polinoame din diferenţa de mai sus nu au coeficienti concomitentnenuli pentru vreuna din puterile lui x. Scăderea de polinoame este de fapt ooperatie de multiplexare.

Codorul crează un cuvânt de cod prin ataşarea la digitii mesajului a restuluimodulo g(x) cu semn schimbat al mesajului deplasat.Codorul sistematic utilizează împărtirea pentru a produce multipli aipolinomului generator. Restul împărtirii la un polinom fix este o functie liniară.Codorul sistematic execută o transformare liniară. Astfel iesirea lui estedeterminată de valorile de iesire pentru orice bază.

× xn – k mod g(x) −1

m(x)c(x)

81

Page 82: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Baza standard constă în k vectori unitate 1, x, …, xk – 1.Simbolurile de verificare pentru mesajul xi sunt

– (xn – kxi) mod g(x) = –xn – k + i mod g(x).Liniile matricii generatoare sistematice pentru i = 0, 1, …, k – 1 sunt

gi(x) = –xn – k + i mod g(x) + xn – k + i = –s[n – k + i](x) + xn – k + i

cu s[j](x) = xj mod g(x).Se va vedea că s[j](x) este deplasatul al j-lea cu feedback al lui s[0](x).Coeficientii lui s[j](x) formează portiunea de verificare a paritătii din matriceageneratoare sistematică.

G2 =

−−

−−−−

−−−

+−−−

+−

−−−

100

010001

]1[1

]1[0

]1[1

]1[0

][1

][0

⋯⋯⋮⋱⋮⋮⋮⋱⋮

⋯⋯

⋯⋯

nkn

n

knkn

kn

knkn

kn

ss

ssss

Prima linie din G2 este exact g(x), la fel ca la matricea nesistematică G1.Matricea generatoare sistematică are k(n – k + 1) elemente nenule, la fel ca G1.Atât G1 cât si G2 sunt determinate de n – k valori, coeficienti ai lui g(x). Deexemplu, acest registru de deplasare multiplică cu x modulo x16 + x12 + x5 + 1.

Matricea generatoare sistematică pentru codul cu paritate simplă (4, 3):

g(x) = x + 1 ⇒ xj mod g(x) = 1 ⇒ G =

100101010011

Peste GF(2), x7 + 1 = (x + 1)(x3 + x + 1)(x3 + x2 + 1).Există 23 = 8 divizori ai lui x7 + 1 si deci 8 coduri ciclice de lungime a blocului7. Dacă g(x) = x3 + x + 1, un polinom primtiv, se obtine codul Hamming ciclic.

G =

1000101010011100101100001011

⇒ H =

111010001110101101001

Codul “dual” are matricea generatoare H, codul de maximă lungime (7, 3).

Coduri ciclice de lungime a blocului 15

Peste GF(2), polinomul ciclic x15 + 1 are cinci factori primi distincţix15 + 1 = (x + 1)(x2 + x + 1)(x4 + x + 1)(x4 + x3 + 1)(x4 + x3 + x2 + x + 1)

Sunt în total 25 coduri ciclice. Câteva polinoame generatoare mai utile:(x4 + x + 1) Hamming ciclic binar (15, 11)

82

Page 83: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

(x4 + x + 1)(x4 + x3 + x2 + x + 1) BCH (15, 7) corector de două erori(x2 + x + 1)(x4 + x + 1)(x4 + x3 + x2 + x + 1) BCH (15, 5) corector de trei erori(x + 1)(x2 + x + 1)(x4 + x + 1)(x4 + x3 + x2 + x + 1) (15, 4) de lungime maximăAceste coduri, cu distantele minime 3, 5, 7, 8 sunt obtinute prin purjare.

Distributia ponderilor pentru codurile ciclice de lungime 151 0 0 35 105 168 280 435 435 280 168 105 35 0 0 11 0 0 0 0 18 30 15 15 30 18 0 0 0 0 11 0 0 0 0 0 0 15 15 0 0 0 0 0 0 11 0 0 0 0 0 0 0 15 0 0 0 0 0 0 0

Coduri echivalente

Codul Hamming (7, 4) ciclic nu este acelaşi cu codul Hamming (7, 4) dintr-osectiune anterioară. Bitii de verificare sunt în pozitiile 1, 2, 3 si nu în pozitiile 1,2, 4.

Hvechi =

111100011001101010101

≠ Hciclic =

111010001110101101001

Definitie: Două coduri bloc care sunt la fel cu exceptia unei permutări apozitiilor simbolurilor se numesc echivalente. Codurile echivalente au aceeasidistributie a ponderilor si aceeasi pondere minimă.Nu orice cod bloc liniar este sistematic. De pildă, cel cu matricea generatoare

G =

11000011

Orice cod bloc linar este echivalent cu un cod bloc liniar care are o matricegeneratoare sistematică G = [P | I] (sau G = [I | P]).

Polinomul de verificare a paritătii

Polinomul de verificare a paritătii pentru un cod ciclic generat de g(x) este h(x)= (xn – 1)/g(x). Gradul acestui polinom de verificare este n – (n – k) = k.Polinomul de verificare a paritătii defineste o relatie satisfăcută de toatecuvintele de cod

c(x)h(x) = m(x)g(x)h(x) = m(x)(xn – 1) = xnm(x) – m(x) = 0 mod (xn – 1) == (0 … 0 m0 … mk – 1) – (m0 … mk – 1 0 … 0)

Deoarece gradm(x) < k, coeficientii lui xi în c(x)h(x) sunt nuli pentru i = k, …,n – 1. Aceasta corespunde la n – k ecuatii de verificare:

0112111

0111211

011110

0

00

hchchchcx

hchchchcxhchchchcx

nnkknkknn

kkkkk

kkkkk

−−−−−−−

+−+

−−

++++=⇒

++++=⇒++++=⇒

⋮⋯

83

Page 84: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Matricea de verificare a paritătii nesistematică

Cele n – k ecuatii de verificare obtinute din c(x)h(x) = 0 mod (xn – 1) corespundmatricii nesistematice de verificare a paritătii:

H1 =

−++−

011

011

011

011

121110

000000

000000

hhhhhhhh

hhhhhhhh

ccccccc

kk

kk

kk

kk

nkkkk

⋯⋯⋯⋯

⋮⋱⋱⋱⋱⋱⋱⋮⋯⋯⋯⋯

⋯⋯

=

−−

−−

)()(

)()(

1

2

xhxxhx

xxhxh

Rkn

Rkn

R

R

Această marice are aceeasi formă ca matricea generatoare nesistematică.Liniile matricei H1 sunt deplasări ciclice are lui h(x) “citit” în ordine inversă:

hR(x) = hk + hk – 1x + … + h1xk – 1 + h0xk.Deoarece h(x) este la rându-i un divizor al lui xn – 1, el generează un cod ciclic(n, n – k). Se observă că hR(x) = xkh(x – 1) ceea ce face ca zerourile lui hR(x) să fiereciprocele zerourilor lui h(x). Polinomul hR(x) se mai numeste si polinomulreciproc al lui h(x).Relatia

gR(x)hR(x) = (g(x)h(x))R = (xn – 1)R = 1 – xn = – (xn – 1)arată că hR(x) este divizor al lui xn – 1.Matricea de verificare a paritătii H1 are forma unei matrici generatoarenesistematică. Liniile lui H1 sunt deplasări ale polinomului inversat hR(x).

)(10 xhh R− generează un cod ciclic care este dualul codului generat de g(x).

Codul ciclic generat de h(x) constă în ceea ce se obtine prin citirea inversă adualului codului ciclic generat de g(x).

Circuitul sindromului

Circuitul de calcul al sindromului corespunzător lui H1 execută multiplicareaprintr-un polinom fix h(x).

Acest circuit face o convolutie a secventei de intrare r0, r1, …, rn – 1 cu secventade coeficienti ai polinomului de verificare a paritătii h0, h1, …, hk.Deoarece gradr(x) ≤ n – 1, produsul r(x)h(x) are gradul cel mult n – 1 + k.

84

Page 85: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Numai n – k din cei n + k coeficienti ai polinomului produs r(x)h(x) suntutilizati ca sindrom. Sindromul constă în coeficientii puterilor xk, ..., xn – 1 dinr(x)h(x). Acestia sunt generati după ce rn – 1, ..., rn – k au fost deplasati în registru.

Sindrom plinomial

Matricea sistematică de verificare a paritătii poate fi obtinută din matriceageneratoare sistematică astfel:

G = [P | I] ⇒ H = [I | – PT]Constructia directă: se defineste sindromul polinomial ca fiind restul împărtiriila polinomul generator

s(x) = r(x) mod g(x) = s0 + s1x + … + sn – k – 1xn – k – 1

Orice cuvânt de cod este un multiplu al lui g(x) ceea ce face ca sindromul unuicuvânt de cod să fie nul. Astfel

s(x) = r(x) mod g(x) = (c(x) + e(x)) mod g(x) == c(x) mod g(x) + e(x) mod g(x) = e(x) mod g(x)

Functia rest este liniară în împărţitorul r(x). Aşadar, resturile tuturor n-tuplelorsunt combinatii liniare de xi mod g(x) pentru i = 0, 1, …, n – 1.

Matricea de verificare a paritătii sistematică

Sindromul polinomial s(x) corespunde matricii sistematice de verificare aparitătii

H2 =

T

n

kn

kn

xgx

xgxx

x

−−

)(mod

)(mod

1

1

1

⋮ =

−−−

−−−

−−−

−−−

−−−

]1[1

]2[1

][1

]1[1

]2[1

][1

]1[0

]2[0

][0

100

010001

nkn

nkn

knkn

nnkn

nnkn

sss

ssssss

⋯⋯⋮⋮⋱⋮⋮⋱⋮⋮

⋯⋯

⋯⋯

Coloana i din H2 este sindromul lui xi si constă din coeficientii lui xi mod g(x).Caz special: coloana n – k constă în coeficientii lui – g(x) cu exceptia lui xn – k.Coloana i se obtine din coloana i – 1 printr-o deplasare liniară cu feedback.

Circuitul sindromului #2

Sindromurile corespunzătoare lui H2 pot fi calculate foarte eficient utilizând unregistru de deplasare liniar cu feedback care implementează împărtirea depolinoame.

85

Page 86: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Circuitele de codare pot fi utilizate de asemenea la calculul sindromului.sindromul =

= simbolurile actuale de verificare – simbolurile de verificare asteptatecu “simbolurile de verificare asteptate” calculate din simbolurile informaţionalereceptionate.

Sindromuri partiale

Zerourile polinomului generator determină cuvintele de cod: c(x) este un cuvântal codului dacă si numai dacă c(β) = 0 pentru orice β zero al lui g(x).Primul dacă este adevărat când g(x) nu are zeroruri multiple, adică nu arefactori repetati.Zerourile lui g(x) apartin uzual extensiei GF(qm) a corpului GF(q).Fie β1, …, βt multimea care include cel putin un zero al fiecărui factor prim allui g(x).Sindromurile partiale S1, …, St sunt

Si = r(βi) = r0 + r1βi + … + rn – 11−n

iβ (i = 1, …, t)Sindromurile partiale apartin aceluiasi corp extensie ca si β1, …, βt.Fiecare componentă Si a sindromului corespunde la m ecuatii liniare pesteGF(q). Ecuatiile sunt dependente liniar dacă βi este într-un subcorp propriu allui GF(qm).

Exemplu: codul Hamming ciclic

Fie p(x) un polinom primitiv peste GF(2) de gradul m.Cea mai mică valoare n pentru care p(x)|(xn – 1) este n = 2m – 1.Codul ciclic generat de p(x) are lungimea blocului n = 2m – 1.Matricea H de verificare a paritătii care are drept coloane pe xi mod p(x) arecoloanele nenule distincte, asa încât codul poate corecta orice eroare singulară.Coloanele lui H sunt puteri succesive ale unui α = x din GF(2m):

H = [1 α α2 … αn – 2 αn – 1]Fie eroarea singulară situată în locatia i, adică e(x) = xi. Sindromul partialpentru α este

S1 = r(α) = r0 + r1α + … + rn – 1αn – 1 = c(α) + e(α) = e(α) = α i.

86

Page 87: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Decodorul trebuie să găsească locatia i din sindromul S1 = αi. Decodorul trebuiesă calculeze un logaritm discret al bazei α.

Coduri Hamming non-binare

Orice cod corector de o eroare are distanţa minimă d* ≥ 3, deci oricare douăcoloane ale matricei de verificare sunt liniar independente, cu alte cuvinte nici ocoloană din H nu este multiplul alteia.Sunt în total qm – 1 m-tuple peste GF(q). Numărul maxim de coloane liniarindependente în perechi este

(qm – 1)/(q – 1) = qm – 1 + qm – 2 + … + q + 1adică numai unul din cele q – 1 zerouri multiple ale oricărui m-tuplu. Coloanelese normalizează prin impunerea ca primul element nenul să fie 1. Exemplu:

H =

121021021021001112221110000000111111111

Procedura de decodare pentru acest cod (13, 10): se calculează sindromul s =rHT. Se normalizează sindromul prin împărtirea cu primul element nenul si.Coloana egală din H este locatia erorii şi si este magnitudinea erorii.

Coduri Hamming non-binare ciclice

Un cod Hamming non-binar ciclic este definit de un element β din GF(qm) deordin n = (qm – 1)/(q – 1). Matricea de verificare este

H = [1 β β2 … βn – 1]şi g(x) este polinomul minimal al lui β peste GF(q). (Fapt: gradg(x) = m).Coloanele lui H sunt liniar independente peste GF(q) dacă si numai dacă β j/β i =β l nu este în GF(q).Fapt: există un cod ciclic Hamming de lungime n dacă si numai dacă n si q – 1sunt mutual prime (sau coprime), ceea ce este adevărat dacă si numai dacă m siq – 1 sunt coprime.Exemplu: Dacă q = 3 atunci q – 1 = 2, astfel că se cer valori impare pentru m.Fie GF(33) definit de polinomul primitiv x3 + 2x + 1 si β = α2.

H = [1 α2 α4 … α22 α24] =

202100112111022122201012001211102021001

Polinomul generator x3 + x2 + x + 2 poate fi găsit prin mai multe metode sipoate apoi să fie folosit la construireaa unei matrici sistematice de verificare aparitătii.

Codul Golay ciclic

87

Page 88: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Ordinele multiplicative ale elementelor lui GF(211) divid pe 211 – 1 = 2047 =23⋅89. Sunt φ(23) = 22 de elemente de ordinul 23. Conjugatele pentru oricareastfel de β sunt

β, β2, β4, β8, β16, β9, β18, β13, β3, β6, β12

Polinomul minimal are gradul 11. Polinoamele prime de gradul 11 suntx11 + x10 + x6 + x5 + x4 + x2 + 1x11 + x9 + x7 + x6 + x5 + x + 1

Aceste polinoame sunt imaginea în oglindă unul celuilalt si zerourile lor suntreciproce.Puterile consecutive β, β2, β3, β4 prezente printre conjugate garantează d* ≥ 5.Lemă: Cuvintele codului Golay de ponderi pare au ponderile multiplu de 4.Teoremă: Codurile Golay ciclice au d* = 7 si sunt de fapt coduri perfecte.Enumeratorul de ponderi: 1 + 253x7 + 506x8 + 1288x11 + 1288x12 + 506x15 +253x16 + x23.

Exemple de coduri ciclice: CRC-16

Codurile ciclice sunt utilizate frecvent pentru detectarea erorilor deoarececircuitele de codare si de calcul al sindromului sunt foarte simple.

Cel mai comun polinom generator este CRC-16:CRC-16 = x16 + x15 + x2 + 1 = (x + 1)(x15 + x + 1)

Factorul x15 + x + 1 este primitiv de gradul 15 si are în consecintă ordinul9 215 –1. Aşadar lungimea de bloc CRC-16 proiectată este 215 – 1 = 32767 biti. Uzualse foloseşte un cod semnificativ scurtat.

Exemple de coduri ciclice: CRC-CCITT

Un alt polinom generator popular esteCRC-CCITT = x16 + x12 + x5 + 1 = (x + 1)p2(x)

cu p2(x) un polinom primitiv de gradul 15p2(x) = x15 + x14 + x13 + x12 + x4 + x3 + x2 + x + 1

Polinoamele CRC-16 si CRC-CCITT10 au numai patru coeficienti nenuli, aşaîncât circuitele de codare cu registre de deplasare necesită numai trei porţi “sau-exclusiv”.

9 Ordinul unui polinom este cel mai mic întreg n > 0 pentru care g(x)|(xn – 1).10 Acronime: CRC – Cyclic Redundancy Check; CCITT – Consultative Committee on International Telephone and Telegraph

88

Page 89: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Distanţa minimă pentru CRC-16 si CRC-CCITT este 4. Ambele coduricorectează erorile singulare si detectează erorile duble sau detectează până la 3erori.Orice cod ciclic cu n – k = 16 detectează erorile incidentale de lungime până la16 biti, ceea ce este optimal.

Sindromurile codurilor ciclice: revedere

Pentru orice matrice de verificare H, vectorul sindrom este s = rHT.Pentru o matrice H pe baza polinomului de verificare h(x) = (xn – 1)/g(x)

rHT ≡ (r(x)h(x) mod (xn – 1)) ÷ xk

Pentru o matrice H sistematică, coloana a j-a este xj mod g(x), astfel cărHT ≡ r(x) mod g(x) = Rg(x)(r(x))

Sindromul polinomial este s(x) = r(x) mod g(x).Sindromurile partiale sunt definite folosind zerourile β1, …, βs ale lui g(x):

Sj = r(βj), j = 1, …, sZerourile βj si sindromurile partiale Sj apartin unui corp GF(qm), extensie aalfabetului de canal GF(q).Toate sindromurile de mai sus contin aceeasi informatie si pot fi obtinute uneledin altele prin transformări liniare.Cazurile în care g(x) are zerouri multiple cer o tratare specială.

Coduri BCH11 binare corectoare a două erori

Dacă α este o primitivă în GF(2m), ea defineste un cod Hamming (2m – 1, 2m – 1– m):

c(x) ∈ C ⇔ c(α) = 0 = c0 + c1α + … + cn – 1αn – 1

Ideea cheie: pentru a corecta mai multe erori trebuie utilizate mai multe ecuatiide forma c(β) = 0.Conjugatele lui α în GF(2) nu pot fi folosite deoarece c(α) = 0 ⇒ 0)( 2 =

i

c α .

Cu alte cuvinte, cele m ecuatii peste GF(2) care corespund la i2α

Hi = [ ]iii n 2)1(2221 ⋅−⋅ ααα ⋯

sunt liniar dependente de cele m ecuatii care corespund lui α.Din fericire cele mai multe din celelalte alegeri functionează.Exercitiu: Orice non-conjugată a lui αi care nu apartine unui subcorp propriu allui GF(2m) poate fi folosită.

11 BCH – Bose şi Ray-Chaudhuri

89

Page 90: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Fie α3 elementul ales. Această alegere aparent evidentă lucrează foarte bine.Matricea de verificare a paritătii reprezentată peste GF(2m) este

H =

)1(363

12

11

n

n

αααααα

⋯⋯

Cuvintele de cod definite de H sunt polinoamele c(x) cu zerouri în α si α3.Astfel fiecare cuvânt al codului este un multiplu al polinoamelor minimale alelui α si α3. Fie f1(x) si f3(x) aceste polinoame minimale peste GF(2). Polinomulgenerator este g(x) = f1(x) f3(x). Cele două polinoame minimale sunt de gradecel mult m. Astfel, gradg(x) ≤ 2m.H are două linii cu elemente din GF(2m), totuna cu 2m linii peste GF(2). Asadarnumărul de biti de verificare satisface relatia n – k ≤ 2m. Fapt: Dacă m ≥ 3atunci n – k = 2m.

Sindromuri pentru codul BCH corector de două erori

Se consideră un pattern de eroare de pondere 2:e(x) = 21 ii xx + , 0 ≤ i1 < i2 < n

Sindromul lui r(x) are două componente sindrom partiale S1, S3:S1 = r(α) = e(α) = 21 ii αα +

S3 = r(α3) = e(α3) = 21 33 ii αα + = 33 )()( 21 ii αα +Sindromurile partiale pot fi calculate din r(x) cu circuite multiplicatoare-acumulatoare.

Sindromurile sunt cantităti cunoscute în acest sistem de ecuatii, calculate înderularea curentă a calculului. Necunoscutele i1 si i2 apar în exponenti –ecuatiile sunt transcendente.

Decodarea codului BCH corector de două erori: o schimbare de variabile

Problema se simplifică printr-o schimbare de variabile:1

1iX α= , 2

2iX α=

Schimbarea conduce la un sistem algebric de ecuatii de gradul 3:S1 = 21 ii αα + = X1 + X2

S3 = 21 33 ii αα + = 32

31 XX +

90

Page 91: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Necunoscutele X1 si X2 sunt numite locatoare de erori12. Locatiile erorilor suntobtinute din X1, X2 prin logaritmare în baza α:

i1 = logαX1, i2 = logαX2.

Decodarea codului BCH corector de două erori: o reducere de grad

Gradul acestui sistem poate fi redus:

2221

21

21

32

31

1

3 XXXXXX

XX

S

S ++=++= = (X1 + X2)2 + X1X2 = S1

2 + X1X2

Cele două ecuatii se pot rescrie astfel:X1 + X2 = S1

X1X2 = S3/S1 + S12 = (S3 + S1

3)/S1

Suma si produsul celor două necunoscute pot fi calculate din cantităticunoscute, sindromurile partiale S1 si S3.Mai departe se rezolvă o ecuatie polinomială de gradul al doilea cu coeficientiicunoscuti.

Decodarea codului BCH corector de două erori: ecuatia polinomială

Polinomul de gradul al doilea care are ca zerouri pe X1 si X2 este următorul:ΛR(x) = (x – X1)(x – X2) = x2 – (X1 + X2)x + X1X2 =

= x2 + S1x + (S3 + S13)/S1 = x2 + λ1x + λ2

Dacă sunt două erori atunci X1 ≠ X2 si λ1 = S1 = X1 + X2 ≠ 0 si coeficientul ultim,λ2 = (S3 + S1

3)/S1 este definit si nenul deoarece X1 ≠ 0, X2 ≠ 0.Dacă λ1 = 0, λ2 ≠ 0 atunci ΛR(x) are numai un zero deoarece orice element dinGF(2m) are o rădăcină pătrată unică:

+=== −+ 12

22/)12(

2/

lili

mi

ii

ααα

Decodarea codului BCH corector de două erori: alte cazuri

Când sunt două erori, locatoarele de erori sunt zerouri ale lui ΛR(x). Locatiilebitilor eronati pot fi găsite prin evaluarea lui ΛR(αi) pentru i = 0, 1, …, n – 1.(Formula pătratică nu poate fi utilizată în GF(2m). Cu toate acestea existăsuficiente metode eficiente de a factoriza polinoamele de gradul doi pesteGF(2m)).Ce se întâmplă dacă erorile sunt mai puţin de două?Pentru o eroare, patternul erorii este e(x) = 1ix şi componentele sindromuluisunt

S1 = e(α) = 1iα = X1

12 Unele surse folosesc termenul de “numere ale locatiei erorilor” în loc de locatoare de erori.Este gresit: locatoarele de erori nu sunt numere ci sunt elemente ale unui corp finit GF(2m).

91

Page 92: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

S3 = e(α3) = 13iα = 31X

şi în acest caz S3 = S13 si λ2 = 0.

Dacă nu sunt erori, S1 = S3 = 0.

Codul BCH corector de două erori: procedura de decodare

1. Se calculează sindromurile partiale S1 = e(α) si S3 = e(α3).2. Dacă S1 = S3 = 0 atunci se presupune că nu există nici o eroare – este

presupunerea cea mai plauzibilă.3. Dacă S1 ≠ 0 si S3 = S1

3 se admite existenta unei erori. Locator de erori esteX1 = S1. Locatia erorii este i1 si satisface X1 = 1iα .

4. Dacă S1 ≠ 0 si S3 ≠ S13 se admite existenţa a două erori. Locatoarele de erori

sunt zerourile în GF(2m) ale lui ΛR(x):ΛR(x) = x2 + S1x + (S3 + S1

3)/S1

Dacă 11

iX α= , 22

iX α= sunt zerourile lui ΛR(x), erorile sunt în locatiile i1, i2.

5. Dacă ΛR(x) nu are două zerouri în GF(2m), sau dacă S1 = 0 si S3 ≠ 0, atuncisunt cel putin trei erori (necorectabile dar detectabile).

Codul BCH corector de două erori: corectare greşită, costul calculului

Când sunt mai mult de 2 erori, decodorul poate corecta gresit. Când sunt 3erori, decodorul poate corecta gresit cu o probabilitate de cca. 1/2. (De ce?Circa jumătate din sindromuri corespund unor erori corectabile).Dacă 3 erori sunt corectate gresit, 2 biti corecti vor fi inversati, ceea ce conducela un total de cel putin 5 biti eronati în cuvântul de cod corectat gresit.Calculul sindromurilor partiale necesită nunai scalori pentru α si α3. Corectareaerorilor utilizează o împărtire si câteva (putine) operatii de multiplicare generalepentru a calcula pe ΛR(x) si pentru a afla zerorurile polinomului.Aproape tot efortul de calcul se concentrează pe evaluarea sindromului.Este necesară de asemenea o metodă eficientă de a găsi exponentii i1 si i2 din X1

si X2.Pentru a reduce consumul de energie, trebuie avut în vedere compromisul întrecomplexitatea decodorului si complexitatea codorului/sindromului.

Coduri ciclice: recapitulare

Un cod ciclic este un cod bloc liniar pentru care orice permutare circulară aunui cuvânt de cod este un cuvânt al codului.Deplasarea ciclică cu i pozitii spre dreapta a unui n-tuplu v(x) este notată cu v(i)

(x) si este echivalentă cu multiplicarea cu xi modulo (xn – 1).Deplasarea ciclică cu i pozitii spre stânga este echivalentă cu deplasarea ciclicăspre dreapta cu n – i pozitii: v(–i)(x) = v(n – i)(x).

92

Page 93: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Un cod ciclic (n, k) are un polinom generator g(x) care este divizor al tuturorcuvintelor codului.Un cuvânt de lungime n, c(x) apartine codului ciclic C generat de polinomulg(x) dacă si numai dacă c(β1) = 0, c(β2) = 0, …, c(βt) = 0 în care β1, β2, …, βt

sunt zerorui ale lui g(x) într-un corp extensie. Polinomul generator este un polinom monic de gradul n – k, este unic si dividepe xn – 1.Polinomul de verificare a paritătii este h(x) = (xn – 1)/g(x).Cuvintele de cod pot fi generate:

nesistematic: m(x) → m(x)g(x)sistematic: m(x) → xn – km(x) – xn – km(x) mod g(x)

Portiunea de verificare a paritătii din matricea generatoare G constă în linii deforma xi mod g(x) cu i = 0, 1, …, n – k.Cuvintele de cod pot fi caracterizate de

c(x) mod g(x) = 0 sau dec(x)h(x) = 0 mod (xn – 1)

Aceleasi relatii sunt folosite şi la detectarea şi/sau la corectarea erorilor.Matricea de verificare a paritătii H poate fi

nesistematică si atunci liniile ei se obtin prin n – k deplasări spre stângaale lui hR(x) , polinomul h(x) “citit” în ordine inversă, sausistematică si atunci coloanele ei sunt xi mod g(x) cu i = 0, 1, …, n – k.

Polinomul sindrom, s(x) = r(x) mod g(x) are gradul mai mic decât n – k şi are înconsecintă n – k componente.Sindromurile partiale sunt Si = r(βi), cu β1, β2, …, βt zerorui ale lui g(x). Nu suntnecesare toate zerourile lui g(x). Un element din fiecare clasă de conjugate estesuficient.Exemple de coduri ciclice:Codul (n, 0), codul inutil, cu g(x) = xn – 1.Codul (n, n), codul repetitiv, cu g(x) = 1.Codul (n, n – 1), codul binar cu paritate simplă, cu polinomul generator x – 1.Codurile Hamming cu lungimea blocului 2m – 1, cu generator un polinomprimitiv de gradul m.Codurile Hamming binare purjate care au polinomul generator (x + 1)p(x).Factorul x + 1 creste distanta minimă la 4.Codurile Golay (23, 12, 7) care au polinoame generatoare de gradul 11 cuzerouri elemente din GF(211) de ordinul 23.Codrile CRC (Cyclic Redundancy Check) definite de polinoame generatoare deforma

CRC-16 = x16 + x15 + x2 + 1 = (x + 1)(x15 + x + 1)CRC-CCITT = x16 + x12 + x5 + 1 = (x + 1)p2(x)

Un cod ciclic peste GF(q) este cod ciclic şi peste orice corp extensie GF(Q) siare acelasi polinom generator.

Erori incidentale (burst)

93

Page 94: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Definitie: Un incident de lungime l este un n-tuplu ale cărui simboluri incertesunt restrânse la o întindere de l simboluri si nu mai putine.Definitie: Un incident circular (wraparound) de lungime l este orice deplasareciclică a unui incident de lungime l.Un incident este specificat prin locatie si prin pattern-ul incidentului.• Locatia este definită de digitul cel mai putin semnificativ al incidentului.• Pattern-ul unui incident de lungime l este un polinom b(x) de gradul l – 1.Incident: e(x) = xib(x), în care i este locaţia si b(x) este pattern-ul (b0 ≠ 0).Incident wraparound: e(x) = xib(x) mod (xn – 1).Exemplu: Se consideră următoarele secvente de lungime 10:• 0001011000 este un incident de lungime 4, cu locatia 3 si pattern-ul 1 + x2 +

x3.• 1100000010 este un incident circular (wraparound) de lungime 4, cu locatia

8 si pattern-ul 1 + x2 + x3. Este un incident (şi) de lungime 9.

Detectarea erorilor incidentale

Codurile ciclice sunt “optime” pentru a detecta erorile incidentale.Teoremă: Orice cod ciclic (scurtat) cu polinomul generator de gradul r poatedetecta erorile incidentale de lungime cel mult r.Demonstratie: Trebuie arătat că nici un incident de lungime cel mult r nu estecuvânt de cod.Un astfel de incident este de forma e(x) = xib(x) cu b(x) ≠ 0 si gradb(x) < r.Termenul constant al lui g(x) este nenul astfel că g(x) si xi sunt relativ prime.Dacă g(x)|xib(x) atunci g(x)|b(x), ceea ce este imposibil deoarece gradb(x) <gradg(x). Capacitatea de a detecta o eroare incidentală este exact r deoareceg(x) este un cuvânt de cod care ar fi un incident de lungime r + 1.Erorile incidentale de lungime mai mare decât r pot fi detectate în majoritate.Pentru multimi alfabetice binare

Pr[a detecta un incident de lungime l] =

+>−+=−

+−

121121 1

rlrl

r

r

Exerciţiu: Capacitatea de a detecta erorile incidentale pentru un cod bloc (n , k)este cel mult n – k.

Caracterizarea codurilor corectoare de erori incidentale

Lemă: Un cod bloc poate corecta toate incidentele de lungime cel mult l dacă sinumai dacă niciodată două cuvinte de cod nu diferă prin suma a două incidentede lungime cel mult l.

94

Page 95: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Corolar: Un cod bloc liniar poate corecta orice incident de lungime cel mult ldacă si numai dacă nici un cuvânt de cod nu este suma a două incidente delungime cel mult l. În figura alăturată cuvântul nul si c(x) apartin codului. c(x)este suma a doua incidente. Decizia pe baza cuvântului receptional r(x) estedificilă dacă nu imposibilă: s-a transmis cuvântul nul sau cuvântul c(x)?Teoremă: (limita Rieger) Capacitatea l a unui cod bloc liniar (n, k) de a corectaerori incidentale satisface relatia 2l ≤ n – k.Demonstratie: Toate cele Q2l polinoame de grad inferior lui 2l trebuie să aibăsindromuri diferite. Altminteri diferenta dintre două asemenea polinoame ar fiun cuvânt de cod sumă a două incidente de lungime cel mult l.

Eficienţa corectării erorilor incidentale

Definitie: Eficienţa corectării erorilor incidentale a unui cod bloc liniar (n, k)cu capacitatea l de a corecta erori incidentale se defineste ca fiind 2l/(n – k).Luând în considerare limita Rieger, eficienţa este subunitară, cel mult egală cuunitatea.Codurile Reed-Solomon au 2t simboluri de verificare si pot corecta t erorialeatoare si în consecintă pot corecta erori incidentale cu lungimea cel mult t.Codurile Reed-Solomon sunt coduri nonbinare cu eficienta corectării erorilorincidentale 1.Codurile Fire sunt o clasă de coduri ciclice cu orice capacitate dorită de acorecta erori incidentale şi au o eficientă a corectării erorilor incidentale deaproximativ 2/3.Coduri eficiente corectoare de erori incidentale se pot găsi prin cercetare cucalculatorul.O altă limită (aproximativă) pentru numărul de verificări necesare pentru acorecta incidente de lungime l în lungimi ale blocului de n este n – k ≥ l +logQn. Această limită este de obicei mai tare decât limita Rieger.

Principiul decodării ciclice

Teoremă: (principiul decodării ciclice) Fie r(x) un cuvânt receptionat în cazulutilizării unui cod ciclic. Dacă simbolul j al deplasatului ciclic r(i)(x) poate ficorectat, atunci aceeasi magnitudine a erorii poate fi utilizată pentru a corectasimbolul (j – i) mod n al lui r(x).

0

r(x)

c(x)

?

?

≤ l ≤ l

95

Page 96: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

r(i)(x) mod g(x) = s[i](x) → e(x) ⇒ s(x) = r(x) mod g(x) → e(– i)(x)Sindromurile s[1](x), …, s[n – 1](x) ale deplasatelor ciclice r(1)(x), …, r(n – 1)(x) pot ficalculate prin deplasarea repetată a registrului de sindrom cu feedback g(x).Lemă: Sindromul lui r(1)(x) este s[1](x) = xs(x) mod g(x).Demonstratie: Se evaluează sindromul pentru r(1)(x).

r(1)(x) mod g(x) = (xr(x) – rn – 1(xn – 1)) mod g(x) == xr(x) mod g(x) = x(r(x) mod g(x)) mod g(x) = xs(x) mod g(x) = s[1](x)

în trecrea de la a doua la a treia expresie uzând de faptul că g(x) este divizor allui xn – 1.Principiul decodării ciclice sugerează metoda de decodare următoare:• Se calculează s(x) = r(x) mod g(x).• Se deplasează registrul sindromului cu feedback până când s[i](x) contine un

sindrom care este cunoscut a corespunde la eroarea e(x).• Se decodează r(x) utilizând pe e(– i)(x).Această metodă lucrează bine în special pentru erorile incidentale (a se vedeaerror trapping mai departe).Exemplu de decodor cu registru de deplasare: Fie g(x) = x4 + x + 1, un polinomprimitiv peste GF(2). Acest polinom generează un cod Hamming binar ciclic(15, 11). Coloanele matricii de verificare a paritătii sunt xi mod g(x) pentru i =0, …, 14:

H =

111101011001000011110101100100001111010110010111010110010001

Un singur bit eronat în pozitia maxim semnificativă a lui r(x) este dat de e(x) =x14. Sindromul lui e(x) = x14 este 1001 = 1 + x3, care este ultima coloană din H.Dacă de pildă se scurtează codul la (12, 8) sindromul unei erori în pozitiamaxim semnificativă ar fi x11 mod g(x) = 0111 = x + x2 + x3.Se poate generaliza această tratare la corectarea erorilor incidentale de scurtădurată. Se poate arăta că polinomul generator (x + 1)(x4 + x + 1) = x5 + x4 + x2 +1 poate corecta erori incidentale de lugime ce mult 2. Un decodor ar trebui săcorecteze bitul cel mai semnificativ când registrul sindrom contine sindromuriale lui x14 sau ale lui x13 + x14.

Decodor cu registru de deplasare pentru codul Hamming

r(x)

r(i)(x)

i j

0 j – i

96

Page 97: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Decodorul de mai jos corectează cel mai semnificativ bit când registrul dedeplasare contine 1001.

Decodorul poate lucra în regim de pipeline.• În prima fază, se calculează sindromul lui r(x) utilizând primul registru de

deplasare cu feedback liniar.• În faza a doua cuvântul de cod bufferizat este corectat bit cu bit.• Dacă registrul sindromului este nenul la finalul fazei de corectare înseamnă

că a fost detectată o eroare necorectabilă.

Error trapping

Dacă pattern-ul erorii e(x) este în cele n – k simboluri de ordin scăzut atuncigrade(x) este mai mic decât n – k.

În acest caz,s(x) = r(x) mod g(x) = e(x) mod g(x) = e(x).

Polinomul sindrom este identic cu polinomul eroare.În general, r(x) – s(x) este un cuvânt de cod obtinut prin corectarea exclusiv abitilor de verificare.Dacă s(x) este un pattern de eroare plauzibil, adică corectabil, se estimează e(x)= s(x).Deoarece grads(x) < n – k, pattern-urile de eroare care sunt restrânse la n – klocatii consecutive pot fi corectate în acest mod.Conform limitei Rieger, incidentele corectabile au lungimea cel mult (n – k)/2,asa încât ele pot fi rotite în pozitiile de ordin inferior.Pentru a preciza când este de corectat cel mai semnificativ bit al lui r(x) secalculează sindromul r(n – k)(x). Prin aceasta se deplasează bitul cel maisemnificativ al lui r(x) din pozitia n – 1, în partea celor mai semnificativi biti deverificare, pozitia n – k – 1.

n – k k

r(x)

97

Page 98: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Apoi se testează sindromul cuvântului receptionat deplasat pentru a vedea dacăeste un incident de lungime cel mult l localizat în zona celor l digiti deverificare de ordin superior.Când incidentul corectabil este localizat în zona celor l simboluri de verificarecele mai semnificative, atunci cei n – k – l digiti de ordin redus ai sindromuluisunt nuli.

O modalitate de a calcula sindromul lui r(n – k)(x) este deplasarea lui s(x) de n – kori într-un LSFR (linear feedback shift register) cu polinomul de feedback g(x).Rezultatul este s[n – k](x).O metodă mai bună: se injectează simbolurile receptionate în LSFR alsindromului la capătul de sus:

r(n – k)(x) mod g(x) = xn – kr(x) mod g(x) = xn – ke(x) mod g(x)Circuitul corespunzător arată ca în figură.

Circuitul sindromului utilizează acelaşi parcurs al datelor/mesajului ca sicodorul sistematic.

Coduri Fire: definiţie

Un cod Fire este un cod ciclic peste GF(q) cu polinomul generatorg(x) = (x2t – 1 – 1)p(x) = x2t – 1p(x) – p(x)

care satisface conditiile următoare:

kn - k

kn - kr(x)

r(n – k)(x)

000 ⋯ xxx ⋯n – k - l l

98

Page 99: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

1. p(x) este un polinom prim peste GF(q) de gradul m si ordinul e.2. m ≥ t.3. p(x) nu divide pe x2t – 1 – 1.4. gcd(q, 2t – 1) = 1. (Această conditie este totdeauna îndeplinită pentru q =

2m).Lungimea de bloc n este ordinul polinomului generator g(x). (Ordinul este celmai mic n > 0 pentru care g(x)|xn – 1. Un n mai mare produce o distantă minimăde 2).În general, ordinul unui polinom este cel mai mic multiplu comun al ordinelorfactorilor săi. În cazul codurilor Fire, n = lcm(e, 2t – 1).Codurile Fire au fost descoperite de Philip Fire în 1959.

Codurile Fire: proprietăti

• Capacitatea de a corecta erori incidentale: cel putin t, cel mult m.• Eficienţa corectării erorilor incidentale este 2t/(2t – 1 + m). Când m = t se

obtine eficienţa maximă: 2t/(3t – 1) ≈ 2/3.• Decodorul error trapping necesită n pasi.• Deocodrul rapid al lui Chien foloseste sindromurile partiale

s0(x) = r(x) mod (x2t – 1 – 1)s1(x) = r(x) mod p(x)

Decodorul rapid corectează în (2t – 1) + e << n pasi.

Decodor error-trapping pentru coduri Fire

Exemplu: Polinomul generator pentru codul Fire (35, 27) esteg(x) = (x5 + 1)(x3 + x + 1) = x8 + x6 + x5 + x3 + x + 1.

Acest cod corectează erori incidentale de lungime cel mult 3. Eficienţa: (2⋅3)/8= 3/4.

Decodor error-trapping pentru codul Fire (35, 27)

Decodarea rapidă a codurilor Fire

99

Page 100: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Codul Fire cu g(x) = (x7 + 1)(x4 + x + 1) poate corecta incidente de lungime celmult 4. Lungimea blocului este n = lcm(7, 15) = 105.

Calculul sindromului pentru r = 011100100011010110111010:

0000000 0101110 0011010 0000 1010 10101000000 0010111 1001101 1000 0101 11010100000 0001011 1100110 0100 0110 10101010000 1000101 0110011 1010 0011 01011101000 0100010 0011001 1101 0101 01101110100 1010001 0001100 0010 0110 10110111010 1101000 1000110 0001 0011 00011011101 0110100 0100011 0100 1101 1100

Pattern-ul incidentului poate fi identificat prin deplasarea lui s0(x) în registrulsindromului.

===

1101000)(1010001)(0100011)(

]2[0

]1[0

]0[0

xsxsxs

⇒ b(x) = 1101

Deoarece 2 deplasări spre dreapta echivalează cu 5 deplasări spre stânga, locatiaerorii satisface i mod 7 = 5.Locatia erorii se determină prin deplasarea lui s1(x) până când este recunoscutincidentul b(x).

)(]0[1 xs = 1100

)(]1[1 xs = 0110

)(]2[1 xs = 0011

)(]3[1 xs = 1101 = b(x)

Deoarece trei deplasări simple spre dreapta echivalează cu 12 deplasări sprestânga, locatia erorii satisface i mod 15 = 12. Locatia erorii este unica solutiemodulo 105: i = 12.

Coduri intercalate

Definiţie: Intercalatul de mod λ al unui cod bloc C(n, k) este codul bloc Cλ

(λn, λk) în care orice subsecvenţă

r(x)

s0(x)

r(x)

s1(x)

100

Page 101: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

(cj, cj + λ, cj + 2λ, …, cj + (n – 1)λ), j = 0, 1, …, λ – 1de n simboluri ale cuvântului de cod spaţiate cu λ simboluri unul de altul esteun cuvânt de cod din C. De exemplu,

O modalitate de a reprezenta un cod intercalat în mod λ este aceea printr-omatrice λ×n:

c =

−−−−

+−++

113121

1)1(1211

)1(20

λλλλ

λλλ

λλλ

n

n

n

cccc

cccccccc

⋯⋮⋱⋮⋮⋮

Fiecare linie este un cuvânt de cod din C. Elementele lui c sunt transmise pecoloane.

Coduri intercalate: capacitatea de protectie la erori incidentale

Teoremă: Dacă un cod C are capacitatea l de a corecta erori incidentale, atuncicapacitatea de a corecta erori incidentale ale intercalatului de mod λ, Cλ esteλl.Demonstratie: Se consideră un incident de lungime h într-un cuvânt de codintercalat.

verificare incident corectabil incident necorectabil

Cod Reed-Solomon scurtat (24, 200 intercalat de mod 5 peste GF(32)

Fiecare linie are cel mult h/λ erori consecutive (uzual cel puţim h/λ erori).O lungime a incidentului de cel mult λl produce un incident de lungime celmult l în oricare linie, ceea ce îl face corectabil. Din contra, un incidentnecorectabil de lungime l + 1 într-o linie nu este corectabil. Lungimea lui îndatele serializate este λl + 1.

101

Page 102: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Eficienţa corectării erorilor incidentale pentru un cod intercalat este 2λl/[λ(n –k)] = 2l/(n – k). Aceasta este la fel cu eficienta codului de bază C.Intercalarea este o cale simplă si eficientă de a trata incidentele îndelungi,numai că apar probleme de cost:• Memorie: matricea codului (cu exceptia coloanei ultime) trebuie stocată

înainte de încheierea decodării vreunei linii – λ(n – 1) simboluri.• Întârziere: matricea codului (cu exceptia ultimei coloane) trebuie

receptionată înainte de a decoda prima linie – λ(n – 1) simboluri în cel mairău caz.

Costul cu memorarea poate fi redus la aproximativ jumătate prin utilizarea unuicircuit intercalator convolutional.

Memoria circuitului intercalator este împărtită între transmitător si receptor.

Erori incidentale: recapitulare

• O eroare incidentală de lungime l este un n-tuplu cu simbolurile nenulegrupate pe o întindere de l simboluri si nu mai putine.

• Capacitatea de detectare a erorilor incidentale a oricărui cod bloc (n, k) estecel mult n – k.

• Un cod ciclic (n, k) poate detecta orice incident de lungime cel mult n – k.• Un cod ciclic (n, k) poate detecta toate incidentele mai lungi de n – k + 1 cu

exceptia a 2 – (n – k) din ele. • Limita Rieger: dacă l este capacitatea unui cod bloc liniar de a corecta erori

incidentale, atunci 2l ≤ n – k.• Eficienta corectării erorilor incidentale: 2l/(n – k).• Codurile corectoare de incidente ciclice pot decoda în n paşi utilizând error

trapping.• Codul Fire are polinomul generator g(x) = (x2t – 1 – 1)p(x) si poate corecta

incidente de lungime cel mult m.• Intercalarea de mod λ a unui cod multiplică capacitatea de protectie la erori

incidentale de λ ori.Limita Rieger se mentine pentru orice cod bloc (n, k), nu neapărat liniar.

Subcorpuri ale corpurilor finite

Se presupune că GF(q) ⊆ GF(Q) au caracteristica p. Atunciq = pm, Q = pM, m ≤ M

102

Page 103: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

GF(Q) este un spatiu vectorial peste GF(q) de dimensiune n.Q = qn ⇒ pM = (pm)n = pmn ⇒ M = nm ⇒ m|M.

Exponentul subcorpului divide exponentul corpului extensie.Exemplu: Subcorpuri ale lui GF(235) sunt GF(27), GF(25), GF(2). GF(219) nueste continut în GF(235) deoarece 19 nu este un divizor al lui 35.Cel mai mic subcorp care contine si pe GF(219) si pe GF(235) este GF(2lcm(19, 35))= GF(219⋅35) = GF(2665).GF(235) are subgrupuri aditive de ordinul 219, dar nici un subcorp dedimensiunea 219.

Exemple de subcorpuri: GF(28)

GF(28) ⊃ GF(24) ⊃ GF(22) ⊃ GF(2).Acestea se numesc corpuri turn – GF(

m

q2 ).GF(256) [240]

|GF(16) [12]

|GF(4) [2]

|GF(2) [2]

GF(4) – GF(2) două zerouri ale lui x2 + x + 1.GF(16) – GF(4) 12 zerouri date de trei polinoame prime de gradul 4

x4 + x + 1, x4 + x3 + 1, x4 + x3 + x2 + x + 1.GF(256) – GF(16) 240 de zerouri date de 30 de polinoame prime de

gradul 8x8 + x4 + x3 + x2 + 1, …, x8 + x7 + x6 + x5 + x4 + x3 + 1.

Exemple de subcorpuri: GF(212)

GF(212) are 4096 – 64 – 16 + 4 = 4020 elemente care nu partin nici unuia dintresubcorpurile proprii.

103

Page 104: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Fiecare element “maximum de complex” al lui GF(212) este un zero al unuipolinom de gradul 12 peste GF(2), aşa încât sunt 4020/12 = 335 polinoameprime de gradul 12. Există φ(4095) = (3/2)⋅(4/5)⋅(6/7)⋅(12/13)⋅4095 = 1728elemente primitive, asa încât există 1728/12 = 144 polinoame primitive degradul 12 peste GF(2).

Clase de conjugare

GF(Q) poate fi partitionat în clase de conjugare pentru orice subcorp GF(q) ⊆GF(Q). Fiecare clasă de conjugare constă în toate zerouile unui polinomminimal peste GF(q).Exemplu: GF(16) ⊃ GF(2), Clasele de conjugare pentru 0 si 1 sunt 0 si 1.

Element Clasa de conjugareα α, α2, α4, α8 (α16 = α)α3 α3, α6, α12, α24 = α9 (α18 = α3)α5 α5, α10 (α20 = α5)α7 α7, α14, α13, α11 (α22 = α7)

Fiecare element din GF(Q) = GF(qm) este o putere a unui element primitiv α.Clasele de conjugare pot fi reprezentate prin exponenti (logaritmi în baza α).Exponentii membrilor unei clase de conjugare care-l contine pe αi sunt

i, qi mod (Q – 1), q2i mod (Q – 1), …, qr – 1i mod (Q – 1)pentru un r ≤ m, de fapt r | m.

Clase de conjugare pentru GF(64)

Exemplu: GF(64) ⊃ GF(2). Clasele de conjugare, reprezentate prin exponenti:0 (⊆ GF(2)) 13, 26, 52, 41, 19, 381, 2, 4, 8, 16, 32 15, 30, 60, 57, 51, 393, 6, 12, 24, 48, 33 21, 42 (⊆ GF(4))5, 10, 20, 40, 17, 34 23, 46, 29, 58, 53, 437, 14, 28, 56, 49, 35 27, 54, 45 (⊆ GF(8))9, 18, 36 (⊆ GF(8)) 31, 62, 61, 59, 55, 4711, 22, 44, 25, 50, 37Exponentii din fiecare clasă de cojugare se găsesc prin multiplicarea cu 2modulo 63. Clasele cu mai putin de 6 conjugate apartin subcorpurilor proprii.Exponentii elementelor nenule ale subcorpurilor proprii ale lui GF(64):

GF(2) = 0GF(4) = 21, 42GF(8) = 9, 18, 36, 27, 54, 45

Polinoame minimale pentru GF(64)

104

Page 105: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Tabelul exponential pentru GF(64) definit de polinomul primitiv x6 + x + 1:

0 1 2 3 4 5 6 70 100000 010000 001000 000100 000010 000001 110000 0110008 001100 000110 000011 110001 101000 010100 001010 00010116 110010 011001 111100 011110 001111 110111 101011 10010124 100010 010001 111000 011100 001110 000111 110011 10100132 100100 010010 001001 110100 011010 001101 110110 01101140 111101 101110 010111 111011 101101 100110 010011 11100148 101100 010110 001011 110101 101010 010101 111010 01110156 111110 011111 111111 101111 100111 100011 100001 100000

Polinomul minimal pentru α9 este x3 + x + 1 deoareceα9 = 000110, α18 = 111100, α27 = 011100 ⇒ α27 + α18 + 1 = 0

Polinomul minimal pentru α21 este x2 + x + 1 deoareceα21 = 110111, α42 = 010111 ⇒ α42 + α21 + 1 = 0

Polinomul minimal pentru α este x6 + x + 1.

Aritmetica în GF(2m): recapitulare

Adunarea/scăderea: “sau-exclusiv” bit-cu-bit (m porti pe operatie)Multiplicare: serial (deplasare si adunare)

paralel (combinational)reprezentarea în subcorptabele log si antilogprin software

Împărtire (calculul reciprocelor):algortimul lui Euclidcăutare în tabelcăutare secventialăcompromis timp-memorieexponentierereprezentarea în subcorptabele log si antilogprin software

Împărtirea este executată ca o multiplicare cu reciproca: a/b = a⋅b – 1.Împărtirea pe un singur ciclu nu este necesară pentru că decodoarele utilizeazăputine împărtiri.Cele mai multe metode de multiplicare şi divizare consumă O(m2) operatii cubiti.

Multiplicări cu constante

105

Page 106: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

GF(2m) este un spatiu vectorial de dimensiune m, peste GF(2). Se alege o bază1, α, α2, ..., αm – 1 cu α de obicei un element primitiv.Multiplicarea cu o constantă b = b0 + b1α + … + bm – 1αm – 1 este o aplicatieliniară. Ea poate fi descrisă printr-o matrice B m×m peste GF(2).Pentru a ajunge la componentele lui B se utilizează distributivitatea:

a⋅b = (a0 + a1α + … + am – 1αm – 1)⋅b = a0b + a1(αb) + … + am – 1(αm – 1b).Produsele bi = αib pentru 0 ≤ i ≤ m pot fi precalculate.Componentele acestor vectori pot fi depuse într-o matrice binară

B =

− 1

1

0

mb

bb

⋮ =

−−−−

1,11,10,1

1,11,10,1

1,01,00,0

mmmm

m

m

bbb

bbbbbb

⋯⋮⋱⋮⋮

Produsul a⋅b este produsul vector-matrice

y = a⋅b = aB = [ ]110 −maaa ⋯

−−−−

1,11,10,1

1,11,10,1

1,01,00,0

mmmm

m

m

bbb

bbbbbb

⋯⋮⋱⋮⋮

Un bit yj din y este produsul scalar al vectorului linie a cu coloana j din B:

yj = ∑−

=

1

0,

m

ijiiba = ∑

=1: , jibiia

Sumele din formulele de mai sus trebuie întelese ca „sau-exclusiv“, produseleca „si“ logic.Un circuit scalor în GF(2m) poate fi construit din cel mult m(m – 1) porti “sau-exclusiv” cu două intrări. Scalorii tipici fac uz de cca. m2/2 porti “sau-exclusiv”.Numărul acesta de porti estimat nu include utilizarea subexpresiilor comune.Stabilirea unui circuit minimal este o problemă NP-completă.

Exemplu: scalor în GF(26)

GF(26) are ca polinom primitiv, posibil între altele, pe x6 + x + 1.Multiplicarea cu b = [1 1 0 0 0 1] se defineste prin matricea B dată mai jos.Liniile lui B sunt xib (i = 0, 1, .., 5), cu bitul cel mai semnificativ la dreapta.Liniile succesive ale lui B se obtin prin deplasarea liniei precedente spre dreaptacu pattern-ul de feedback [1 1 0 0 0 0] care corespunde lui 1 + x + x6.

B =

010011101000010100001010000101100011

405

534

423

312

5201

5100

aayaayaayaay

aaayaaay

⊕=⊕=⊕=⊕=

⊕⊕=⊕⊕=

106

Page 107: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Produsul y = a⋅b = aB poate fi citit din coloanele lui B.

Matrice de matrici multiplicatoare

Matricea Mb care corespunde multiplicatorului b = xj mod p(x) constă în m liniiconsecutive, xj mod p(x), …, xj + m – 1 mod p(x), din matricea de puteri aleelementului primitiv x.Deoarece p(x) este primitiv, matricea de puteri ale lui x modulo p(x) esteaceeasi cu matricea de puteri ale elementului primitiv α.Pentru GF(24), matricea (15 + 3)×4 spre dreapta (cu primul bit cel mai putinsemnificativ bit) contine toate matricile multiplicatori.De pildă, 7αM constă din liniile 7 la 10 din acest tabel.

=

0111101001011011

7αM

i αi i αi

0 1 0 0 0 9 0 1 0 11 0 1 0 0 1

01 1 1 0

2 0 0 1 0 11

0 1 1 1

3 0 0 0 1 12

1 1 1 1

4 1 1 0 0 13

1 0 1 1

5 0 1 1 0 14

1 0 0 1

6 0 0 1 1 0 1 0 0 07 1 1 0 1 1 0 1 0 08 1 0 1 0 2 0 0 1 0

Multiplicarea în general

Fie GF(2m) polinoamele peste GF(2) modulo p(x) – prim – de gradul m.

Pentru a(x), b(x) în GF(2m), fie ti = ∑=

i

jjijba

0 coeficientul lui xi în a(x)b(x).

a(x)b(x) = (t0 + t1x + … + tm – 1xm – 1 + tmxm + … + t2m – 2x2m – 2) mod p(x) == t0 + t1x + … + tm – 1xm – 1 + tm(xm mod p(x)) + ... + t2m – 2(x2m – 2 mod p(x))

Cele m – 1 polinoame xm mod p(x), ..., x2m – 2 mod p(x) pot fi precalculate sidepuse ca linii ale unei matrici binare (m – 1)×m:

107

Page 108: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

T =

+

)(mod

)(mod)(mod

22

1

xpx

xpxxpx

m

m

m

⋮ =

+

22

1

m

m

m

α

αα

Liniile lui T se obtin prin deplasări cu feedback corespunzătoare lui p(x).Produsul y = a⋅b poate fi exprimat în notatie matricială:

y = (a0, …, am – 1)⋅(b0, …, bm – 1) =

= [t0 … tm – 1] + [tm ... t2m – 2]T = [t0 … tm – 1 tm ... t2m – 2]

TI

cu I matricea unitară m×m si T matricea (m – 1)×m de mai sus.Formula de calcul de nivel inferior pentru bitii yj ai produsului, pentru j = 0, …,m – 1:

yj = tj + ∑ ∑∑∑−

=

+=−+

=−

=+ +=

2

0

1

10

2

0

m

i

m

illimlij

j

lljl

m

iijim baTbaTt

Fiecare bit al vectorului produs este o sumă a unui subset de termeni produsaibj. Vectorul produs constă în m functii biliniare de a si b.

Exemplu de multiplicare în general

GF(24) poate fi definit de oricare din următoarele trei plinoame prime pesteGF(2): p1(x) = x4 + x + 1, p2(x) = x4 + x3 + 1, p3(x) = x4 + x3 + x2 + x + 1.Matricile T sunt respectiv

T1 =

110001100011

, T2 =

111110111001

, T3=

001000011111

Ecuatiile pentru produs în cazul folosirii lui T3:

[y0 y1 y2 y3] = [t0 t1 t2 t3] + [t4 t5 t6]

001000011111

=

= [t0 ⊕ t4 ⊕ t5 t1 ⊕ t4 ⊕ t6 t2 ⊕ t4 t3 ⊕ t4]Chiar dacă p3(x) nu este primitiv, este un polinom prim si poate fi utilizat pentrua defini corpul Galois GF(24).Dezvoltarea formei matriciale produce ecuatiile booleene următoare:

t0 = a0b0 y0 = t0 ⊕ t4 ⊕ t5

t1 = a0b1 ⊕ a1b0 y1 = t1 ⊕ t4 ⊕ t6

t2 = a0b2 ⊕ a1b1 ⊕ a2b0 y2 = t2 ⊕ t4

t3 = a0b3 ⊕ a1b2 ⊕ a2b1 ⊕ a3b0 y3 = t3 ⊕ t4

t4 = a1b3 ⊕ a2b2 ⊕ a3b1

t5 = a2b3 ⊕ a3b2

t6 = a3b3

108

Page 109: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Pentru orice corp GF(2m), fiecare produs aibj apare în cel putin o relatie. Asadar,sunt necesare m2 porti “şi” pentru metoda evidentă. Numărul de porti “sau-exclusiv” este (m – 1)2 pentru a calcula t0, t1, …, t2m – 2 plus numărul de unitătibinare din T pentru a calcula y0, y1, …, ym – 1 din t0, t1, …, t2m – 2.Polinoamele de genul lui x6 + x + 1 produc putini de 1 în T.Se ignoră aici simplificările obişnuite ale unor subexpresii.

Multiplicarea prin folosirea de reprezentări în subcorp

Corpurile Galois pot fi reprezentate prin utilizarea unor subcorpuri mai maridecât corpul întregilor. GF(22m) = perechile din GF(2m) modulo un polinomprim de gradul 2 peste GF(2m).O alegere bună: un polinom prim pătratic de forma x2 + αx + 1, cu α în GF(2m).

a⋅b = (a0 + a1x)(b0 + b1x) = a0b0 + (a0b1 + a1b0)x + a1b1x2 == a0b0 + (a0b1 + a1b0)x + a1b1(αx + 1) = (a0b0 + a1b1) + (a0b1 + a1b0 + αa1b1)x

Răspuns final: componentele (y0, y1) = (a0, a1)⋅(b0, b1) sunty0 = a0b0 + a1b1

y1 = a0b1 + a1b0 + αa1b1

Singura subexpresie comună este a1b1, prezentă atât în y0 cât si în y1.Multiplicarea în GF(22m) foloseste operatii în subcorpul GF(2m). În circuitulalăturat sunt patru multiplicatoare, un scalor si trei sumatoare.

Multiplicările pot fi executate paralel, secvential sau două deodată. Se poateatinge un compromis între timpul necesar si numărul de porti.

Reciproce: algoritmul lui Euclid

Se presupune că GF(Q) este reprezentat ca polinoame modulo un polinom primp(x). Algortimul lui Euclid extins pentru gcd(r(x), p(x)) stabileste a(x), b(x)astfel încât

a(x)r(x) + b(x)p(x) = gcd(r(x), p(x)) = 1

109

Page 110: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Dacă gradul lui p(x) este m, algoritmul consumă O(m) operatii pe registre de mdigiti. Implementarea este cât se poate de directă. Neajuns: O(m) tempo-uri(cicluri ale ceasului).Resturile ri(x) si coeficientii ai(x) pot împărti spatiul de memorare.

Restul final r este o constantă si reciprocul este r – 1a(x).

Reciproce: căutarea în tabele

Se memorează reciprocele precalculate într-o memorie read-only 2m×m. Pentrumasivele curente de porti, un bit de ROM costă cam 1/8 din costul unei porti“nici” cu două intrări.Tabelul de reciproce pentru GF(28) necesită aproximativ 256 de porti. Multiplicatorul combinational pentru GF(28) utilizează 64 de circuite “şi” si 66de circuite “sau-exclusiv”, ceea ce echivalează cu cca. 260 de porti.Cu toate acestea, tabelele de căutare nu sunt la fel de fezabile pentru corpurimai cuprinzătoare. De pildă, echivalentul în porti pentru un tabel de reciproceGF(210) este de cca. 1280, ceea ce este mult mai mult faţă de 400 de portinecesare unui multiplicator combinaţional.Dimensiunea tabelelor de căutare poate fi redusă prin precalculul efectuatpentru a transforma intrarea la o valoare a cărei reciprocă este cunoscută, apoiprin postcalcularea pentru a ajusta inversa. De pildă, dacă inversa lui βαi este δ(obtinută din tabel) atunci inversa lui β este δαi.

Căutarea secventială

Reciproca lui a poate fi găsită prin testarea relatiei a⋅b = 1 pentru fiecareelement din GF(2m). Toate valorile b nenule pot fi generate utilizând un registrude deplasare cu feedback liniar de maximă lungime. De pildă, dacă corpul estedefinit de p(x) = x5 + x2 + 1:

valoarea initială: a valoarea initială: 1valoarea finală: 1 valoarea finală: a – 1

110

Page 111: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

La deplasarea unui registru, se multiplică continutul cu elementul primitiv α.Registrul cu deplasare spre stânga este încărcat cu a, cel cu deplasare spredreapta este încărcat cu 1.Cele două registre sunt deplasate simultan si sincron până când registrul cudeplasare spre stânga atinge 1.După fiecare deplasare, raportul registrului din stânga la cel din dreapta este a.Dacă i este numărul de deplasări necesare, atunci a⋅αi = 1, asa încât valoarea αi

din registrul cu delasare spre dreapta contine reciprocul lui a.

Compromisul timp-memorie

O memorie asociativă cum este un tabel hash poate fi utilizată pentru a reducenumărul de tempo-uri (cicluri) necesar pentru găsirea reciprocului fără a utilizauni tabel de căutare complet.De exemplu, presupunând că se stochează reciprocele lui α16i pentru i = 0, 1, …,(2m)/16, fragmentul următor de program află recirocul lui a în cel mult 16 pasi:

for (i = 1; i < 16; i++) if (a⋅αi este în tabelul de reciproce)

return αi⋅reciproc(a⋅αi);

Timpul de căutare poate fi scăzut prin utilizarea unei memorii asociative încămai cuprinzătoare.Aceeasi tratare poate fi utilizată pentru a reduce memoria necesară la calculullogaritmului discret al celor 2m valori de intrare într-un tabel de căutare directăpe (2m)/c intrări dacă sunt folosite c căutări.

Reciproce prin exponentiere

Dacă β este un element nenul din GF(q) atunci βq – 1 = 1. Astfel, β – 1 = βq – 2.Puterile lui β pot fi calculate eficient prin ridicarea la pătrat si multiplicare cu β.Reprezentarea binară a lui 2m – 2 contine m biti: 11…102.

Valorile succesive ale elementului de memorie sunt 1, β2, β6, β14, …, 22 −m

β .Se obtine 22 −m

β = β – 1 în m – 1 cicluri ale ceasului, o multiplicare/ridicare lapătrat per ciclu.În GF(2m) ridicarea la pătrat este liniară si poate fi reprezentată printr-o matricebinară m×m.

Ridicare la pătrat

Valoare initială: 1β

111

Page 112: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Reciproce prin reprezentarea în subcorpuri

Se consideră GF(22m) ca fiind multimea perechilor din GF(2m) modulo unpolinom prim x2 + αx + 1 peste GF(2m).Caz special: x + b. Se utilizează algoritmul lui Euclid pentru a calcula (x + b) – 1:

x2 + αx + 1 = (x + b)(x + (α + b)) + (b2 + αb + 1)(x + b) – 1 = (x + (α + b))/(b2 + αb + 1) = (α + b)/(b2 + αb + 1) + x/(b2 + αb + 1)

În general, reciprocul unui element arbitrar ax + b (a ≠ 0):(ax + b) – 1 = a – 1(x + b/a) – 1 = [x + (α + b/a)]/[a((b/a)2 + α(b/a) + 1] =

= [ax + (αa + b)]/(b2 + αab + a2) == (αa + b)/(b2 + αab + a2) + ax/(b2 + αab + a2)

Numitorul este nenul deoarece a este nenul si x2 + αx + 1 este prim.Calculul lui (ax + b) – 1 uzează de operatii din subcorpul GF(2m): o inversare, oscalare, o ridicare la pătrat si trei multiplicări.

Reciproce: circuite combinaţionale recursive

Dacă β este în GF(22m), atunci 1)( 12)12)(12(1212 2

=== −−+−+ mmmmm

βββ .

Deoarece ordinul lui 12 +m

β divide pe 2m – 1, el apartine unui subcorp “maimic” GF(2m). Reciprocul lui poate fi calculat utilizând un circuit “mai mic”.Exemplu: Circuitul reciprocei în GF(28) = GF((24)2):

Circuitul pentru m2β este liniar, utilizează cca. m2/2 porti “sau-exclusiv”.

Multiplicatoarele utilizează O(m2) porti.Unitatea reciprocă prin subcorp este mică. Costul general al circuitului esteaproximativ cât 3 multiplicatoare generale.Metoda aceasta a fost descoperită de Itoh si Tsuji în 1988. Implementareahardware a aritmeticii în corpuri Galois este prezentată în teza de doctorat a luiChristof Paar sustinută la Universitatea din Essen în 1994: Efficient VLSIArchitectures for Bit-Parallel Computation în Galois Field.

Definitia codurilor BCH

Codurile BCH sunt coduri ciclice peste GF(q) (alfabetul canalului) definite de omatrice de verificare (d – 1)×n peste GF(qm) (alfabetul decodorului):

Puterea a 16-a

Inversaîn GF(16)

β

β 16

β 17 β −17 β −1

112

Page 113: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

=

−+−−+−+

+−++

)2)(1()2(22

)1)(1()1(21

)1(2

1

11

dbndbdb

bnbb

bnbb

H

ααα

αααααα

⋯⋮⋱⋮⋮⋮

⋯⋯

Parametrii de proiectare ai unui cod BCH sunt:• α – un element de ordinul n din GF(qm)13

• b – un întreg nenegativ oarecare (este suficient ca 0 ≤ b < n)• d – un alt întreg cu încadrarea 2 ≤ d ≤ n (d = 1 si d = n + 1 sunt cazuri

triviale)Liniile lui H sunt alcătuite din primele n puteri ale unor puteri consecutive aleelementului α.

Cazuri speciale ale codurilor BCH

Un cod BCH primitiv este un cod BCH definit prin utilizarea unui element αprimitiv14.Dacă α este element primtiv al lui GF(qm), atunci lungimea blocului este n = qm

– 1. Aceasta este lungimea de bloc maxim posibilă pentru alfabetul decodoruluiGF(qm).Un cod BCH în sens restrâns este un cod BCH cu b = 1.Unele formule de decodare se simplifică dacă b = 1. Cu toate acestea, uzual sefoloseste b ≠ 1.Matricea de verificare (a paritătii) pentru un cod BCH în sens restrâns primitiv,corector a t erori este

)1(242

)1(242

)1(21

1

11

nttt

n

n

ααα

αααααα

⋯⋮⋱⋮⋮⋮

⋯⋯

cu n = qm – 1 si α o rădăcină de ordinul n a unitǎtii în GF(qm).Fiecare linie a lui H este o linie a matricei de transformare Fourier în corpulfinit de dimensiune n. Cuvintele de cod sunt n-tuple ale cǎror spectre au zerourila 2t frecvente consecutive.

Coduri Reed-Solomon

Codurile Reed-Solomon sunt coduri BCH cu alfabetul decodorului identic cualfabetul canalului.Polinoamele minimale peste GF(Q) ale elementelor lui GF(Q) au gradul 1.Astfel polinomul generator al unui cod Reed-Solomon corector a t erori este

g(x) = (x – αb)(x – αb + 1)…(x – αb + 2t – 1) =

13 Element de ordinul n, fie acesta α, este acela pentru care αn = 1, cu n minim.14 Un element din GF(qm) care generează grupul multiplicativ al corpului GF(qm).

113

Page 114: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

= g0 + g1x + ... + g2t – 1x2t – 1 + x2t

cu g0, g1, ..., g2t – 1 elemente din GF(Q).Distanta minimǎ este 2t + 1, indiferent de alegerea fǎcutǎ pentru α si b.Uzual α este selectat a fi o rǎdǎcinǎ primitivǎ a unitǎtii în GF(Q) pentru amaximiza lungimea blocului.Exponentul de bazǎ b poate fi ales pentru a reduce complexitatea codoruluisi/sau a decodorului.Un exemplu: Discurile compacte audio si cele CD-ROM utilizeazǎ douǎ coduricorectoare de erori Reed-Solomon peste GF(28). Polinomul primitiv utilizatpentru definirea aritmeticii corpului este x8 + x4 + x3 + x2 + 1. Exponentul debazǎ este b = 0.Polinomul generator al codului Reed-Solomon (255, 251) este

g(x) = (x + 1)(x + α)(x + α2)(x + α3) == x4 + α75x3 + α249x2 + α78x + α6 =

= x4 + 0fx3 + 36x2 + 78x + 40În reprezentǎrile hexadecimale ale coeficientilor, cel mai semnificativ bit estela stânga, adicǎ 1 = 01, α = 02, α2 = 04 ş.a.m.d.Nu existǎ trinoame prime de gradul 8; de fapt, nu existǎ trinoame prime degradul 8m oricare ar fi m.

Codul BCH (15, 7, 5): matricea de verificare a paritǎtii

Matricea de verificare a paritǎtii pentru codul BCH binar (15, 7, 5) este

=

=

=

111101111011110101001010010100110001100011000100011000110001111101011001000011110101100100001111010110010111010110010001

11

42963

1432

αααααααα

⋯⋯H

Deoarece liniile lui H sunt liniar independente, sunt 28 sindroame. Existǎ 1 +C15

1 + C152 = 121 < 27 < 28 pattern-uri de eroare de pondere cel mult 2. Acest

cod nu atinge limita Hamming. O matrice sistematicǎ de verificare a paritǎtiipoate fi obtinutǎ folosind polinomul generator.Nu existǎ un cod binar bloc liniar (15, 8) cu distanta minimǎ 5.

Cod BCH (15, 7, 5): polinomul generator

114

Page 115: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Polinomul generator este cel mai mic multiplu comun al polinoamelorminimale pentru α, α2, α3, α4:

g(x) = (x4 + x + 1)(x4 + x3 + x2 + x + 1) == x8 + x7 + x6 + x4 + 1 = 1 + x4 + x6 + x7 + x8

Codurile BCH sunt ciclice, asadar au codoare si circuite sindrom registre dedeplasare.

Pentru codul binar BCH (15, 7, 5) poate fi utilizatǎ o captare (trapping) de erorimodificatǎ.Orice pattern de eroare pe 2 biti poate fi rotit în 8 pozitii de verificare. Astfel,pot fi necesare douǎ treceri de captare a erorilor.

Cod BCH (15, 5, 7)

Polinomul generator al unui cod BCH capabil a corecta trei erori este definit dezerourile α, α3, α5:

g(x) = f1(x)f3(x)f5(x) = (x4 + x + 1)(x4 + x3 + x2 + x + 1)(x2 + x + 1) == x10 + x8 + x5 + x4 + x2 + x + 1

Matricea de verificare a paritǎtii este 3×15 peste GF(24) sau 12×15 peste GF(2):

=

=

=

000000000000000110110110110110110110110110110101101101101101111101111011110101001010010100110001100011000100011000110001111101011001000011110101100100001111010110010111010110010001

111

70105

4263

142

ααααααααα

⋯⋯⋯

H

115

Page 116: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Ultimele douǎ linii sunt redundante: ultima linie este alcǎtuitǎ numai dinzerouri, penultima si antepenultima sunt identice. Rezultǎ 10 ecuatii deverificare si k = 5.Matricea H are 10 linii independente si defineste un cod ciclic binar (15, 5).Polinomul de verificare a paritǎtii h(x) = (x4 + x3 + 1)(x + 1) include totidivizorii primi ai lui x15 – 1 care nu sunt inclusi în g(x).Dualul acestui cod BCH este un cod Hamming (15, 10) purjat (expurgated) cud* = 4.Codul BCH (15, 5) se obtine din codul de lungime maximǎ (15, 4) prinaugmentare, care include si complementele cuvintelor de cod originale.Enumeratorul de ponderi este A(x) = 1 + 15x7 + 15x8 + x15.

Codul BCH (31, 16, 7)

Zerourile cuvintelor de cod sunt α, α3, α5 în GF(25). Matricea de verificare aparitǎtii:

=

111000011010100100010111110110001101010010001011111011001110001001000101111101100111000011010101111101100111000011010100100010110011100001101010010001011111110111110010011000010110101000010011000010110101000111011111010110101000111011111001001100001001100001011010100011101111100011010100011101111100100110000110101110110001111100110100100000101011101100011111001101001000001010111011000111110011010010010111011000111110011010010000100101110110001111100110100100001

H

Polinomul generator: x15 + x11 + x10 + x9 + x8 + x7 + x5 + x3 + x2 + x + 1.Nu este tocmai evident cǎ fiecare set de 6 coloane din H este liniar independent!Pentru lungimea blocului de 31, toate codurile BCH binare cu d* = 7 au 15 bitide verificare.Codul expandat cu (n, k, d*) = (32, 16, 8) este un cod Reed-Muller.

Coduri BCH cu GF(16) alfabet al decodorului

Se presupune cǎ α este o rǎdǎcinǎ primitivǎ în GF(16).Matricea de verificare a paritǎtii urmǎtoare defineste un cod BCH în sensrestrâns primitiv peste orice alfabet de canal care este un subcorp al lui GF(16).

116

Page 117: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

=

5684

4263

2842

142

1111

αααααααααααα

⋯⋯⋯⋯

H

Cele trei multimi alfabetice posibile ale canalului sunt GF(2), GF(22) si GF(24).Codurile BCH care corespund acestor mulţimi sunt• Codul BCH binar (15, 7) peste GF(2), prezentat mai devreme• Codul BCH (15, 9) peste GF(4)• Codul Reed-Solomon (15, 11) peste GF(16).Lungimile de bloc în simboluri sunt 15 de fiecare dată, lungimile de bloc în bitisunt 15, 30, 60.

Alfabetul de canal GF(16)

Cele patru linii ale lui H sunt liniar independente peste GF(24).H defineste un cod (15, 11) peste GF(24) cu distanţa minimǎ 5.Codul este un cod Reed-Solomon peste GF(16) corector de douǎ erori.Folosind tabele de puteri ale lui α se poate gǎsi polinomul generator:

g(x) = (x + α)(x + α2)(x + α3)(x + α4) == α10 + a3x + α6x2 + α13x3 + x4 = 7 + 8x + Ex2 + Dx3 + x4

Coeficientii polinomului generator sunt calculati cu atimetica din GF(24).Coeficientii pot fi reprezentaţi fie în modul exponential, fie în modul binar.Notatia exponentialǎ simplificǎ multiplicarea (se adunǎ exponentii modulo 15),notatia binarǎ simplificǎ adunarea (“sau-exclusiv” pe valori pe 4 biti).Implementǎrile hardware utilizeazǎ vectori de biti si adesea tabele log/antilog.

Alfabetul de canal GF(4)

Fie GF(4) = 0, 1, β, δ cu δ = β + 1 = β2.GF(16) constǎ în perechi de elemente din GF(4) care are polinomul primitiv x2

+ x + β.H defineste un cod BCH peste subcorpul GF(4).

=

δβδδβββδδβδδβββδ

δββδδββδδββδββββββ

βδββδδδββδββδδδβ

δβδδβββδδδβδδβββ

01011100010111

000101101101

01011101001011

01011101100101

]2[ 2H

117

Page 118: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Ultimele douǎ linii, care corespund conjugatei lui α4 peste GF(4), suntredundante (linia 7-a este egalǎ cu suma liniilor 1 si 2, linia 8 este identicǎ culinia 2).Astfel g(x) = f1(x) f2(x) f3(x) are gradul 6 de unde rezultǎ un cod (15, 9, 5) pesteGF(4).

Alfabetul de canal GF(2)

Matricea 16×15 care urmeazǎ are linii redundante peste GF(2). Orice linie dinblocurile de patru linii al doilea si al patrulea este o combinatie liniarǎ aprimelor patru linii.

=

111101011001000100011110101100110010001111010010110010001111111101111011110101001010010100110001100011000100011000110001111101011001000110010001111010011110101100100100100011110101111101011001000011110101100100001111010110010111010110010001

]2[ 1H

Prin stergerea liniilor redundante din H, se obtine matricea de verificare aparitǎtii a codului BCH (15, 7) peste GF(2), corector de 2 erori, discutat maidevreme.

Matrici Vandermonde

Definitie: O matrice Vandermonde µ×µ, V(x1, …, xµ) este o matrice de forma

=

−−− 112

11

21

111

µµ

µµ

µ

xxx

xxxV

⋯⋮⋱⋮⋮

⋯⋯

O aplicatie remarcabilă a matricilor Vandermonde este cea legată deinterpolarea polinomialǎ. Fiind date valorile polinomului f(x) de gradul µ – 1 înµ puncte distincte x1, …, xµ

118

Page 119: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

yi = f(xi) = f0 + f1xi + … + fµ – 1xiµ – 1 (i = 1, …, µ)

coeficientii lui f(x) pot fi gǎsiti prin rezolvarea ecuatiei matriciale[y1 y2 … yµ] = [f0 f1 … fµ – 1]V(x1, …, xµ)

Matrici Vandermonde nesingulare

Lemǎ: Matricea Vandermonde V(x1, …, xµ) este nesingularǎ dacǎ si numai dacǎvalorile x1, …, xµ sunt distincte. De fapt,

det V(x1, …, xµ) = ∏ ∏∏=

=>

−=−µ

1

1

1

)()(i

i

jji

jiji xxxx

Demonstratie: Determinantul este un polinom în µ variabile, x1, …, xµ. Capolinom în xi, zerourile lui sunt xj pentru j ≠ i. Astfel xi – xj este un factor aldeterminantului oricare ar fi perechea (i, j) cu i > j. Aceştia sunt toţi factoriideoarece gradul lui det V(x1, …, xµ) este

0 + 1 + … + (µ – 2) + (µ – 1) = µ(µ – 1)/2 = Cµ2

Coeficientul monomului de pe diagonala principalǎ

1232

1

1 ...1 −

=

− ⋅⋅⋅⋅=∏ µµ

µ

xxxxi

ii

este egal cu 1 atât în determinant cât si în formula de mai sus a determinantului.

Limita BCH

Teoremǎ: Un cod BCH a cǎrui matrice de verificare a paritǎtii are d – 1 linii aredmin ≥ d.Demonstratie: Fiecare set de d – 1 coloane din H este liniar independent pesteGF(qm). Pentru a evidentia aceasta se considerǎ o submatrice alcătuită dincoloanele i1, …, id – 1.

0

11

det)...(det)2()2()2()2(

)1()1(

11

1111

11

11

11

=

−−−+−+

++

−−

didi

iibibi

dbidbi

bibi

bibi

d

dd

d

d

d

αα

αααααα

αααα

⋯⋮⋱⋮

⋯⋯

⋯⋮⋱⋮

⋯⋯

Determinantul acesta este nenul deoarece 01 ≠iα , …, 01 ≠−diα si matricea adoua este o matrice Vandermonde cu coloane distincte.

Proiectarea codurilor BCH

Cuvintele unui cod BCH au zerouri care sunt d – 1 puteri consecutive al lui α.Conjugatele peste alfabetul GF(q) al canalului sunt si ele zerouri. Gradulpolinomului generator este numǎrul total de conjugate.Exemplu: Alfabetul canalului GF(2), alfabetul decodorului GF(26).Primele şase clase de conjugare sunt reprezentate de exponentii:

119

Page 120: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

0 1, 2, 4, 8, 16, 32 3, 6, 12, 24, 48, 335, 10, 20, 40, 17, 34 7, 14, 28, 56, 49, 35 9, 18, 36

• d* = 5 necesitǎ 4 puteri. Exponentii 1, 2, 3, 4 ⇒ 12 conjugate.• d* = 9 necesitǎ 8 puteri. Exponentii 1, …, 8 ⇒ 24 conjugate.• d* = 11 necesitǎ 10 puteri. Exponentii 1, …, 10 ⇒ 27 conjugate.• d* = 4 necesitǎ 3 puteri. Exponentii 1, 2, 3 ⇒ 12 conjugate, dar mai bine

0, 1, 2 ⇒ 7 conjugate (codul purjat – expurgated).

GF(256): puteri ale unui element primitiv

Alfabet al decodorului GF(256)

Codurile BCH primitive în sens restrâns, corectoare de douǎ erori peste GF(2),GF(22), GF(24), GF(28) pot fi definite de o aceeasi matrice de verificare aparitǎtii:

=

101684

75263

50842

2542

1111

αααααααααααα

⋯⋯⋯⋯

H

Polinoamele generatoare lcm(f1(x), f2(x), f3(x), f4(x)) au coeficienti dinsubcorpuri.

GF(22) = 0, 1, α85, α170 = 00,01,D6,D7GF(24) = 0, 1, α17, …, α238 = 01,0B,98,D6

120

Page 121: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Circuite de codare si sindrom

Codurile BCH binare sunt definite utilizând GF(2m) dar sunt ciclice pesteGF(2). Registrele de deplasare pot fi utilizate pentru codare si pentru calcululsindromului.Codul BCH binar primitiv (31, 21) corector de douǎ erori cu polinomulgenerator

(x5 + x2 + 1)(x5 + x4 + x3 + x2 + 1) = 1 + x3 + x5 + x6 + x8 + x9 + x10

foloseşte codorul registru de deplasare urmǎtor:

Sindromul s(x) mod g(x) utilizat pentru detectia erorilor are un circuit similar.

Codorul pentru codul Reed-Solomon (255, 251)

121

Page 122: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Codorul Reed-Solomon

Un cod Reed-Solomon cu d* = 8 are polinomul generator urmǎtor:g(x) = (x + α – 3)(x + α – 2)(x + α – 1)(x + 1)(x + α + 1)(x + α + 2)(x + α + 3) =

= x7 + 6Bx6 + 09x5 + 9Ex4 + 9Ex3 + 09x2 + 6Bx + 1Deoarece reciprocele zerourilor sale sunt si ele zerouri, g(x) este propria saimagine în oglindǎ. Astfel codorul corespunzǎtor lui g(x) are numai 3 scaloridistincti.

Matricea generatoare pentru codul BCH (255, 223) corector de 4 erori

122

Page 123: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Algoritmi de decodare pentru codurile BCH

Decodarea codurilor BCH si Reed-Solomon se face în urmǎtorii pasi principali:1. Se calculeazǎ sindromurile partiale Si = r(αi) pentru i = b, …, b + d – 2.

2. Se află coeficientii λ1, ..., λn ai polinomului locator Λ(x) = ∏=

−ν

1

)1(i

ixX

prin rezolvarea ecuatiilor liniare cu coeficientii constanti Sb, …, Sb + d – 2.3. Se află zerourile X1

– 1, ..., Xν– 1 ale lui Λ(x). Dacă sunt ν erori de simbol,

acestea sunt în locatiile i1, …, iν unde X1 = 1iα , …, Xν = να i .4. Se rezolvă ecuatiile liniare ai căror coeficienti “constanti” sunt puteri ale lui

Xi, pentru a obtine magnitudinile erorilor Y1, …, Yν (operatia nu estenecesară pentru cazul în care alfabet al canalului este GF(2)).

Proceduri eficiente aplicate pentru rezolvarea sistemelor de ecuatii liniare de lapasii 2 si 4:• pentru pasul 2, algoritmul Berlekamp, Massey• pentru pasul 4, algoritmul lui Forney• pentru pasii 2 si 4, algoritmii Sugiyama-Kasahara-Hirasawa-Namekawa

(“euclidieni”).

123

Page 124: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Localizarea erorilor si magnitudinea lor

Se presupune că sunt ν erori, ν ≤ t, situate în pozitiile i1, …, iν şi magnitudinilelor sunt νii ee ...,,

1 (valori în GF(q), alfabetul canalului). Polinomul erorilor

esteν

ν

ii

ii xexexe ++= ...)( 1

1

Cuvântul receptionat r(x) poate fi scris ca r(x) = c(x) + e(x). Sindromurilepartiale sunt valori în alfabetul decodorului GF(qm):

Sj = r(α j) = c(α j) + e(α j) = e(α j) =

= ji

iji

iji

iji

i eeee ν

ν

ν

ναααα ++=++ ...... 1

1

1

1

Schimbări de variabile:• Locatori ai erorilor: X1 = 1iα , …, Xν = να i

• Magnitudinile erorilor: Y1 = 1ie , …, Yν = νi

e (o simplă redenumire).

Ecuatiile sindrom

Valorile locatoare ale erorilor sunt elemente din alfabetul decodorului GF(qm).Magnitudinile erorilor sunt elemente din alfabetul canalului GF(q).Caz special important: Yi = 1 pentru GF(2) ca alfabet al canalului.Pentru moment se admite că este vorba de un cod BCH în sens restrâns (b = 1)cu d = 2t + 1.Sindromurile partiale sunt constante în sistemul de 2t ecuatii în 2ν necunoscute:

vv XYXYS ++= ...111

22112 ... vv XYXYS ++=

. . . . . . . . . . . . . . . . .t

vvt

t XYXYS 22112 ... ++=

Acesta este un sistem de ecuatii algebrice de gradul 2t.Scopul urmărit: reducerea la o ecuatie polinomială într-o singură variabilă, cu vsolutii.

Polinomul locator al erorilor

Polinomul locator al erorilor Λ(x) se defineste caΛ(x) = (1 – xX1)(1 – xX2) … (1 – xXv) =

= ∏∏∏=

==

−−=−v

ii

v

ii

v

ii XxXxX

1

1

11

)()()1( = 1 + λ1x + … + λvxv

Zerourile lui Λ(x) sunt 111 ,..., −−

vXX – valorile reciproce ale locatorilor deerori. Gradul polinomului Λ(x) este numărul de erori.

124

Page 125: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Decodorul trebuie să determine v si locatiile erorilor. Decodorul Peterson-Gorenstein-Zierler (PGZ) poate fi utilizat la găsirea lui Λ(x) din Sj. PGZ nu esteeficient pentru t mare dar este uşor de înteles.

Exemplu de decodor PGZ

Sindromurile pentru codul BCH în sens restrâns, corector a două erori cualfabetul decodorului GF(2m):

jjj XYXYS 2111 += , j = 1, 2, 3, 4.

Se presupune existenta a două erori. Atunci zerourile lui Λ(x) = 1 + λ1x + λ2x2

sunt 12

11 , −− XX .

0 = 1 + λ11

1−X + λ2

21−X → Y1X1

3 + λ1Y1X12 + λ2Y1X1 = 0

0 = 1 + λ11

2−X + λ2

22−X → Y2X2

3 + λ1Y2X22 + λ2Y2X2 = 0

relatiile ultime obtinute prin multiplicarea primelor cu Y1X13, respectiv cu Y2X2

3.Prin adunarea lor se obtine

(Y1X13 + Y2X2

3) + λ1(Y1X12 + Y2X2

2) + λ2(Y1X1 + Y2X2) = 0În paranteze se recunosc sindromurile S3, S2, respectiv S1.Similar, prin multiplicarea cu Y1X1

4, respectiv cu Y2X24 si după însumare se

obtine(Y1X1

4 + Y2X24) + λ1(Y1X1

3 + Y2X23) + λ2(Y1X1

2 + Y2X22) = 0

iar parantezele sunt S4, S3, respectiv S2.Ultimele două ecuatii sunt liniare în necunoscutele λ1 si λ2.

−=

⇒=++

=++4

3

1

2

32

21

22134

21123

00

SS

SSSS

SSSSSS

λλ

λλλλ

Determinantul matricii coeficientilor esteS1S3 + S2

2 = Y1Y2(X1X23 + X1

3X2) = Y1Y2X1X2(X1 + X2)2 ≠ 0deoarece X1, X2, Y1, Y2 ≠ 0 si X1 ≠ X2. Sistemul se poate rezolva asadar pentru λ1

si λ2.

∆=⇒

= −−

12

23112

32

212 SS

SSM

SSSS

M

în care ∆ = det M2 = S1S3 + S22. Coeficientii lui Λ(x) sunt

∆=

4

3

12

231

1

2

SS

SSSS

λλ

Polinomul locator de erori este astfel determinat. Calculul determinantului ∆ seface, desigur, o singură dată.Calculul lui λ1 si λ2 uzează de 8 multiplicări si o inversare în GF(2m).Urmează determinarea zerourilor lui Λ(x), 1

21

1 , −− XX (probabil prin căutareexhaustivă).În final se stabilesc magnitudinile erorilor:

125

Page 126: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

+=

=

2

1

12

1

222

21212

1

1

22

21

21

2

1

)(

1SS

XXXX

XXXXSS

XXXX

YY

Produsul matrice-vector dă magnitudinea erorilor.Calculul lui Y1 si Y2 consumă circa 6 multiplicări si evaluarea a 2 reciproce.Dacă M2 este singulară, adică dacă S1S3 + S2

2 = 0, se rezolvă ecuatia mai simplăM1[λ1] = [S2] ⇒ [S1][λ1] = [S2]

Polinomul locator al erorilor are gradul 1:Λ(x) = 1 + λ1x = 1 + (S2/S1)x ⇒ 1

1−X = S1/S2

Dacă S2 ≠ 0 atunci locatorul eroii singulare este reciproca zeroului lui Λ(x):X1 = S2/S1 = (Y1X1

2)/(Y1X1)Magnitudinea erorii este obtinută din S1 = Y1X1:

Y1 = S1/X1 = S12/S2 = (Y1

2X12)/(Y1X1

2)În final se verifică dacă S4 = Y1X1

4. Dacă această egalitate nu se verificăînseamnă că s-a detectat o eroare care nu poate fi corectată.

PGZ în general

Prin definitia polinomului locator de erori, Λ( 1−iX ) = 0:

1 + λ11−

iX + … + λvv

iX − = 0 (i = 1, …, v)

Această ecuatie se multiplică cu vjii XY + pentru j ≥ 1:

vjii XY + + λ1

1−+ vjii XY + … + λv

jii XY = 0

Ecuatia în această formă are numai puteri pozitive ale lui Xi. Acum se facesuma după i:

∑=

+v

i

vjii XY

1

+ λ1 ∑=

−+v

i

vjii XY

1

1 + … + λv ∑

=

v

i

jii XY

1

= 0

Astfel dacă j ≥ 1 si j + v ≤ 2t, adică 1 ≤ j ≤ 2t – v,Sj + v + λ1Sj + v – 1 + … + λvSj = 0

Se obtin 2t – v ≥ v ecuatii liniare în necunoscutele λ1, …, λv:Sjλv + Sj + 1λv – 1 + ... + Sj + v – 1λ1 = – Sj + v

Ecuatii liniare pentru λ1, …, λv

Primele v ecuatii liniare pentru λ1, …, λv au o matrice a coeficientilor v×v

−−

=

+

+

−+

+

v

v

v

v

v

vvv

v

v

S

SS

SSS

SSSSSS

2

2

1

1

1

121

132

21

⋮⋮⋯

⋮⋱⋮⋮⋯⋯

λ

λλ

Pentru µ = 1, 2, …, t fie matricea

126

Page 127: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Mµ =

−+

+

121

132

21

µµµ

µ

µ

SSS

SSSSSS

⋯⋮⋱⋮⋮

Matricile care sunt constante pe diagonalele NE-SV se numesc matrici Hankel.

Determinarea numărului de erori v

Lemă: Se presupune că există v ≤ t simboluri eronate. Atunci Mv estenesingulară, dar Mµ este singulară pentru µ > v.Demonstratie: Ecuatiile sindrom sunt satisfăcute dacă se defineste Xi = 0 pentruv < i ≤ t.

Mµ =

−+

+

121

132

21

µµµ

µ

µ

SSS

SSSSSS

⋯⋮⋱⋮⋮

=

∑∑∑∑∑∑

+

12

12

1

µµ

µ

µ

iiii

iiii

iiii

XYXY

XYXY

XYXY

⋯⋮⋱⋮

=

=

−− 111

1

11

1111

µµ

µ

µ

µµµ

µ

µµ

XX

XX

XYXY

XYXY

⋯⋮⋱⋮

⋯⋯

⋯⋮⋱⋮

=

=

−− 1

1111

111 1

1

0

011

µµ

µ

µµµ

µµ X

X

XY

XY

XX ⋯⋮⋱⋮

⋯⋮⋱⋮

⋯⋮⋱⋮

Dacă i ≤ v atunci Xi ≠ 0 si Yi ≠ 0. Mv este produsul unei matrici Vandermondenesingulare cu o matrice diagonală nesingulară. Asadar Mv este nesingulară.Dacă µ > v atunci matricea din pozitia mediană are cel putin un zero pediagonala ei, este singulară si singulară este si matricea Mµ.

Decodorul Peterson-Gorenstein-Zierler (PGZ): sumar

1. Se calculează sindromurile partiale Sj = r(α j).2. Se găseste cel mai mare v ≤ t astfel încât det Mv ≠ 0.3. Se rezolvă pentru coeficientii lui Λ(x) următorul sistem liniar:

Mv[λv … λ1]T = [– Sv + 1 … – S2v]T

4. Se află 111 ,..., −−

vXX , zerourile lui Λ(x) în alfabetul decodorului GF(qm).

Dacă Λ(x) are mai putin de v zerouri distincte a apărut o eroare denecorectat.

127

Page 128: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

5. Se rezolvă sistemul de ecuatii liniare următor pentru magnitudinile Y1, …,Yv.

tt

vvt

vvvv

v

vv

vv

SXYXY

SXYXY

SXYXYSXYXY

222

11

11

222

11

111

=++

=++

=++=++

⋮⋮⋯

⋮⋮⋯

Algoritmul Forney, )('

)(1

1

ΛΩ−=

i

ii X

XY , este o solutie de formă “închisă” pentru

pasul 5.

Cod Reed-Solomon corector de trei erori (3EC)

Codurile BCH în sens restrâns uzual nu au cele mai simple polinoamegeneratoare sau matrici de verificare a paritătii. Din acest motiv, codurile Reed-Solomon sunt definite de regulă cu b = 0. (Un alt truc pentru reducereacomplexitătii codorului este a alege pe b astfel încât polinomul generator să fiereversibil – inversele zerorurilor să fie si ele zerouri – astfel numai jumătate dinscalori sunt necesari în circuitele de codare).Matricea următoare defineste un cod Reed-Solomon corector de trei erori(3EC):

=

)1(515105

)1(41284

)1(3963

)1(2642

132

11111

11111

n

n

n

n

n

H

αααααααααααααααα

αααα

⋯⋯⋯⋯⋯⋯

Polinomul generator esteg(x) = (x + 1)(x + α)(x + α2)(x + α3)(x + α4)(x + α5)

Decodarea codului Reed-Solomon 3EC

Sindromurile partiale definite de Sj = r(α j) pentru j = 0, …, 5 satisfac ecuatiileS0 = Y1 + Y2 + Y3

S1 = Y1X1 + Y2X2+ Y3X3

S2 = Y1X12 + Y2X2

2+ Y3X32

S3 = Y1X13 + Y2X2

3+ Y3X33

S4 = Y1X14 + Y2X2

4+ Y3X34

S5 = Y1X15 + Y2X2

5+ Y3X35

128

Page 129: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

unde X1, X2, X3 sunt elementele locatoare ale erorilor si Y1, Y2, Y3 suntmagnitudinile erorilor.Coeficientii polinomului locator al erorilor Λ(x) satisfac ecuatiile linare

=

5

4

3

1

2

3

432

321

210

SSS

SSSSSSSSS

λλλ

Dacă sunt trei erori, atunci solutiile pot fi găsite prin regula lui Cramer:Coeficientul λ0 este luat unitar (printr-o eventuală împărtire cu λ0 a celorlalticoeficienti).Fie X1, X2, X3 zeroruile lui Λ(x) = λ0 + λ1x + λ2x2 + λ3x3.

Locatia simbolurilor incorecte sunt i1, i2, i3 unde 11

iX α= , 22

iX α= , 33

iX α= .

În final, pot fi găsite magnitudinile erorilor Y1, Y2, Y3 prin rezolvarea celor treiecuatii care utilizează primele trei componente ale sindroului, S0, S1, S2.

Y1 = ))((

)(

3121

3203212

XXXX

XXSXXSS

+++++

Y2 = ))((

)(

3212

3103112

XXXX

XXSXXSS

+++++

Y3 = ))((

)(

2313

2102112

XXXX

XXSXXSS

+++++

Pornind de la sindromurile partiale S0, S1, …, S5, pentru a efectua decodareasunt necesare cca. 30 de multiplicări si 3 împărtiri în corpul Galois. Estimareaaceasta nu cuprinde si efortul de calcul consumat cu stabilirea zerourilorpolinomului locator Λ(x).

Circuite de sindrom partial pentru GF(32)

Metoda Horner:

Multiplicarea cu α si α3 foloseste matricile (α5 + α2 + 1):

=

0010110000010000010000010

αM ,

=

1010001010001011000001000

3αM

129

Page 130: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Circuit sindrom partial pentru codul R-S (255, 251)

Căutarea Chien

Căutarea Chien este o metodă inteligentă de a găsi zerourile polinomuluilocator prin forţa brută.Căutarea Chien evaluează Λ(αi) pentru i = 1, 2, ..., n utilizând v multiplicări cuo constantă în loc de v multiplicări în general.Ideia cheie: se utilizează variabilele de stare Qi, ..., Qv astfel încât la momentul i

Qj = λjαji, j = 1, …, vFiecare variabilă de stare este actualizată prin multiplicare cu o constantă:

Qj → Qjαj, i = 1, …, nSuma variabilelor de stare la momentul i este

1)(1

−Λ=∑=

iv

jjQ α

O locatie de eroare este identificată de fiecare dată când suma aceasta este – 1.

Circuitul de căutare Chien #1

130

Page 131: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Elementele de memorie sunt initializate cu coeficientii polinomului locator deerori, adică λj = 0 pentru j = v + 1, …, t.

Semnalul de iesire ERRLOC este adevărat (“true”) dacă Λ(αi) = 0.Deoarece zerourile lui Λ(x) sunt reciprocele elementelor locatoare de erori,ERRLOG este “true” pentru valorile lui i pentru care α – i = an – i = Xl.Cu i modificându-se de la 1 la n, locatiile erorilor sunt detectate de la cel maisemnificativ bit la cel mai putin semnificativ bit.Căutarea Chien poate fi excutată si invers, utilizând scalorii α – 1, …, α – t.

Circuitul de căutare Chien #2

Căutare Chien cu dublă viteză: se evaluează concomitent Λ(α2i) si Λ(α2i +1).

ERRLOC0 (ERRLOC1) se referă la locatiile pare (impare) ale erorilor găsite.Acest circuit este mai eficient decât două exemplare separate ale motorului decăutare Chien deoarece elementele de memorie sunt folosite în comun (shared).

Circuitul de căutare Chien #3

Scalorul α2j necesită de obicei mai multe porti decât scalorul α j pentru valorimici ale lui j.

131

Page 132: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Costul căutării Chien cu dublă viteză poate fi redus prin utilizarea relatiei α2j =α j·α j.

Cascada de două circuite scaloare pentru α i poate fi întrucâtva mai lentă decâtun circuit scalor pentru α2i.

Decodorul PGZ: recapitulare

Se calculează sindromurile partiale Sj = r(α j).Se rezolvă un sistem liniar de ecuatii pentru coeficientii polinomului Λ(x):

Mv[λv … λ1]T = [– Sv + 1 … – S2v]T

cu v cel mai mare număr mai mic sau egal cu t astfel încât det Mv ≠ 0.Se află zerorurile lui Λ(x) 11

1 ,..., −−vXX care sunt reciprocele valorilor

locatoare de erori 11

iX α= , …, vivX α= .

Se rezolvă un sistem de ecuatii liniare pentru magnitudinile erorilor Y1, …, Yv.

tt

vvt

vvvv

v

vv

vv

SXYXY

SXYXY

SXYXYSXYXY

222

11

11

222

11

111

=++

=++

=++=++

⋮⋮⋯

⋮⋮⋯

Algoritmul lui Forney (1965) este o formulă simplă închisă pentru Y1, …, Yv.

Algoritmul Forney

Se consideră un cod BCH definit de zerourile αb, αb + 1, …, αb + 2t – 1.Algoritmul Forney: magnitudinea erorii Yi care corespunde valorii locatoare Xi

este

132

Page 133: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

)(

)(1

11

−−

Λ ′Ω−=

i

ib

ii X

XXY

în care Λ'(x) este derivata formală a polinomului locator de erori,

Λ'(x) = ∑=

−v

i

ii xi

1

si Ω(x) este polinomul evaluator de erori, S(x)Λ(x) mod x2t.Algoritmul Forney este ceva mai simplu pentru codurile BCH în sens restrâns(b = 1).

)(

)(1

1

Λ ′Ω−=

i

ii X

XY

Constatare: Pentru calculul magnitudinilor, algoritmul Forney uzează de 2v2

multiplicări.

Polinomul sindromului partial

Definitie: Polinomul sindromului partial pentru un cod BCH în sens restrânseste functia generatoare a secventei S1, S2, …, S2t:

S(x) = S1 + S2x + S3x2 + … + S2tx2t – 1

Pentru codul BCH definit de αb, …, αb + 2t – 1, polinomul sindromului partial esteS(x) = Sb + Sb + 1x + Sb + 2x2 + … + Sb + 2t – 1x2t – 1

Decodorul PGZ utilizează ecuatii liniare pentru coeficientii lui Λ(x), j = 1, …,2t – v.Pentru codurile în sens restrâns

Sjλv + ... + Sj + v – 1λ1 + Sj + v = 0pentru codurile BCH generale

Sb + j – 1λv + ... + Sb + j + v – 2λ1 + S b + j + v – 1 = 0În ambele cazuri, partea stângă este coeficientul lui xv + j – 1 în produsul depolinoame S(x)Λ(x).Se pot defini sindromuri partiale Si pentru orice i > 0. Dar decodorul poatecalcula numai primele 2t valori.

Polinomul evaluator al erorilor

Definitie: Polinomul evaluator al erorilor Ω(x) este definit de ecuatia cheieΩ(x) = S(x)Λ(x) mod x2t

în care S(x) este polinomul sindrom partial si Λ(x) este polinomul locator deerori. Coeficientul lui xv + j – 1 din S(x)Λ(x) este zero dacă 1 ≤ j ≤ 2t – v prinecuatiile PGZ. Asadar gradul polinomului S(x)Λ(x) mod x2t < v dacă sunt v ≤ terori.Polinomul evaluator al erorilor poate fi calculat explicit din Λ(x):

ω0 = Sb

ω1 = Sb + 1 + Sbλ1

133

Page 134: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

ω2 = Sb + 2 + Sb + 1λ1 + Sbλ2

. . . . . . . . . . . . . . . . .ωv – 1 = Sb + v – 1 + Sb + v – 2λ1 + … + Sbλv – 1

Multiplicările-acumulări necesare: 0 + 1 + … + v – 2 = (v – 1)(v – 2)/2 ≈ v2/2.

Derivata formală

Se poate obtine o formulă închisă pentru Yi în functie de Ω(x), Λ(x) si Xi.Mai întâi este necsară notiunea de derivată formală a unui polinom.Definitie: Derivata formală a functiei polinomiale

f(x) = f0 + f1x + f2x2 + ... + fnxn

este polinomulf’(x) = f1 + 2f2x + 3f3x2 + ... + n fnxn - 1

Multe dintre proprietătile familiare ale derivatelor se mentin. În particular,regula de derivare a unui produs:

(f(x)g(x))’ = f’(x)g(x) + f(x)g’(x)

∑ ∏∏= ≠=

′=′

n

i ijji

n

ii xfxfxf

11

)()()(

Derivatele formale ale polinoamelor sunt definite algebric nu prin evaluareaunor limite.

Proprietătile derivatelor formale

Afirmatie: Un polinom f(x) peste GF(q) are un zero multiplu β dacă si numaidacă si f’(x) = 0 pentru x = β.Demonstratie: Dacă β este un zero al lui f(x) atunci x – β este un factor al luif(x):

f(x) = f1(x)(x – β) ⇒ f’(x) = f1(x) + f1’(x)(x – β) ⇒ f’(β) = f1(β).Astfel β este un zero repetat – f(x) are ca factor pe (x – β)2 – dacă si numai dacăf’(β) = 0.Peste GF(2m), derivata formală are numai puteri pare ale nedeterminantei:

f’(x) = f1 + 2f2x + 3f3x2 + ... + n fnxn – 1 = f1 + 3f3x2 + 5f5x4 + ...din motivul simplu că 2 = 1 + 1 = 0, 4 = 2 + 2 = 0 + 0 = 0 s.a.m.d.Asadar derivata formală Λ’(x) are cel mult v/2 coeficienti nenuli.Deoarece Λ’(x) este un polinom în x2 de grad inferior lui v/2, se poate calculaΛ’(β) utilizând o ridicare la pătrat si cel mult v/2 operatii de multiplicare-acumulare.De observat că f”(x) = 0 pentru toate polinoamele peste GF(2m).

Algoritmul Forney: dezvoltare

Polinomul evaluator al erorilor Ω(x) poate fi exprimat în functie de numerelelocatoare Xi si de magnitudinea erorilor Yi.

134

Page 135: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Mai întâi se deduce formula închisă pentru S(x).S(x) =

∑∑ ∑∑ ∑∑==

=

= =

+−

=+ −

−===v

i i

tib

ii

v

i

t

j

jji

bii

t

j

v

i

jjbii

t

j

jjb xX

xXXYxXXYxXYxS

1

2

1

12

0

12

0 1

12

0 1

)(1

Se foloseste apoi definitia Λ(x) = ∏=

−v

ll xX

1

)1( pentru a calcula S(x)Λ(x).

S(x)Λ(x) =

∑ ∏∑ ∏

∑ ∏∏∑

= ≠= ≠

= ≠==

−−−=

=

−−=−⋅

−=

v

i ill

ti

bii

v

i ill

bii

v

i il

til

bii

v

ll

v

i i

tib

ii

xXxXXYxXXY

xXxXXYxXxX

xXXY

1

2

1

1

2

11

2

)1()()1(

))(1)(1()1(1

)(1

Suma a doua din expresia ultimă este un polinom în x de grad cel putin 2t.Astfel restul modulo x2t al acestei sume este nul.Asadar

Ω(x) = S(x)Λ(x) mod x2t = ∑ ∏= ≠

−v

i ill

bii xXXY

1

)1(

Exprimarea lui Ω(x) în functie de Xi si Yi este încheiată. Mai departe se face uzde formula derivatei Λ’(x):

Λ’(x) = ∑ ∏∏= ≠=

−−=′

v

l ljjl

v

ll xXXxX

11

)1()()1(

La evaluarea lui Λ’(x) în punctul Xi – 1, numai un termen din suma de mai sus

este nenul:

Λ’(Xi – 1) = ∏

−−−ij

iji XXX )1( 1

Similar, valoarea lui Ω(x) în Xi – 1 include numai un termen din suma

Ω(Xi – 1) = ∏∑ ∏

= ≠

− −=−ij

ijbii

v

l ljij

bll XXXYXXXY )1()1( 1

1

1

Astfel

i

bii

i

i

X

XY

X

X

−=

Λ ′Ω

)(

)(1

1

⇒ Yi = )(

)(1

1)1(

−−−

Λ ′Ω−

i

ibi X

XX

Algoritmul Forney în timpul căutării Chien

Magnitudinile erorilor Yl pot fi calculate printr-un circuit similar căutării Chien:

135

Page 136: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

La fiecare moment i, valorile lui Ω(αi) si Λ’(αi) sunt disponibile. Astfel Yl poatefi calculat printr-o împărtire si o multiplicare cu α – i(b – 1).

Algoritmul Forney, sumar

Se presupune că un cod BCH este definit de zerourile αb, αb + 1, …, αb + 2t – 1.Se presupune că polinomul locator al erorilor are gradul v.Polinomul evaluator al erorilor constă în primii v termeni ai polinomului produsS(x)Λ(x).

Derivata formală Λ'(x) este ∑=

−v

i

ii xi

1

Atunci magnitudinea erorii Yi care corespunde numărului Xi locator al eroriieste

)(

)(1

11

−−

Λ ′Ω−=

i

ib

ii X

XXY

Calculul coeficientilor lui Ω(x) utilizează cca. v2/2 multiplicări.Calculul lui Yi necesită v + (v – 1) + 2 = 2v + 1 multiplicări si evaluarea uneireciproce.Algoritmul Forney stabileste magnitudinile tutror celor v erori consumândaproximativ 2,5v2 multiplicări.Când alfabetul decodorului este GF(2m), Λ'(x) are numai v/2 coeficienti nenuli,ceea ce reduce numărul total de operatii la 2v2 multiplicări.

Algoritmul euclidian de decodare BCH

Sugiyama, Kasahara, Hirasawa, Namekawa (1975). Ecuatia cheie esteΩ(x) = S(x)Λ(x) mod x2t ⇒ Ω(x) = S(x)Λ(x) + b(x)x2t

cu b(x) un polinom de grad inferior numărului v.Se utilizează algoritmul euclidian extins pentru a calcula gcd(S(x), x2t). Pentru i= 1, 2, …:

136

Page 137: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

ri(x) = ri – 2(x) – Qi(x)ri – 1(x) = ai(x)S(x) + bi(x)x2t

ai(x) = ai – 2(x) – Qi(x)ai – 1(x), bi(x) = bi – 2(x) – Qi(x)bi – 1(x)La un anumit pas i restul ri(x) are grad inferior lui t (cu exceptia cazului Si = 0pentru i ≤ t si nu toti Si = 0, caz în care a apărut o eroare necorectabilă).Primul astfel de rest este ri(x) = γΩ(x), cu γ termenul constant al lui ai(x).Polinomul locator de erori Λ(x) = γ – 1ai(x) este un polinom de gradul cel maimic astfel încât grad(S(x)Λ(x) mod x2t) < t.

Algoritmul lui Euclid în pseudocod

1. Se calculează sindromurile: Sj = r(α j), j = 1, …, 2t2. Se initializează:

s(x) ← x2t; t(x) ← ∑=

−t

j

jj xS

2

1

1; A(x) ←

1001

;

3. Cât timp gradt(x) ≥ t

Q(x) ←

)(

)(

xt

xs;

)()(

xtxs

− )(110

xQ .

)()(

xtxs

; A(x) ←

− )(110

xQ A(x);

4. Finalizare:∆ ← A22(0); Λ(x) ← ∆ – 1A22(x); Ω(x) ← ∆ – 1t(x).

Câtul

)(

)(

xt

xs este definit prin s(x) =

)(

)(

xt

xst(x) + r(x), gradr(x) < gradt(x).

Tabloul algoritmului euclidian

Uzual câtul qi(x) este liniar. În acest cazri(x) = ri – 2(x) – qi1xri – 1(x) – qi0ri – 1(x)

137

Page 138: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Coeficientii lui qi(x) pot fi găsiti din primii doi coeficienti ai lui ri – 2(x), ri – 1(x).

Algoritmul euclidian: exemplu

Codul Reed-Solomon peste GF(28) corector de 6 erori:

Algoritmul euclidian: costul calculelor

Algoritmul euclidian produce resturi astfel încât gradri(x) < gradri – 1(x).• Restul initial S(x) are gradul cel mult 2t – 1• Restul final Ω(x) are gradul cel mult t – 1Asadar sunt necesari cel mult t pasi principali, majori.

138

Page 139: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Fiecare pas principal este o împărtire de polinoame urmată de o multiplicare depolinoame:

ri – 2(x) = Qi(x)ri – 1(x) + ri(x)ai(x) = ai – 2(x) – Qi(x)ai – 1(x)

La pasul i, pentru a găsi pe Qi(x) se folosesc cca. 2(2t – i) multiplicări si pentrua-l găsi pe ai(x) sunt necesare 2i multiplicări. Numărul de multiplicări pe paseste aproximativ 4t.Costul general pentru a stabili pe Λ(x) si pe Ω(x): 4t2 multiplicări si t reciproce.Rezolvarea directă a sistemului Mt[λt … λ1]T = – [St + 1 … S2t]T consumă cca. t3/6operatii.

Algoritmul de decodare Berlekamp

În 1967, Berlekamp a inventat o procedură iterativă eficientă de rezolvare aecuatiilor liniare cu matrici de coeficienti

=

−++

+

+

1221

2543

1432

321

µµµµ

µ

µ

µ

µ

SSSS

SSSSSSSSSSSS

M

⋯⋮⋱⋮⋮⋮

în care Sj = ∑=

v

i

jii XY

1

este un sindrom partial.

Fiecare matrice Mµ este aflată prin utilizarea rezultatelor unor calcule pentru omatrice precedentă Mµ – ρ si a încă unui număr O(µ) operatii.Însumând după µ de la 1 la v rezultă un cost de O(v2) operatii.În algortimul Berlekamp originar, un tabel cu 2t linii stochează rezultateleintermediare.

Algoritmul de decodare Massey: sinteza registrului de deplasare

Massey (1969) a arătat cum găsirea polinomului locator de erori Λ(x) esteechivalentă cu problema sintezei unui registru de deplasare:Fiind dată secventa S1, S2, …, S2t să se găsească cea mai scurtă secventă λ1, λ2,…, λv care generează Sv + 1, …, S2t pornind de la S1, …, Sv într-un registru dedeplasare de dimensiune v.

139

Page 140: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Reamintim că dacă numărul de erori este v atunciSjλv + Sj + 1λv – 1 + ... + Sj + v – 1λ1 = – Sj + v

pentru j = 1, …, 2t – v. Sistemul de ecuatii PGZ este o convolutie S * Λ.

Algoritmul Berlekamp-Massey: recapitulare

Sindromurile partiale S1, …, S2t sunt examinate pe rând pentru k = 1, …, 2t.La finalul pasului k, Λ(k)(x) de gradul L satisface primele k ecuatii:

Sk – i + Sk – i – 1λ1(k) + … + Sk – i – LλL

(k) = 0 i = 0, …, k – LDacă Λ(k – 1)(x) satisface ecuatia a k, atunci evident

Λ(k)(x) = Λ(k – 1)(x).Ideea cheie si surprinzătoare: dacă Λ(k – 1)(x) nu lucrează (suma este ∆(k)(x) ≠ 0),se actualizează astfel:

Λ(k)(x) = Λ(k – 1)(x) – ∆(k)T(x)unde T(x) = (1/∆(r))xk – rΛ(r)(x) este ultimul Λ(r)(x) care a esuat, deplasat si scalat.Când gradul lui L(x) a crescut, se salvează Λ(k – 1)(x) pentru pasii următori:

T(x) = (1/∆(k))xΛ(k – 1)(x)∆(k)(x) se numeste discrepanta la pasul k.

Algoritmul Berlekamp-Massey: pseudocod

Λ(x) = 1; /* “polinom de conectare” */L = 0; /* L este permanent egal cu gradul lui Λ(x) */T(x) = x; /* “polinom de corectie” */for (k = 1; k ≤ 2t; k++)

∆ = ∑=

L

iikiS

0

λ ; /* Sk + Sk – 1λ1 + … + Sk – L – 1λL */

if (∆ == 0) N(x) = Λ(x); /* se mentine Λ(x) dacă ∆ == 0 */

else N(x) = Λ(x) – ∆T(x); /* noul Λ(x) are discrepanta 0 */if (L < k – L)

L = k – L;T(x) = ∆ – 1Λ(x); /* polinom de corectie nou */

140

Page 141: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

T(x) = xT(x); /* se deplasează polinomul de corectie */Λ(x) = N(x); /* o valoare posibil nouă pentru Λ(x) */

Tabloul Berlekamp-Massey

Figura care urmează arată un calcul tipic pentru codul BCH coretor a sase erori.

Exemplu pentru algoritmul Berlekamp-Massey (1)

Cod Reed-Solomon peste GF(28) corector de 6 erori. O eroare prezentă.S = 6f 81 63 f9 74 6f 81 63 f9 74 6f 81

141

Page 142: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Contorizarea operatiilor: 28 de multiplicări, 1 împărtiri.

Exemplu pentru algoritmul Berlekamp-Massey (2)

Cod Reed-Solomon peste GF(28) corector de 6 erori. 2 erori prezente.S = b0 91 cc d1 99 26 0a 8a 70 67 96 c9

Contorizarea operatiilor: 45 de multiplicări, 2 împărtiri.

Exemplu pentru algoritmul Berlekamp-Massey (3)

Cod Reed-Solomon peste GF(28) corector de 6 erori. 6 erori prezente.S = bc 30 bb 24 81 74 e5 a7 bd 2b 95 34

142

Page 143: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Contorizarea operatiilor: 123 de multiplicări, 6 împărtiri.

Exemplu pentru algoritmul Berlekamp-Massey (4)

Cod Reed-Solomon peste GF(28) corector de 6 erori. 7 erori prezente.S = f1 9f 5e 6e 5c 52 b2 46 02 99 b2 17

Contorizarea operatiilor: 123 de multiplicări, 6 împărtiri.

Dacă sunt 7 erori, algoritmul Berlekamp-Massey produce uzual un polinomΛ(x) de gradul 6. Dar Λ(x) are 6 zeroruri în GF(2m) cu probabilitatea 1/6! =probabilitatea conditionată de corectare gresită.

Algoritmul Berlekamp-Massey: fluxul programului

143

Page 144: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Algoritmul Berlekamp-Massey: costul calculului

Algoritmul Berlekamp-Massey retine estimări curente pentru polinomul deconectare Λ(x) si pentru polinomul de corectare T(x).Când este necesar Λ(x) si T(x) sunt actualizate prin atribuire paralel:

Λ∆∆−Λ←

Λ

− )()()(

)()(

1 xxxTx

xTx

Cerintele de spatiu de memorare: 2t simboluri alfabetice ale decodorului, pentruΛ(x) si T(x).Timpul de executie în cazul cel mai dezavantajos (multiplicări/împărtiri): 2 + 4+ … + 4t ≈ 4t2.Timpul de executie cu un număr fix de multiplicatori este O(t2).Dacă sunt disponibili t multiplicatori, algoritmul poate fi executat în O(t) pasi.Unii autori spun despre acesta că este un timp de executie liniar.

Rezolvarea polinoamelor locatoare de erori: gradul 2

Polinoamele peste GF(2m) de grad cel mult 4 pot fi factorizate prin metodeliniare. Se consideră un polinom locator de gradul al doilea:

Λ(x) = 1 + λ1x + λ2x2

Ridicarea la pătrat este o transformare liniară în GF(2m) peste corpul scalarGF(2). Asadar ecuatia Λ(x) = 0 poate fi scrisă ca

144

Page 145: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

x(λ2S + λ1I) = 1cu x un vector necunoscut cu m componente, cu S matricea m×m peste GF(2)care reprezintă sidicarea la pătrat si 1 vectorul cu m componente [1 0 … 0].Dacă există două solutii distincte, acelea sunt zerouri ale lui Λ(x).Matricea de ridicare la pătrat S pote fi precalculată astfel încât coeficientiimatricei m×m A = λ2S + λ1I poate fi calculată în O(m2) operatii cu biti.Rezolvarea sistemului necesită O(m3) operatii cu biti sau O(m2) operatii cucuvinte.

Rezolvarea mai rapidă a polinoamelor locatoare de erori: gradul 2

Se utilizează schimbarea de varabile x = (λ1/λ2)u. Λ(x) devine

Λ(x) = λ2x2 + λ1x + 1 = λ2

2

2

1

u

λλ

x2 + λ1

u

2

1

λλ

+ 1 =

= 2

2

21 u

λλ

+ u2

21

λλ

+ 1 =

++

21

22

2

21

λλ

λλ

uu

Ecuatia simplificată este de forma u2 + u + c = 0. Ea poate fi rezolvată utilizândpseudoinversa precalculată a matricei S + I. Dacă U1 este un zero pentru aceastăecuatie, atunci X1 = (λ1/λ2)U1 este un zero pentru Λ(x), cum este si X2 = (λ1/λ2)(U1 + 1) = X1 + (λ1/λ2).Dacă 2m nu este prea mare, se poate stoca un tabel de zerouri ale ecuatiei u2 + u+ c = 0.

Corectarea stergerilor

Stergerile sunt simboluri speciale primite utilizate pentru a reprezentaincertitudinea. Exemple:• Demodulatorul sterge un simbol când semnalul este slab calitativ.• Decodorul de nivel redus sterge simboluri ale cuvântului de cod care are o

eroare necorectabilă.Teoremă: Un cod bloc poate corecta până la d* – 1 stergeri.Demonstratie: Dacă numărul de stergeri este mai mic decât d*, atunci există unsingur cuvânt de cod care se potriveste cu secventa receptionată.

Invers, dacă două cuvinte de cod diferă prin exact d* simboluri, secventareceptionată obtinută prin stergerea simbolurilor diferite nu poate fi decodată.

145

Page 146: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Afirmatie: Un cod bloc poate corecta t erori si ρ stergeri dacă si numai dacă d* ≥2t + ρ + 1.

Corectarea stergerilor pentru codurile bloc liniare

Stergerile pot fi corectate în cazul codurilor bloc liniare prin rezolvare deecuatii liniare.Ecuatia cHT = 0 dă n – k ecuatii pentru ρ valori ale stergerilor.Oricare d* – 1 coloane din H sunt liniar independente astfel încât ecuatiile suntrezolvabile dacă ρ < d* ≤ n – k + 1.Exemplu: Fie r = [0 0 ? ? 0 1 0] secventa receptionată în cazul unui codHamming (7, 4).

H =

111010001110101101001

Matricea de verificare a paritătii produce trei ecuatii pentru bitii stersi x si y:0 = 1·0 + 0·0 + 0·x + 1·y + 0·0 + 1·1 + 1·0 = 1 + y0 = 0·0 + 1·0 + 0·x + 1·y + 1·0 + 1·1 + 0·0 = 1 + y0 = 0·0 + 0·0 + 1·x + 0·y + 1·0 + 1·1 + 1·0 = 1 + x

De aici rezultă x = 1, y = 1 si cuvântul decodat este c = [0 0 1 1 0 1 0].

Corectarea stergerilor pentru coduri BCH

Se consideră un cod BCH definit de parametrii (α, n, b, d). Se presupune cănumărul de stergeri ρ este inferior lui d, stergerile sunt situate în locatiile j1, …,jρ, iar erorile lipsesc.Se definesc locatoarele de stergeri Ul = ljα , l = 1, …, ρ.Ecuatiile sindrom pentru magnitudinea stergerilor sunt

S1 = E1bU1 + E2

bU2 + … + EρbU ρ

S2 = E11

1+bU + E2

12

+bU + … + Eρ1+bU ρ

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Sd – 1 = E1

21

−+ dbU + E22

2−+ dbU + … + Eρ

2−+ dbU ρ

Acest sistem de ecuatii liniare are o solutie unică pentru E1, E2, …, Eρ deoarecematricea coeficientilor este o matrice Vandermonde scalată pe coloane.Algoritmul Forney furnizează o solutie mai rapidă.Polinomul locator al stergerilor se defineste ca

Γ(x) = ∏=

−ρ

1

)1(l

l xU = 1 + γ1x + γ2x2 + … + γρxρ

Spre deosebire de polinomul locator de erori, valorile lui Ul sunt cunoscute.Coeficientii lui Γ(x) pot fi calculati prin multiplicare de polinoame:

∏=

−i

ll xU

1

)1( = (1 – Uix)∏−

=

−1

1

)1(i

ll xU

146

Page 147: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Pentru fiecare i se folosesc i – 1 multiplicări cumulative. Numărul total deoperatii: ρ(ρ – 1)/2.Algoritmul Forney dă valorile erorilor în locatiile stergerilor:

El = )(

)(1

11

−−

Γ ′Ω−

l

lbl U

UU , l = 1, …, ρ.

în care Ω(x) = S(x)Γ(x) mod x2t are gradul cel mult ρ – 1.Ω0 = S1, Ω1 = S2 + S1γ1, …, Ωρ – 1 = Sρ + Sρ – 1Γ1 + … + S1Γρ.

Calculul magnitudinilor celor ρ erori consumă cca. 5ρ2/2 multiplicăricumulative.

Exemplu de corectare a stergerilor: retea fără fir (wireless)

Erori aleatoare pe biti, rata de coliziune mare. Dimensiunea maximă apachetului: 600 bytes. Procedura de codare pentru coduri concatenate:• Se împart datele în trei linii egale• Se crează două linii de verificare prin codul Reed-Solomon (5, 3) scurtat pe

coloane• Se codează liniile cu codul BCH (255, 239) scurtat corector de două erori pe

fragmente de cel mult 29 de bytes de date.Exemplu: Frame-uri de 58 de bytes. Subframe-urile au 20 de bytes si 2 bytes deverificare BCH.

Procedura de decodare pentru coduri concatenate

Codul BCH coretează erori pe 2 biti în 31 de bytes deoarece29·8 + 16 = 232 + 16 = 248 ≤ 255 = 28 – 1

O subframe cu 200 de bytes necesită 200/9 = 7 fragmente.Exercitiu: Aflati probabilitatea ca o frame să fie pierdută din cauză de erorialeatoare.Corectiile gresite brute si erorile incidentale sunt corectate utilizând codul pecoloane (5, 3). Pot fi înlocuite până la două subframe-uri pierdute.Procedura de corectare a stegerilor necesită rezolvarea de ecuatii liniare.Se precalculează inversele matricilor coeficientilor pentru C2

5 = 10 combinatiiposibile ale celor două subframe-uri pierdute.Fiecare byte din subframe care lipseste este calculat folosind 3 multiplicări încorpul Galois.

147

Page 148: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Corectia software ia 10 la 15 M68000 instructiuni masină per byte.Truc pentru a reduce timpul: se memorează logaritmii constantelor matricialeprecalculate.Când numai o subframe este pierdută, ea poate fi înlocuită prin operatia XORaplicată celorlalte subframe-uri.

Erori la decodarea stergerilor: cazul binar

Dacă sunt ρ stergeri într-un cuvânt binar receptionat r, atunci pot fi corectate t =(d* – 1 – ρ)/2 erori utilizând un decodor numai pentru erori:1. Fie c0 si c1 cuvintele de cod obtinute prin decodarea vectorilor cu n

componente r0 si r1 obtinuti din r prin înlocuirea tuturor stergerilor respectivcu zerouri si cu unităti binare.

2. Se compară c0 si c1 cu r si fie c cel care este mai apropiat de r. (c0 sau c1

sau ambele pot fi nedefinite din cauza căderii/esecului decodorului. Un ci

nedefinit este ignorat).

Dacă numărul de erori este cel mult (d* – 1 – ρ)/2 atuncidH( c , r) ≤ ρ/2 + (d* – 1 – ρ)/2 ≤ ρ/2 + (d* – 1 – ρ)/2 = (d* – 1)/2

Aceasta arată că r este în sfera de decodare a lui c .

Corectarea erorilor si stergerilor: Berlekamp-Massey

1. Se calculează polinomul locator al stergerilor Γ(x) = ∏=

−ρ

1

)1(l

l xU .

2. Se calculează poolinomul sindromului partial S(x) utilizând 0 pentrulocatiile sterse.

3. Se calculează polinomul sindromului modificat Ξ(x) = S(x)Γ(x) mod x2t.Sindromurile modificate sunt Ξ1, …, Ξ2t – ρ.

4. Se rulează algoritmul Berlekamp-Massey cu sindromurile Ξ1, …, Ξ2t – ρ

pentru a găsi polinomul locator de erori Λ(x) de grad cel mult (2t – ρ)/2.5. Se utilizează ecuatia cheie modificată pentru a găsi polinomul evaluator al

erorilor Ω(x):Ω(x) = S(x)Λ(x)Γ(x) mod x2t = S(x)Ψ(x) mod x2t

cu Ψ(x) = Λ(x)Γ(x) polinomul locator de erori si de stergeri.6. Se utilizează algoritmul Forney pentru a calcula magnitudinile erorilor:

)(

)(1

11

−−

Ψ ′Ω−=

i

ibii X

XXY , El =

)(

)(1

11

−−

Ψ ′Ω−

l

lbl U

UU

148

Page 149: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

pentru i = 1, …, v si l = 1, …, ρ.

Aplicatie la corectarea stergerilor: redundanta variabilă

Unele sisteme de comunicatie folosesc cantităti variabile de protectie la erori:• Un subsistem ECC (Error Correction Code) poate fi aranjat (customized)

pentru aplicatii speciale• Sistemele adaptive pot face ca simbolurile de protectie să crească numeric

sau să scadă după necesităti.Tratarea evidentă: utilizarea de polinoame generatoare de coduri Reed-Solomondiferite:

gt(x) = (x + α)(x + α2) …(x + α2t), t = 1, 2, …, T.Problemă: codoarele bazate pe polinoame generatoare diferite reclamă multescalări.Solutia inteligentă: se utilizează polinomul generator pentru corectarea maximăa erorilor dar se transmit numai 2t simboluri de verificare, adică se sterg ρ = 2T– 2t simboluri de protectie/verificare.

Apoi se utilizează decodarea cu erori si stergeri, unde simbolurile lipsă suntsterse.

Modificarea sindromului

Polinomul sindrom modificat pentru codul Reed-Solomon este usor de găsit.1. Simbolurile de verificare sterse sunt considerate a fi plasate în locatiile – 1,

– 2, …, – ρ. 2. Se calculează sindromul modificat cu circuitul de mai jos.3. În algoritmul Berlekamp-Massey, se utilizează sindromurile modificate T1,

…, T2t – ρ.4. Se află zerourile lui Λ(x).5. Se calculează Ψ(x) = Λ(x)Γ(x) si Ω(x) = S(x)Λ(x)Γ(x) mod x2t.6. Se utilizează algoritmul Forney pentru a găsi magnitudinile erorilor si

magnitudinile stergerilor.Corectarea stergerilor poate fi utilizată de un codor pentru a genera simbolurilede verificare din sindromurile partiale pentru simbolurile mesajelor.Sindromurile partiale pot fi mai usor de calculat deoarece circuitele suntnecuplate, astfel fiind necesare mai putine fire lungi.

149

Page 150: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Sumarul capitolului

Partea aceasta de curs acoperă codurile algebrice pentru corectarea eroriloraleatoare, a erorilor incidentale (burst) si a ştergerilor.Codurile liniare bloc generale peste un alfabet al canalului GF(q) suntdeterminate de o matrice generatoare sau de o matrice de verificare a paritătiipeste GF(q).

c = mG, cHT = 0Cazuri speciale importante: codurile ciclice sunt determinate de un polinomgenerator.

c(x) = m(x)g(x), c(x)h(x) = 0 mod (xn – 1)Capacitatea de a proteja la erori a codurilor ciclice se leagă de zerourilepolinomului generator dintr-un corp extins, GF(Q), alfabetul decodorului.Limita BCH: dacă d – 1 puteri consecutive ale lui α sunt zerouri ale lui g(x)atunci distanta Hamming minimă este cel putin d.Codurile algebrice sunt utilizate deoarece capacitatea lor de protectie la erorieste cunoscută – sau mărginită inferior – si deoarece s-au găsit algoritmi dedecodare eficienti.

Detectarea erorilor: foarte usoară

Capacitatea de a detecta erori: e = d* – 1.Ce se urmăreste: detectarea erorilor aleatoare de pondere redusă sau a erorilorincidentale de lungime redusă.Fiecare bit de informatie trebuie să afecteze cât mai multi biti de protectie.Un exemplu: CRC – Cyclic Redundancy Check = coduri ciclice.

150

Page 151: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• Codarea/decodarea cu circuite din categoria registrelor de deplasare.• Detectează toate erorile de pondere cel mult d* – 1• Detectează toate erorile incidentale de lungime cel mult n – k (“optimal”)• Detectează toate erorile cu exceptia a cca. 2 – (n – k) erori de pondere cel putin

d* sau de lungime mai mare decât n – k + 1• Lungimea reală a blocului este de obicei mai mică decât lungimea de bloc

proiectată.Erori catastrofale: Pr[eroare nedetectată] ≈ 2 – (n – k) (ca o regulă de bun simţ).

Corectarea stergerilor: usoară

Capacitatea de a corecta stergerile: ρ = d* – 1.Dacă d* ≥ 2t + ρ + 1 atunci pot fi corecate până la ρ stergeri si t erori.Decodarea se face prin rezolvarea unor ecuatii liniare.Stergerile binare pot fi corectate prin utilizarea a două treceri corectoare.Codurile ciclice pot corecta erori incidentale cu lungimea de până la n – k.Codurile BCH pot corecta stergeri prin algoritmul Forney:

)(

)(1

11

−−

Γ ′Ω−=

l

lbll U

UUE cu ∏

=

−=Γρ

1

)1()(l

l xUx si lilU α= .

Algoritmul Forney este util chiar dacă alfabetul canalului este GF(2) deoareceun bit şters poate fi 0.

Corectarea erorilor incidentale: oarecum usoară

• Limita Rieger: 2l ≥ n – k. Această limită este optimistă, pentru lungimi aleblocului mari.

• Eficienta corectării erorilor incidentale: 2l/(n – k).• Codurile Fire: g(x) = (x2t – 1 – 1)p(x). Eficienta corectării erorilor incidentale

este de cca. 2/3.• Codurile ciclice sunt foarte potrivite pentru corectarea erorilor incidentale

(singulare).• Decodarea prin captarea erorilor (error trapping) functionează totdeauna.• Coduri Fire generalizate: g(x) = (x2t – 1 – 1)p1(x)…pr(x).• Decodarea rapidă prin sindromuri deplasate în registre de deplasare cu

feedback diferite.• Intercalarea este o modalitate eficace de crestere a capacitătii de a corecta

erori incidentale. Costul este în memorie si în întârzieri.

Corectarea erorilor aleatoare: nu prea facilă

• Capacitatea de a corecta erori: t = (1/2)(d* – 1).• Limita Hamming (sfere împachetate):

151

Page 152: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

n – k ≥ ∑=

−t

i

iinQ QC

0

)1(log

• Limita Hamming peste GF(q):d* = 3, n – k = m, n = (qm – 1)/(q – 1)

Codurile Hamming sunt printre putinele coduri perfecte, coduri care atinglimita Hamming.

• Corectarea erorilor unice, singulare nu este suficient de acoperitoare. Pentrun mare, apare necesitatea ca t > nε.

• Codurile Reed-Muller (nu fac obiectul acestui capitol) au parametrii m, r (0≤ r ≤ m):

n = 2m, d* = 2m – r, k = 1 + Cn1 + … + Cn

r.• Coduri proiectate care fac uz de teoria corpurilor finite. Decodoarele folsesc

simboluri din GF(2m).• Codurile BCH pot corecta t erori.

Când sunt binare: n = 2m – 1, n – k ≤ mt. Fiecare locatie a erorilor necesităm biti de control.Când sunt Reed-Solomon: n = 2m – 1 simboluri din GF(2m), n – k = 2tsimboluri sau 2tm biti – m biti de verificare pentru fiecare locatie a erorii sipentru fiecare pattern de roare.

• Ecuatii sindrom:

∏∑==

−=Λ⇒=v

ii

v

i

jiij xXxXYS

11

)1()(

cu Ω(x) = S(x)Λ(x) mod x2t.• Decodoare eficiente pentru codurile BCH utilizează O(t2) pasi: algoritmii

euclidian si Berlekamp-Massey evaluează pe Λ(x) din S(x); algoritmulForney face uz de Ω(x) pentru magnitudinile erorilor.

• Cea mai mare parte a efortului de calcul se consumă cu calcululsindromului!

CODURI CONVOLUŢIONALE

Codurile convolutionale sunt specificate uzual prin trei numere întregi pozitive,(n, k, m), numărul de biti la iesire, numărul de biti la intrare, respectiv numărulregistrelor de memorie.Raportul k/n este numit rata codului si este uzual o măsură a eficientei codului.De obicei k si n sunt de la 1 la 8, m de la 2 la 10 si rata codului de la 1/8 la 7/8cu exceptia aplicatiilor spatiale la mare distantă când ratele codului pot fi si de1/100 sau chiar mai mici.Producătorii de echipamente de codare specifică parametrii codurilorconvolutionale putin diferit: (n, k, L). Numărul L este asa-numita restrictie delungime a codului si se calculează din k si m cu relatia L = k(m – 1). Restrictiade lungime L reprezintă numărul de biti din memoria codorului care servesc lagenerarea celor n biti de la iesire. Restrictia de lungime se notează uneori cu K

152

Page 153: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

(majusculă), ceea ce ar putea duce ocazional la confundarea cu litera mică,definită mai sus ca reprezentând altceva. Unele surse consideră pe K dreptprodusul dintre k si m.Alte surse definesc un cod convolutional prin perechea (r, K) în care r este ratak/n a codului si K este restrictia de lungime, de fapt L – 1.În textul care urmează, specificarea codurilor convolutionale se face exclusivprin tripla valoare (n, k, m).Parametrii codului convolutional si structura codorului. Structura codoruluiconvolutional (în varianta grafică) se extrage usor din parametrii lui. Mai întâise desenează m casete reprezentând cele m registre de memorie. Apoi se pun pefigură n sumatoare modulo 2 care produc cele n iesiri. Registrele de memorie seconectează la sumatoare conform unor polinoame generatoare (v.figuraalăturată).

Acesta este un codor convolutional (3, 1, 3). Generează la iesire 3 biti pentrufiecare bit introdus la intrare si are 3 registre de memorie. Este alimentat laintrare de fiecare dată cu 1 bit (intrare bit-cu-bit). Codul generat are aşadar ratade 1/3. Restrictia de lungime a codului este 2. Cum s-a mentionat deja, cei 3 bitide la iesire sunt rezultatul însumării selective modulo 2 a unor biti din registrelede memorie, în 3 sumatoare distincte. Selectarea bitilor pentru fiecare iesire seface conform unor asa-numite polinoame generatoare. De pildă, primul bit deiesire are ca polinom generator pe (1, 1, 1), bitul al doilea are pe (0, 1, 1) si altreilea pe (1, 0, 1). Astfel,

v1 = (m1 + m0 + m–1) mod 2v2 = (m0 + m–1) mod 2v3 = (m1 + m–1) mod 2

sau într-o scriere cu operatorul sau-exclusivv1 = (m1 ⊕ m0 ⊕ m–1)

v2 = (m0 ⊕ m–1)v3 = (m1 ⊕ m–1)

Polinoamele dau codului calitatea unică de a proteja la erori. Un codconvolutional (3, 1, 3) poate avea proprietăti diferite de ale altuia definit prinaltă alegere a plinoamelor generatoare.

m1

m0

m – 1

m1 ⊕ m

0 ⊕ m

– 1

m0 ⊕ m

– 1m

1 ⊕ m

– 1

v1

v2

v3

153

Page 154: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Alegerea polinoamelor gneratoare. Oricare ar fi ordinul m al codului, suntmulte alegeri posibile ale polinoamelor generatoare. Nu toate produc secventede iesire care să protejeze eficient la erori. În cartea “Error-Correcting Codes”,W.W.Peterson si E.J.Weldon dau liste cuprinzătoare de polinoame generatoareadecvate. Polinoamele potrivite sunt obtinute de obicei prin simulare pecalculator. Pentru rata 1/2, tabelul alăturat oferă polinoame de acest gen.

Restrictia delungime

g1 g2

3 110 1114 1101 11105 11010 111016 110101 111011

715 110101 1101018 110111 11100119 110111 11100110110 110111001 1110011001

Starea unui codor. Starea unui codor este dată de o secventă de biti. Codoarelerafinate au restrictia de lungime mare, cele simple au restrictia mai redusă sinumărul de stări mai restrâns. Codul (2, 1, 4) din figura alăturată are o restrictie de lungime 3. Registreleumbrite detin bitii de stare. Registrul clar detine bitul abia sosit. Asta înseamnăcă, după valorile bitilor din cele trei registre de memorie, sunt 8 stări distincteale codorului. Aceste 8 combinatii si bitul proaspăt sosit determină valorile deiesire obtinute pentru v1 si v2, bitii din secventa codată.

Combinatiile de biti din registrele umbrite sunt numite stările codului. Numărulde stări este 2L, cu L = k(m – 1) restrictia de lungime a codului. Stările unui codindică ce contin la un moment dat registrele de memorie, cu exceptiaregistrului/registrelor de intrare.

15 Surse variate reproduc acest tabel care dă pentru restrictia de lungime 7 două polinoamegeneratoare identice. Probabil că este vorba de o eroare neobservată, propagată de la o sursă laalta.

m1

m0

m – 1

m1 ⊕ m

0 ⊕ m

– 1 ⊕ m

– 2

m1 ⊕ m

0 ⊕ m

– 2

v1

v2

m – 2

154

Page 155: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Despre stările codului/codorului se poate vorbi ca despre o succesiune deconditii momentane. Bitii produşi la iesire depind de bitii tocmai aplicati laintrare si de această conditie momentană a codorului pe care o găsesc si care seschimbă succesiv.Coduri perforate (punctured). Pentru cazul special k = 1, ratele codurilor 1/2,1/3, 1/4, 1/5, 1/7 sunt denumite uneori coduri mamă. Aceste coduri rezultatedintr-o intrare bit-cu-bit pot fi combinate pentru a produce coduri perforate careau alte rate, mai avantajoase, diferite de 1/n.Utilizând concomitent două coduri/codoare cu rata de 1/2 ca în figura alăturatăsi apoi transmitând numai unul din bitii generati de unul din codoare, aceastăimplementare a ratei 1/2 se poate converti într-un cod cu rata 2/3: 2 biti sosescsi 3 sunt produsi la iesire. Acest concept este numit perforare (puncturing). Lareceptie, biti stersi (dummy), care nu afectează metrica decodării sunt eventualinserati înainte de decodare în locurile adecvate.Revenind la figură, două codoare convolutionale (2, 1, 3) produc 4 biti laiesirile lor. Un bit este “perforat” asa încât rezultă o combinatie care este un cod(3, 2, 3).

Această tehnică permite producerea de coduri la rate variate uzând de numai oschemă hardware simplă. Desi se poate construi direct un codor pentru rata 2/3,avantajul unui cod perforat este acela că ratele pot fi schimbate dinamic (prinsoftware) în functie de conditiile în care canalul functionează, cum ar fi celeatmosferice, meteorologice etc. O implementare fixată, desi poate mai usor derealizat, nu permite o asemenea flexibilitate.Structura unui codor cu k > 1. Asa cum s-a afirmat putin mai sus, se pot creacoduri si se pot implementa codoare si pentru k mai mare decât 1. Iată un codorcu rata 2/3 care codează k = 2 biti prin 3 biti, fără a recurge la perforare.

m1

m0

m – 1

m1 ⊕ m

0 ⊕ m

– 1

m0 ⊕ m

– 1

v1

v2

u1

m1

m0

m – 1

m1 ⊕ m

0 ⊕ m

– 1

m0 ⊕ m

– 1

v3

v4

u2

155

Page 156: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Polinoamele generatoare sunt în cazul acesta (1, 0, 0, 1, 1), (1, 1, 1, 0, 1), (0, 1,0, 1) si (1, 0, 1, 1).Un alt exemplu este codul convolutional (4, 3, 3), care preia 3 biti si produce 4biti (vezi figura alăturată). Numărul de registre de capacitate triplă este 3.Restrictia de lungime este L = 3×2 = 6. Codul are 26 = 64 de stări si necesităpolinoame generatoare de gradul 9. Blocurile umbrite reprezintă prin numărullor restrictia de lungime.Procedura de reprezentare sub formă grafică a structurii unui codor (n, k, m) cuk mai mare ca 1 urmează pasii următori. Mai întâi se desenează k multimi de mcasete. Apoi se desenează cele n sumatoare modulo 2. Se conectează cele nsumatoare la registrele de memorie urmând coeficientii unuia, mereu altul,dintre cele n polinoame generatoare de gradul (km). Ceea ce se obtine este ostructură ca aceea din figura alăturată. Aceasta reprezintă codorul convolutional(4, 3, 3). Codorul are 9 registre de memorie, 3 biti la intrare si 4 biti la iesire.Registrele umbrite contin biti “vechi” si reprezintă starea curentă.

Coduri convolutionale sistematice si nesistematice. O formă specială acodurilor convolutionale este cea în care iesirea contine secventa de biti de la

m1

m0

m – 1

v1

v2

v3

m – 2

m – 3

m’1

m’0

m’– 1

m’– 2

u1

m3

m2

m1

(0,1,0,0,1,0,1,0,1)

(0,0,1,1,0,1,0,1,0)(1,0,1,0,1,0,0,0,0)

v1

v2

v3

m0

m–1

m–2

m–3

m–4

m–5

u3u

2u

1

(0,1,0,0,0,1,1,0,1)

v4

156

u2

Page 157: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

intrare usor de recunoscut si usor de separat. Aceasta este forma sistematică acodului.Vesiunea sistematică a codului convolutional (4, 3, 3) descris mai sus este datăde un codor ca acela din figura care urmează. Codorul sistematic are acelasinumăr de registre de memorie, 3 biti la intrare si 4 biti la iesire. Bitii de la iesireconstau în cei 3 biti originari si un al patrulea bit “de paritate”.

Codurile sistematice sunt adesea preferate celor nesistematice deoarece permitextragerea rapidă a informatiei. Totodată necesită pentru codare un hardwaremai restrâns. O altă proprietate importantă: codurile sistematice nu sunt“catastrofale”, erorile nu se propagă catastrofal. Aceste proprietăti le fac foarteapreciate. Codurile sistematice sunt utilizate si în modulatia codată pe spalier(TCM – Trellis Coded Modulation). Proprietătile protectoare la erori rămânaceleasi cu ale codurilor nesistematice.Codarea unei secvente de intrare. Secventa de iesire poate fi calculată printr-o convolutie a secventei de intrare cu răspunsul impulsional g al codorului, v =u*g, sau, mai detaliat, prin mijlocirea formulelor

∑=

−=m

i

jiil

jl guv

0

în care vjl este bitul l de la iesirea j a codorului, ul – i sunt biti aplicati la intrare si

gij este coeficientul i din polinomul generator j.

Ca un exemplu, fie de codat secventa de doi biti 10, cu codul convolutional (2,1, 4). Codorul lucrează ca în figurile următoare, comentate în ordinea firească aliniilor si de la stânga la dreapta.

m3

m2

m1

m0

m–1

m–2

m–3

m–4

m–5

u3u

2u

1

v4

u3u

2u

1

1 0 0 0

1

1

0 1 0 0

1

1

157

Page 158: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Mai întâi se introduce în codor bitul 1 cum se vede în prima figură, apoi bitul 0cum se vede în figura următoare. Apoi un număr de biti nuli (de purjare), pânăcând codorul revine la starea cu toate registrele de memorie continând 0.a. La momentul t = 0 starea initială a codorului este 000 (bitii în număr de L

situati în registrele pozitionate spre dreapta, cu fondul umbrit). Bitul deintrare 1 si bitii de stare produc la iesire doi biti: 11. Cum? Prin însumareamodulo 2 a tuturor bitilor din registre, respectiv prin însumarea modulo 2 atrei biti.

b. La t = 1, bitul de intrare de la momentul anterior se deplasează în registrulvecin spre dreapta. La fel se deplasează si ceilalti biti. Registrul de intrareprimeste acum bitul 0 din secventa de codat. Codorul este deja în starea100. Bitii de iesire calculati la fel ca la punctul anterior sunt din nou 11.

c. La t = 2, bitii din registre se deplasează din nou cu o pozitie spre dreapta.Starea codorului devine 010 si în registrul de intrare se introduce un nou bitnul, primul din cei 3 de purjare. Bitii de la iesire sunt acum 10.

d. La momentul t = 3, unicul bit unitar introdus la intrare ajunge prin deplasărisuccesive în ultimul registru si starea devine 001. Bitul nul următor introdusla intrare, tot un bit de purjare si bitii de stare produc iesirea 11.

e. La momentul t = 4, bitul 1 introdus la început a trecut complet prin codor.Codorul a ajuns în starea 000 cu bitul ultim din secventa mesaj. Iesireacodrului este 00.

f. Un ultim bit de purjare aduce codorul la starea 000. Este acum pregătitpentru secventa de intrare următoare.

De observat că doi biti au produs o iesire de 12 biti cu toate că rata nominală acodului este 1/2. Faptul arată că pentru secvente de codat scurte overhead-ul decodare este relativ mare. În cazul secventelor lungi overhead-ul rămâne la fel,dar ocupă o altă proportie în secventa de biti generati de codor, în timpulconsumat cu codarea. Gestiunea bitilor ultimi, generati de codor în faza depurjare este simplă: ignorarea.În exemplul acesta se poate evidentia separat răspunsul codorului la singurul bitunitar din secventa supusă codării. Acest răspuns este 11 11 10 11 si este

0 0 1 0

1

0

0 0 0 1

1

1

0 0 0 0

0

0

0 0 0 0

0

0

158

Page 159: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

denumit răspunsul la intrarea impuls unitar sau răspunsul impulsional alcodorului. Si bitul 0 are un răspuns propriu, 00 00 00 00, care nu este însă totasa de important.Prin convolutia secventei de intrare cu polinoamele generatoare ale codului, seobtin aceste două secvente de iesire. Este un motiv pentru care aceste coduri senumesc convolutionale. Din principiul suprapunerii (liniare) a efectelor se poateobtine acum iesirea codată corespunzătoare secventei de doi biti propusă.Dacă secventa de intrare care trebuie codată este de pildă 1011, este suficent aaduna versiuni deplasate ale răspunsurilor impulsionale asociate fiecărui bitaplicat la intrare.

Bit la intrare Răspuns impulsional1 11 11 10 11 0 00 00 00 00 1 11 11 10 11 1 11 11 10 11Adunare modulo 2 pentru a obtine răspunsul:1 0 1 1 11 11 01 11 01 01 11

În figura care urmează se verifică tratarea prin calcul pe baza introducerii încodor a bitiilor secventei 1011, unul câte unul. Rezultatul obtinut este acelasi.Asadar, modelul de calcul prin convolutie este corect.

1 0 0 0

1

1

0 1 0 0

1

1

1 0 1 0

0

1

1 1 0 1

1

1

0 1 1 0

0

1

0 0 1 1

0

1

159

Page 160: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Rezultatul codării de mai devreme este prezentat si în tabelul următor:

t Bit la intrare Biti la iesire Bitii de stare0 1 11 0001 0 11 1002 1 01 0103 1 11 1014 0 01 1105 0 01 0116 0 11 001

Secventa de cod este 11 11 01 11 01 01 11.Proiectarea codorului. Cele două metode de codare prezentate mai sus arată cese întâmplă matematic într-un codor. Pentru a realiza efectiv codarea, un codorconvolutional hardware ar putea face uz de tabele în care să caute:1. Bitul de intrare2. Starea codorului, una din 8 posibile pentru codul (2, 1, 4)3. Bitii de iesire, grupe de doi biti pentru acelasi cod (2, 1, 4)4. Starea următoare, starea care va determina codul următorului bit introdus la

intrare.Pentru codul (2, 1, 4), cu polinoamele generatoare deja specificate se poate creatabelul care urmează:

Bit

de

intr

are

Sta

rea

depl

ecar

e

Biti

laie

sire

Sta

rea

deso

sire

u s1s2s316 v1v2 s1’s2’s3’

0 000 00 0001 000 11 1000 001 11 0001 001 00 1000 010 10 001

16 Mai condensat, stările codului se pot reprezenta în octal. Aceasta este reprezentarea aleasă înunele puncte ale discutiei despre codurile convolutionale. Cititorul va fi avertizat la momentulpotrivit.

0 0 0 1

1

1

0 0 0 0

0

0

160

Page 161: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

1 010 01 1010 110 01 0011 110 10 1010 100 11 0101 100 00 1100 101 00 0101 101 11 1100 110 01 0111 110 10 1110 111 10 0111 111 01 111

Acest tabel descrie în mod unic codul (2, 1, 4). Tabelul este diferit pentru altecoduri si depinde de coeficientii polinoamelor generatoare utilizate.În explicarea codării convolutionale si a decodării, se recurge frecvent lagrafică. Un codor are toate elementele unui automat finit. De aceea este naturalca diagramele de stare si arborii să fie printre reprezentări. Dar cea maifrecventată reprezentare pare a fi diagrama spalier (trellis). Aceasta pentru că odiagramă spalier cuprinde în aceeasi imagine si aspectul temporal al proceselorde codare si de decodare.Diagrama spalier (trellis). Diagramele spalier sunt numite astfel pentru căarată precum unele structuri similare utilizate în cultivarea unor plante, în sălilede sport etc. În cazul codurilor convolutionale grafurile spalier sunt aparentîncurcate, greu de descifrat. Cu toate acestea sunt preferate în general grafurilorde stare sau grafurilor arbore deoarece reprezintă mai direct si mai completaspectele secventiale, temporale ale codării convolutionale. Într-un graf spalier,chiar dacă nu este figurată, pe o axă a absciselor este subînteles timpul discretalcătuit din momentele în care au loc evenimente determinante pentru operatiade codare. Pe verticală sunt arătate toate stările posibile ale codului. Scurgereatimpului se traduce printr-o deplasare pe spalier în sensul firesc, spre dreapta.Fiecare tranzitie înseamnă sosirea unui nou bit din secventa care trebuie codată.Tranzitiile sunt initiate/stimulate de acei biţi.

161

Page 162: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Diagrama spalier se obtine prin trasarea a 2L linii orizontale (echidistante). Apoifiecare stare se conectează cu stările următoare prin secventele de codadmisibile pentru acea stare. În cazul k = 1, numai două alegeri sunt posibilepentru fiecare stare. Acestea sunt determinate de sosirea la intrarea codorului fiea unui 0, fie a unui 1. Săgetile indică tranzitiile initiate de bitul de intrare: celecare merg în sus (cu suportul linie continuă) sunt initiate de bitul 0, cele caremerg în jos (cu suportul linie întreruptă) de bitul 1. Diagramele spalier completecontin si bitii de iesire, cei ai codului.Diagrama spalier este unică pentru fiecare cod, la fel cum si diagrama de staresi cea arborescentă sunt unice. Spalierul poate fi desenat pentru intervalemultiple. De la un moment încolo, fiecare interval între două tranzitii repetăstructura grafică a spalierului.Starea de început este totdeauna cea numită nulă, în particular, pentru cazul îndiscutie, 000. Pornind de aici spalierul se dezvoltă si în L pasi devine populat cutoate tranzitiile posibile. De la acel punct structura grafică care reprezintătranzitiile se repetă.Cum se face codarea pe graful spalier. În figura următoare bitii care sosescsunt arătati în partea de sus a diagramei spalier. Se porneste obligatoriu de lapunctul corespunzător stării initiale 000. Codarea este usoară: simplu, deplasareîn sus pentru un 0, deplasare în jos puntru un 1. Calea urmată pentru secventa1011000 aleasă ca exemplu este reprezentată prin segmente (orientate) puse capla cap.Diagrama spalier produce aceeasi secventă codată ca si celelalte metode dereprezentare, adică de metoda răspunsului impulsional sau uzul unei diagramearborescente.

000

001

010

011

100

101

110

111

S t

ă r

i

Repetare

162

Page 163: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Drumul colorat produce la iesire secventa 11 01 11 11 10 10 11.Decodarea. Pentru decodarea codurilor convolutionale se cunosc mai multesolutii. Acestea sunt grupate în două categorii:1. Decodarea secventială – algoritmul lui Fano.2. Decodarea prin metoda verosimilitătii maxime – decodarea Viterbi.Cele două grupe de tehnici de decodare reprezintă tratări diferite ale codurilorconvolutionale. Oricare din ele utilizează o aceeasi idee privind decodarea.Ideea de bază a decodării. Se presupune să se trimit 3 biti codati la rata de 1/2.Sunt receptionati 6 biti (se ignoră în această fază a discutiei bitii de purjare).Secventa celor 6 biti poate să contină erori. Se stie din discutia despre procesulde codare că bitii aceştia 6, la iesirea din codor sunt generati în mod unic: osecventă de 3 biti dată produce o secventă de 6 biti unică. Dar datorită “lucrării”canalului asupra secventei transmise, poate fi receptionată în principiu oricaredin combinatiile posibile de 6 biti.Exprimate prin 3 biti, la intrarea codorului se pot aplica 8 secvente distincte.Fiecare din acestea are un corespondent unic în secventele de 6 biti ale codului.Acestea formează multimea de secvente admisibile si decodorul trebuie sădetermine care din ele a fost codată si expediată.Tabelul alăturat dă măsura coincidentei pentru cele 8 secvente de 6 biti valide.

Intr

are

Sec

vent

a de

cod

valid

ă

Sec

vent

a pr

imită

Pot

rivi

rea

de b

iti

Dis

tant

aH

amm

ing

000 000000 111100 2 4001 000011 0 6010 001111 2 4011 001100 4 2100 111110 5 1

000

001

010

011

100

101

110

111

S t

ă r

i

Biti la intrare: 1 0 1 1 0 0 0

163

Page 164: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

101 111101 5 1110 110001 3 3111 110010 3 3

Se presupune că este receptionată secventa 111100 care nu este una dinsecventele admisibile. Cum se poate decoda? Sunt două modalităti de ainterpreta secventa receptionată:1. Se poate compara secventa receptionată cu fiecare din secventele admisibile

si se retine aceea situată la cea mai mică distantă Hamming fată de secventareceptionată.

2. Se poate evalua câte o corelatie între secventa primită si fiecare dintresecventele admisibile si se retine secventa admisibilă cea mai strânscorelată.

Primul procedeu se află în spatele decodării prin decizii cunoscute în literaturăca decizii hard. Al doilea procedeu apartine de decodarea prin decizii soft.Coincidenta bitilor sau distanta Hamming ca si produsul scalar între secventaprimită si cuvintele admisibile dau adesea un răspuns ambiguu. Pe baza unuirăspuns ambiguu nu se poate decide care anume secventă s-a expediat princanal.Pe măsură ce numărul bitilor codati creste, volumul calculelor necesare pentrudecodare creste, astfel că nu pare a fi practică niciuna din aceste modalităti deabordare a decodării. Se cer metode mai eficiente, care să nu examineze chiartoate optiunile si să fie capabile a rezolva ambiguitătile de genul răspunsuluidublu, cum se poate vedea în tabelul de mai sus.Dacă este primit un mesaj de lungime s, atunci numărul de secvente codateposibile este de 2s. Problema care cere rezolvare în primul rând este cum sepoate face decodarea fără a verifica fiecare din aceste 2s secvente.Ideea de bază este tratarea secventială a problemei decodării.

Decodarea secventială

Decodarea secventială propriu-zisă a fost una dintre primele metode propusepentru decodarea secventelor de biti codate convolutional. În prima ei variantă,decodarea secventială a fost propusă de Wozencraft. Ulterior, Fano a oferit oversiune ameliorată.Decodarea secventială poate fi explicată destul de bine printr-o analogie. Cătreo destinatie anume pot fi parcurse mai multe drumuri posibile divizate în etape.Etapele acestea sunt marcate prin jaloane (landmarks). Persoana care a jalonatvariatele parcursuri n-a făcut o treabă perfectă astfel încât din când în cândmarcajul nu poate fi recunoscut. Când si când, drumul urmat pare a fi gresit sideoarece alte jaloane nu sunt vizibile, simtământul erorii se accentuează.Nesiguranta aceasta îndeamnă la a merge înapoi pe drumul deja parcurs pânăcând un punct de ramificatie anterior oferă alternativa unui alt drum, pe care sevăd alte noi jaloane. Revenirea poate fi practicată de mai multe ori în raport de

164

Page 165: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

cât de bune au fost directiile alese până la un anumit moment. În cele din urmăse atinge destinatia.În decodarea secventială, drumul către secventa originară se parcurge similar.În orice moment se poate renunta la o portiune de drum si se poate revenipentru a urma o altă variantă. Faptul important este acela că de fiecare dată separcurge un drum si numai unul.Decodarea secventială permite deplasarea înainte si înapoi pe un graf spalier(trellis). Decodorul retine deciziile sale, inclusiv când decide la modul ambiguu,si le depune într-o memorie. Dacă numărul deciziilor ambigue creste dincolo deun anumit prag, decodorul renuntă la acel drum si revine la ultimul punct deramificatie până la care deciziile ar putea fi mai putine decât pragul mentionat.Un exemplu: Fie codul (2, 1, 4), cel cu care s-a făcut mai devreme codareasecventei de biti 1011000, cu ultimii trei biti folositi pentru purjare. Bitii acestiase mai numesc si biti de final – trail bits.Dacă nu apare vreo eroare, secventa receptionată este 11 11 01 11 01 01 11, darse receptionează 01 11 01 11 01 01 11. A apărut o eroare: primul bit primit esteun 0 si nu un 1 cum ar fi trebuit. La decodare, eroarea trebuie corectată. Iată încontinuare o descriere a modului cum lucrează decodorul în varianta carefoloseste un algoritm secvential analog în bună măsură cu cel schitat pentrucazul parcursului jalonat.Decodarea prin algoritmul de decodare secvential. Decodorul secvential areun contor de erori. Primele operatii sunt cea de setare la zero a acestui contor sicea de atribuire a unei valori prag pentru numărul de erori, în cazul de fată 3, pebaza statisticii canalului. Apoi:1. Decodorul primeste primii doi biti, 01. Prin consultarea tabelului de mai sus

(cel cu tranzitiile codorului si bitii de cod generati), sesizează existenta uneierori: bitii primi nu pot fi decât 00 sau 11. Dar care dintre cei doi biti esteeronat? Decodorul alege arbitrar 00 pentru început (eroare pe bitul aldoilea). La 00 corespunde bitul de intrare 0. Depune un 1 în contorul deerori.

Biti la intrare: 01 11 01 11 01

000

001

010

011

100

101

110

111

Retur

Decizii: 1 2 3 4,5

S t

ă r

i

165

Page 166: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

2. Decodorul preia următorii doi biti, 11. Prin consultarea aceluiasi tabel,decide că un 1 a fost trimis spre codare, ceea ce corespunde exact cu unuldin cuvintele de cod. Contorul de erori rămâne neschimbat.

3. Bitii receptionati în continuare sunt 01. Alegerile posibile pentru cuvântulde cod sunt 11 sau 00. Apare o nouă eroare si contorul de erori esteincrementat cu 1. Contorul de erori contine deocamdată o valoare tot maimică decât valoarea de prag 3. Decodorul poate continua avansul pe aceiasirută.

4. Decodorul selectează arbitrar ramura superioară (un 0 s-a codat si codul luis-a expediat prin canal). Aici recunoaste o altă eroare deoarece bitii primitisunt 11, iar alegerile admise ale cuvântului de cod sunt 10 sau 01. Contorulde erori creste la 3 ceea ce arată că decodorul trebuie să facă drumul înapoi.

5. Decodorul revine la punctul de decizie 3 unde contorul de erori era mai micdecât pragul 3 si face cealaltă alegere. Întâlneste din nou o conditie deeroare. Bitii receptionati sunt 11 dar cuvintele de cod posibile sunt 01 si 10.Contorul de erori ajunge din nou la 3. Decodorul se întoarce din nou dindrum.

6. Ambele ramuri posibile din punctul 3 au fost epuizate. Decodorul trebuie sămeargă încă mai înapoi, la punctul 2. Dacă urmează ramura neexploratăîncă, contorul de erori atinge iar pragul 3. De aceea, decodorul trebuie sămeargă încă mai înapoi, la punctul 1.

Biti la intrare: 01 11 01 11 01

000

001

010

011

100

101

110

111

Retur

Decizii: 1 2 3 4,5

S t

ă r

i

166

Page 167: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

7. Din punctul 1, întreaga secventă de alegeri care urmează se potriveste cucuvinte valide si decodorul decodează cu succes mesajul 1011000.

Necesarul de memorie pentru decodarea secventială este relativ usor de acoperitsi astfel această metodă este utilizabilă chiar si pentru coduri cu restrictia delungime mare, când raportul semnal/zgomot este redus.Multe legături de comunicare cu misiunile interplanetare NASA au utilizatcodurile convolutionale cu decodare secventială.

Decodarea maximum verosimilă (decodarea Viterbi).

Metoda Viterbi este cea mai cunoscută metodă de decodare din clasaverosimilitǎţii maxime. Metoda are meritul de neignorat că numǎrul optiunilorde parcurs se reduce sistematic aproape la fiecare etapă. Conditiile ipoteticeexploatate pentru reducerea numărului de alegeri sunt:1. Erorile apar rar, probabilitatea aparitiei lor este redusă.

Biti la intrare: 01 11 01 11

000

001

010

011

100

101

110

111

Retur

Decizii: 1 2 3 5

S t

ă r

i

Retur

Biti la intrare: 01 11 01 11 01 01 11

000

001

010

011

100

101

110

111

Decizii: 1

S t

ă r

i

167

Page 168: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

2. Probabilitatea aparitiei a două sau mai multe erori în succesiune contiguăeste mult mai mică decât probabilitatea unei singure erori, izolate. Cu altecuvinte, erorile nu sunt grupate, ci sunt distribuite aleator.

Un decodor Viterbi examinează o înteagă secventă receptionată, de o lungimedată. Decodorul calculează o metrică pentru fiecare drum din graful spalier sidecide pe baza acestei metrici. Sunt urmate toate drumurile admisibile pânăcând cel putin două dintre ele ajung într-un acelasi nod. Aici, drumul cu metricamai bunǎ este retinut, drumul cu metrica mai slabă este respins. Drumurilerǎmase dupǎ aceste selectii sunt numite drumuri supravietuitoare.La lungimea de N biti, numărul total de secvente posibile este 2N. Dintre acesteanumai 2kL sunt secvente valide. Pentru a limita comparatia la numai 2kL drumurisupravietuitoare, în loc de a verifica toate cele 2N drumuri, algoritmul Viterbiaplică principiul verosimilităţii maxime.Metrica cea mai folosită este distanta Hamming. Există însă si alte metrici carepot fi utilizate în decodarea Viterbi.În cazul în discutie (rata codului 1/2), distantele Hamming se evaluează întreperechile de simboluri (binare) receptionate si perechile posibile/admisibile înraport cu starea curentă a codului. Pentru fiecare ramificatie, metrica aceasta nupoate fi decât 0, 1 sau 2.Metricile evaluate pas-cu-pas sunt acumulate pentru fiecare parcurs, asa încât înorice moment decizional este reţinut drumul cu cea mai mică valoare a metriciicumulate.Acum, algoritmul Viterbi în actiune:Se decodează secventa receptionată 01 11 01 11 01 01 11, aceeasi ca mai sus.1. La t = 0 se receptionează bitii 01. Decodorul porneste totdeauna din starea

000. Din acest punct sunt două ramuri admisibile, la stare 000 si la stare100, dar nici una nu duce la generarea bitilor de la intrarea decodorului.Decodorul evaluează metrica celor două ramuri si continuă evolutiaconcomitent pe ambele ramuri. Metrica ambelor ramuri este 1, ceea ceînseamnă că numai unul din cei doi biti admisibili se potriveste cu unul dinbitii sositi. Şi graful spalier, şi tabelul însotitor redau calculele de etapă.

Biti la intrare: 01

000

001

010

011

100

101

110

111

S t

ă r

i

Metrici

1

1

168

Page 169: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Starea de plecare17 0 0Biti admisibili 00 11

Biti primiti 01Distanta Hamming 1 1

Starea de sosire 0 4

2. La t = 1, decodorul ramifică cele două stări posibile către patru stări.Metricile ramurilor sunt calculate prin compararea bitilor sositi la decodare,11, cu perechile admisibile. Noile metrici (cumulate) sunt înscrise în parteadreaptă a desenului. Metricile de etapă sunt înscrise în tabelul însotitor.

Starea de plecare 0 0 4 4Biti admisibili 00 11 11 00

Biti primiti 11Distanta Hamming 2 0 0 2

Starea de sosire 0 4 2 6

3. La t = 2, cele patru stări se ramifică la opt pentru a evidentia toate căileposibile. Metricile căilor pentru bitii 01 sunt calculate si adăugate metricilorde la momentul anterior t = 1.

17 De aici si până la finalul decodării se foloseste reprezentarea stărilor în octal.

Biti la intrare: 01 11

000

001

010

011

100

101

110

111

S t

ă r

i

Metrici

3

1

1

3

169

Page 170: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Starea de plecare 0 0 2 2 4 4 6 6Biti admisibili 00 11 10 01 11 00 01 10

Biti primiti 01Distanta Hamming 1 1 2 0 1 1 0 2

Starea de sosire 0 4 1 5 2 6 3 7

4. La t = 3, spalierul este deplin populat. Fiecare nod/stare are cel putin undrum care soseste în el/ea. Metricile cumulate apar în figură.

5. La t = 4, drumurile se prelungesc si încep să conveargă într-un acelasi nod.De acum metricile cumulate evaluate pentru fiecare drum sunt un criteriu deeliminare a unora dintre ele. Aplicarea principiului verosimilitătii maximeîn fiecare nod face posibilă (în cazul când valorile sunt clar diferite)renuntarea la drumul cu metrica Hamming mai mare deoarece un astfel dedrum este mai putin probabil decât unul cu metrica mai mică. Renuntarea launele drumuri înseamnă o reducere a numărului de căi de examinat. Înaceasta constă de fapt tăria metodei Viterbi.

Starea de plecare 0 0 1 1 2 2 3 3Biti admisibili 00 11 11 00 10 01 01 10

Biti la intrare: 01 11 01

000

001

010

011

100

101

110

111

S t

ă r

i

Metrici

4

3

2

3

4

1

2

5

Biti la intrare: 01 11 01 11

000

001

010

011

100

101

110

111

S t

ă r

i

Metrici

6,3

3,4

4,3

3,6

4,5

3,4

6,2

3,6

170

Page 171: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Biti primiti 11Distanta Hamming 2 0 0 2 1 1 1 1

Starea de sosire 0 4 0 4 1 5 1 5Starea de plecare 4 4 5 5 6 6 7 7

Biti admisibili 11 00 00 11 01 10 10 01Biti primiti 11

Distanta Hamming 0 2 2 0 1 1 1 1Starea de sosire 2 6 2 6 3 7 3 7

În etapa curentă, ca si mai departe, metricile colorate în rosu sunt cele caresunt suportul deciziilor de eliminare a unor drumuri. Drumurile eliminatesunt si ele colorate în rosu.

Starea de plecare 0 0 1 1 2 2 3 3Biti admisibili 00 11 11 00 10 01 01 10

Biti primiti 01Distanta Hamming 1 1 1 1 2 0 0 2

Starea de sosire 0 4 0 4 1 5 1 5Starea de plecare 4 4 5 5 6 6 7 7

Biti admisibili 11 00 00 11 01 10 10 01Biti primiti 01

Distanta Hamming 1 1 1 1 0 2 2 0Starea de sosire 2 6 2 6 3 7 3 7

6. La t = 5, drumurile se prelungesc din nou cu încă un pas de timp si seevaluează noi metrici. Din nou se retin drumurile cu metrici minime.

Biti la intrare: 01 11 01 11 01

000

001

010

011

100

101

110

111

S t

ă r

i

Metrici

4,4

5,3

5,4

4,4

2,5

3,3

5,4

4,3

171

Page 172: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Starea de plecare 0 0 1 1 2 2 3 3Biti admisibili 00 11 11 00 10 01 01 10

Biti primiti 01Distanta Hamming 1 1 1 1 2 0 0 2

Starea de sosire 0 4 0 4 1 5 1 5Starea de plecare 4 4 5 5 6 6 7 7

Biti admisibili 11 00 00 11 01 10 10 01Biti primiti 01

Distanta Hamming 1 1 1 1 0 2 2 0Starea de sosire 2 6 2 6 3 7 3 7

7. La t = 6, bitii receptionati sunt 11. Din nou sunt calculate metricile pentrufiecare drum. Se elimină drumurile cu metricile cumulate mai mari, sementin ambele drumuri convergente într-un nod dacă metricile lor cumulatesunt egale.

Starea de plecare 0 0 1 1 2 2 3 3Biti admisibili 00 11 11 00 10 01 01 10

Biti primiti 11

Biti la intrare: 01 11 01 11 01 01

000

001

010

011

100

101

110

111

S t

ă r

i

Metrici

5,4

5,4

6,2

5,4

4,5

4,4

5,4

6,3

Biti la intrare: 01 11 01 11 01 01 11

000

001

010

011

100

101

110

111

S t

ă r

i

Metrici

6,2

5,5

4,6

5,4

4,4

5,5

6,4

5,4

172

Page 173: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Distanta Hamming 2 0 0 2 1 1 1 1Starea de sosire 0 4 0 4 1 5 1 5

Starea de plecare 4 4 5 5 6 6 7 7Biti admisibili 11 00 00 11 01 10 10 01

Biti primiti 11Distanta Hamming 0 2 2 0 1 1 1 1

Starea de sosire 2 6 2 6 3 7 3 7

La pasul acesta spalierul este parcurs complet; nu mai sunt perechi de bitireceptionate care să fie decodate. Într-o procedură a parcursului invers, seexaminează spalierul şi se retine drumul cu cea mai mică metrică.Drumul trasat prin stările 000, 100, 010, 101, 110, 011, 001, 000 este celcare corespunde secventei decodate 1011000.

Lungimea acestui spalier (legată de durata decodării) este de 4 + m biti. Poatecă ar fi ideal ca lungimea acestui drum să fie legată strict de lungimea mesajuluicodat. La mesaje mai lungi ar fi necesară în acest caz o memorie mai mare, faptneconvenabil. Printr-un proces de fragmentare, necesarul de memorie poate firedus si decodarea nu trebuie întârziată până la finalul secventei transmise.Lungimea tipică este de 128 de biti sau de 5 până la 7 ori restrictia de lungime.Decodarea Viterbi este importantă şi pentru că se aplică şi la decodareacodurilor bloc.Forma de graf-spalier este utilizată şi la modularea codată pe spalier (TCM –Trellis-Coded Modulation).Decodarea prin decizii soft. Spectrele de valori ale celor două semnaleutilizate pentru a reprezenta pe 0 si pe 1 pot face procesul decizional dificilcând acele semnale sunt corupte de perturbatii. Semnalul este difuz si energiaunuia se scurge către celălalt. Figurile următoare ilustrează cazuri cu valoridiferite ale raportului semnal/zgomot. Dacă zgomotul este redus (cantitativ:varianţa lui este mică), difuzarea energiei este şi ea redusă. Intuitiv, se poatebănui că erorile decizionale sunt mai mari dacă raportul semnal/zgomot estemai mic.

Biti la intrare: 01 11 01 11 01 01 11

000

001

010

011

100

101

110

111

S t

ă r

i

Metrici

2

5

4

4

4

5

4

4

173

Page 174: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

- 3 - 2 - 1 0 1 2 30

2 0

4 0D IS T R IB U T IA T E N S IU N IL O R L A S / Z F O A R T E M A R E

- 3 - 2 - 1 0 1 2 30

0 . 5

1D IS T R IB U T IA T E N S IU N IL O R L A S / Z = 1 2 d B

- 3 - 2 - 1 0 1 2 30

0 . 5

1D IS T R IB U T IA T E N S IU N IL O R L A S / Z = 6 d B

v o l t i

Figurile reprezintă cele două semnale care reprezintă bitii 1 si 0 la un raportsemnal/zgomot foarte mare, apoi distributia tensiunilor la un raportsemnal/zgomot de 12 dB si, în final, distributia tensiunilor la un raportsemnal/zgomot de 6 dB. Se observă numaidecât proporţia scurgerii de energiede la o regiune de decizie la alta.O elabora o decizie hard înseamnă a avea un prag de decizie simplu, care estesituat uzual între cele două semnale, ales astfel ca o diferenţă pozitivă saunegativă fată de acel prag să fie interpretată ca 0 sau ca 1.În termeni rezumativi cam aceasta înseamnă decodarea maximum verosimilă.Eroarea făcută se poate cuantifica cu acest mod de a decide. Probabilitatea deinversare a bitilor este reprezentată de ariile comune de sub curbele din figurilede mai sus. Zona de sub 0 volti reprezintă energia care apartine semnaluluiasociat cu 1; zona de peste 0 volti se situează în zona care apartine semnaluluiasociat cu valoarea binară 0.Dacă se trimite prin canal un 1, probabilitatea ca el să fie decodat ca 0 este

−=

22

11 σ

te

vAerfcP

cu vt tensiunea prag de decizie, 0 în cazul de faţă, cu σ2 varianţa zgomotului sauputerea lui. Functia erfc este cunoscuta functie de eroare.Relatia aceasta se poate rescrie si ca

174

Page 175: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

=

Z

SerfcPe 2

11

Aceasta este relatia familiară pentru rata bitilor eronati. Se admite că deciziahard este cea adoptată.Dar ce se întâmplă dacă se procedează altfel: în loc de două regiuni decizionalese împarte intervalul de tensiuni în patru regiuni decizionale?

- 4 - 3 - 2 - 1 0 1 2 3 40

0 . 0 5

0 . 1

0 . 1 5

0 . 2

0 . 2 5

0 . 3

0 . 3 5

0 . 4P A T R U R E G IU N I D E D E C IZ IE

v o l t i

Arii-probabilităti: 0.5793 0.2621 0.1227 0.0359

Aceste regiuni de decizie în număr de patru trebuie să delimiteze sub curbele derepartiţie arii cât mai egale. Probabilitatea ca decizia să fie corectă sau incorectăse calculează din aceste arii de sub curbele gaussiene asociate valorilor 0 si 1.Dacă se definesc patru regiuni:• Regiunea 1, tensiunea măsurată la recepţie este mai mare decât 0,8V• Regiunea 2, tensiunea recepţionată este mai mare decât 0V dar mai mică

decât 0,8V• Regiunea 3, tensiunea receptionată este mai mare decât – 0,8V dar mai mică

decât 0V• Regiunea 4, tensiunea receptionată este mai mică decât – 0,8V.Întrebare: dacă tensiunea observată la recepţie este în regiunea 3, care esteprobabilitatea de eroare dacă s-a trimis prin canal un 1?

175

Page 176: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Cu decizia hard răspunsul este facil: probabilitatea aceasta poate fi calculată dinecuatia dată mai sus.Cum se calculează probabilităti similare pentru cazul deciziei pe mai multeregiuni?Se utilizează functia de repartiţie normală particularizată cu mediile si dispersiatensiunilor observate la iesirea din canal. Dacă functia (densitate) deprobabilitate a unei variabile aleatoare de medie µ si dispersie (varianţă) σ2 este

f(x) = 2

2

2

)(

2

1 σµ

πσ

−− x

e

functia de repartiţie (de probabilitate cumulată) este

F(x) = ∫∞−

x

dttf )(

şi este tabelată în surse bibliografice diverse sau se poate calcula (recurgând depildă la funcţia Matlab consacrată). Probabilitatea asociată unui interval (a, b)se calculează cu relatia

Pr[a < x ≤ b] = ∫b

a

dttf )( = F(b) – F(a)

Pentru partiţionarea axei reale în patru regiuni prin punctele de delimitare azonelor de decizie –0,8, 0 si 0,8, pentru un raport semnal/zgomot = 1 şi mediilecelor două tensiuni ±1V, calculul decurge ca mai jos. S-a presupus că nivelurilecorespunzătoare lui 0 si 1 sunt echiprobabile (probabilităti apriori egale, cum sespune), ceea ce este valabil în general cu exceptia semnalelor radar undeprobabilitătile apriori sunt de obicei necunoscute. Probabilităţile de apartenenţăa tensiunilor observate la o zonă sau alta, conditionate de bitul transmis suntdate în tabelul alăturat.

Bit trimis Regiunea 1 Regiunea 2 Regiunea 3 Regiunea 418

0 0,5793 0,2621 0,1227 0,03591 0,0359 0,1227 0,2621 0,5793

Acest proces de decizie prin divizarea în mai mult de două părti a spaţiuluidecizional este cunoscut ca proces de decizie soft. Probabilitătile de genul celordin tabel, reprezentate şi în graf sunt numite si probabilităti de tranzitie. Suntvalori ale tensiunii cu 4 apartenenţe posibil diferite pentru fiecare semnalreceptionat care serveste la elaborarea deciziei.Ca şi în viaţa reală, şi în cazul semnalelor, mai multă informatie înseamnădecizii mai bine fundamentate. Deciziile soft măresc sensibilitatea metricilorfolosite la decodare si ameliorează performanţa cu până la 3 dB în cazul uneidecizii soft pe 8 niveluri.

18 Numerotarea regiunilor se face de la dreapta spre stânga.

176

Page 177: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

Graful probabilităţilor condiţionate de a decoda un 0 sau un 1functie de tensiunea observată, când acea tensiune

este cuantizată pe 4 niveluri sau pe 2 niveluri.

Pentru a defini o metrică pentru decizia soft se completează mai întâi un tabelde probabilităti în genul celui de mai sus. Apoi se ia logaritmul fiecăreia din eleşi se normalizează astfel încât una din valori să fie 0. După oarecare manipularearitmetică se obtine tabelul:

Bit trimis Regiunea 1 Regiunea 2 Regiunea 3 Regiunea 40 0 –0,79 –1,55 –2,781 –2,78 –1,55 –0,79 0

În sectiunea care se referă la decodarea hard s-a utilizat o metrică Hamming.Acelasi lucru se execută si acum cu deosebirea că în loc să se primească 0 si 1,se recepţionează tensiuni. Decodorul caută metrica pentru acea tensiune în tabeldisponibil în memorie si face calcule asemănătoare.De pildă, admiţând că s-a observat perechea de tensiuni (v3, v2) si cuvintele decod permise sunt 01, 10, se evaluează:• metrica pentru 01: Pr[0|v3] + Pr[1|v2];• metrica pentru 10: Pr[1|v3] + Pr[0|v2].Aceste două valori arată care din cele două succesiuni de biti, 01 sau 10 estemai probabilă.Când metricile acestea se adună, suma exagerează întrucâtva diferenţele întredrumurile din spalier, ceea ce facilitează decizia.

Raportul log-likelihood

Sunt multe posibilităţi de a ameliora performanţa la decodare prin jocul alegeriimetricilor.O metrică mult utilizată este metrica log-likelihood (logaritmul probabiltăţilor).Aceasta ia în considerarea probabilitatea de eroare introdusă de canal, 0 ≤ p ≤0,5, în raport cu care se definesc• o metrică a concordantei = log[2(1 – p)],• o metrică a discordantei = log(2p) şi

0 1

1 2 3 4 1 2

0 1

0,58 0,040,120,26

0,04 0,12 0,26 0,560,95 0,05

0,950,05

177

Page 178: Capitole de Transmiterea si codarea informaţieiac.upg-ploiesti.ro/gpanaitescu/tci_capitole.pdf · Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori ...

• o metrică sintetică 01

log ≥−=p

pL , nulă în cazul în care concordanţa si

discordanţa coincid (p = 0,5).Algoritmul lui Fano pentru decodarea secventială utilizează această metrică.Metrica log-likelihood asigură o sensibilitate apreciabilă a algoritmului (soft) dedecodare.Două aspecte cer o atentie specială: independenta statistică a valorilortensiunilor observate la iesirea din canal şi cunoaşterea parametrilorzgomotului.Prima problemă care poate influenta negativ eficienţa decodării se rezolvă prinoperatii de intercalare-deintercalare care fac măsurătorile succesive temporar siartificial “depărtate” cu o decorelare notabilă dacă nu totală.Problema a doua se poate rezolva recursiv. J.Hagenauer şi P.Hoeher (1989)propun un asemenea algoritm recursiv de actualizare a parametrilor statistici aiperturbatiilor, pe baza observaţiilor curente.

178