You are on page 1of 69

Aurelian Claudiu VOLF

Coduri

Universitatea Al. I Cuza Iai


2011

Cuprins
Cuprins ................................................................................................................................. 2 Prefa .................................................................................................................................. 3 Unele notaii ......................................................................................................................... 5 I. Coduri corectoare de erori.............................................................................................. 6 II. Coduri liniare................................................................................................................ 14 III. Corpuri finite............................................................................................................... 26 IV. Coduri liniare: codare i decodare ............................................................................ 37 V. Construcii de coduri noi din coduri existente ........................................................... 44 VI. Coduri ciclice ............................................................................................................... 49 VII. Aplicaii: pachete de erori, Compact Disc, CRC .................................................... 55 Index ................................................................................................................................... 65 Bibliografie......................................................................................................................... 68

Prefa
Error correction is one of the most advanced areas in the entire field of digital audio. It is purely because of error-correction techniques that reliable digital recordings can be made, despite the frequent occurrence of tape dropouts. [Digital Audio Technology, Edited by Jan Maes and Marc Vercammen, Focal Press 2001]

Codurile corectoare de erori (pe scurt, codurile) corecteaz sau detecteaz erori care apar inevitabil la transmiterea unui mesaj pe un canal cu zgomot. Aceast detectare/corectare se realizeaz prin introducerea de redundan n mesaj (adic n loc de a transmite mesajul original, un mesaj mai lung este transmis, n sperana c simbolurile adugate vor ajuta la detecia/corectarea erorilor). Orice comunicare digital, orice stocare de date folosete o form de coduri corectoare de erori. Compact discurile, discurile dure, memoriile interne ale calculatoarelor, memoriile flash, DVD-urile etc snt protejate mpotriva alterrii accidentale a datelor folosind astfel de coduri. Se poate spune c aceste dispozitive, i multe altele, nu ar putea funciona fr coduri corectoare de erori. Deci, codurile ajut la corectarea de erori, dar nu ofer confidenialitate. Confidenialitatea se realizeaz de ctre criptografie. Multe monografii de teoria codurilor au mai mult de 700 de pagini. Acest curs introductiv, din motive de spaiu, nu include multe teme care snt foarte importante. Totui, avem convingerea c dup parcurgerea acestui curs, cititorul va fi familiarizat cu ideile principale, cu metodele, aplicaiile, limitrile i problemele teoriei codurilor. Acest domeniu este n plin evoluie i multe rezultate sau metode apar an de an. De aceea, acest curs trebuie vzut mai mult ca o invitaie la lecturi ulterioare i cercetare n arii mai restrnse care snt de interes pentru cititor. Sperm c acest curs va dezvlui mcar o parte din uimitoarea cantitate de inventivitate i de frumusee matematic din spatele multor lucruri pe care le considerm normale: retragerea de bani de la un ATM, trimiterea unui email, ascultarea unui CD, o convorbire pe telefonul mobil. Toate aceste tehnologii nu ar fi posibile fr teoria codurilor, criptografie, i matematica din spatele lor. Cititorul romn trebuie avertizat c practic toat literatura din domeniul teoriei codurilor este n englez. Multe din noiunile folosite snt de dat foarte recent i unele nu au avut timp

4
s fie incluse n literatura romneasc, oricum foarte restrns. De aceea, este necesar familiarizarea cu terminologia englez, echivalentele romneti ale multor denumiri nefiind nc standardizate.

Unele notaii
| A | desemneaz cardinalul mulimii A (numrul elementelor lui A, dac A este finit). x := y nseamn x este egal prin definiie cu y (unde y este deja definit) sau notm pe y cu x. marcheaz sfritul sau absena unei demonstraii. bxc este cel mai mare ntreg care este mai mic sau egal cu numrul real x (partea ntreag a lui x) x = min {n Z | x n} este cel mai mic ntreg mai mare sau egal dect numrul real x. M(k, n, F) este mulimea matricelor de tip kn peste inelul F. A este transpusa matricei A. N este mulimea numerelor naturale: 0, 1, 2, Irr(x, K) este polinomul minimal al elementului algebric x peste corpul K. Z este mulimea numerelor ntregi : 0, 1, 2, 1, 2, [ 1 [ Zn = {0, [, , n 1} este inelul claselor de resturi modulo n, cu adunarea i nmulirea mod n. S(X) = { : X X | este bijectiv} este mulimea permutrilor mulimii X. Este grup cu compunerea funciilor. Sn este grupul permutrilor mulimii {1, 2, , n}. Are n! = 12n elemente. u||v este concatenarea irurilor u i v. n n! k = Cn = combinri de n luate cte k = k !( n k )! k
T

I. Coduri corectoare de erori


Fie A o mulime finit, numit alfabet, ale crei elemente le numim simboluri. Prin informaie digital (sau mesaj peste A) nelegem un ir de simboluri (elemente) din alfabetul A. Astfel, orice fraz dintr-o limb dat este un mesaj (informaie digital). Orice ir de litere, chiar fr sens, este mesaj. De exemplu, 011110101100 este un ir de simboluri din alfabetul {0,1} (n acest caz, simbolurile se numesc bii). Acest mesaj este un mesaj binar, cci alfabetul are dou simboluri. Un alfabet cu q simboluri se numete alfabet q-ar. Transmiterea unei informaii digitale1 ntre dou puncte diferite n spaiu (de exemplu o transmisie de date pe o linie telefonic) sau n timp (stocarea pe un suport material cum ar fi un compact disc, pentru o citire ulterioar), este supus erorilor cauzate de o varietate de factori: zgomot pe linia telefonic, deteriorarea suportului fizic al informaiei etc. Se impune gsirea unui procedeu prin care mesajul s poat ajunge n form corect la receptor (sau receptorul s poat detecta eventualele erori i s cear retransmisia mesajului). Fixm un alfabet A cu q simboluri (alfabet q-ar). Ideea care st la baza teoriei codurilor bloc corectoare de erori este urmtoarea: se fixeaz * k, n N , cu k < n. Se mparte mesajul original n blocuri (numite cuvinte) de k simboluri. Fiecrui cuvnt2 de lungime k i se asociaz un cuvnt mai lung, de lungime n, dup o lege prestabilit; cele n k simboluri n plus snt puse pentru detectarea i eventual corectarea erorilor ce pot aprea n transmisie. Pe canal se transmite cuvntul de n simboluri, la recepie urmnd ca, prin analizarea cuvntului recepionat, s se decid dac au aprut erori (sau s se reconstituie cuvntul transmis). 1 Exemplu. Fie A = {0, 1} (alfabet binar). O idee simpl i nu prea eficient de codare pentru corectarea erorilor este de a transmite fiecare bit de 3 ori, urmnd ca decodarea s se fac dup regula majoritii. Mai precis, lum k = 1, n = 3 i stabilim urmtorul procedeu de
1

Transmiterea de sunete, imagini, texte etc. ca un ir de 0 i 1 pare azi evident, dar n anii 1940 a fost o idee revoluionar i i aparine lui Claude Shannon (1916-2001), matematician american, unul din fondatorii teoriei informaiei (articolul A mathematical theory of communication, 1948). k 2 Prin cuvnt de lungime k se nelege un k-uplu de simboluri din A (un element din A ).

7
codare: 0 este codat ca 000, iar 1 ca 111. Astfel, dac mesajul original este 0101, el va fi codat ca 000111000111. S presupunem c acest mesaj este afectat de erori pe canal, nct la recepie se primete 001111000011. La decodare, fiecare grup de 3 bii este tratat individual: de exemplu grupul 001 este decodat n 0 (se presupune c 001 provine din 000 n care unul din 0 a devenit 1), 011 este decodat n 1 etc. Acest procedeu de corectare a erorilor funcioneaz att timp ct nu apare mai mult de o eroare la fiecare grup de trei simboluri transmise. Acest cod se numete codul (binar) de repetiie de lungime 3. Modelm o situaie de tipul descris, astfel: transmitorul trimite un mesaj ctre receptor pe un canal de transmisie. Mesajul este un ir finit de simboluri din alfabetul A. Orice ir de simboluri poate fi mesaj3. Presupunem c o eroare cauzeaz receptarea altui simbol dect cel transmis (dar nu pierderea simbolului n timpul transmisiei). Posibilitatea de apariie de erori pe canal este modelat de o funcie de tranziie P : A A [0, 1], cu semnificaia c x, y A, P(y, x) reprezint probabilitatea ca la transmiterea simbolulului x, la recepie s fie primit simbolul y. Unul din cele mai rspndite modele pentru un canal de transmisie este canalul q-ar simetric de probabilitate p: - A are q elemente (este un alfabet q-ar); - funcia de tranziie P are proprietatea c P(y, x) = p, y, x A cu y x. Altfel spus, probabilitatea de apariie a unei erori (simbolul primit difer de cel trimis) este (q 1)p, indiferent de simbolul transmis (de unde i denumirea de canal simetric) i indiferent de locul simbolului n mesaj (canal fr memorie). Deci, probabilitatea ca un simbol transmis x s fie recepionat corect este P(x, x) = 1 (q 1)p. Se presupune c 0 p < 1/2(q 1) (altfel este mai probabil s se recepioneze un simbol eronat dect cel corect!). Dac q = 2, se vorbete de un canal binar. Spunem c un canal este canal qSC(p) dac este un canal q-ar simetric, fr memorie, de probabilitate p. Formalizm ideea de codare bloc de mai sus: se fixeaz k, n N, cu k n; se d o funcie k n k n injectiv E : A A care codeaz fiecare a = a1ak A ntr-un cuvnt cod c = c1cn A . n (Un element oarecare din A , (x1, , xn), (unde xi A,i) l scriem mai simplu x1xn.) Mulimea C := E(A ) = {E(a1ak) | a1ak A } a tuturor cuvintelor cod se numete cod k (n cazul nostru, cod de tip [n, k] peste A). Observm c |C| = q . Dac mesajul a1ak este o parte a cuvntului cod c1cn = E(a1ak) (de obicei c1cn = a1ak p1pn k, unde p1pn k
k k

Desigur, acest lucru e fals dac se transmit numai mesaje din limba romn, de exemplu. ns aceast presupunere e valabil dac se efecueaz n prealabil o compresie fr pierderi a mesajului, lucru curent n practica transmisiei de date (de exemplu compresiile zip, rar, lha etc). Acest procedeu, formalizat de Huffman, se bazeaz pe o analiz statistic a mesajului i codarea simbolurilor cele mai probabile n iruri scurte i a celor mai puin probabile n iruri mai lungi.

8
se numesc simboluri de paritate sau simboluri redundante), codarea (i codul C) se numete sistematic(). n Pentru funcionarea codului trebuie dat i o funcie de decodare D : A C, care asociaz n oricrui cuvnt x din A cuvntul cel mai probabil transmis D(x) C. Evident, D(c) = c, c C. O codare sistematic are avantajul c mesajul original este recuperat prin simpla eliminare a simbolurilor redundante. Este util i o accepie mai larg a noiunii de cod: 2 Definiie. Fie n N. Un cod (bloc) de lungime n peste alfabetul A este o submulime C a n lui A . Elementele lui C se numesc cuvinte cod. Dac |A| = q, C se numete cod q-ar. Un cod bloc de tip [n, k] transform orice bloc de k simboluri ntr-un cuvnt cod de lungime mai mare n, ceea ce va permite (se sper) detecia sau corecia erorilor. ns acest procedeu mrete lungimea mesajelor transmise (ceea ce nu este de dorit). Pentru a msura eficiena unui cod din acest punct de vedere, se definete rata de transmisie a unui cod C de tip [n, k] ca fiind R(C) := k/n. Rata msoar proporia de simboluri care poart informaie (restul snt simboluri redundante, care folosesc la detecie sau corectare de erori). Dac C este n doar o submulime a lui A , ca n Def. 2, rata e definit ca R(C) := logq|C|/n (de ce?). Observai c pentru un cod de tip [n, k]q, cele dou definiii coincid. Rata codului de repetiie de lungime 3 este 1/3. 3 Exemplu. Codul binar de paritate P de lungime 9 este construit astfel: fiecrui mesaj de 8 bii i se adaug un bit de paritate astfel nct n cuvntul de 9 bii care rezult s conin un numr par de bii egali cu 1. Aceasta revine la a spune c suma (n Z2) a celor 9 bii este 0. 9 Deci, P = {x1 x8x9 Z2 | x1 + + x9 = 0}. Cite cuvinte are P? Care e rata sa? Posibilitatea unui cod C de a corecta erori se bazeaz n ntregime pe ideea c, dac un cuvnt cod c C este afectat pe canalul de transmisie de (un numr mic de) erori, cuvntul receptat ct c nu este cuvnt cod (nu aparine lui C), dar este suficient de apropiat de c nct s putem reconstitui c din ct. Acest lucru este posibil doar dac ct nu este el nsui un alt cuvnt cod sau nu e mai apropiat de alt cuvnt cod c' ! Aceste idei se pot formula riguros. 4 Definiie. Fie A o mulime nevid. Distana Hamming 4 pe A se definete astfel: x = (x1, , xn), y = (y1, , yn), d(x, y) := |{i | 1 i n, xi yi}|. Deci, distana ntre dou cuvinte este numrul de locuri n care cuvintele difer.
n

n onoarea lui Richard Hamming (1915-1998), matematician american, fondator, alturi de Shannon, al teoriei informaiei (articolul Error detecting and error correcting codes, 1950).

9
5 Propoziie. Distana Hamming d : A A R este o distan (o metric) pe A , adic: n a) x, y A , avem d(x, y) = d(y, x) 0 ; n b) x, y A , avem: d(x, y) = 0 x = y; n c) x, y, z A , avem: d(x, y) d(x, z) + d(z, y). n Demonstraie. c) Pentru orice x = (x1, , xn), y = (y1, , yn) A , fie C(x, y) := {i |xi = yi}. n Artm c d(x, y) d(x, z) + d(z, y), x, y, z A . Cum d(x, y) = n |C(x, y)|, inegalitatea devine: n |C(x, z)| + |C(z, y)| |C(x, y)|. Evident, avem C(x, z) C(z, y) {1,, n}, deci |C(x, z) C(z, y)| n, adic |C(x, z)| + |C(z, y)| |C(x, z)C(z, y)| n. ns C(x, z)C(z, y) C(x, y), deci n |C(x, z)| + |C(z, y)| |C(x, z)C(z, y)| |C(x, z)| + |C(z, y)| |C(x,y)|. Pentru x A i r > 0, sfera (bila) de raz r centrat n x este mulimea cuvintelor care snt la distan cel mult r fa de x: n Br(x) := {y A | d(x, y) r}. n i Pentru x A , unde |A| = q, i 1 i n, exist exact Cn (q 1)i cuvinte aflate la distan exact i de x. Deci orice dou sfere de raz r au acelai "volum" (numr de elemente): 6 Propoziie. Fie |A| = q. Numrul de elemente al unei sfere de raz r din A este
i |Br| = |Br(x)| = Cn (q 1)i . i =0 r n
n n n n

7 Definiie. Distana minim a unui cod C A este: d(C) := min {d(x, y) | x, y C, x y}. Distana minim d(C) este un parameteru foarte important al codului. Orice dou cuvinte cod distincte ale lui C difer n cel puin d(C) poziii, i exist mcar o pereche de cuvinte cod la distan exact d(C). Capacitatea de corectare a codului C este: e(C) := [(d(C) 1)/2]. S presupunem c la transmiterea unui cuvnt cod c C apar erori, iar y este cuvntul n recepionat. Trebuie s gsim c cunoscnd doar pe y. Pentru orice y A i c C, fie n prob(y|c) probabilitatea ca y s fie recepionat cnd c este trimis. La recepionarea lui y A , trebuie s gsim un cuvnt cod m(y) C astfel nct prob(y|m(y)) s fie maxim: prob(y|m(y)) = max { prob(y|c) | c C}. Un algoritm care realizeaz acest lucru se numete algoritm de maxim verosimilitate (maximum likelihood algorithm). In cazul canalului qSC(p): prob (y|c) = p
d(y,c)

(1 p)

n d(y,c)

p = (1 p) 1 p
n

d ( y ,c )

i 0 < p <

p 1 , deci <1 1 p 2

Astfel, prob(y|c) e maxim d(y, c) este minim. Aceasta arat c algoritmul de maxim verosimilitate e echivalent cu:

10
Algoritmul de distan minim. Pentru orice y A , algoritmul produce un cuvnt cod w(y) C care este cel mai apropiat de y d(y, w(y)) = min {d(y, c) | c C}.
n

Este important de tiut cnd un astfel de algoritm funcioneaz. Rezultatul urmtor justific denumirea capacitate de corectare dat lui e(C) = b(d(C) 1)/2c:
8 Teorem. Fie C A un cod cu d(C) = d i e(C) = e = b(d(C) 1)/2c. Atunci: a) Orice dou sfere centrate n cuvinte cod distincte i de raz e snt disjuncte. n b) Dac la transmiterea unui cuvnt cod c C, x A este recepionat i au aprut erori, unde e, atunci c este unicul cuvnt cod din C cel mai apropiat de x (algoritmul de distan minim decodeaz corect pe x n c) n c) Dac d este impar, (deci d = 2e + 1), atunci exist cuvinte cod u, v C i x A astfel nct d(u, x) = e + 1, d(v, x) = e. Deci exist o situaie cnd un cuvnt u este afectat de e + 1 erori i nu este decodat corect de algoritmul de distan minim. n Demonstraie. a) Presupunem c exist u, v C i x A astfel nct x Be(u)Be(v). Atunci d(u, v) d(u, x) + d(x, v) e + e < d, contradicie. b) Avem d(c, x) = e, so x Be(c). Pentru orice alt u C, x Be(u), deci d(x, u) > e. c) Exerciiu.
n

Dac x A este recepionat i = min{d(x, c) | c C} > e, mai multe cuvinte cod pot fi la distan de x. Aceasta nseamn c o decodare corect nu e posibil. Chiar dac exist un unic c C la distan , decodarea lui x n c poate fi incorect, ca n c) mai sus.
9 Observaie. Utilizarea unui cod C de lungime n, distan minim d i capacitate de corectare e se poate face n dou moduri distincte: - modul corectare de erori: se presupune c orice bloc de n simboluri c este afectat de cel mult e erori. Dac cuvntul recepionat este ct, ct poate fi decodat n mod univoc n c. De aici provine i denumirea de capacitate de corectare a lui C ce se d lui e. - modul detectare de erori: se presupune c la transmiterea oricrui bloc de n simboluri apar cel mult d 1 erori. Atunci niciun cuvnt cod c nu poate fi transformat pe parcursul

transmiterii n alt cuvnt cod c'. Astfel, dac receptorul primete un cuvnt ct care nu este cuvnt cod, semnaleaz eroare (i cere eventual retransmiterea cuvntului). De aceea, d 1 se numete capacitatea de detecie a codului C. n unele cazuri o combinaie a acestor moduri este posibil (un exemplu remarcabil este schema de corectare/detecie de erori folosit la Compact Disc).
10 Definiie. Un cod q-ar tip [n, k] cu distana minim d este numit cod tip [n, k, d]q sau [n, k, d]q-cod. Adesea indicele q este omis.

11
tersturi. Am definit o eroare ca o situaie cnd un simbol transmis e recepionat ca un simbol diferit (adic receptorul nu tie apriori c o eroare a avut loc, ori unde e plasat eroarea). Un alt model pentru canalul de transmisie include tersturi (erasures): simbolul

recepionat nu este citibil. O terstur poate fi interpretat ca o eroare a crei poziie e cunoscut. tersturile snt mai uor de corectat (cci snt deja detectate). Putem modela aceast situaie permind ca n cuvintele receptate s poata aprea i un nou simbol * (care noteaz o terstur); desigur, * nu aparine alfabetului A. Notm deci A* = A {*}. Pentru n orice c = c1cn C transmis, fie x = x1xn A* cuvntul recepionat. Fie S = {i | xi = *} n |S| mulimea poziiilor lui x unde snt tersturi i fie xS A cuvntul x din care eliminm toate tersturile. Algoritmul de distan minim, n acest caz, va cuta un cuvnt cod c' C astfel nct d(xS, c'S) = min {d(xS, yS) | y C}. Rezultatul urmtor generalizeaz Teorema 8 pentru cazul cnd apar tersturi i erori simultan:
11 Teorem. Fie C A un cod de distan minim d. Presupunem c c C este n transmis, x A* este recepionat i au aprut erori i tersturi, unde 2 + < d. Atunci c este unicul cuvnt cod din C cu proprietatea c d(xS, cS) = min {d(xS, yS) | y C}. Aadar, algoritmul de distan minim decodeaz corect pe x n c. Demonstraie. Folosim notaiile de mai sus. S = {i | xi = *} are elemente. Avem d(xS, cS) = . Fie y C, y c, i s presupunem prin reducere la absurd c d(xS, yS) . Atunci: d(yS, cS) d(yS, xS) + d(xS, cS) 2. Aceasta implic d(y, x) = 2 + < d, contradicie. Teorema lui Shannon asupra capacitii unui canal. Fixm un canal qSC(p). Pentru un cod q-ar C dat i un cuvnt cod x C, Px(C) este definit ca probabilitatea ca, la transmiterea lui x pe canal, cuvntul receptat s nu fie decodat corect de algoritmul de distan minim. Definim probabilitatea de eroare (sau ateptarea de eroare, error expectation) P(C) a lui C ca 1 media acestor probabiliti individuale: P(C) = C Px (C ) . P(C) este o msur important
xC

a calitii codului: snt interesante codurile C pentru care P(C) este foarte mic. P(C) depinde i de canal (adic de probabilitatea de tranziie p), nu numai de codul C. Pentru a enuna teorema fundamental a lui Shannon asupra capacitii unui canal qSC(p), definim Hq : [0, (q 1)/q] R, funcia de entropie q-ar:
Hq(p) = plogq( p/(q 1)) (1 p)logq(1 p), p (0, (q 1)/q]

i punem Hq(0) = 0 prin continuitate. Funcia de capacitate q-ar Cq este definit pe [0, 1/q] astfel:

12
Cq(p) = 1 Hq((q 1)p), p [0, 1/q]. n cazul q = 2, o interpretare a H2( p) este urmtoarea: pentru un simbol transmis s, H2( p) este incertitudinea ca simbolul recepionat s' s fie chiar s (echivalent, C2( p) = 1 H2( p) este cantitatea de informaie pe care s' o poart despre s). Dei extrem de interesante i instructive, nu insistm asupra acestor aspecte, deorece in mai mult de teoria informaiei dect de codare i necesit incursiuni n teoria probabilitii. Cq( p) se numete capacitatea canalului qSC(p). 12 Teorem (Shannon) Fie un canal qSC(p). Atunci, pentru orice R cu R < Cq( p), exist un ir de coduri (Cm)m 1, de tip [nm, km], cu rat Rm = km /nm > R, astfel nct P(Cm) 0 cnd m . Pentru orice R > Cq( p), nu exist iruri de coduri cu rate R i probabiliti de eroare care tind la zero.

Teorema lui Shannon spune n esen c dac rata R de transmisie e mai mic dect capacitatea Cq(p) a canalului, atunci exist coduri de rat R cu probabilitate de eroare arbitrar de mic. Demonstraia nu este constructiv, adic nu furnizeaz explicit un ir de coduri cu proprietile din enun. De aceea, unul din scopurile teoriei codurilor este de a gsi coduri sau familii de coduri care au rata ct mai apropiat de capacitatea canalului i probabilitatea de eroare ct mai mic. Vom prezenta numai aspecte din teoria codurilor bloc corectoare de erori i unele aplicaii, ignornd o clas de coduri corectoare de erori numite coduri convoluionale. Un codor convoluional tip [n, k] divide mesajul de intrare n blocuri de lungime k i le codeaz ca blocuri de lungime n. Dar codarea unui bloc depinde nu numai de ultimul bloc mesaj (ca la codurile bloc corectoare de erori), ci i de m blocuri de informaie precedente.

Exerciii
1. Dai exemplu de cod binar de lungime 3 cu 4 cuvinte cod. De ce nu exist niciun cod binar de lungime 4 cu 18 cuvinte cod? 2. De ce este funcia de codare presupus injectiv? 3. De ce rata unui cod este definit ca logq|C|/n? 4. Fie codul binar C = {01101, 00011, 10110, 11000}. Determinai distana sa minim i rata. Folosind algoritmul de distan minim, decodai urmtoarele cuvinte recepionate: a) 00000; b) 01111; c) 10110; d) 10011; e) 11011.

13
5. Fie codul de repetiie Cn de lungime n peste un alfabet q-ar A, Cn := {cc A | c A}. Estimai rata Rn i ateptarea de eroare P(Cn) pentru un canal qSC(p). Satisface irul (Cn)n 1 teorema lui Shannon? 6. Fie n 2. Fie C un cod binar de lungime n i distan minim n. Cte cuvinte are C? Cte astfel de coduri exist? Tratai i cazul q-ar.
n

14

II. Coduri liniare

Dezvoltarea teoriei codurilor bloc corectoare de erori, precum i gsirea unor algoritmi eficieni de codare i decodare, snt mult uurate pentru acele coduri C care au o anumit structur. O astfel de situaie este cea n care alfabetul este un corp finit F (cu q elemente, n n unde q este o putere a unui numr prim), iar codul C F este subspaiu liniar n F . Dei aceste condiii limiteaz drastic clasa codurilor pe care le studiem, aceast clas este suficient de larg pentru a furniza coduri importante i eficiente, folosite pe scar larg n practic. n continuare presupunem c cititorul este familiarizat cu noiuni i rezultate elementare de Algebr Liniar: spaiu liniar, dependen liniar, sistem de generatori, baze, dimensiune, n produsul scalar standard n F-spaiul liniar F . n acest capitol notm cu F un corp fixat. Corpul cu q elemente este notat Fq. Cititorul care nu este familiarizat cu corpurile finite poate presupune c F este corpul cu dou elemente F2 = Z2 = {0, 1} (inelul de clase de resturi modulo 2). Reamintim cteva lucruri de baz privind spaiile liniare. Fie F un corp comutativ. Elementele lui F mai snt numite n acest context scalari. O mulime nevid V (ale crei elemente le numim vectori) se numete spaiu liniar (sau vectorial) peste F dac: - este definit o adunare a vectorilor din V, adic o funcie + : V V V, (u, v) u + v, u, v V; - este definit o nmulire a vectorilor din V cu scalari din F: : F V V, (, v) v V, F, v V; - aceste operaii satisfac condiiile urmtoare: (V, +) este un grup abelian, adic: a) Adunarea e asociativ: (x + y) + z = x + (y + z), x, y, z V. b) Adunarea e comutativ: x + y = y + x, x, y V. c) Exist un vector 0 V astfel nct x + 0 = 0 + x = x, x V. d) Pentru orice x V exist ( x) V astfel nct x + ( x) = ( x) + x = 0. Adunarea vectorilor i nmulirea cu scalari satisfac n plus proprietile urmtoare, pentru orice F i x, y V: e) (x + y) = x + y f) ()x = (x)

15
g) 1x = x, unde 1 noteaz elementul unitate al lui F. Am notat cu 0 att vectorul 0 ( V), ct i scalarul 0 ( F). Cititorul nu trebuie s le confunde. n loc de spaiu liniar peste F, se spune adesea F-spaiu liniar
1 Exemplu. a) Mulimea F = {(x1, , xn) | xi F, 1 i n} este un F-spaiu liniar. Adunarea i nmulirea cu scalari se definesc pe componente: (x1, , xn) + (y1, , yn) := (x1 + y1, , xn + yn), (x1, , xn) := (x1, , xn), n pentru orice (x1, , xn), (y1, , yn) F , F. Verificarea faptului c V este ntr-adevr un spaiu linar este imediat. Vectorul 0 este n 0 := (0, , 0). Pentru orice (x1, , xn) F , avem (x1, , xn) := ( x1, , xn). Exemplul acesta este fundamental (n sensul c orice F-spaiu liniar finit dimensional este n izomorf cu un unic F ). b) Mulimea polinoamelor cu coeficieni n F, F[X], este un F-spaiu liniar. Care snt operaiile? 2 Definiie. O submulime nevid C a unui F-spaiu liniar V este un subspaiu liniar al lui V dac C este el nsui un F-spaiu liniar cu adunarea vectorilor i nmulirea cu scalari definite pe V. Mai precis, C este o mulime de vectori din V astfel nct C este parte stabil la adunarea vectorilor din V i la nmulirea extern cu scalari din F: u, v C, F, are loc: u + v C i v C. Scriem C FV dac C este un subspaiu al F- spaiului liniar V (sau mai simplu C V dac nu exist pericol de confuzie). 3 Exemple. a) Codul din exemplul I. 1 este C = {000, 111} i este subspaiu al Z2-spaiului 3 liniar Z2 (verificai!). * b) Pentru orice k N , mulimea polinoamelor de grad < k din F[X] este un subspaiu liniar n F[X] (verificai!). 4 Observaie. Condiia ca C s fie parte stabil la nmulirea cu scalari este redundant pentru cazul corpului cu dou elemente Z2. De ce? Mai putei da exemple de corpuri pentru care se ntmpl acelai fenomen? 5 Definiie. Fie F V, n 1 i v1, , vn V. Orice vector de forma
n

1 v1 + + n vn ,
unde 1, , n F, se numete combinaie liniar a vectorilor v1, , vn. Scalarii 1, , n se numesc coeficienii acestei combinaii liniare, iar numrul natural n se numete lungimea combinaiei liniare. Convenim c vectorul 0 este singura combinaie liniar de o mulime vid de vectori. Dac C este un subspaiu n V, atunci orice combinaie liniar de vectori din C este n C.

16
Pentru orice submulime S a lui V, cel mai mic (n sensul incluziunii) subspaiu al lui V care include S se numnete subspaiul generat de S i este notat < S >. Se pooate arta uor c < S > este mulimea tuturor combinaiilor liniare de vectori din S: < S > = {1v1 + + nvn | n N*, 1, , n F, v1, , vn S}. Dac < S > = V, S se numete un sistem de generatori pentru V. O mulime B = {v1, , vn} de vectori se numete liniar independent dac orice combinaie liniar de v1, , vn care este egal cu 0 are toi coeficienii egali cu 0: 1, , n F, dac 1v1 + + nvn = 0, atunci 1 = = n = 0. O submulime B a lui V se numete baz a lui V dac B este linear independent i < B > = V. Dac B = {v1, , vn} e finit, condiia este echivalent cu: orice vector din V poate fi scris n mod unic drept o combinaie liniar de {v1, , vn}: n v V, ! (1, , n) F astfel nct v = 1v1 + + nvn .
6 Exemplu. O baz pentru F este {e1, , en}, unde e1 = (1, 0, , 0), e2 = (0, 1, , 0), , en = (0, 0, , 1) (baza canonic). Exist multe alte baze n F (dac n > 1 sau |F| > 2). 7 Teorem. Orice F-spaiu liniar V are o baz. Mai mult, orice dou baze ale lui V au acelai cardinal (acelai numr de elemente). Acest numr este numit dimensiunea lui FV i se noteaz dimFV (sau dim V). 8 Definiie. Fie U, V spaii liniare peste corpul F. O funcie : U V se numete F-liniar (sau F-morfism de spaii liniare) dac : (x + y) = (x) + (y), x, y U; (x) = (x), x U, F. Astfel, este liniar dac i numai dac pastreaz combinaiile liniare: (1v1 + + nvn) = 1 (v1) + + n(vn), 1, , n F, v1, , vn U Un morfism bijectiv de spaii linare se numete izomorfism. Dac exist un izomorfism ntre spaiile liniare U i V, spunem c U i V snt izomorfe i scriem U V. 9 Observaie. Dac V este un spaiu liniar de dimensiune n peste Fi B = {v1, , vn} este o n n baz pentru V, atunci funcia : F V, (1, , n) = 1v1 + + nvn (1, , n) F ,
n n

este un izomorfism (demonstrai!). Deci, toate F-spaiile liniare cu aceeai dimensiune n snt izomorfe.
10 Definiie. Fie F un corp finit cu q elemente. Se numete cod liniar de lungime n peste F n orice subspaiu liniar C al lui F . Cu alte cuvinte, C este o mulime de cuvinte de lungime n n care simbolurile snt elemente n din F, nchis la adunarea (pe componente) din F i la nmulirea cu scalari din F. Dimensiunea codului liniar C este dimensiunea lui C ca spaiu liniar peste F. Dac C este cod de lungime n, dim C = k i distana minim a lui C este d, spunem c C este cod liniar de

17
tip [n, k, d]q (sau cod liniar q-ar de tip [n, k, d]); n, k, d se numesc parametrii codului C. Observai c aceast notaie este n acord cu cea de la I.10: C este F-spaiu liniar de k k dimensiune k, deci C F i C are q cuvinte cod. La un cod liniar C de tip [n, k, d], cuvintele cod au lungime n; numrul de simboluri care poart informaie este k. Restul de n k simboluri snt folosite pentru corectare/detecie de erori. Rata codului este R = k/n. 11 Exemplu. Codul de repetiie de lungime 3 peste F2 n exemplul I.1 este C = {000, 111}, 3 care este un subspaiu n F2 de dimensiune 1 (de ce?). Distana minim a lui C este 3, deci C este un cod binar tip [3, 1, 3]. Astfel, capacitatea de corectare a lui C este e(C) = 1.

Pentru un cod C dat, determinarea distanei minime este foarte important. A priori, pentru aceasta ar trebui s considerm toate distanele d(x, y) cu x, y C distincte, adic |C|(|C| 1)/2 distane, ceea ce este practic inabordabil (de exemplu, un cod Reed-Solomon 28 67 folosit n CD-uri are 256 2.6910 cuvinte cod). La coduri liniare, avem deja o sarcin uurat:
12 Propoziie. Fie F un corp finit. Atunci distana Hamming pe F este invariant la n translaii: d(x, y) = d(x + z, y + z), x, y, z F . n particular, d(x, y) = d(x y, 0) i deci n distana minim a unui cod liniar C F este: d(C) = min{d(x, 0) | x C, x 0}. Ponderea (Hamming) wt(x) a unui cuvnt (vector) x = x1xn F se definete ca numrul coordonatelor sale nenule (echivalent, wt(x) = d(x, 0))5. Deci: 13 Corolar. Distana minim a unui cod liniar este ponderea minim nenul a cuvintelor cod. Aadar, n locul calculului tuturor celor |C|(|C| 1)/2 distane, codurile liniare cer doar |C| 1 calcule de ponderi n scopul aflrii distanei minime. n multe cazuri acest calcul este tot prea lung, dar exist alternative mai rapide (Teorema 19 de mai jos).
n n

Cum putem preciza n mod concret un cod liniar? Exist dou moduri naturale de a da un n subspaiu liniar C (un cod liniar) de dimensiune k n F : - se d o baz a lui C (adic se dau k vectori liniar independeni n C) - se descrie C ca mulimea soluiilor unui sistem omogen de n k ecuaii liniar independente.
14 Definiie. Fie C F un cod liniar de dimensiune k n peste corpul F. O matrice generatoare a lui C este o matrice G M(k, n, F) ale crei linii (vzute ca vectori n F )
5

Notaia wt vine de la weight (greutate, pondere).

18
formeaz o baz n C (deci liniile lui G snt liniar independente, adic rang G = k). Deci, o matrice G este matrice generatoare pentru C dac i numai dac G este o matrice k n cu liniile liniar independente, iar subspaiul generat de liniile lui A este C. O matrice de paritate6 a lui C este o matrice H = (hij) M(n k, n, F) astfel nct, n x = (x1, , xn) F :
x C hi1x1 + + hinxn = 0, 1 i n k. Deci, pentru ca H s fie o matrice de paritate pentru codul C de dimensiune k, trebuie ca T rang H = n k i s aib loc: x C Hx = 0 M(n k, 1, F). 15 Observaie. Denumirea de matrice de paritate (parity-check matrix) provine din cazul * k particular al codului binar urmtor: se fixeaz k N i orice vector x1xk F2 este codat ca x1xkxk + 1, unde xk + 1 este astfel nct x1 + + xk + xk + 1 = 0 (n F2). Codul este aadar k+1 C = {x1xkxk + 1 F2 | x1 + + xk + xk + 1 = 0}. Orice cuvnt cod are un numr par de bii egali cu 1 i de aceea bitul xk + 1 este numit bit de paritate. Verificarea faptului c un cuvnt x este cuvnt cod revine la a verifica paritatea cuvntului, adic un tip particular de sistem liniar omogen pe care l satisfac coordonatele lui x. Acesta se numete codul (binar) de

paritate i este liniar, de tip [k + 1, k, 2] (demonstrai!). Ce rat de transmisie are?


16 Definiie. Definim produsul scalar standard pe F : x = (x1, , xn), y = (y1, , yn) F , x, y = x1y1 + + xnyn F. n n n Dac S F , fie S := {y F | x, y = 0, x S} ortogonalul lui S (doi vectori x, y F se numesc ortogonali sau perpendiculari dac x, y = 0).
n n

Aadar: H M(n k, n, F) este matrice de paritate pentru C F the liniile lui H snt n liniar independente i C este mulimea vectorilor din F ortogonali pe toate liniile lui H. Produsul scalar standard e o form biliniar simetric pe F , adic este o n n funcie , : F F F care satisface proprietile: x, y = y, x x, y + z = x, y + x, z; x + y, z = x, z + y, z x, y = x, y n pentru orice x, y F , F. Demonstrai!
17 Propoziie. Fie S F . Atunci: a) S este un subspaiu n E, numit subspaiul ortogonal pe S; b) S S ; c) T E cu S T, are loc T S ; d) Dac U E, atunci U = S , pentru orice sistem de generatori S al lui U.
6

Se mai folosete terminologia "matrice de control".

19
Demonstraie. a), c) Verificare direct, cu definiia. b) Fie x S. Atunci x, y = 0, y S , deci x este n ortogonalul lui S . d) Fie S = {v1, , vk}. Deoarece S U, avem U S . Orice x U este o combinaie liniar de vi': x = 1v1 + + kvk, pentru nite 1, , k F. Pentru orice y S , x, y = 1v1 + + kvk, y = 1v1, y + ... + k vk, y = 0, ceea ce arat c y U . 18 Teorem. Fie C un cod liniar de tip [n, k, d] peste corpul F. Atunci: a) C este un cod liniar de dimensiune n k (numit codul dual lui C). b) (C ) = C. c) Dac G este o matrice generatoare a lui C, atunci G este o matrice de paritate pentru C . Dac H este matrice de paritate pentru C, atunci H este matrice generatoare pentru C . Demonstraie. a) Fie G M(k, n, F) o matrice generatoare pentru C. Atunci x C x este ortogonal pe liniile lui G (cci aceste linii genereaz C). Deci C este spaiul soluiilor sistemului liniar omogen de matrice G, care este de dimensiune n rangG = n k.

b), c) Exerciiu. Deoarece un spaiu liniar poate avea multe baze, un cod liniar poate avea multe matrice generatoare i multe matrice de paritate. Observai c, spre deosebire de spaiile liniare reale n n 2 (cum este R ), un vector nenul n F poate fi ortogonal pe el nsui (de ex. (1, 1) n F2 ), deci este posibil ca C i C s aib intersecie nenul. Dac C = C , C se numete autodual. Distana minim a unui cod liniar poate fi citit de pe matricea sa de paritate:
19 Teorem. Fie C un cod liniar peste F i H M(n k, n, F) o matrice de paritate pentru C. Atunci distana minim d a lui C este d = min{ | exist coloane n H care snt liniar dependente} = = 1 + max{ N | orice coloane din H snt liniar independente}. Demonstraie. Fie Hi F coloana i a lui H, 1 i n. Avem (x1, , xn) C dac i numai dac x1H1 + + xnHn = 0. Fie d' = min{ | exist coloane n H, liniar dependente}. Fie (x1, , xn) C, de pondere minim d. Atunci coloanele Hi pentru care xi 0 (n numr
nk

de d) snt liniar dependente, deci d' d. Reciproc, fie o mulime de d' coloane {Hi}i J, liniar n dependent. Atunci exist (x1, , xn) F cu x1H1 + + xnHn = 0 i xi 0 i J. Deci x = (x1, , xn) C i d wt(x) d'. Construim o clas important de coduri de distan minim 3, pe baza acestui rezultat.

20
20 Definiie. (Coduri Hamming7) Fie F = Fq i r N fixat. Definim codul Hamming q-ar de redundan r, Hq, r, astfel: Construim o matrice de paritate H care s aib orice 2 coloane liniar independente, dar exist 3 liniar dependente (deci distana minim a codului va fi 3). Pentru aceasta, alegem cte r un vector nenul din fiecare subspaiu de dimensiune 1 din F i construim matricea H ce are
*

drept coloane aceti vectori (ntr-o ordine arbitrar). Matricea H este prin definiie matricea de paritate H a codului Hq, r. r Un alt mod de a exprima ideea de mai sus este: pe F \ {0} definim o relaie de echivalen: r * x, y F scriem x y F astfel nct y = x. Din fiecare clas de echivalen alegem cte un vector. Aceti vectori snt coloanele matricei de paritate H. Cte coloane are H ? Se observ c clasele de echivalen de mai sus au fiecare cte q 1 r * elemente (clasa de echivalen a lui x F \ {0} este {x | F }). Cum reuniunea lor r r (disjunct) este F \ {0}, avem q 1 = n(q 1), unde n este numrul claselor de echivalen. r Deci H are n = (q 1)/(q 1) coloane i r linii. Pentru ca H M(r, n, K) s fie matrice de paritate, trebuie ca rang H = r. Exist ntr-adevr T r coloane liniar independente n H, de exemplu (multipli scalari de) (1, 0, , 0) , (0, 1, , T T 0) , , (0, 0, , 1) . Exist 3 coloane liniar dependente (de ce?), deci distana minim a lui Hq,r este 3, din Teorema II.19. Deci Hq,r este un cod liniar de tip [(q 1)/(q 1), (q 1)/(q 1) r, 3]q .
21 Observaie. Construcia de mai sus nu determin n mod unic matricea de paritate H. De exemplu, pentru dou ordonri diferite ale coloanelor se obin dou matrice de paritate H, H' distincte i deci coduri Hamming corespunztoare distincte C, C'. ns aceste coduri snt echivalente pn la o permutare, n sensul c Sn (grupul permutrilor mulimii {1, 2, , n}) astfel nct: x1xn F , avem x1 xn C x(1) x(n) C'. Dac n matricea de paritate H a codului Hamming C se nlocuiete coloana i (fie aceasta * Pi) cu coloana Pi, unde F , atunci se obine o matrice H', de paritate pentru un cod C' 1 astfel nct avem x1xixn C x1( xi)xn C. Aceast situaie sugereaz definirea unui alt tip de echivalen: dou coduri C, C' de * n lungime n peste corpul F se numesc diagonal echivalente dac (1, , n) (F ) astfel n nct (x1,, xn) F , avem (x1,, xn) C (1x1,, nxn) C'. Dou coduri C, C' care
Familia de coduri descris a fost descoperit independent n 1949 de Marcel Golay i n 1950 de Richard Hamming.
7

21
snt echivalente (diagonal sau pn la o permutare) au n esen aceleai proprieti: de exemplu, C este liniar C' este liniar. Reuniunea celor dou relaii de echivalen pentru coduri de lungime n peste F se numete echivalen monomial. Se poate demonstra c codurile C i C' snt monomial echivalente dac i numai dac * n exist Sn i (1, , n) (F ) astfel nct: n x1xn F : (x1,, xn) C (1x(1),, nx(n)) C' Deci, codul Hamming Hq, r este unic determinat pn la o echivalen monomial. Enunai ct mai multe proprieti ale unui cod care se conserv prin echivalenele definite aici. Putei defini i alte tipuri de echivalene?
22 Exemplu. (codul binar Hamming [7, 4, 3]) Pentru q = 2 i r = 3, avem n = 7. Cum F = F2, corpul cu dou elemente, coloanele lui H snt unic determinate pn la o ordonare (orice subspaiu de dimensiune 1 are un unic vector nenul). Alegem s ordonm coloanele lexicografic (adic scriem vertical toate numerele nenule de 3 cifre n baza 2, n ordine cresctoare). Deci H este: 1 0 1 0 1 0 1 H = 0 1 1 0 0 1 1 0 0 0 1 1 1 1

Acest cod are o importan istoric deosebit: A fost primul cod corector de erori folosit n computere (coduri detectoare de erori mai fuseser folosite nainte). O matrice de paritate a codului binar Hamming [7, 4, 3] este imprimat pe medalia Richard W. Hamming a IEEE8. S descriem o modalitate practic de codare i de decodare pentru acest cod H2, 3. ntruct este un cod tip [7, 4], fiecare mesaj de 4 bii este codat pe un cuvnt cod de 7 bii. T Coordonatele unui cuvnt cod d = d1 d7 H2, 3 satisfac ecuaia Pd = 0, adic

Matricea de pe medalie nu este cea aleas de noi. Ce legtur este ntre codurile respective?

22
d1 + d3 + d5 + d7 = 0 d2 + d3 + d6 + d7 = 0 (*) d4 + d5 + d6 + d7 = 0 Alegem biii d1, d2, d4 s fie de control, iar biii mesajului original snt plasai n poziiile 3, 5, 6, 7. Biii d1, d2, d4 se obin din ecuaiile de mai sus, adic d1 = d3 + d5 + d7 etc.9 La recepia unui cuvnt de 7 bii r = r1 r7, se verific dac r este cuvnt cod (adic dac T r1, , r7 satisfac ecuaiile (*)). Altfel spus, se calculeaz (c1, c2, c3) = H(r1, , r7) . Dac (c1, c2, c3) = (0, 0, 0), atunci nu au avut loc erori. Dac (c1, c2, c3) (0, 0, 0), atunci eroarea (presupus a fi singura) e plasat n bitul a crui poziie este dat de numrul binar c3c2c1 (i deci poate fi corectat!). Demonstraia acestei scamatorii e propus ca exerciiu. Acest cod este mai eficient dect codul binar de repetiie de lungime 3. Rata sa este 4/7, o mbuntire substanial fa de 1/3. Dar poate corecta maximum o eroare la 7 bii, n timp ce codul de repetiie corecteaz o eroare la 3 bii. 23 Exerciiu. Presupunem folosim codul H2, Decidei dac au avut erori i corectai.
3

i c s-a recepionat cuvntul 110100.

24 Teorem (inegalitatea Hamming). Fie C un cod q-ar (nu neaprat liniar) de lungime n cu capacitate de corectare e. Atunci
i C Cn (q 1)i q . n e i =0 n

Demonstraie. Snt q elemente n A i |C| cuvinte cod n C. Sferele de raz e centrate n n cuvintele cod snt disjuncte dou cte dou, deci |C||B(x, e)| q . nlocuind |B(x, e)| cu volumul sferei se obine rezultatul. 6.

Pentru orice cod C (nu neaprat liniar) de capacitate de corectare e, sferele centrate n n cuvintele cod de raz e snt disjuncte; dac reuniunea lor este ntreg F , atunci codul se numete (e-)perfect. Echivalent, un cod este perfect dac are loc egalitate n inegalitatea Hamming.
25 Exerciiu. Orice cod e-perfect are distan minim 2e + 1.

Codurile Hamming snt 1-perfecte (verificai!). Altfel spus, orice cuvnt din F se gsete la distan 1 de exact un cuvnt cod. Acest fenomen are aplicaii oarecum surprinztoare.
26 Aplicaie. Jocul Pronosport const n ghicirea rezultatelor a 13 partide de fotbal. Rezultatul unei partide este un element al mulimii {x, 1, 2} (x = egalitate; 1 = ctig gazdele; 2 = ctig oaspeii). Juctorii completeaz variante; numim variant orice 13-uplu (s1,, s13),

De ce s-a ales astfel poziia biilor de control?

23
cu si {x, 1, 2}. Pentru a ctiga cu siguran premiul I (13 rezultate exacte), este necesar a 13 priori completarea a 3 variante. Se pune ntrebarea: care este numrul minim de variante ce trebuie completate pentru a ctiga cu siguran premiul II (12 rezultate exacte)? Reformulm problema n termenii teoriei codurilor: Fie F = F3, corpul cu 3 elemente. S se 13 13 gseasc o submulime (un cod) S F (ct mai mic), astfel nct orice cuvnt din F s se gseasc la distan cel mult 1 de un cuvnt din S. Altfel spus, s se gseasc un cod 1-perfect de lungime 13 peste F3. 3 Rspunsul este dat de codul Hamming cu q = 3 i r = 3: avem n = (3 1)/2 = 13, deci este 10 un cod tip [13, 10, 3]3. Numrul de cuvinte cod (de variante) este 3 = 59049.
27 Exerciiu. Scriei o matrice de paritate pentru codul Hamming de mai sus. 28 Teorem. (inegalitatea Singleton, Singleton Bound) Fie C un cod de lungime n i nd+1 distan minim d peste un alfabet A cu q simboluri. Atunci |C| q . Dac C este liniar, atunci d n k + 1. nd+1 Demonstraie. Pentru (x1, , xn d + 1) A fixat, exist cel mult un cuvnt cod n C ale crui coordonate de pe primele n d + 1 locuri snt (x1, , xn d + 1) (dac ar exista dou nd+1 nd+1 astfel de cuvinte n C, distana dintre ele ar fi < d). Deci |C| |A| =q . Dac C k este liniar, atunci |C| = q .

Codurile liniare pentru care d = n k + 1 se numesc coduri MDS (Maximum Distance Separable) i snt cele mai bune dintr-un anumit punct de vedere (distana minim a codului este maxim posibil dac dimensiunea i lungimea codului snt fixate). Rezultatele de mai sus limiteaza numrul cuvintelor cod, pentru o lungime i o distan minim date. Iat i rezultate care afirm c, pentru o distan minim dat, exist coduri care conin mcar un numr garantat de cuvinte.
29 Teorem (Inegalitatea Gilbert, Gilbert Bound) Fie q, n N i d n. Atunci exist coduri q-are (neliniare) C de lungime n i distan minim d astfel nct: qn |C| d 1 . n i ( q 1) i =0 i Demonstraie. Dintre codurile q-are de lungime n i distan minim d alegem codul C cu un numr maxim de cuvinte. Presupunem c pentru C inegalitatea de mai sus este fals. n Atunci reuniunea sferelor de raz d 1 centrate n cuvintele din C este strict inclus n F , deoarece:

Bd 1 ( x ) C
xC

n ( q 1)
i =0

d 1

< qn ,

24
Deci, exist v F cu d(v, C) = min{d(v, x) | x C} d. Atunci C {v} are mai multe cuvinte dect C i are distana minim d, contradicie. Versiunea liniar a rezultatului de mai sus este:
30 Teorem (Inegalitatea Varshamov, Varshamov Bound) Exist un cod liniar q-ar C tip [n, k] cu distana minim cel puin d astfel nct d 2 n 1 i nk |C| = q > ( q 1) . i =0 i Demonstraie. Artm c exist o matrice H tip (nk) n peste F astfel nct orice d 1 coloane ale lui H snt liniar independente. Construim coloanele c1, , cn ale lui H astfel: nk nk Fie c1 orice vector nenul din F . Fie c2 F \ < c1 >. Pentru orice 2 j n, fie cj orice vector care nu se poate scrie ca o combinaie liniar de d 2 (sau mai puini) vectori dintre c1, , cj 1. Exist un astfel de vector?
n

O combinaie liniar de i vectori (i d 2) alei dintre c1, , cj 1 este determinat dac alegem i indici din j 1 i atam fiecrui indice un coeficient nenul din F. Aceasta se poate d 2 j 1 j 1 i i face n ( q 1) moduri. Deci exist cel mult ( q 1) astfel de vectori. i =0 i i Deoarece
d 2 j 1 n 1 i i n k q 1) ( ( q 1) < q , i =0 i i =0 i vectorul cj poate fi gsit, pentru orice j n. Fie C subspaiul ortogonal pe liniile lui H. Atunci C are dimensiune cel puin k (liniile lui H pot s nu fie liniar independente, adic rang H < n k). Deoarece un cuvnt din C de pondere < d corespunde unei combinaii liniare nule de mai puin dect d coloane ale lui H, ponderea minim a cuvintelor nenule din C este cel puin d. Dac vrem un cod de dimensiune exact k, alegem orice subspaiu al lui C de dimensiune k. Versiunile "asimptotice" (nu aprofundm acest aspect) ale acestor inegaliti coincid, i de aceea se vorbete de inegalitatea Gilbert-Varshamov. d 2

Exerciii
1. (Algoritm de decodare pentru coduri binare Hamming) Folosim notaiile din Exemplul 22. Fie e = e1 e7 = r d vectorul eroare i fie h1, , h7 coloanele lui H.

a) Dem c H(r1, , r7) = H(e1, , e7) = e1h1 + + e7h7 b) Dac are loc exact o eroare, atunci wt(e) = 1. Fie ei 0 . Atunci (c1, c2, c3) = hi. c) Folosind faptul c hi este numrul i scris n baza 2, corectai eroarea.
T

25
d) Generalizai algoritmul pentru orice cod binar Hamming H2, r.
2. Fie F un corp cu q elemente, n N i m < q . Cte coduri de lungime n peste F cu m k cuvinte exist? Cte din acestea snt liniare? (Ind. Dac m nu este de forma q , nu exist n k subspaii liniare cu m elemente n F . Dac m = q , trebuie gsit numrul subspaiilor liniare n de dimensiune k din F .) 3. Scriei o matrice de paritate pentru codul din Aplicaia 26. 4. (Coduri de repetiie) Considerm urmtorul procedeu de codare: pentru a coda cuvinte oarecare de lungime k (peste alfabetul binar {0, 1} = F) se repet fiecare bit de r ori; astfel, orice cuvnt x1xk este codat ca x1x1x2x2xkxk (fiecare xi apare de r ori). Se obine un cod de lungime kr. a) Artai c acest cod este liniar, de dimensiune k. b) Artai c distana sa minim este r. c) Folosim codul de repetiie de tip [3,1]. Dac se primete mesajul 000101111100, unde au aprut erori? Corectai-le.
n

d) Care este rata de transmisie a codului de repetiie tip [kr, k]?


5. Scriei toate cuvintele codului Hamming H2, 2, Care este rata sa de transmisie? 6. Scriei toate cuvintele codului binar Hamming tip [7, 4, 3]. Care este rata sa de transmisie? 7. Calculai numrul de cuvinte i rata de transmisie ale codului Hamming Hq, r (n general) i pentru q = 2, r 5. 8. Fie C un cod liniar de tip [n, k, d] peste F, corp cu q elemente. a) Artai c: ori toate cuvintele din C ncep cu 0, ori exact 1/q din cuvinte ncep cu 0. (Ind. n n Fie D := {x1xn F | x1 = 0}, subspaiu liniar n F . Aplicai formula pentru dim(C + D)). k1 b) Demonstrai c suma ponderilor tuturor cuvintelor lui C este cel mult n(q 1)q . n (q 1)q k 1 . (Ind. Distana minim este mai mic decit media c) Demonstrai c d qk 1

ponderilor cuvintelor nenule.) d) (Inegalitatea Plotkin) Demonstrai c, dac

d q 1 d > , atunci C . q 1 n q d n q

9. Artai c un cod liniar C peste Fq care are aceiai parametri ca un cod Hamming trebuie s fie un cod Hamming. (Ind. Deoarece d(C) = 3, o matrice de paritate a lui C trebuie s aib orice dou coloane liniar independente.)

III. Corpuri finite


Corpurile finite au depit de mult stadiul de curiozitate matematic. Corpurile finite snt eseniale n tehnologiile legate de transmisia, stocarea, secretizarea i prelucrarea informaiei digitale. Codurile liniare corectoare de erori se bazeaz pe corpuri finite, iar unele din cele mai puternice scheme criptografice moderne au la baz logaritmul discret ntr-un corp finit. Clasificarea corpurilor finite este simpl: pentru orice numr q, putere a unui prim, exist un unic (pn la izomorfism) corp finit cu q elemente, notat Fq. Acestea snt toate corpurile * finite (pn la izomorfism). n plus, grupul (Fq , ) este ciclic. Vom demonstra n continuare aceste fapte. Reamintim cteva noiuni fundamenale de algebr. Se numete inel un triplet (R, +, ) format dintr-o mulime nevid R i dou operaii interne pe R, + : R R R, (x, y) x + y, x, y R (numit adunare), : R R R, (x, y) xy, x, y R (numit nmulire), care satisfac urmtoarele condiii: 1) (R, +) este grup comutativ (abelian), adic a)x, y, z R, (x + y) + z = x + (y + z) (asociativitatea adunrii); b) 0 R astfel nct, x R, x + 0 = 0 + x = x (exist element neutru 0 pentru adunare); c) x R, x R astfel nct x + (x) = (x) + x = 0 (orice element x are un opus x); d) x, y R, x + y = y + x (comutativitatea adunrii); 2) nmulirea este asociativ i distributiv fa de adunare, adic x, y, z R, (xy)z = x(yz) (asociativitatea nmulirii); x, y, z R, x(y + z) = xy + xz (distributivitatea la stnga a nmulirii fa de adunare); x, y, z R, (y + z)x = yx + zx (distributivitatea la dreapta a nmulirii fa de adunare). Toate inelele R pe care le considerm snt inele unitare: exist 1 R astfel nct x1 = 1x = x, x R. Dac nmulirea este comutativ, (x, y R, xy = yx) R se numete inel comutativ. Un corp F este un inel unitar (cu 1 0) n care orice element nenul are un invers fa de * 1 * 1 1 nmulire: x F\{0} := F , x F astfel nct xx = x x = 1. Orice corp are mcar dou elemente: 0 i 1. Un corp n care nmulirea este comutativ se numete corp comutativ (numit uneori cmp). n acest curs, corp nseamn corp comutativ.

26

27
O submulime E a unui corp F este numit subcorp al lui F dac este parte stabil la nmulire, adunare i la inversarea elementelor nenule. Astfel, E este corp cu operaiile induse. Se demonstreaz uor c E este subcorp n F dac i numai dac: x, y E, cu y 0, avem 1 x y E i xy E. Mulimea numerelor ntregi Z este un inel comutativ, dar nu este corp (2 nu e inversabil n Z). Mulimea numerelor raionale Q este corp i este subcorp al lui R. Aceste corpuri snt infinite. Sntem interesai n corpuri finite. O funcie : E F, unde E i F snt inele, se numete morfism de inele dac pstreaz operaiile: (x + y) = (x) + (y), (xy) = (x)(y), x, y E i (1) = 1. Dac E i F snt corpuri, spunem c este morfism de corpuri. Orice morfism de corpuri e injectiv (demonstrai!). Construcia corpurilor finite se bazeaz pe conceptul important de inel factor, care n esen este o generalizare a construciei inelului Zn al ntregilor modulo n. Schim ideile acestor construcii. Fie n un numr ntreg fixat (numit modul). Spunem c numerele ntregi a i b snt congruente modulo n dac n divide a b. Scriem aceasta sub forma a b (mod n). Se demonstreaz imediat c relaia (mod n) de congruen modulo n este o relaie de [ echivalen pe Z. Pentru orice a Z, se noteaz cu a clasa lui a n raport cu relaia de congruen modulo n. Avem deci [ = {b Z | a b (mod n)}. Mulimea factor Z/ a [ (mod n) (adic {a | a Z}) se noteaz cu Zn i se numete mulimea claselor de resturi modulo n. Denumirea de clase de resturi este motivat de faptul c c dou numere ntregi a i b snt congruente modulo n dac i numai dac dau acelai rest la mprirea cu n. Pe Zn se pot defini dou operaii (numite adunarea, respectiv nmulirea modulo n), n [ [ raport cu care Zn devine inel comutativ i unitar. Pentru orice a , b Zn (cu a, b Z), definim: [ [ [ [ [ [ a + b := a + b; a b := a b Demonstrarea corectitudinii definiiilor de mai sus (adic independena de alegerea reprezentanilor) i a axiomelor inelului este propus cititorului. Vom aplica ideea construciei de mai sus ntr-o situaie mai general. n acest scop, observm c putem defini relaia de congruen modulo n pe Z i n felul urmtor: Notm nZ := {nk | k Z}. Avem atunci, a, b Z: a b (mod n) a b nZ. [ [ Se vede imediat c a = {a + nk | k Z}, motiv pentru care a se mai noteaz cu a + nZ. [ [ Deci, 0 = nZ, 1 = 1 + nZ etc. Mulimea nZ este ideal n Z, n sensul c este parte stabil la adunare i, x Z, a nZ, rezult c xa nZ (nZ este parte stabil la nmulirea cu orice element din Z).

28
Mai general, dac R este inel (presupus pentru simplitate comutativ i unitar), o submulime nevid I a sa se numete ideal n R (fapt notat I R) dac satisface condiiile: - a, b I, rezult a + b I; - a I, r R, rezult ra I. Se observ imediat c orice ideal I al lui R este subgrup al grupului aditiv (R, +) (demonstrai!) i deci 0 I. Idealul I se numete propriu dac I R. Propoziia urmtoare arat c ideea de construcie a lui Zn pornind de la Z i un ideal al su (de forma nZ) se generalizeaz cuvnt cu cuvnt la cazul unui inel R i al unui ideal I al su. Demonstraia const n verificarea direct a proprietilor enunate i o lsm cititorului (i poate fi gsit n orice carte introductiv de algebr modern).
1 Propoziie. Fie R un inel comutativ unitar i I un ideal al su. a) Relaia (de congruen modulo I), definit prin: a b (mod I) a b I [ este o relaie de echivalen pe I. Notnd cu a = {b R | a b (mod I)} (numit clasa lui a [ [ modulo I), are loc a = {a + x | x I} (a se mai noteaz a + I din acest motiv). [ b) Operaiile pe mulimea factor R/I := {a | a R}, date de: [ [ [ [[ [ a + b := a + b i ab ab, a, b R, snt corect definite i nzestreaz pe R/I cu o structur de inel comutativ unitar (numit inelul factor al lui R n raport cu I). c) Aplicaia : R R/I, (r) = [ = r + I, r R, este un morfism surjectiv de inele (numit r

surjecia canonic a inelului factor R/I). n termeni mai puin riguroi, trecerea de la inelul R la inelul factor R/I duce toate elementele din I n zero sau anuleaz elementele lui I. Cu notaiile de mai sus, inelul factor Z/nZ este exact Zn. Multe afirmaii referitoare la idealul I n R se traduc prin afirmaii referitoare la idealul 0 n R/I, idee aplicat adesea n raionamente.
2 Teorem. (teorema fundamental de izomorfism pentru inele) Fie R, S inele comutative i : R S un morfism de inele. Atunci nucleul lui , Ker = {r R | (r) = 0} este un ideal al lui R i exist un izomorfism canonic R Im Ker r + ker

(r), r R.

Propoziia urmtoare d cele mai simple exemple de corpuri finite, care snt blocurile de baz pentru orice corp finit.
3 Teorem. Fie n N . Atunci inelul Zn este corp dac i numai dac n este prim.
*

29
Demonstraie. Presupunem c n e prim. Cum Zn este inel, e suficient s artm c orice [ [ element nenul din Zn este inversabil. Fie a Z astfel nct a 0 n Zn. Aceasta nseamn c (a, n) = 1. Un rezultat cunoscut afirm c n acest caz exist u, v Z astfel nct ua + vn = [ [ [ [ [ (a, n) = 1. Trecnd la clase modulo n, obinem u a = 1, cci n = 0. Reciproc, presupunem c [[ [ Zn este corp i totui n nu este prim. Atunci n = ab, cu 1 < a, b < n, deci n Zn avem ab = ;n [ [ [ = 0, imposibil, cci a i b snt nenule. Contradicia arat c n trebuie s fie prim. 4 Definiie. Fie K, L corpuri. Dac : K L este un morfism de corpuri (cu necesitate injectiv), atunci tripletul (K, L, ) se numete o extindere a lui K. n acest caz, pentru orice element a K, obinuim s identificm (a) L cu a K. Astfel, dac a K i x L, vom scrie ax n loc de (a)x etc. Prin aceast identificare, K este subcorp al lui L i scriem, prin abuz, extinderea K L n loc de extinderea (K, L, ).

Rezultatul urmtor conine o construcie de corpuri extrem de important. Toate corpurile finite snt construite n acest mod.
5 Propoziie. Fie K un corp i f K[X] un polinom ireductibil de grad cel puin 2 (deci f nu are rdcini n K). Fie ( f ) = {gf | g K[X]} idealul generat de f. a) Inelul factor L := K[X]/( f ) este un corp10 (extindere a lui K) i f are o rdcin n L, anume X + ( f ), clasa lui X mod f. b) Exist o extindere E a lui K astfel nct f are toate rdcinile n E (f se descompune n factori liniari n E[X]). Demonstraie. a) Fie g 0 un element nenul n L, unde g K[X]. Aceasta nseamn c f [ [ nu divide g; cum f este ireductibil, avem ( f, g) = 1. Atunci exist u, v K[X] astfel nct [ uf + vg vg [ 1 = uf + vg . Trecnd la clase modulo f, 1 = [ = [. Deci g are un invers, anume [ L. v n [ Rdcina lui f n L este X . ntr-adevr, fie f = a0 + a1X + + anX ; atunci: n n [ f [ [ [ [ f ( X ) = a01 + a1X; + + an [ = a0 + a1X + + anX = [ = 0. X b) Se folosete o inducie dup grad f.

Observai c se consider K drept subcorp n K[X]/( f ) via aplicaia canonic : K K[X]/( f ), (a) = a (clasa lui a modulo ( f )), a K, care este un morfism de [ corpuri. Avem nevoie de unele definiii i rezultate fundamentale din teoria extinderilor de corpuri.
6 Definiie. Fie K L o extindere i x L. Spunem c x este algebric peste K dac exist un polinom nenul f K[X] astfel nct f (x) = 0. Altfel spus, x este algebric peste K dac i numai dac morfismul de evaluare evx : K[X] L, evx( f ) = f(x) f K[X], nu este injectiv.

Rezultatul i demonstraia snt asemntoare cu faptul c Zn este corp dac i numai dac n este prim. Aceasta nu e ntmpltor: att Z ct i K[X] snt "inele principale".

10

30
De exemplu, n extinderea Q R, elementul 2 lui X 2 Q[X].
2 este algebric peste Q, cci este rdcin a

7 Teorem. Fie K L o extindere de corpuri i x L, algebric peste K. Fie f un polinom unitar cu coeficieni n K. Urmtoarele afirmaii snt echivalente: a) f (x) = 0 i grad f = min{grad g | g K[X], g(x) = 0, g 0}. b)f (x) = 0 i f este ireductibil. c) f (x) = 0 i, oricare ar fi g K[X] cu g(x) = 0, rezult c f |g. Demonstraie. a)b) Dac f ar fi reductibil, atunci f = gh, cu g, h K[X], 1 deg h, deg g < deg f. Cum g(x)h(x) = f (x) = 0, x este o rdcin a lui g sau h, ale cror grade snt mai mici dect grad f, contradicie cu definiia lui f. b)c) Fie 0 g K[X] astfel nct g(x) = 0. Cum f(x) = 0, rezult c d(x) = 0, unde d = GCD(f, g), deci grad d > 0. ns d |f i f este ireductibil, deci d = f, i.e. f |g. c)a) Fie g K[X] cu g(x) = 0, g 0. Din ipotez, f |g, deci deg f deg g. 8 Definiie. Fie K L o extindere de corpuri i fie x L algebric peste K. Polinomul minimal al lui x peste K (notat Irr(x, K)) este polinomul monic din K[X] care satisface una din 2 2 condiiile echivalente de mai sus. De exemplu, Irr( 2 , Q) = X 2 deoarece X 2 Q[X] este monic, ireductibil n Q[X] i are rdcin pe 2 . 9 Definiie. Fie K L o extindere de corpuri. Atunci L are o structur canonic de K-spaiu vectorial: nmulirea unui scalar din K cu un vector din L este nmulirea din L. Dimensiunea lui L vzut ca spaiu vectorial peste K se numete gradul extinderii K L i se noteaz [L : K]. O extindere se numete extindere finit dac gradul su este finit.

De exemplu, n extinderea R C, elementul i C este algebric peste R, deoarece este 2 rdcina polinomului X + 1 R[X]. Gradul extinderii este [C : R] = 2, deoarece {1, i} este o baz a R-spaiului liniar C. Fie extinderea K L i x L. Snt de prim importan urmtoarele noiuni: - subinelul lui L generat11 de K i {x}, notat K[x]. Are loc (demonstrai): n K[x] = {a0 + a1 x + + an x | n N, ai K, 0 i n} = Im evx, unde evx : K L este morfismul de evaluare n x. - subcorpul lui L generat de K i {x}, notat K(x). Are loc: 1 K(x) = { | , K[x], 0}. De exemplu, subcorpul lui C generat de Q i 2 este Q( 2 ) = Q[ 2 ] = {a + b 2 | a, b Q} (demonstrai!). Se observ c nu este nevoie s lum toate expresiile polinomiale (de

Subinelul lui L generat de o submulime S a lui L este definit ca intersecia tuturor subinelelor lui L care includ S. La fel se definete subcorpul generat de S.

11

31
orice grad) n 2 , cu coeficieni n Q, ca n caracterizarea (S), ci doar cele de grad mai mic dect 2 = grad Irr( 2 , Q). De asemenea, are loc i Q( 2 ) = Q[ 2 ]. Lucrul acesta nu este ntmpltor i este caracteristic elementelor algebrice:
10 Teorem (de caracterizare a elementelor algebrice). Fie K L o extindere de corpuri i x L. Urmtoarele afirmaii snt echivalente: a) x este algebric peste K. b) K[x] este corp. c) K[x] = K(x). d) Extinderea K K(x) este finit. Dac x este algebric peste K i f = Irr(x, K), grad f = n, atunci K[X]/( f ) K(x). n n1 particular, [K(x) : K] = n i o baz a K-spaiului liniar K(x) este {1, x, , x }. Demonstraie. a)b) Fie f = Irr(x,K) K[X] i evx : K[X] L morfismul de evaluare n x. Avem Ker evx = f. Din teorema de izomorfism pentru inele, K[X]/( f ) Im evx = K[x]. Cum f este ireductibil n K[X], idealul ( f ) este maximal i K[X]/( f ) este corp. Atunci K[x], izomorf

cu K[X]/( f ), este i el corp. b)c) Evident. 1 n c)a) Presupunem c x 0 i fie x = a0 + a1x + + anx K[x] inversul lui x. 2 n+1 nmulind cu x, obinem a0x + a1x + + anx 1 = 0, adic x este rdcina unui polinom nenul cu coeficieni n K. i d)a) Familia infinit {x | i N} de elemente ale K-spaiului vectorial finit dimensional K(x) este liniar dependent. Deci, exist o relaie de dependen liniar de forma a01 + a1x + n + anx = 0, cu n N i a0, a1, , an K, nu toi nuli, adic x este algebric peste K. a)d) Avem K-izomorfismul de corpuri K[X]/( f ) K(x). Acesta este i un izomorfism de K-spaii vectoriale. Fie n = grad f. Demonstrm c n K-spaiul vectorial K[X]/( f ), clasele n1 n 1 [ [ [ elementelor 1, X, ..., X snt elementele unei baze. Dac a01 + a1 X + + an 1 [ = 0, X n 1 cu a0, a1, , an 1 K, atunci g = a0 + a1X + + an 1X ( f ), adic f |g. Cum grad f = n, rezult c g = 0, adic a0, a1, , an 1 snt nule. Pe de alt parte, folosind teorema mpririi cu rest, orice clas modulo f a unui polinom h K[X] are un reprezentant de grad mai mic n 1 [ [ [ dect n. Aceasta nseamn c h este combinaie liniar cu coeficieni n K de 1, X , ..., [. X n 1 [ [ [ Izomorfismul K[X]/( f ) K(x) duce X + ( f ) n x, deci baza {1, X , ..., X } este dus n n1 baza {1, x, ..., x } n K[x].
11 Definiie. Fie K un corp i x un element algebric peste K. Gradul extinderii K K[x] (egal cu grad Irr(x, K)) se numete gradul elementului x peste K. Caracteristica char R a unui inel (R, +, ) cu unitate e este definit ca fiind 0 (dac ne 0, * n N ) sau cel mai mic numr natural n 0 astfel nct ne = 0 n R. Deci, char Z = char Q = 0; char Zn = n. Caracteristica unui corp F este 0 sau un numr prim p. (demonstrai!).

32
12 Lem. (endomorfismul Frobenius) Fie R un inel comutativ de caracteristic p > 0. p Atunci aplicaia : R R, (x) = x , x R, este un morfism de corpuri (numit endomorfismul lui Frobenius12 al lui R). Dac R este finit, atunci este bijectiv (este un n n nautomorfism al lui R). Notnd q = p , atunci = (de n ori) este morfism, iar q (x) = x , x R. Demonstraie. Fie x, y R. Este clar c (xy) = (x)(y). Corpul R fiind comutativ, are loc formula binomului lui Newton: p p p (x + y) = (x + y) = C ip x p i y i = x + y ,
0 i p i ultima egalitate avnd loc pentru c p divide coeficienii binomiali C p dac 1 i < p (de ce?).

Morfismul de corpuri : R R este injectiv, deci bijectiv dac R este finit. 2 n p p n Avem ( )(x) = (x ) = ((x)) = x p i, prin inducie, (x) = x p , x R, n N. Endomorfismul Frobenius este aplicaia identitate n cazul corpului Zp (din mica teorem a p lui Fermat, x = x, x Zp). Vom da un criteriu pentru a decide dac un polinom are rdcini multiple, folosind noiunea de derivat formal a unui polinom.
13 Definiie. Fie R un inel comutativ unitar i f = a0 + a1X + + anX R[X]. Numim derivat (formal) a polinomului f polinomul n 1 df := a1 + 2a2 X + + nan X . (1) Se mai folosete notaia df = f ' sau df = f .
n

Un calcul direct arat c derivata formal are proprietile uzuale ale derivatei cunoscute din Analiz: ( f + g)' = f ' + g', (af )' = af ', ( fg)' = f 'g + fg', a R, f, g R[X]. n n Compunerea morfismului d cu el nsui de n ori (n N*) se noteaz d ; d : R[X] R[X]. n n1 0 n (n) Avem deci d = dd , n N*, cu convenia c d = id. Mai notm d f = f , f R[X].
14 Propoziie. Fie F un corp, f F[X] un polinom de grad n > 0 i F.

a) Exist i snt unice elementele b0, , bn F astfel nct f =

0 i n

bi ( X )

.
(i)

b) Dac este rdcin multipl de ordin m (m N*) a polinomului f, atunci f () = 0, pentru orice i {0, , m 1}. c) Dac f () = f '() = 0, atunci este rdcin multipl a lui f (de multiplicitate cel puin 2). Demonstraie. a) Prin inducie dup grad f. Dac f = a0 + a1X, atunci f = a0+ a1 + a1(X ). Dac grad f = n > 1, aplicnd teorema mpririi cu rest, obinem f = (X )g + b0,
12

Ferdinand Georg Frobenius (1849-1917), matematician german.

33
cu b0 F i g F[X], grad g = n 1. Scriind pe g sub forma dat de ipoteza de inducie i nlocuind n relaia precedent, se obine rezultatul. Unicitatea scrierii este echivalent cu F-liniara independen a mulimii de polinoame i {(X ) | i N} n F[X], uor de demonstrat. m b) Din relaia dedus la punctul a), rezult c (X ) | f dac i numai dac b0, b1,, bm1 (i) snt nuli. Pe de alt parte, se demonstreaz uor c f () = i!bi, i {0, , n}. De aici (i) rezult c f () = 0, i {0, , m 1}. c) Din cele demonstrate pn acum, obinem c f () = b0 = 0 i f '() = b1 = 0. Deci 2 (X ) | f. n cazul polinoamelor cu coeficieni ntr-un corp K, un element dintr-o extindere E a lui K este rdcin multipl a polinomului f dac i numai dac este simultan rdcin a polinomului i a derivatei sale, adic (X )| f i (X )| f '. Aceasta implic faptul c cmmdc al lui f i f ' n E[X] este de grad 1. ns cmmdc a dou polinoame se obine cu algoritmul lui Euclid i nu depinde de corpul considerat: dac K L este o extindere de corpuri, iar f, g K[X], atunci ( f, g)K[X] = ( f, g)L[X]. n concluzie:
15 Propoziie. Fie K un corp i f K[X]. Atunci f are rdcini multiple dac i numai dac f i f ' nu snt prime ntre ele.

Astfel, se poate decide dac un polinom are rdcini multiple fr a cunoate rdcinile. Putem acum enuna i demonstra teorema de existen i unicitate pentru corpurile finite.
16 Teorem. a) Fie F un corp finit cu q elemente. Atunci exist un numr prim p i n N n astfel nct |F| = p .
* n *

b) Pentru orice numr prim p i n N , exist un corp finit cu p elemente. Demonstraie. a) Fie e elementul unitate al lui F. Atunci mulimea multiplilor lui e, * * P := {ne | n N }, este o submulime a lui F i este finit. Deci exist p N astfel nct pe = 0. Alegem p s fie minim cu aceast proprietate (p = char F ). Dac p nu ar fi prim, atunci p = ab, cu 1 < a, b < p. Cum pe = (ab)e = (ae)(be) = 0, rezult c ae = 0 sau be = 0, contradicie cu minimalitatea lui p. Rmne c exist un unic p prim astfel nct pe = 0. Deci P = {0, e, 2e, , (p 1)e}. [ [ [ Observm c exist o bijecie ntre P i Zp = {0, 1, , p 1} (inelul claselor de resturi [ modulo p), dat de ie i . Este chiar un izomorfism, dup cum se verific imediat. Deci P este corp (fiind izomorf cu corpul Zp), iar F este o extindere a sa. Interpretm F ca un spaiu liniar peste P. Atunci dimensiunea lui F peste P este finit, fie n n dim PF = n. Deci F P (izomorfism de spaii liniare), adic |F| = p . n b) Presupunem problema rezolvat: dac F este corp finit cu q := p elemente, grupul * (F , ) are q 1 elemente. Aplicnd teorema lui Lagrange privind ordinul unui element ntr-un q 1 q grup finit, obinem c x = 1, deci x = x, x F. Pe de alt parte, din punctul a), F conine

34
un subcorp izomorf cu Zp. Deci F este o extindere a lui Zp, iar X X Zp[X] se descompune q n factori liniari n F[X] (toate elementele din F snt rdcini ale lui X X). n Argumentm acum astfel existena unui corp cu q = p elemente: fie corpul Zp i q f = X X Zp[X]. Exist o extindere E a lui Zp nct f se descompune n factori liniari n q E[X]. Considerm mulimea F := {x E | x = x}. S demonstrm c F este subcorp al lui E q q q (va fi corpul cu q elemente cutat). Fie x, y F. Atunci (xy) = x y = xy, deci xy F. Avem q q q n q i (x + y) = x + y (q = p , deci x x este o putere a endomorfismului Frobenius), deci 1 q q 1 1 1 x + y F. Dac x 0, atunci (x ) = (x ) = x , deci x F. Elementele lui F snt exact rdcinile polinomului f, iar acestea snt n numr de exact q. ntr-adevr, un polinom de grad q are cel mult q rdcini; pe de alt parte, f nu are rdcini multiple, dup cum se vede q1 folosind criteriul cu derivata formal: f' = qX 1 = 1, deci (f, f') = 1. Grupul multiplicativ al unui corp finit este ciclic, proprietate pe care nu o demonstrm, dar care are multe aplicaii:
17 Teorem. Fie F un corp finit cu q elemente. Atunci grupul (F , ) este ciclic: exist * * i F astfel nct F = { |1 i q 1}. Un astfel de element se numete element primitiv al lui F. 18 Teorem. Orice dou corpuri finite care au acelai cardinal snt izomorfe. n Demonstraie. Fie F, E corpuri finite cu q = p elemente (cu p prim) i F un element q primitiv. Atunci f = X X Zp[X] are rdcina n F. Pe de alt parte, f este produs de polinoame ireductibile n Zp[X]; deci exist un (unic) factor ireductibil g al lui f astfel nct g() = 0. Atunci grad g = [Zp() : Zp] = [F : Zp] = n. Fie o rdcin a lui g n E (g are toate rdcinile n E), atunci [Zp[] : Zp] = grad g = n = [E : Zp], deci Zp[] = E. Avem acum izomorfismele: F = Zp[] Zp[X]/(g) Zp[] = E.
* q

Corpul finit cu p elemente (unic pn la izomorfism) se noteaz cu GF(p ) (Galois Field = corp Galois)13 sau Fpn . Din existena unui corp finit F cu p elemente rezult c exist polinoame ireductibile de grad n cu coeficieni n Zp: de exemplu, polinomul minimal peste Zp al unui element primitiv n al lui F. Construcia concret a corpului cu p elemente este dat de:
19 Propoziie. Pentru orice n N*, exist mcar un polinom ireductibil de grad n n n Fp[X]; pentru orice astfel de polinom f, Fp[X]/( f ) este un corp cu p elemente.
n

Problema construciei efective a unui corp cu p elemente se reduce la cutarea unui polinom ireductibil g de grad n n Zp[X]. Corpul cutat va fi inelul factor Zp[X]/(g).

13

Structura corpurilor finite a fost determinat de Galois n 1830.

35
20 Exemplu: Corpul cu 4 elemente. Fie Z2 = F2 = {0, 1} corpul cu dou elemente (omitem cciula pentru a nota clasele modulo 2. Deci, 1 + 1 = 0). Cutm un polinom ireductibil de grad 2 in Z2[X]. Polinomul g = X2 + X + 1

nu are rdcini n Z2 (g(0) = 1, g(1) = 1) i are grad 2, deci este ireductibil. Aadar corpul cu 4 elemente este:
F4 =

F2 [ X ] = {h + ( g )| h F2 [ X ]} , (g)

unde h + (g) noteaz clasa lui h modulo g. Din teorema mpririi cu rest, h F2[X] se scrie ca h = gq + r, unde q, r F2[X] i deg r < 2 = deg g. Trecnd la clase modulo g: h + (g) = gq + r + (g) = r + (g), deoarece clasa lui g este 0. Un polinom oarecare de grad < 2 e de forma r = a + bX, a, b F2. Identificm a F2 with a + (g) F4 i notm X + (g) cu . Obinem c elementele lui F4 snt de forma a + bX + (g) = a + b, cu a, b F2 F4 = Z2[X]/(g) = {a + b | a, b Z2} = {0, 1, , 1 + }, unde 2 = + 1. Cum X 2 + X + 1 + (g) = 0 + (g) , rezult c satisface 2 + + 1 = 0, adic 2 = + 1. Rezumnd:
F4 = { a + b | a, b F2} = {0, 1, , 1 + }, unde = + 1. 2 De exemplu, (1 + ) = + = + 1 + = 1 + (1 + ) = 1 2 Am folosit c = + 1 i + = 0. Un element primitiv din F4 este .
2

Exerciii
1. (Caracteristica unui inel) Fie K un inel i e elementul su unitate. Dac exist k N astfel * nct ke = 0, atunci definim car K = min{k N | ke = 0}. n caz contrar, punem car K = 0.
*

a) Demonstrai c, dac K este integru, atunci car K = 0 sau un numr prim. b) Dac K este corp de caracteristic p > 0, atunci K are un unic subcorp izomorf cu Zp. c) Dac K este corp de caracteristic 0, atunci K are un unic subcorp izomorf cu Q.

36
2. Fie (G, ) un grup finit. Definim exponentul lui G, exp(G) := cmmmc{ord a | n a G} = min{n | x = 1, x G}.14 S se arate c:

a) Dac a, b G, ab = ba i (ord a, ord b) = 1, atunci ord ab = (ord a)(ord b). b) Pentru orice a, b G cu ab = ba, exist c G cu ordc = [ord a, ord b]. c) Dac G este abelian, exist un element al lui G care are ordinul egal cu exp(G).
3. Dac R este inel comutativ integru, iar G este un subgrup finit al lui (U(R), ), atunci G este

ciclic.
4. Dac F este un corp cu p elemente, iar K este un subcorp al su, atunci exist m|n astfel m nct |K| = p . Reciproc, pentru orice divizor m al lui n exist un unic subcorp al lui F cu m r p =: r elemente, anume K = {x F| x = x}. 5. Fie F un corp finit i m N . Demonstrai c exist un polinom ireductibil de grad m n
* n

F[X].
6. Construii corpuri finite cu 4, 8, 16, 25, 9 i 27 elemente. Pentru fiecare din ele gsii cte

un element primitiv.
7. (Numrul polinoamelor ireductibile de grad m cu coeficieni ntr-un corp finit) Fie F L o * extindere de grad m de corpuri finite, unde F are q elemente. Pentru orice d N , notm Pq, d = {f F[X] | grad f = d, f ireductibil i unitar}.

a) Demonstrai c X q X = L ( X ) = d m f P
m

q ,d

f.

b) Notm cu Rf = { L | f() = 0}, f F[X]. Artai c {Rf | f Pq, d, d|m} = L (reuniune disjunct). m c) Demonstrai c q = d|m |Pq, d|d. d) Calculai P2, m i P3, m, 1 m 6.
8. Scriei un algoritm eficient de calcul al lui b , unde b este un element dintr-un inel sau
r

monoid pentru care se cunoate un algoritm de nmulire a dou elemente oarecare, iar r este un numr natural. (Ind. Folosii ridicri la ptrat repetate i pe nmuliri cu b, cnd e cazul. 22 Exemplu: pentru a calcula a = b , scriem mai nti 2210 n baza 2, 22 = 101102 i calculm 2 5 10 21 succesiv a = b, b = a*a, b = (a*a)*b, b = a*a, b = (a*a)*b. Vezi tabel: Pasul Valoarea lui a 0
2

1 0
5

2 1
11

3 1
22

4 0

Cifra binar a lui r 1

b b = a*a b = (a*a)*b b = (a*a)*b b = a*a

14

Din teorema lui Lagrange, exp(G) divide cardinalul lui G.

37

IV. Coduri liniare: codare i decodare


Un cod este inutilizabil fr algoritmi eficieni de codare i decodare. Descriem cteva principii generale de codare i decodare pentru coduri liniare. Fixm un corp finit F cu q elemente i presupunem c toate spaiiile liniare snt peste F. Dac un cod C tip [n, k] peste F are o matrice generatoare G, liniile sale g1,, gk formeaz o baz n C. Codul C poate coda cuvinte mesaj de lungime k n cuvinte cod de lungime n k astfel: un mesaj de forma m1 mk F este codat ca m1g1 + + mkgk. n form matricial, n m = m1 mk este codat ca mG F . Desigur, forma matricei generatoare ar trebui aleas astfel nct procedura de codare s fie ct mai economic. O astfel de form este forma standard, care duce la o codare sistematic.
1 Definiie. O matrice generatoare G a unui cod liniar C tip [n, k] peste F este n form standard 15 dac G = (Ik | A), unde Ik este matricea identitate k k i A este o matrice

k (n k) peste F:
1 0 0 0 1 0 G= 0 0 1 a11 a21 ak1 a1n k a22 a2 n k ak 2 a k , n k a12

Dac G este n form standard, ca mai sus, cuvntul mesaj m1 mk este codat ca mG = m1 mkc1 cn k, adic simbolurile de control c1 cn k snt adugate la cuvntul mesaj m1 mk pentru a forma cuvntul cod. Desigur, ci = m1a1i + + mkaki, 1 i n k. n acest caz, {1, 2, , k} este mulimea de coordonate care poart simbolurile de informaie. Orice cuvnt cod e perfect determinat de primele sale k coordonate. Aceasta k nseamn c proiecia pe primele k coordonate : C F , (x1 xn) = (x1 xk), este o bijecie liniar (un izomorfism). Mai general:
2 Definiie. Fie C un cod liniar [n, k, d]. O mulime S {1, 2, , n} de coordonate se

numete mulime de informaie (information set) dac proiecia pe coordonatele din S,


15

Uneori o matrice este declarat n form standard dac G = (A | Ik ).

38
S : C F , S(x1 xn) = (xi)i S este un izomorfism. Aadar, orice mulime de informaie
are k elemente (deoarece C i F snt izomorfe, au aceeai dimensiune). |S| Observm c: S este o mulime de informaie |S| = k i x C, S(x) = 0 F implic x = 0 (singurul cuvnt cod care e 0 pe S este cuvntul 0).
3 Propoziie. Fie G o matrice generatoare a lui C i H o matrice de paritate a lui C.
|S| |S|

Urmtoarele afirmaii snt echivalente: a) S {1, 2, , n} este o mulime de informaie. b) Coloanele lui G corespunztoare coordonatelor din S snt liniar independente. c) Coloanele lui H corespunztoare coordonatelor din {1, 2,, n} \ S snt liniar independente. Demonstraie. Fie g1, , gk liniile lui G i H1, , Hn coloanele lui H. Coloanele lui G correspunztoare coordonatelor din S formeaz o matrice R tip k k. a)b) Fie r1,, rk liniile lui R. O relaie de dependen liniar 1r1 + + krk = 0 correspunde unui cuvnt cod nenul x = 1g1 + + kgk cu S(x) = 0, contradicie .Astfel, rang R = k i coloanele lui R snt independente. b)a) Avem rang R = k, deci liniile lui R snt independente. Un cuvnt cod nenul x = 1g1 + + kgk cu S(x) = 0 conduce la o relaie de dependen liniar 1r1 + + krk = 0, contradicie. a)c) Pentru simplitate, presupunem c S = {1, 2, , k}. Dac, prin absurd, coloanele Hk + 1, , Hn nu snt liniar independente, exist k + 1, , n F, nu toi zero, astfel nct k + 1Hk + 1 + + nHn = 0. Atunci 00k + 1n C (cci x1 xn C dac i numai dac x1H1 + + xnHn = 0), contradicie. Restul implicaiilor snt propuse ca exerciiu.
4 Propoziie. Fie C un cod tip [n, k, d] i fie S {1, 2, , n}.

a) Dac |S| n d + 1, atunci S include o mulime de informaie. b) C este cod MDS orice mulime de k coordonate este mulime de informaie. Demonstraie. a) Fie G o matrice generatoare a lui C i fie GS matricea format din coloanele lui G care corespund coordonatelor din S. Presupunem c S nu include o mulime de informaie. Aceasta nseamn c orice k coloane din GS snt liniar dependente, deci rang GS < k. Deci liniile lui GS snt dependente, i aceasta produce un cuvnt cod nenul x care este zero pe S (cf. demonstraia precedent). Dar atunci wt(x) n |S| d 1, contradicie. b) Avem : C este MDS d = n k + 1. Deci, dac S are k elemente, k n d + 1 i aplicm a). Presupunem c d < n k + 1. Fie 0 x C cu wt(x) = d < n k + 1. Atunci S = {i | xi = 0} are n d > k 1 element i S nu este mulime de informaie, contradicie. Nu orice cod liniar are o matrice generatoare n form standard, dar este echivalent cu un cod care are. n ceea ce urmeaz schim o demonstraie a acestui fapt.

39
5 Definiie. Spunem c o matrice peste F este n form ealon pe linii (REF, row echelon

form) dac: - toate liniile nenule (i.e. cu cel puin un element nenul) snt deasupra oricrei linii formate doar din zerouri; - primul (de la stnga) coeficient nenul (numit pivot) al unei linii nenule este ntotdeauna strict mai la dreapta pivotului de pe linia de deasupra. Dac n plus fiecare pivot este 1 i este unicul element nenul de pe coloana sa, spunem c matricea este in forma ealon redus pe linii (reduced row echelon form, RREF). Spre exemplu, fie matricele:
1 2 0 2 A = 0 0 1 0 ; B = 0 0 0 1 1 2 0 0 0 0 1 0 0 0 0 1

A este n REF, B este n RREF. Mai mult, B i A snt echivalente (B se obine din A prin nlocuirea liniei 1 cu linia 1 + ( 2)linia 3). Observm c o matrice k n de rang k n RREF conine coloanele matricei identitate Ik. * Dac A M(k, n, F) i 1 i, j k , 1 j k, a F , definim transformrile elementare de tip I, II, III asupra liniilor lui A: Tip I: se adun la linia i linia j nmulit cu a. Tip II: se permut linia i cu linia j. Tip III: se nmulete linia i cu a.
6 Exerciiu. Demonstrai c orice transformare elementar asupra liniilor lui A produce o

matrice A' cu proprietatea c subspaiul generat de liniile lui A' este egal cu subspaiul generat de liniile lui A. Un rezultat cunoscut de Algebr liniar afirm c, pentru orice matrice A M(k, n, F), exist un ir finit de transformri elementare asupra liniilor lui A, care transform matricea A ntr-o matrice A' n RREF i care are subspaiul generat de linii egal cu cel generat de liniile lui A. Mai mult, matricea A' cu aceste proprieti este unic (i se numete forma ealon redus pe linii a lui A). Rezultatul de mai sus nseamn c, plecnd de la o matrice generatoare oarecare G a unui cod liniar C, obinem (prin transformri elementare pe liniile lui A) o matrice generatoare G1 a lui C, care este n RREF; G1 conine coloanele matricei identitate (dar nu neaprat n ordinea necesar nct G1 s fie n form standard). O permutare adecvat a coloanelor furnizeaz o matrice G' (n form standard). Matricea G' este matrice generatoare a unui cod C', care este echivalent pna la o permutare cu C. Rezumnd:
7 Propoziie. Orice cod liniar este echivalent pn la o permutare cu un cod care are o

matrice generatoare n form standard.

40
O matrice generatoare n form standard furnizeaz imediat o matrice de paritate:
8 Propoziie. Fie C un cod liniar [n, k, d] astfel nct G = (Ik | A) este o matrice T generatoare a lui C n form standard. Atunci H := ( A | In k) este o matrice de paritate a lui C (adic o matrice generatoare pentru C ). Demonstraie. Un calcul direct arat c orice linie a lui H este ortogonal cu orice linie a lui G. Deci subspaiul generat de liniile lui H este inclus n C . Deoarece rang H = n k (H conine In k ca submatrice) i dim C = n k, H este matrice generatoare pentru C .

Pentru a descrie algoritmi de decodare pentru coduri liniare avem nevoie de noiunea de coset al unui subspaiu liniar. Construcia e similar cu cea de la inelul factor.
9 Definiie. Fie U un subspaiu al spaiului liniar V. Relaia pe V, definit de:

x y(mod U) x y U este o relaie de echivalen (relaia de congruen modulo U). Clasa de echivalen a elementului v V se numete cosetul lui U determinat de v. Se vede uor c acest coset este: v + U = {v + u | u U}. Astfel, cosetul lui U determinat de v se obine adunnd v la fiecare vector al lui U, i are acelai numr de elemente ca U. Mulimea tuturor coseturilor lui U se numete spaiul liniar factor V/U; acesta e spaiu liniar dac definim operaiile astfel: pentru orice v, w V: (v + U ) + (w + U) = v + w + U (v + U) = v + U. Verificarea axiomelor este imediat. Au loc urmtoarele rezultate clasice de Algebr liniar:
10 Teorem. Fie |F| un corp cu q elemente i U FV. Atunci orice baz a lui U poate fi completat pn la o baz a lui V. Dac {u1, , uk} este o baz a lui U i {u1, , uk, uk + 1, ..., un} este o baz a lui V, atunci {uk + 1 + U, ..., un + U} este o baz a lui V/U. n particular, nk dim(V/U) = dim(V) dim(U) = numrul de coseturi distincte ale lui U. Aadar, exist q k coseturi ale lui U i fiecare coset are q elemente. 11 Teorem. Fie U i V F-spaii liniare finit dimensionale i fie : U V o aplicaie

liniar. Atunci: a) Nucleul lui , Ker := {u U | (u) = 0} este subspaiu liniar al lui U. b) (Teorema fundamental de izomorfism) Exist un izomorfism canonic: U Im , u + Ker (u), u U. Ker c) dim(U) = dim(Im) + dim(Ker). Ne ntoarcem la problema decodrii. Fie w cuvntul cod original transmis i fie x cuvntul n recepionat. Atunci x = w + , unde este cuvntul eroare ( este un cuvnt din F ). Deci x i

41
snt n acelai coset al lui C, anume x + C. Pentru a gsi w, e suficient s gsim . Algoritmul de distan minim, pentru x dat, caut acel w C care este cel mai aproape de x. Deoarece = x w, aceasta nseamn c este cuvntul de pondere minim n cosetul x + C. Sntem condui la definiia urmtoare. Pentru orice coset D al lui V, un vector din D se numete un lider al cosetului D dac ponderea sa este cea mai mic printre ponderile cuvintelor din D: wt() = min{wt(x) | x D}. Un coset poate avea mai muli lideri (de aceeai pondere, desigur). Astfel, receptorul caut liderul al cosetului ce conine x i decodeaz x n x . Putem enuna urmtorul algoritm: Pentru un cod dat C, se calculeaz (naintea oricrei transmisii) coseturile lui C cu liderii respectivi i se aranjeaz ntr-un tablou (numit tablou Slepian, sau tablou standard). n practic, prima linie a tabloului const n cuvintele lui C, cu 0 n prima poziie. Dac j 1 linii au fost deja scrise, dintre cuvintele care nu snt deja scrise se alege un cuvnt de pondere minima ej; acesta e declarat lider al cosetului, i este scris ca primul element al liniei j. Pe locul i al liniei j scriem ej adunat cu elementul de pe locul i din prima linie. Astfel am obinut n linia j, care este cosetul ej + C. Continum procedura pna epuizm toate cuvintele din F . Se nk k linii (fiecare linie este coset al lui C i are q elemente). obine un tablou cu q La recepia lui x, se caut cosetul care conine x, i fie liderul acestui coset. Se decodeaz x n x (adic exact cuvntul din prima linie care e deasupra lui x).
12 Observaie. Fie C un cod [n, k, d], cu capacitate de corectare e. Atunci: a) Orice lider de coset de pondere e este unic. Deci, dac nu au loc mai mult de e erori

(i.e. vectorul de eroare are pondere e), algoritmul de mai sus decodeaz corect cuvntul receptat. Demonstraie: presupunem c u i v au ponderi e i snt n acelai coset. Atunci wt(u v) wt(u) + wt(v) 2e < d i u v C. Aceasta implic u v = 0, cci distana minim a lui C este d. b) Dac d este par (d = 2e + 2), atunci exist un coset care are doi lideri distinci de pondere e + 1. Deci, exist un cuvnt cod c i un vector eroare de pondere e + 1 astfel nct c + aparine unui coset cu cel puin doi lideri (adic c + nu poate fi unic decodat). Acest fapt e normal, cci e + 1 erori depesc capacitatea de corectare a lui C. Lsm demonstraia cititorului.
Decodarea cu sindroame. Algoritmul de decodare prezentat cere stocarea n memorie a n tuturor cuvintelor din F , ceea ce poate fi costisitor sau chiar imposibil pentru n mare. O

variant a algoritmului de mai sus folosete urmtorul concept:


13 Definiie. Fie C un cod liniar tip [n, k, d] peste F, H o matrice de paritate pentru C i n T nk se numete sindromul lui x. x F . Vectorul sH(x) = Hx F

42
Observm c sH : F F
n nk

, sH(x) = Hx , x F , este o funcie liniar.

Dou cuvinte snt n acelai coset al lui C dac i numai dac au acelai sindrom: x C n sH(x) = 0. Deci, u, v F : u v C sH(u) = sH(v). Astfel, putem enuna urmtorul algoritm (de decodare cu sindroame): naintea oricrei transmisii se alctuiete o list care conine sindroamele tuturor coseturilor lui C pe o coloan i liderii coseturilor respective pe urmtoarea coloan. La recepia unui cuvnt x, se calculeaz sH(x). Dac sH(x) = 0, atunci x C, adic nu au avut loc erori. Dac sH(x) 0, receptorul caut liderul e care are acelai sindrom cu x (sH(e) = sH(x)). Apoi x este decodat n x e C.

Exerciii
1. Demonstrai c dualul unui cod liniar MDS este tot MDS. (Ind.: folosii Prop. 4) 2. Demonstrai c un cod binar MDS de lungime n este unul din urmtoarele: codul de n repetiie tip [n, 1, n], codul de paritate tip [n, n 1, 2], sau tot F2 , de tip [n, n, 1]. (Ind: considerai o matrice generatoare i folosii Prop. 4) 3. Exist un cod binar tip [4, 2, 3]? (Ind: ncercai s construii o matrice de paritate.) 4. Fie C codul liniar binar cu matrice de paritate 1 1 0 1 0 0 H = 1 0 1 0 1 0 0 1 1 0 0 1

a) Gsii o matrice generatoare a lui C i scriei toate cuvintele cod din C. b) Decodai : 110110; 011011; 101010.
5. (a) Artai c orice cuvnt cod al unui cod binar autodual are pondere par.

(b) Artai c orice cuvnt cod al unui cod ternar autodual are pondere multiplu de 3. (c) Construii un cod autodual peste F5 astfel nct mcar unul din cuvintele cod nu are pondere multiplu de 5. (d) Fie x, y be cuvinte cod ntr-un cod autodual binar. Dac ponderile lui x i y snt divizibile cu 4, atunci ponderea lui x + y este multiplu de 4.
6. Fie C cod binar autodual tip [n, k, d].

(i) Demonstrai c (1, 1, . . . , 1) C. (ii) Demonstrai c: fie toate cuvintele lui C au pondere multiplu de 4, fie exact jumtate din cuvintele lui C au pondere multiplu de 4.

43
(iii) Fie n = 6. Determinai d.
7. Scriei o matrice de paritate pentru un cod binar autodual de lungime 10.

44

V. Construcii de coduri noi din coduri existente


Descriem cteva construcii care produc noi coduri pornind de la coduri cunoscute. Construciile ce urmeaz arat c exist coduri liniare cu parametri ce se afla n anumite relaii cu cei ai unui cod dat C. Adesea aceste coduri snt mai "rele" dect C, dar au interes teoretic. Detaliile de demonstraie care lipsesc snt lsate cititorului. Fie C un cod liniar tip [n, k, d] peste F.
I. Lungire (lengthening). Fie C' = {(x1, , xn, 0) | (x1, , xn) C}. Atunci C' este un cod

liniar tip [n + 1, k, d] (se spune c e obinut prin lungirea lui C). Prin inducie, se vede c: Pentru orice r N, exist un cod liniar tip [n + r, k, d].
II. Gurire (Puncturing). Fixm o coordonat i {1, ..., n}. tergem coordonata i din n1 . toate cuvintele cod ale lui C, i obinem un cod C' F Pentru simplitate, presupunem c i = 1. Fie : C C', (x1xn) = x2xn. E clar c este aplicaie liniar surjectiv. Din teorema fundamental de izomorfism (IV.11), C/Ker C'.

Avem dou cazuri: - Ker = 0 (adic C izomorf cu C'). Atunci C' este cod tip [n 1, k]. Avem d(C') = d 1 dac exist un cuvnt n C de pondere minim d care e nenul pe coordonata i. Altfel, d(C') = d. - Ker 0. Atunci Ker = { x1xn C | x2xn = 0} = { 00 C | F}. Ker 0 nseamn c d = 1 i dim Ker = 1, deci dim C' = k 1. Deci: Dac d > 1, atunci exist un cod [n 1, k, d 1]. Prin inducie, pentru orice r < d, exist un cod [n r, k, d r]. Mai general, dac S {1, ..., n} este o mulime de coordonate, prin tergerea acestor S coordonate din cuvintele lui C, se obine un cod C (codul C gurit pe S). Are parametrii [n |S|, k', d'], unde k' k |S|, d' d |S|.
III. Subcod. Exist un cod tip [n, k 1, d].

Intr-adevr, fie x C de pondere d; formm o baz a lui C cu primul vector x. Codul generat de primii k 1 vectori ai aceste baze are dimensiune k 1 i distan minim d. Prin inducie obinem: pentru orice r < k, exist un cod tip [n, k r, d].

45
IV. Exist un cod tip [n, k, d 1].

Pentru a demonstra aceasta, lungim C i formm un cod [n + 1, k, d]; apoi aplicm o gurire i obinem un cod [n, k, d 1]. Prin inducie, pentru orice r < d, exist un cod tip [n, k, d r].
V. Exist un cod tip [n 1, k 1, d]. n n1 este de tip [n 1, k 1, d]. Presupunem Dac k = n, atunci C = F , deci d = 1. Atunci F

c k < n. Permutm coordonatele lui C pentru a obine un cod liniar care are o matrice de paritate de forma H = (In k | A). tergnd ultima coloan a lui H obinem o matrice H'. Rangul lui H' este n k cci are primele n k coloane liniar independente. Deci H' este matrice de paritate pentru un cod C' de lungime n 1 i dimensiune n 1 (n k) = k 1. Cum orice d 1 coloane ale lui H snt independente, acelai lucru se ntmpl pentru H', deci d(C') = d' d. Dac d' > d, applicm IV i obinem un cod tip [n 1, k 1, d. Prin inducie, pentru orice r < k, exist un cod tip [n r, k r, d].
VI. Extinderea unui cod. n+1 Fie C = {(x1, , xn, p) F | (x1, , xn) C, x1 + + xn + p = 0} (numit codul extins al

lui C). Astfel, fiecrui cuvnt cod i se adaug un "simbol de paritate p" (n cazul unui cod binar, este numit bit de paritate). Atunci C este un cod liniar [n + 1, k]. Distana sa este d sau d + 1 (Exerciiu: discutai cazul binar!).
VII. Scurtare. Fie S {1, ..., n} o mulime de coordonate. Fie C(S) = {x1xn C | xi = 0, i S} Prin gurirea lui C(S) pe S obinem un cod CS (codul C scurtat pe S). Altfel spus: lum

toate cuvintele cod din C care snt 0 pe S, tergem coordonatele din S i declarm mulimea de cuvinte obinut ca noul cod. Prin scurtarea unui cod MDS se obine tot un cod MDS (rezultat utilizat n practic):
14. Propoziie. Fie C un cod tip [n, k, n k + 1] (cod MDS). Atunci codul C scurtat pe

orice coordonat este un cod tip [n 1, k 1, n k + 1] (tot un cod MDS). Prin inducie, scurtarea lui C pe orice r < k coordonate produce un cod MDS tip [n r, k r, d]. Demonstraie. Presupunemc scurtm C pe coordonata 1. Obinem n1 | 0x2xn C}. C1 = {x2xn F C1 este izomorf cu {x1xn C | x1 = 0}, nucleul aplicaiei : C F, (x1 xn) = x1. Avem c nu este identic 0. ntr-adevr, dac = 0, atunci toate cuvintele din C snt 0 pe coordonata 1; deci C gurit pe coordonata 1 este un cod [n 1, k, d], ceea ce contrazice inegalitatea Singleton. Deci 0 i este surjectiv. Avem dim C = dim Ker + dim Im, deci k = dim C1 + 1 dim C1 = k 1. Astfel, C1 este un cod tip [n 1, k 1, d(C1)]. Inegalitatea Singleton spune c

46
d(C1) (n 1) (k 1) + 1 = n k + 1. Fie 0 x2 xn C1, deci 0x2xn C. Atunci wt(x2xn) = wt(0x2xn) n k + 1. Aadar d(C1) n k + 1.
VIII Suma direct. Suma direct a dou coduri este acelai lucru ca suma direct

(extern) a dou spaii liniare:


15. Propoziie. Fie C1 i C2 coduri liniare tip [n1, k1, d1] (resp. [n2, k2, d2]) peste F. Atunci C1C2 := {(c1, c2) F n1 + n2 | c1 C1, c2 C2}

este un cod liniar tip [n1 + n2, k1 + k2, min(d1, d2)] (numit suma direct a codurilor C1 i C2). G 0 Dac G1 i G2 snt matrice generatoare, atunci 1 este matrice generatoare pentru 0 G2 C1C2. Demonstraie. Fie {e1 , , ek1 } , { f1 , , f k2 } baze n C1 (resp. C2). Se vede uor c

{(e1 , 0), , (ek1 , 0), (0, f1 ), , (0, f k2 )} este baz n C1C2. Cuvintele nenule de pondere minim snt de forma (c1, 0) sau (0, c2), unde c1 i c2 snt nenule de pondere minim. Deci ponderea minim este min(d1, d2).
IX Construcia (u, u + v) (bar product) Aceast construcie poate produce coduri interesante i practice. 16. Propoziie. Fie C1 i C2 coduri liniare tip [n, k1, d1] (resp. [n, k2, d2]) de aceeai lungime peste F. Atunci 2n C1|C2 := {(u, u + v) F | u C1, v C2}

este un cod liniar tip [2n, k1 + k2, min(2d1, d2)]. Dac G1 i G2 snt matrice generatoare, G G1 atunci 1 este o matrice generatoare pentru C1|C2. 0 G2 Demonstraie. Fie {e1 , , ek1 } , { f1 , , f k2 } baze n C1 (resp. C2). Atunci: {(e1 , e1 ), , (ek1 , ek1 ), (0, f1 ), , (0, f k2 )} este o baz n C1|C2. Aceasta implic dim (C1|C2) = k1 + k2 i afirmaia despre matricea generatoare . Fie c = (u, u + v) un cuvnt nenul n C1|C2, u C1, v C2. Avem dou cazuri: I. v = 0 Atunci u 0, deci wt(c) = 2wt(u) 2d1 min(2d1, d2). II. v 0 Atunci wt(u, u + v) = wt(u) + wt(u + v) wt(u) + wt(v) wt(u) = wt(v) d2 min(2d1, d2) n (Am folosit faptul c wt(v + u) wt(v) wt(u), v, u F . Demonstrai!) Deci, d(C1|C2) min(2d1, d2). Pentru inegalitatea opus, observm c dac u C1 are pondere d1, atunci (u, u) C1|C2 i wt(u, u) = 2d1; dac v C2 are pondere d2, atunci (0, v) C1|C2 i wt(0, v) = d2.

47
Fie 1 vectorul din F2 cu toate componentele egale cu 1. Acest vector genereaz codul de repetiie de lungime n, cod binar de tip [n, 1, n], pe care l notm tot cu 1; acest cod are doi vectori: (0, ..., 0) and (1, ..., 1) = 1.
17 Corolar. Fie C un cod binar tip [n, k, d]. Atunci 2n 2n C|1 := {(u, u) F2 | u C}{(u, u + 1) F2 | u C} este un cod liniar tip [2n, k + 1, min(2d, n)]. Dac G M(k, n, F2) este o matrice generatoare G G a lui C, atunci M(k + 1, 2n, F2) este o matrice generatoare a lui C|1. 0 1
n

Ca o aplicaie, descriem o familie important de coduri care poate fi construit recursiv folosind metodele de mai sus:
18 Definiie. Codurile Reed-Muller binare de ordinul 1, R(1, m) (m 1) snt definite astfel: 2 R(1, 1) := F2 ; pentru orice m 1, R(1, m + 1) := R(1, m)|1. 19 Propoziie. Pentru orice m N , R(1, m) este un cod binar tip [2 , m + 1, 2 ]. Mai m1 m mult, orice cuvnt cod nenul are pondere 2 , cu excepia cuvntului 1 (de pondere 2 ). Demonstraie. R(1, 1) este cod binar tip [2, 2, 1]. Demonstrm afirmaiile prin inducie m m1 dup m. Presupunem c R(1, m) este cod tip [2 , m + 1, 2 ]. Din Corolarul 17, R(1, m + 1) m m m este cod tip [22 , m + 2, min(2 , 2 )], ca n enun. Fie 0 c R(1, m + 1). Dac c = (u, u), m1 m cu u R(1, m), atunci wt(u, u) = 2wt(u) = 22 dac u 1 (sau 22 dac u = 1). Dac m m1 c = (u, u + 1), u R(1, m), u 1, atunci wt(u + 1) = 2 wt(u) = 2 (observai c adunnd 1
* m m1

la u biii care erau 1 devin 0 i invers), deci wt(u, u + 1) = 2 . Dac c = (1, 1 + 1) = (0, 1), m atunci wt(c) = 2 . Codul Reed-Muller R(1, 5) a fost folosit pentru comunicaii din spaiul cosmic n 1972, cnd sonda Mariner a transmis fotografii cu Marte. Construcia (u, u + v) poate fi folosit pentru a defini recursiv codurile Reed-Muller binare de ordin r:
20 Definiie. Pentru r N i orice m r, definim codul binar Reed-Muller de ordin r, R(r, m): m m m a) R(0, m) este codul binar de repetiie de lungime 2 . Este un cod tip [2 , 1, 2 ].

b) R(r, r) este ntreg spaiul F22 (codul binar tip [2 , 2 , 1]2). c) Pentru orice r > 0 i r + 1 m, R(r, m) := R(r, m 1)|R(r 1, m 1). Fie G(r, m) o matrice generatoare a lui R(r, m). Din definiiile de mai sus rezult c putem pune: G(0, m) = [1 1 1] ; G(m, m) = I Corolarul 17 permite s scriem:
2m

48
G (r , m 1) G (r , m 1) G(r, m) = 0 G (r 1, m 1) Se pot demonstra urmtoarele fapte despre codurile Reed-Muller folosind aceast definiie:
21 Teorem. Fie r N i m r. Atunci : a) R(r, m) R(s, m) if r s m.

b) dim R(r, m) =

( ) + ( ) + ( ) .
m 0 m 1 m r

c) d(R(r, m)) = 2 . d) R(m, m) = 0; for any r < m, R(r, m) = R(m r 1, m). Alte construcii importante (ntreesere i concatenare) se vot descrie n capitolul de Aplicaii.

mr

Exerciii
1. Demonstrai c prin scurtarea unui cod tip [n, k, d] pe o coordonat se obine un cod tip [n 1, k', d'], unde k 1 k' k i d' d. 2. Presupunem c G este o matrice generatoare n form standard pentru codul tip [n, k, d] C. Scriei o matrice generatoare pentru C scurtat pe prima coordonat. 3. Fie C codul binar cu matricea generatoare
1 1 1 1 0 0 1 0 1 1 0 0 1 1 1

Scriei o matrice generatoare pentru C scurtat pe coordonata 2.


4. Scriei toate cuvintele codului R(1, m), pentru m = 3, 4, 5. 5. Presupunem c exist un cod liniar tip [n, k, d] peste F. Rezult c exist un cod liniar tip [n + 1, k + 1, d] ? Dar un cod liniar tip [n + 1, k, d + 1]?

VI. Coduri ciclice


Clasa codurilor ciclice este obinut prin impunerea unei structuri suplimentare codurilor liniare. Aceasta permite o descriere mai precis, o construcie mai uoar i compact i algoritmi rapizi de codare i decodare. Fixm un corp finit F cu q elemente.
1 Definiie.

Un

cod

liniar

peste

se

numete

ciclic

dac,

pentru

orice

c = (c0, c1,, cn 1) C, rezult c permutarea ciclic la dreapta a lui c, adic (cn 1, c0, , cn 2) este tot n C. Codurile ciclice au o structur algebric suplimentar:
2 Teorem. Fie C un cod liniar peste F i fie Rn inelul factor F[X]/(X 1). Fie x clasa lui n X modulo (X 1) i fie submulimea lui Rn:
n

IC := {c0 + c1x + + cn 1x |(c0, c1,, cn 1) C}. Atunci: C este ciclic dac i numai dac IC este un ideal n R. Demonstraie. Fie C cod ciclic. IC este clar parte stabil la adunare n Rn. Fie (c0, c1,, cn 1) C. Atunci avem n Rn: n1 2 n n1 x(c0 + c1x + + cn 1x ) = c0x + c1x + + cn 1x = cn 1 + c0x + + cn 2x IC n m Am folosit c n Rn x = 1. Pentru orice u = b0 + b1x + + bmx Rn i v IC, uv este o t n1 combinaie liniar de elemente de forma x (c0 + c1x + + cn 1x ), care snt n IC (se folosete o inducie, cazul t = 1 a fost demonstrat). n1 Dac IC este ideal, atunci, (c0, c1,, cn 1) C, avem x(c0 + c1x + + cn 1x ) n1 = cn 1 + c0x + + cn 2x IC, deci (cn 1, c0, , cn 2) C. Demonstraia de mai sus arat c este util s vedem cuvintele unui cod ciclic de lungime n n peste F ca polinoame mod(X 1); astfel, vom identifica cuvntul (c0, c1,, cn 1) C cu n1 n c0 + c1x + + cn 1x din Rn = F[X]/(X 1). Studiul codurilor ciclice de lungime n peste F este aadar echivalent cu studiul idealelor lui Rn.
3 Lem. a) Fie R inel i I un ideal n R. Atunci orice ideal al inelului factor R/I se poate scrie unic sub forma J/I = {j + I | j J}, unde J este un ideal al lui R care include I. Mai

n1

precis, aplicaia J J/I este o bijecie care pstreaz incluziunile ntre mulimea idealelor lui R care includ I i mulimea idealelor lui R/I.

49

50
b) Idealele lui F[X] snt de forma (g) = {gh | h F[X]}, cu g F[X]. Pentru un ideal nenul I al lui F[X], avem I = (g), dac g este un polinom nenul din I de grad minim. Un astfel de polinom g este numit generator al lui I. Demonstraie. a) Dac B este ideal n R/I, atunci IB := {r R | r + I B} este ideal n R i B = IB/I (demonstrai!). b) Fie I un ideal nenul n F[X] i fie g I un polinom monic al crui grad e cel mai mic printre gradele polinoamelor nenule din I. Dac f I, atunci f = gq + r, unde q, r K[X], deg r < deg g (sau r = 0). Cum r = f gq i I is an ideal, avem r I; deg r < deg g implic r = 0. Deci f = gq (g), f I.
4 Teorem. Pentru orice ideal I al lui Rn = F[X]/(X 1), exist un unic polinom monic n n n g F[X] astfel nct g|(X 1) i I = (g)/(X 1) = {hg mod(X 1) | h F[X]}. n Demonstraie. Lema de mai sus spune c I = J/(X 1), pentru un ideal al lui F[X] care n n n include (X 1). Dar J este de forma (g), unde (g) (X 1), i.e. g|(X 1).
n

Conchidem c un cod ciclic C este unic determinat de generatorul monic g din demonstraia de mai sus, numit polinomul generator al codului C. Deci, polinomul monic n g F[X] este polinomul generator al codului C de lungime n dac i numai dac g|(X 1) i n C = {hg mod(X 1) | h F[X]}. n (Identificm cuvintele din C cu polinoamele mod (X 1)!)
5 Propoziie. Fie C cod ciclic de lungime n i fie g polinomul su generator. Atunci orice cuvnt din C poate fi unic scris sub forma hg, cu h F[X], deg h < deg g : n C = {hg mod(X 1) | h F[X], deg h < deg g} n particular, dimensiunea lui C este k = n deg g. Demonstraie. Deoarece g|(X 1), exist d F[X] astfel nct X 1 = gd. Fie h F[X] oarecare. Teorema mprirri cu rest implic h = dq + r, pentru q, r F[X], deg r < deg g. n Deci (egalitile snt mod(X 1)): n n hg = (dq + r)g = gdq + rg = (X 1)q + rg = rg mod(X 1).
n n

Fie C un cod ciclic [n, k, d] i fie g polinomul su generator. Propoziia de mai sus spune k1 nk c o baz pentru C este g, xg,, x g. Presupunem c g = a0 + a1 X + + an X . Aadar, o matrice generatoare a lui C este:
a0 0 0
a1 an k a0 a1

0
an k a1

a0

0 0 0 M(k, n, F) an k 0

Presupunem de acum nainte c (q, n) = 1.

51
Aceast presupunere e necesar deoarece avem nevoie de o extindere a lui Fq n care n X 1 se descompune n factori liniari distinci (adic X 1 nu are rdcini multiple; din n n1 n1 criteriul cu derivata formal, aceasta echivaleaz cu (X 1, nX ) = 1 nX 0 m n (q, n) = 1). Dac o astfel de extindere F exist, F are q elemente. Cum rdcinile lui X 1 * m formeaz un subgrup de ordin n i F are ordin q 1, din teorema lui Lagrange rezult m m * n | q 1. Fie un generator al lui F (un element primitiv al lui F); atunci = (q 1) n are * ordin n in F (este o rdcin primitiv de ordinul n a unitii n F) i avem:
n

X n 1 = (X i )
i =0

n 1

Deoarece generatorul g divide X 1, rezult c: g=

( X ) , pentru o submulime I {0, 1, , n 1}.


i iI

Mulimea I se numete mulimea de definiie a lui C (n raport cu ). Nu orice submulime a lui {0, 1, , n 1} este mulime de definiie pentru un cod ciclic, deoarece g trebuie s aib coeficieni n Fq. Avem nevoie de urmtorul rezultat din teoria Galois.
6 Propoziie. Fie F E o extindere de corpuri finite, |F| = q, |E| = q . Atunci
m

F = {x E | x = x}. Fie : E E, (x) = x . Extindem la : E[X] E[X],

(a0 + a1 X + + an X ) = (a0) + (a1) X + + (an )X Atunci este un morfism de inele i f F[X] dac i numai dac ( f ) = f.
q

Demonstraie. Faptul c F = {x E | x = x} e demonstrat la Teorema III.16.b). Cum este automorfism (este o putere a automorfismului Frobenius), un calcul direct arat c este n n automorfism. Avem (a0 + a1 X + + an X ) = a0 + a1 X + + an X (a0) = a0, n , (an ) = an a0, , an F a0 + a1 X + + an X F[X].

Aplicnd acest rezultat la g = Deci:

( X ) , avem: g F[X] g = (g) = ( X ) .


i iq iI iI

7 Propoziie. Mulimea I {0, 1, , n 1} este mulime de definiie pentru un anumit cod

ciclic C dac i numai dac are proprietatea c, pentru orice i I , avem iq (mod n) este tot n I.

Se observ c g factorizeaz ntr-un produs de polinoame ireductibile distincte peste Fq, n alese dintre factorii lui X 1. Un astfel de polinom ireductibil este de fapt polinomul i minimal mi al lui pentru un i, 0 i < n, i trebuie s aib i rdcinile obinute aplicnd q i iq iq2 automorfismul z z , adic , , , . n concluzie, g este produs de polinoame minimale distincte mi.

52
Unul din cele mai importante exemple de coduri ciclice (foarte folosit n practic) este urmtorul:
8 Definiie. Fie Fq \ {0} = {1, , ,
*

q2

} unde este un element primitiv al lui Fq (deci

este de ordin q 1 n Fq ) i 1 k q 1. Codul Reed-Solomon RS(k, q) este codul urmtor


de lungime n = q 1:
RS(k, q) := {( f (1), , f (
q2

)) Fq

q1

| f Fq[X], deg f k 1}

Deoarece {f | f Fq[X], deg f k 1} =: Lk 1 este un subspaiu liniar al lui Fq[X] de q1 dimensiune k, RS(k, q) poate fi vzut ca imaginea funciei de evaluare ev : Lk 1 Fq , q2 ev( f ) = ( f (1), , f ( )). Deci RS(k, q) este subspaiu liniar, cci ev este liniar. Dimensiunea este k, deoarece ev este injectiv: orice f Lk 1 cu ev( f ) = (0, , 0) are q 1 > deg f rdcini i trebuie s fie 0). q2 i Dac wt( f (1), , f ( )) < n k + 1, atunci numrul de coordonate i cu f ( ) = 0 este mai mare dect n (n k + 1) = k 1. Deci f are mai multe rdcini dect gradul, i.e f = 0. Astfel, ponderea minim a cuvintelor lui RS(k, q) este d = n k + 1, adic este un cod MDS. Orice cod Reed-Solomon este ciclic. ntr-adevr, o baz a subspaiului k-dimensional j j j 0 j q2 RS(k, q) este {ev(X ) | 0 j k 1}, unde ev(X ) = (( ) ,, ( ) ). Permutnd ciclic la j q2 j 0 j q3 j j dreapta acest cuvnt cod obinem (( ) , ( ) ,, ( ) ) = ev(X ), care aparine RS(k, q) (vezi i exerciiul 1). De fapt, codurile Reed-Solomon snt o subclas a unei clase de coduri ciclice cunoscute drept coduri BCH (descoperite de ctre R.C. Bose i D.K. Ray-Chaudhuri n 1960 i independent de A. Hocquenghem in 1959).
9 Definiie. Fie n 2 i t N . Fie o rdcin primitiv de ordin n a unitii ntr-o
*

extindere F m a lui Fq i fie I mulimea de definiie a unui cod ciclic code C Fq . Codul C se
q

numete cod BCH de distan din design t dac I conine t 1 numere consecutive (modulo m n). Dac {1, , t 1} I, atunci C se numete cod BCH n sens restrns. Dac n = q 1, atunci C este numit primitiv. Echivalent spus, un cod BCH este un cod ciclic cu generator egal cu cel mai mic multiplu j j+1 j+t2 comun al polinoamelor minimale ale , , , pentru un j 0. Aadar, RS(k, q) este cod BCH primitiv n sens restrns, de lungime q 1 (deci m = 1 i qk2 n = q 1 n definiia de mai sus). Generatorul su este g = (X 1)(X ). Denumirea de cod BCH de distan din design t este justificat:
10 Teorem (inegalitatea BCH, BCH bound) Distana minim d a unui cod BCH cu distan din design t este cel puin t.

53
Demonstraie. Fie j, j + 1, , j + t 2 n mulimea de definiie a lui C i fie d i c = s =1 ci x s un cuvnt cod nenul n C de pondere d (unde ci 0, j). Presupunem prin
s

absurd c d < . Deoarece c( ) = 0, j i j + t 2, avem Ac = 0, unde ci1 i1 j i2 j id j i1 ( j +1) i2 ( j +1) id ( j +1) ci ,c= 2 A= i1 ( j + d 1) i2 ( j + d 1) id ( j + d 1) cid Dar det A 0 (este un determinant Vandermonde), deci c = 0, contradicie. Exist multe coduri ciclice cu distana minim mai mare dect cea garantat de inegalitatea BCH. O cale de a mbunti estimarea distanei pentru un cod ciclic este s observm c mulimea de definiie I a codului ciclic C depinde de alegerea rdcinii primitive de ordin n a a unitii din F. Orice alt rdcin primitiv de ordin n a unitii este de forma = , cu b (a, n) = 1. Fie b N astfel nct ab = 1 (mod n); atunci 1 = ( a ) = b . Mulimea de definiie a lui C relativ la este J = {bi (mod n) | i I} := bI. Se poate ntmpla ca bI s aib mai multe elemente consecutive dect I. Deci, cnd estimm cu inegalitatea BCH distana minim a unui cod ciclic de mulime de definiie I, un multiplicator (un numr ntreg b prim cu n) poate fi aplicat lui I.
11 Exemplu. Construim un cod ciclic binar C de lungime 31 a crui mulime de definiie m conine 0 i 3. Deci q = 2 i n = 31. Cel mai mic m astfel nct 31| 2 1 este 5 i o rdcin primitiv de ordin 31 a unitii, , din F32, este de fapt un element primitiv al F32. Mulimea de definiie a lui C trebuie s conin 3, 32 = 6, 62 = 12, 122 = 24, 242 = 48 = 17, 172 = 34 = 3 (calcule mod 31). Deci mulimea de definiie este I = {0, 3, 6, 12, 24, 17}, care furnizeaz d(C) 2. Cum apar multipli de 3 consecutivi, alegem multiplicatorul s fie 1 21 = 3 (mod 31); obinem 21I = {0, 1, 2, 4, 8, 16 }, care d d(C) 4. Ct este dim C?

Exerciii
1. Fie C cod liniar i fie {u1, , uk} o baz n C. Demonstrai c C este ciclic dac i numai dac permutrile ciclice la dreapta ale oricrui ui snt cuvinte cod n C. 2. Fie g F[X] polinomul generator al unui cod ciclic de lungime n astfel nct (X 1) g. n Demonstrai c codul C' = {(c0, , cn 1) F | (c0,, cn 1) C, c0 + + cn 1 = 0} este ciclic i are polinom generator (X 1)g. Ce se ntmpl dac (X 1) | g? 3. Fie C cod binar ciclic i g polinomul generator. Demonstrai c toate cuvintele lui C au pondere par dac i numai dac g este divizibil cu X 1.

54
4. Fie g = 1 + X + X F2[X]. Demonstrai c g genereaz un cod ciclic C de tip [31, 26, 3]. Demonstrai c mulimea cuvintelor de pondere par ale lui C este codul din exemplul 11. Scriei polinomul generator. 5. Fie C cod liniar ciclic. Demonstrai c C este ciclic. 6. Fie g = a0 + a1 X + + amX polinomul generator al codului ciclic C, de lungime n. n Definim reciprocul lui g prin gR := am + am 1 X + + a0 X . Fie h F[X] astfel nct n gh = X 1. Demonstrai c hR genereaz codul dual C . (Ind. Scriei g = g0 + g1 X + + gn 1X n 1 i h = h0 + h1 X + + hn 1X n 1, cu gn 1 i hn 1 posibil 0. n n Calculai gh mod (X 1) i comparai coeficienii. Conchidei c hR (ca vector n F ) este ortogonal pe (g0, g1, , gn 1) i toate permutrile sale ciclice).
m
2 5

55

VII. Aplicaii: pachete de erori, Compact Disc, CRC

Ipoteza c erorile de comunicare apar la ntmplare (ca la canalul qSC) nu este ndeplinit n toate aplicaiile practice: exist canale la care erorile tind s apar una lng alta (pachete de erori, burst errors). Aceast situaie este des ntlnit la stocarea pe band sau medii optice (CD, DVD), comunicaii radio etc. Ca ntotdeauna, F este un corp finit fixat.
1 Definiie. Un pachet de erori de lungime b, pe scurt b-pachet de erori (burst of length b,

b-burst) este un vector u n F ale crui coordonate nenule se gsesc pe b poziii consecutive,

din care prima i ultima snt nenule. Codul C F se numete corector de b-pachete de erori dac nu exist cuvinte cod distincte c1, c2 C i pachete de erori u1, u2 de lungimi cel mult b astfel nct c1 + u1 = c2 + u2. Pentru un cod liniar C, aceasta e echivalent cu: Pentru orice pachet de erori u de lungime b, cosetul u + C nu conine alt pachet de erori de lungime b. Avertizare: pot aprea confuzii ntre lungimea unui pachet de erori u definit ca mai sus n (care este b) i lungimea lui u vzut ca vector n F (care e, desigur, n).
2 Teorem. Fie C un cod liniar corector de b-pachete de erori tip [n, k, d]. Atunci:

a) C nu conine pachete de erori de lungime 2b. b) (Inegalitatea Reiger, Reiger Bound) n k 2b. Demonstraie. a) Presupunem c c C este un pachet de erori de lungime 2b ale crui componente nenule snt n poziiile de la i pn la i + t (cu t 2b 1): c = 00cici + t 00, unde cj F, ci 0, ci + t 0. Fie u = 0cici + b 100, v = 00ci + bci + t00; deci c = u + v. Atunci 0 + v = c + ( u), cu 0, c C i u, v pachete de erori de lungime b, contradicie. b) Afirmm c C conine pachete de erori de lungime n k + 1. (Din prima parte, aceasta va implica n k + 1 > 2b n k 2b.) S demonstrm afirmaia. Fie H o matrice de paritate nk a lui C i fie h1, , hn coloanele sale. Avem hi F , deci h1, , hn k + 1 snt linear dependente: exist c1, , cn k + 1 F, nu toi zero, astfel nct c1h1 + + cn k + 1hn k + 1 = 0. Atunci c1cn k + 100 C, care este pachet de erori de lungime n k + 1.

56
Tehnicile de concatenare i ntreesere snt folosite la proiectarea de coduri cu capaciti bune de corectare de pachete de erori. Dac informaia vine n cuvinte de m simboluri binare, acestea pot fi vzute ca elemente m m ale corpului cu 2 elemente. Folosind un cod Reed-Solomon cu q = 2 , un pachet de b erori n simbolurile binare devine un pachet de b/m erori n cuvintele cod, care poate fi corectat dac b/m < e (capacitatea de corectare a codului). Aceasta este un exemplu de concatenare.
3 Definiie (Concatenarea a dou coduri, Concatenation of two codes). Fie A un cod liniar [n, k, d] peste Fq. Atunci A este Fq-spaiu liniar de dimensiune k; deoarece corpul cu k Q := q elemente este tot Fq-spaiu liniar de dimensiune k, exist un Fq-izomorfism : FQ A. Fie B un cod liniar [N, K, D] peste FQ. Un cuvnt oarecare al lui B este de forma b = (b1, , bN), bi FQ. Dac nlocuim fiecare bi cu imaginile lor n A prin (care snt cuvinte de lungime n peste Fq), obinem un cuvnt de lungime Nn peste Fq. Toate cuvintele obinute astfel formeaz un nou cod C. Formal:

C = {((b1), , (bN)) FqNn | (b1, , bN) B}

Codul C se numete cod concatenat, cu A codul interior (the inner code) i B codul exterior (the outer code). A se observa c C depinde i de alegerea Fq-izomorfismului : FQ A.
4 Teorem. a) C este cod liniar peste Fq, de lungime Nn, dimensiune Kk i distan

minim cel puin Dd. b) Pstrm notaiile din definiia de mai sus i punem A = Fq (cod tip [n, n, 1] peste Fq). Atunci codul concatenat C cu cod interior A i cod exterior B poate corecta pachete de erori de lungime (e 1)n + 1, unde e = b(D 1)/2c, capacitatea de corectare a lui B. Demonstraie. a) Lema urmtoare spune c B este un Fq-spaiu liniar de dimensiune Kk. N Definim aplicaia Fq-linar : FQ FqNn , (b1, , bN) = ((b1), , (bN)), pentru orice
N (b1, , bN) FQ . Acesta este un Fq-izomorfism. Deoarece C este imaginea lui B prin

izomorfismul , dim C = dim B = Kk (ca Fq-spaii liniare). Orice cuvnt nenul din C este de forma ((b1), , (bN)), unde (b1, , bN) este un cuvnt nenul din B; deci are cel puin D componente nenule. Deoarece orice (bi) care e nenul are pondere cel puin d, wt((b1), , (bN)) = wt((b1)) + + wt((bN)) Dd. 1 b) Fie u FqNn un pachet de erori de lungime an + 1. Atunci u coresponde prin unui
N vector v FQ . O examinare rapid arat c v este pachet de erori de lungime a + 1. Deci,

dac punem a = e 1, atunci v este pachet de erori de lungime e i poate fi corectat de B.


5 Lem. Fie F E o extindere de corpuri, dimFE = k. Dac V este un E-spaiu vectorial

de dimensiune N, atunci E este un F-spaiu vectorial de dimensiune kN.

57
Demonstraie. Fie v1, , vN o E-baz a lui V i fie e1, , ek o F-baz a lui E. Atunci {eivj | 1 i k, 1 j N} este o F-baz a lui V. 6 Definiie (ntreesere, Interleaving). Fie C un cod liniar [n, k, d] peste F care poate corecta pachete de erori de lungime b. Definim codul tip [nt, kt] I(C, t) (numit C ntreesut

la adnimea t, C interleaved to depth t) astfel: pentru orice cij F, (1 i t, 1 j n): c11c21ct1c12c22ct2c1nc2nctn I(C, t) c11c12c1n C, c21c22c2n C, , ct1ct2ctn C. Aadar, pentru a obine un cuvnt cod de lungime nt n I(C, t), se aleg t cuvinte cod c1, c2, , ct C, ci = ci1ci2cin i se formeaz matricea ale crei linii snt cele t cuvinte: c11 c12 c1n c c2 n c 21 22 ct1 ct 2 ctn

Dac scriem simbolurile din matrice citind pe coloane obinem un cuvnt cod din I(C, t). ntreeserea la adncime t multiplic de t ori capacitatea de corecie de pachete de erori:
7 Teorem. Dac C este un cod liniar [n, k, d], corector de b-pachete de erori, atunci I(C, t) este cod tip [nt, kt, d], corector de bt-pachete de erori. Demonstraie. Un pachet de erori de lungime bt sau mai mic c11c21ct1c12c22ct2c1nc2nctn este distribuit n pachete de erori de lungime cel mult b n cele t linii ale matricei de mai sus. Codarea pentru compact disc Schema de codare petru Compact Disc audio folosete dou coduri Reed-Solomon scurtate i dou forme de ntreesere. Din Prop. V.14, tim c scurtarea unui cod tip [n, k, n k + 1] (cod MDS) pe r coordonate produce un cod MDS tip [n r, k r, n k + 1]. Exerciiu. Construii un cod ReedSolomon de lungime 255 i distan minim 5 peste corpul cu 256 elemente. Explicai cum se obin dou coduri ReedSolomon scurtate: C2 de tip

[32, 28, 5] i C1 de tip [28, 24, 5]. Descriem acum (urmnd n linii mari [7]) schema de codare i decodare folosit pentru compact disc audio (CD audio), pentru a da o idee asupra dificultilor ce apar n implementrile concrete ale codurilor corectoare de erori.
Descriere general. Un CD este un disc gros de 1,2 mm, din policarbonat, cu diametrul de 120 mm. Un strat subire de aluminiu (sau, mai rar, aur) este aplicat pe suprafa, ceea ce o face reflectorizant. Metalul este protejat de un film de lac. Discul conine o pista spiral de aproximativ 5 km (care ncepe dinspre centru), care e scanat optic de un laser cu AlGaAs de lungime de und 780 nm (infrarou apropiat), la o vitez liniar constant de aprox. 1,2 m/s.

58
Pe pist snt indentri (numite pit-uri) i zone plate intre pit-uri, numite lands. Limea unui pit este de aprox. 500 nm, adncimea de 100 nm; lungimea variaz ntre 850 nm i 3500 nm. Pasul spiralei este 1,6 m. Laserul este reflectat cu intensiti diferite de pit-uri i land-uri din cauza interferenei. Prin msurarea schimbrilor de intensitate cu o fotodiod, datele pot fi citite de pe disc. Pit-urile st mai apropiate de faa etichetat a discului, ceea ce face ca defectele i impuritile de pe faa care este scanat optic s fie neclare (nefocusate) n timpul citirii. Deci este mai probabil deteriorarea CD-urilor prin partea etichetat a discului. Informaia coninut de pit-uri i land-uri este afectat de erori provenind de la particule de praf pe disc, bule de aer n nveliul de plastic, amprente, zgrieturi etc. Aceste erori snt cel mai adesea pachete de erori i snt corectate cu un sistem de codare i decodare foarte eficient. Codarea. Semnalul audio este eantionat prin msurare de 44,100 ori pe secund. Fiecare eantion este tradus ntr-un numr pe 16 bii (deci amplitudinea semnalului va fi aproximat 16 cu unul din cele 2 = 65536 nivele posibile); deoarece sunetul este stereo, snt dou eantioane simultane (unul pentru fiecare canal). Astfel, o eantionare produce 4 octei (bytes) 8 (un octet/byte este un cuvnt de 8 bii, adic un element al F2 ). Pentru fiecare secund de sunet se genereaz aadar 44 100 4 = 176 400 octei. Pentru a coda octeii se folosesc dou coduri ReedSolomon scurtate, C1 i C2, i dou forme de ntreesere. Aceast schem se numete CIRC (cross-interleaved ReedSolomon code, cod Reed-Solomon ntreesut-ncruciat). Scopul ntreeserii ncruciate, care este o variant de ntreesere, este s "sparg" pachetele lungi de erori. ase eantioane de 4 octei fiecare snt grupate pentru a forma un cadru (frame). Un cadru are deci 24 octei: L1R1L2R2 L6R6 , unde Li semnific cei doi octei corespunztori canalului stng din eantionul i al cadrului, iar Ri snt cei doi octei correspunztori de la canalul drept. Octeii snt rearanjai astfel: eantioanele impare (L1R1, L3R3, L5R5) se grupeaz cu eantioanele pare L"2R"2 L"4R"4 L"6R"6 luate cu dou cadre mai trziu, n ordinea urmtoare: L1L3L5R1R3R5L"2L"4L"6 R"2R"4R"6 Se obine un cuvnt mesaj de 24 octei. Eantioanele care erau iniial consecutive n timp snt acum la dou cadre distan. Aceasta va uura disimularea erorilor (vezi partea de decodare). 8 Identificm octeii cu elemente ale corpului F256 cu 2 = 256 elemente. Un codor sistematic pentru codul Reed Solomon scurtat tip [28, 24, 5]256 C1 (vezi Exerciiu mai sus) codeaz mesajul de 24 octei ntr-un cuvnt de 28 octei, care e format din mesajul original la care se adaug 4 octei "de paritate" notai P1 i P2 (P1 i P2 au cte doi octei, ca i Li). Formm cuvntul cod de 28 octei prin plasarea P1 i P2 la mijloc: L1L3L5R1R3R5P1P2L"2L"4L"6 R"2R"4R"6

59
Cuvintele cod de 28 octei din C1 snt ntreesute la o adncime de 28 folosind o "ntrziere" de 4 cadre (4-frame delay interleaving). Mai precis, fie c1, , cn, cuvintele cod din C1 n 28 ordinea n care au fost generate, i fie ci = ci1ci28 F256 . Formm urmtoarea matrice M cu 28 linii i un numr suficient de coloane ca s conin toate cadrele:
1 2 3 4

28

c1,1 0 0 0 0

c2,1 0 0 0

c3,1 0 0 0

c4,1 0 0 0

c5,1 c1,2 0 0

c6,1 c2,2 0 0

c7,1 c3,2 0 0

c8,1 c4,2 0 0

c9,1 c10,1 c11,1 c12,1 c5,2 c6,2 c7,2 c8,2 c1,3 c2,3 c3,3 c4,3 0 0 0 0

c13,1 c9,2 c5,3 c1,4

c109,1 c105,2 c101,3 c97,4

c1,28

Matricea M obinut prin ntreesere cu ntrziere de 4 cadre (4-frame delay interleaving)

Linia i (foarte lung) se obine prin plasarea octeilor i ai cuvintelor cod c1, , cn, , n aceast ordine; apoi se translateaz la dreapta linia 2 cu 4 poziii, linia 3 cu 8 poziii, ..., linia 28 cu 274 = 108 poziii; se completeaz cu zerouri unde e necesar. Cuvntul cod ci poate fi citit din aceast matrice prin parcurgerea n diagonal cu panta -1/4 ncepnd din poziia i a liniei 1. 28 Am obinut pn acum o matrice M ale crei coloane snt elemente din F256 . Folosim acum codul ReedSolomon scurtat C2, tip [32, 28, 5]256, pentru a coda aceti vectori de lungime 28 n cuvinte cod de lungime 32. Aceste cuvinte cod snt iari ntreesute: simbolurile de pe poziii impare de la un cuvnt snt grupate cu simbolurile de pe poziii pare ale cuvntului urmtor; se obine un ir de segmente de 32 octei. Aceast ntreesere mai mprtie eventualele pachetele de erori care mai exist. La sfritul fiecrui astfel de segment este adugat un al 33lea octet (de control i display). Astfel, fiecare cadru de 6 eantioane a produs n final 33 octei. O schem detaliat a codrii folosind C1 i C2 poate fi gsit n [17]. Fiecare octet obinut trebuie acum imprimat pe disc. O tranziie land-pit sau pit-land semnific un 1, n timp ce un pit sau land semnific un ir de 0. Lungimea pit-ului (land-ului) determin numrul de 0-uri, dup regula c fiecare bit corespunde la 300 nm. De exemplu, un pit de lungime 1500 nm urmat de un land de lungime 900 nm corespunde irului 10000100: pit-ul de 1500 nm semnific 1500/300 = 5 bii, din care primul e 1, adic 10000; landul de 900 nm semnific 100. Din motive tehnice, fiecare land sau pit trebuie s fie ntre 900 i 3300 nm, adic fiecare pereche de 1 trebuie s fie separat de cel puin dou 0-uri i cel mult zece 0-uri. Cel mai scurt pt (land) reprezint 3 bii (100), i cel mai lung 11 bii (10000000000). Deci, cei 256 octei posibili trebuie convertii n iruri de bii care satisfac aceast condiie. Se poate arta c cea mai mic lungime l, astfel nct exist cel puin 256 cuvinte binare de lungime l cu proprietatea c fiecare 1 este separat de cel puin dou 0-uri i cel mult zece 0-uri, este 14. De fapt, snt 267 cuvinte de lungime 14 cu aceast proprietate; 11 din acestea nu snt folosite.

60
Aceast conversie de la octei la cuvinte de lungime 14 se numete EFM (eight-to-fourteen modulation, modulaie opt la paisprezece), i se realizeaz folosind un tabel de conversie. Mai este o problem: dou cuvinte succesive de 14 bii pot s nu satisfac condiia de separare de mai sus. Din acest motiv, trei bii suplimentari (merge bits, bii de fuzionare) snt adugai la sfritul fiecrui cuvnt de 14-bii pentru a obine iruri care satisfac condiia. De exemplu, irurile 10010000000100 i 00000000010001, scrise succesiv, ar produce un ir de 11 zerouri; dac adugm 001 dup primul ir, obinem 1001000000010000100000000010001, care satisface condiia. Astfel, cadrul iniial de 6 eantioane corespunde la 33 octei; fiecare octet e convertit n 17 bii. La fiecare aceti 3317 bii, se adaug 24 bii plus trei bii de fuzionare; astfel, fiecare cadru de 6 eantioane produce 588 bii. Decodarea i corectarea de erori. Mai nti se elimin biii de sincronizare, control i display i de fuzionare. Se realizeaz apoi conversia din formatul EFM n octei folosind o tabel; acum informaia este un ir de octei. Apoi se rearanjeaz octeii n ordinea normal. irul e mprit n segmente de 32 octei. Fiecare din aceste segmente de 32 octei conine octeii de pe poziii impare dintr-un cuvnt cod (cu posibile erori) i octeii de pe poziiile pare ale urmtorului cuvnt cod. Octeii snt regrupai n poziiile iniiale i snt furnizai decodorului pentru C2. Dac un pachet scurt de erori a aprut pe disc, pachetul poate fi divizat n pachete mai mici prin aceast regrupare. Decodarea cu C 2 . Deoarece C2 este cod tip [32, 28, 5] peste F256, poate corecta dou erori la nivel de octei. Totui, este folosit doar pentru a corecta o eroare i pentru a detecta prezena de erori multiple. Dac s-a produs o singur eroare, C2 poate corecta eroarea prin cutarea unui cuvnt cod n sfera de raz 1 centrat n cuvntul recepionat. Dac gsete unul, eroarea este corectat; dac nu, nseamn c dou sau trei erori au avut loc i C2 a detectat aceste erori (dar nu va fi folosit pentru corectarea lor). E important s estimm probabilitatea ca C2 s nu detecteze 4 sau mai multe erori cnd e folosit s corecteze 1 eroare. O astfel de situaie apare dac erorile se produc la un cuvnt cod nct vectorul ce rezult se afl ntr-o sfer de raz 1 centrat n alt cuvnt cod. Presupunnd c toi vectorii snt la fel de probabili, probabilitatea ca aceast situaie s apar este aproximativ egal cu raportul dintre numrul de vectori din sferele de raz 1 centrate n cuvinte cod i 32 numrul total de vectori din F256 : 25628 [1 + 32(256 1)] 8161 = 1.9 106 25632 2564 Pe de alt parte, dac am utiliza C2 la capacitatea maxim de corectare de erori (toate erorile duble), probabilitatea de eec n detectarea a trei sau mai multe erori este raportul dintre numrul de vectori din sferele de raz 2 centrate n cuvinte cod i numrul total de 32 vectori din F256 :

61
32 25628 1 + 32(256 1) + (256 1) 2 2 = 32260561 0.0756 32 256 2564

Aceast probabilitate de eec (cam de 4000 ori mai mare dect precedenta) este motivul pentru care C2 nu este folosit la capacitatea maxim de corectare. Decodare cu C1. Dac decodorul pentru C2 gsete cel mult o eroare ntr-un ir de 32 octei, eroarea eventual este corectat i mesajul de 28 octei este extras i trimis mai departe. Dac C2 detecteaz cel puin dou erori, trimite un cuvnt de 28 octei cu toate componentele marcate ca "tersturi". Aceste blocuri de 28 octei corespund coloanelor matricei M, cu posibile tersturi. Diagonalele de pant 1/4 snt transmise ca vectori de 28 octei decoderului pentru C1. Se observ c blocurile de 28 octei cu tersturi snt mprtiate prin acest proces la blocuri diferite ale codului exterior C2. O schem de decodare folosete C1 doar la corectarea tersturilor. Din teorema I. 11, C1 poate corecta pn la patru tersturi. Datorit ntreeserii, un bloc de 28 octei marcat ca terstur (de codul interior) corespunde la 28 blocuri (cu cte un singur octet terstur) din codul exterior. ntreeserea cu ntrziere de 4 cadre, combinat cu capacitatea de corectare a 4 tersturi a lui C1, permit corectarea unui pachet de erori care afecteaz 16 iruri consecutive de 588 bii fiecare. Un astfel de pachet de erori ocup aproximativ 2.8 mm n lungul pistei discului. O alt schem de decodare folosete C1 la corectarea unei erori (care a scpat eventual detectrii lui C2) i a dou tersturi. (cf. Teorema I. 11) Interpolare i disimularea erorilor. Eantioanele care nu pot fi corectate de schema de mai sus i snt detectate ca erori snt marcate ca tersturi. Deoarece eantioanele consecutive snt separate de dou cadre nainte de codare, la finalul decodrii, cnd aceste eantioane snt readuse n ordinea iniial, este probabil ca eantioanele vecine s fie corecte sau s fi fost corectate. n acest caz, eantionul marcat "ters" este aproximat prin interpolare liniar folosind eantioanele vecine. Testele au artat c acest proces este practic indedectabil la audiie. Dac eantioanele vecine nu snt corecte, se folosete muting. Cu 32 eantioane naintea pachetului de erori, eantioanele corecte snt treptat micorate pna la apariia pachetului de erori, care e nlocuit de eantioane de valoare zero, iar urmtoarele 32 eantioane corecte snt treptat readuse la valoarea real.
Detecie de erori cu CRC (Cyclic Redundancy Check)

Matricea generatoare a unui cod ciclic code dat la VI.5 nu este n form standard, deci codarea corespunztoare nu e sistematic. Descriem acum o codare sistematic pentru coduri ciclice, carea are importante aplicaii. Codurile binare ciclice snt potrivite pentru detecia de

62
erori, iar implementarea circuitelor de codare i de detecie de erori este eficient (folosind linear feedback shift registers). Fie C un cod ciclic tip [n, k, d] peste corpul F cu q elemente, g polinomul su generator, deg g = n k. Deoarece dim C = k, polinomul mesaj este de grad cel mult k 1. Folosind teorema mpririi cu rest, putem scrie nk X m = gq + r, cu q, r F[X], deg r < n k or r = 0. nk nk Astfel, X m r = gq C. Dac codm m ca c = X m r, aceasta este o codare nk nk+1 n1 sistematic, deoarece coeficienii lui m apar drept coeficienii lui X , X , , X n c. Practic, la cuvntul mesaj (coeficienii lui m) se adaug la sfrit simbolurile de control (coeficienii lui r). n aplicaii, mesajul m este binar i nu are lungimea fixat k; biii de control snt adugai la mesaje de lungime k. Aceti bii de snt cunoscui sub numele de CRC (Cyclic Redundancy Check, Verificare Redundant Ciclic) i se folosesc pentru detectarea erorilor. Verificarea de eroare se realizeaz prin testarea dac cuvntul recepionat (vzut ca polinom) este divizibil cu g. O eroare poate trece nedetectat dac i numai dac un vector eroare e (un polinom de grad mai mic ca n) este adunat cuvntului cod c de mai sus i c + e este divizibil cu g. Deoarece g | c, aceasta are loc dac i numai dac g|e.
8 Propoziie. Un cod ciclic C tip [n, k, d] de generator g poate detecta toate pachetele de erori de lungime n k. Demonstraie. Fie r un pachet de erori de lungime n k i s presupunem prin reducere la absurd c r nu este detectat de C, adic g|r. Fie j cel mai mare numr natural astfel nct j j X | r. Cum r este pachet de erori de lungime n k, aceasta nseamn c r = X s, cu n j deg s < n k. Dar g divide X 1, deci g nu este divizibil prin X, adic (X , g) = 1. Cum j g | X s, rezult c g | s, is imposibil cci deg g > deg s.

Rezultatul urmtor estimeaz proporia de pachet de erori (mai lungi decit n k) care nu snt detectate de C:
9 Teorem. Din totalul de pachete de erori de lungime b > n k, proporia celor care nu

snt detectate de un cod ciclic C tip [n, k, d] de generator g este: q /(q 1) (dac (n k ) b = n k + 1) , respectiv q (dac b > n k + 1). i Demonstraie. Fie r un pachet de erori de lungime b care ncepe n simbolul i: r = X s, unde deg s = b 1. Numrm cte asemenea polinoame s exist: snt q 1 posibiliti pentru primul coeficient (orice element nenul al lui F), q 1 pentru ultimul, i q posibiliti pentru 2 b2 coeficienii dintre acetia, deci avem (q 1) q polinoame s. Eroarea r nu este detectat dac i numai dac g|s, adic s = gh, pentru un h K[X]. Deoarece deg g = n k, avem deg h = b 1 (n k). Dac b 1 = n k, atunci h e o constant nenul (q 1 posibiliti). Astfel, raportul dintre numrul de pachete nedetectate i 2 b2 (n k 1) numrul total de pachete este (q 1)/((q 1) q ) = q /(q 1).

(n k 1)

63
Dac b 1 > n k, snt q 1 alegeri posibile pentru primul coeficient al lui h, q 1 alegeri pentru ultimul coeficient i cte q alegeri pentru fiecare ceficient intermediar. n total rezult 2 b 1 (n k) 1 (n k ) to (q 1) q polinoame h. Raportul n acest caz este deci q . Aceast teorem afirm c probabilitatea de eec n detectarea de erori este proporional (n k ) cu q (independent de lungimea codului sau de ct de zgomotos e canalul). Deci, probabilitatea de apariie de eroari nedetectate e determinat de n k, numrul de simboluri de control.
10 Exerciiu. Fie g Fq[X] un polinom ireductibil de grad m. Atunci: n m m a) g| X 1, unde n = q 1 (Ind: g are toate rdcinile n corpul cu q elemente). m b) Dac g este polinomul minimal peste Fq al unui element primitiv al corpului cu q elemente (un astfel de g se numete polinom primitiv), atunci g este de grad m i numrul n m natural min {n N | g divide X 1} (numit ordinul lui g) este q 1. c) Dac este o rdcin a lui g ntr-o extindere E a lui Fq, atunci ordinul lui g este ordinul * m lui (n sens de ordin al lui n grupul multiplicativ E ). Dac g are ordin q 1, atunci g

este primitiv. n d) Pentru orice polinom h Fq[X] astfel nct (X, h) = 1, exist n astfel nct g divide X 1 (cel mai mic numr natural n cu aceast proprietate se numete iari ordinul lui h). Presupunem de acum nainte c F este corpul cu 2 elemente F2 (cazul binar). Din Prop. 8 deducem c orice cod C ciclic tip [n, k, d] cu k < n detecteaz o eroare. Considerm o eroare i j j ij dubl, n poziiile i > j, deci polinomul eroare este e = X + X = X (X + 1). Cum j ij (X , g) = 1, e nu este detectat g|e X + 1 e divizibil cu g. Dac lungimea mesajului e m ij mai mic dect ordinul lui g (care este 2 1 dac g este primitiv), atunci X + 1 nu poate fi divizibil cu g, deci orice eroare dubl este detectat. Polinoamele generatoare g folosite de obicei n practic pentru CRC snt de forma (X + 1)h unde h este un polinom primitiv binar de grad m 1. Aceast alegere are la baz faptul c un cod binar ciclic cu polinomul generator g divizibil cu X 1 are toate cuvintele cod de pondere par (demonstrai!). Aceasta asigur detectarea tuturor vectorilor eroare care au pondere impar (i c distana minim a codului este cel puin 4). Deci orice cod de acest tip are distana minim cel puin 4, detecteaz orice pachete de erori de lungime m, iar m probabilitatea de eec in detectarea de erori n mesaje complet aleatoare este 2 . 5 2 Polinomul "CRC-5-USB" este X + X + 1. Acest polinom e folosit n standardul USB pentru a proteja "pachete token" de 11 bii. Polinoame CRC standard pentru m = 16: 16 15 2 CRC-16 : g = X + X + X + 1 16 12 5 CRC-CCITT : g = X + X + X + 1, Pentru m = 32, polinomul CRC standard IEEE 802.3 este 32 26 23 22 16 12 11 10 8 7 5 4 2 g=X +X +X +X +X +X +X +X +X +X +X +X +X +X+1

64
Aceste polinoame (i altele folosite n variate standarde) adesea nu snt cea mai bun alegere. Mai muli autori au contribuit la efectuarea unei cutri exhaustive n spaiul polinoamelor binare de grad pn la 32, gsind exemple de polinoame care se comport mai bine (au distan minim mai mare pentru o lungime de mesaj dat) dect polinoamele n uz n anumite protocoale. Vezi [4], [8].

Exerciii
1. Construii un polinom generator i o matrice de paritate pentru un cod binar BCH care corecteaz dou erori, de lungime 15. 2. Artai c distana minim a unui cod binar BCH n sens restrns este impar. 3. Gsii o matrice generatoare a unui cod RS tip [10, 6] peste Z11 i calculai distana sa minim. 4. a) Folosind polinomul CRC-5-USB gsii CRC pentru 10110011101. b) Presupunem c 1011 0011 101 00001 este un cuvnt de lungime 11 concatenat cu CRCul su n raport cu polinomul CRC-5 USB. Verificai dac snt erori.

65

Index

A
alfabet, 6 alfabet q-ar, 6 algebric (element), 29 algoritm de maxim verosimilitate, 9 algoritmul de distan minim, 10 ateptarea de eroare, 11

clase de resturi modulo n., 27 cod, 8 Hamming, 20 cod [n, k, d], 10 cod BCH, 52 cod bloc corector de erori, 6 cod ciclic, 49 cod liniar, 16

B
baz a unui spaiu liniar, 16 baza canonic a lui F , 16 binar, 6 bit, 6 bit de paritate., 18 byte, 58
n

cod liniar de tip [n, k, d]q, 17 cod MDS, 23 cod perfect, 22 cod q-ar, 8 cod Reed-Solomon, 52 cod sistematic, 8 cod tip [n, k], 7 codare, 7

C
canal de transmisie, 7 canal fr memorie, 7 canal q-ar simetric de probabilitate p, 7 canal qSC(p), 7 canal simetric, 7 capacitatea de corectare a unui cod, 9 capacitatea de detecie a unui cod, 10 capacitatea unui canal, 12 caracteristica unui inel, 31 cmp, 26 CIRC, 58

codul de paritate, 18 codul exterior, 56 codul extins, 45 codul interior, 56 coduri diagonal echivalente, 20 coduri echivalente pn la o permutare, 20 codurile Reed-Muller binare de ordin r, 47 Codurile Reed-Muller binare de ordinul 1, 47 coeficienii unei combinaii liniare, 15 combinaie liniar, 15 Compact Disc, 57 concatenarea a dou coduri, 56 congruen modulo n, 27

66
construcia (u, u + v), 46 corector de b-pachete de erori, 55 corp, 26 comutativ, 26 coset, 40 CRC, 62 cuvnt, 6 cuvnt cod, 8 Cyclic Redundancy Check, 62 ideal, 28 inegalitatea BCH, 52 inegalitatea Gilbert, 23 inegalitatea Reiger, 55 inegalitatea Singleton, 23 inegalitatea Varshamov, 24 inel, 26 comutativ, 26 unitar, 26 inel factor, 28 ntreesere, 57 Irr(x, K), 30 izomorfism, 16 gradul unei extinderi, 30

D
decodare, 8 derivat formal, 32 dimensiunea unui cod liniar, 16 dimensiunea unui spaiu liniar, 16 distana Hamming, 8 distana minim a unui cod, 9 dualul unui cod, 19

L E
lider al unui coset, 41 lungime a unui cuvnt, 6 lungimea unei combinaii liniare, 15 lungimea unui cod, 8 lungire, 44

echivalen monomial, 21 element primitiv, 34 endomorfismul lui Frobenius, 32 exponentul unui grup, 36 extindere de corpuri, 29

M F
matrice de control, 18 matrice de paritate, 18 matrice generatoare, 17 mesaj, 6 morfism de inele, 27 mulime de informaie, 37 mulime liniar independent, 16 mulimea de definiie, 51

F-liniar (funcie), 16 F-morfism de spaii liniare, 16 form biliniar simetric, 18 form ealon pe linii, 39 forma ealon redus pe linii, 39 form standard a matricei generatoare, 37 funcia de entropie, 11

G
gurire, 44 grad al unui element, 31 octet, 58 ortogonalul, 18

67 P
pachet de erori de lungime b, 55 parametrii (unui cod), 17 permutarea ciclic la dreapta, 49 pivot, 39 polinomul generator al unui cod ciclic, 50 polinomul minimal, 30 pondere a unui cuvnt, 17 produs scalar, 18 simbol, 6 simboluri de paritate, 8 sindrom, 41 sistem de generatori, 16 spaii izomorfe, 16 spaiu liniar, 14 spaiu liniar factor, 40 spaiu vectorial, 14 terstur, 11 subcorp, 27

R
rdcin primitiv de ordinul n a unitii, 51 rata unui cod, 8 rata unui cod liniar, 17 REF, 39 Reiger Bound, 55 RREF, 39

subspaiu generat, 16 subspaiu liniar, 15 subspaiul ortogonal, 18 suma direct, 46

T
tablou Slepian, 41 tablou standard, 41

S
scurtare, 45 sfera de raz r, 9

teorema fundamental de izomorfism pentru inele, 28 Teorema lui Shannon, 12 transformri elementare, 39

Bibliografie

1. Bertsekas, D.P, Gallager, R.G, Data networks, Prentice Hall, 1987. 2. Castagnoli, G., Braeuer, S. & Herrman, M., Optimization of Cyclic Redundancy-Check Codes with 24 and 32 Parity Bits, IEEE Trans. on Communications, Vol. 41, No. 6, June 1993. 3. CD-Recordable FAQ, http://www.cdrfaq.org/ 4. Fujiwara, T., Kasami, T., Kitai, A. & Lin, S., "On the undetected error probability for shortened Hamming codes", IEEE Trans. on Communications, vol. 33, no. 6, 1985, pp.570573. 5. Gherghe, C., Popescu, D., Criptografie. Coduri. Algoritmi, Editura Universitii din Bucureti, 2005 6. Hall, J.I, Notes on Coding Theory, http://www.mth.msu.edu/~jhall/classes/codenotes/coding-notes.html 7. Huffman, W., Pless, V., Fundamentals of Error-Correcting Codes, Cambridge University Press 2003. 8. Koopman, Philip, 32-Bit Cyclic Redundancy Codes for Internet Applications. The International Conference on Dependable Systems and Networks: 459468 (July 2002), http://www.ece.cmu.edu/~koopman/networks/dsn02/dsn02_koopman.pdf 9. Lidl, R. and Niederreiter, H., Introduction to Finite Fields and their Applications, Cambridge University Press, 1994. 10. R. Lidl and H. Niederreiter, Finite Fields, Addison-Wesley, 1983. 11. Ling, S., Xing, C., Coding Theory. A First Course, Cambridge University Press, 2004. 12. MacWilliams, F. J., and Sloane, N. J. A., The Theory of Error-Correcting Codes, vol. 1 and 2, North Holland, 1977. 13. Moreira, J. C., Farrell, P.G, Essentials of Error-Control Coding, John Wiley & Sons Ltd, 2006. 14. Shannon, C.E., A Mathematical Theory of Communication, Bell Systems Technical Journal 27, 623-656 (1948). 15. Shannon, C.E., Communications in the presence of noise, Proceedings of the IEEE, 37, 1021 (1949).

68

69
16. Shannon, C.E., Communication Theory of Secrecy Systems, (initially A Mathematical Theory of Cryptography, Memorandum MM 45-110-02, Sept. 1, 1945, Bell Laboratories, confidential report), declassified in Bell System Technical Journal, vol. 28(4), page 656 715, 1949. (http://netlab.cs.ucla.edu/wiki/files/shannon1949.pdf) 17. Standard ECMA-130, Data Interchange on Read-only 120 mm Optical Data Disks (CDROM) 2nd edition (June 1996), http://www.ecma-international.org/publications/standards/Ecma-130.htm 18. van Tilborg, H.C.A., Finite Fields and Error Correcting Codes, in Handbook of Algebra, vol I, Elsevier Science 1996, p. 397-422.

You might also like