Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori (o compilaţie)

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Capitole de Transmiterea si codarea informaţiei Coduri protectoare la erori (o compilaţie)"

Transcript

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

2 CUPRINS (selectie de titluri) Tipuri de erori: caracteristicile perturbaţiilor (zgomotului) CODURI BLOC Capacitatea de a detecta/corecta erori Coduri produs simple Coduri Hamming Coduri produs generale Coduri non-binare corectoare de o singură eroare Elemente de algebră pentru coduri protectoare la erori Coduri bloc liniare si coduri grup Coduri liniare modificate Coduri ciclice Coduri BCH binare corectoare a două erori Erori incidentale (burst) Coduri Fire: definiţie Coduri intercalate Definitia codurilor BCH Coduri Reed-Solomon Algoritmi de decodare pentru codurile BCH Corectarea ştergerilor CODURI CONVOLUŢIONALE Decodarea secvenţială Decodarea maximum verosimilă (decodarea Viterbi) p

3 GENERALITĂŢI Multe sisteme de comunicaţie au structura ilustrată în schema bloc din figura alăturată. Codor sursă Criptare Codor canal Modulator Receptor Decodor sursă Decriptare Decodor canal Demodulator Canal Canal Sursă Zgomot Blocurile functionale din această schemă destul de generală sunt încadrate două câte două în dreptunghiuri cu laturile din segmente discontinue. Se evidentiază prin aceasta complementaritatea lor. Lucrarea de faţă se ocupă numai de o parte din componentele reprezentate în figură. Discutia de aici se va limita la proiectarea si analiza codurilor detectoare si corectoare de erori, la tehnicile algebrice si probabilistice de decodare a codurilor bloc si a codurilor convolutionale. În alte capitole au fost sau vor fi dezbătute si aspecte legate de codarea surselor de informatie, de criptarea informatiei cu chei private sau chei publice, la fel problemele specifice modulării si demodulării. În această parte se studiază modalitătile de obtinere a comunicatiilor fiabile, cu fiabilitate ameliorată prin utilizaarea unor coduri cu redundanţe rezonabile si cu o complexitate a decodării acceptabilă. Se întelege de aici că la transmiterea prin canal a simbolurilor de informatie se adaugă simboluri suplimentare care constituie o redundanţă controlată. Această redundanţă diminuă rata datelor brute, dar dacă este utilizată la corectarea erorilor reduce rata erorilor. Efectul net este de creştere a ratei la care sunt livrate date fiabile. Tipuri de erori: caracteristicile perturbaţiilor (zgomotului) Din schema generală a comunicatiilor se retine pentru moment numai portiunea canal, în care s-a inclus si partea de modulare/demodulare. Se disting cu uşurintă informaţia-mesaj (m, m, ), rezultatul operatiei de codare (x, x, ), 3

4 efectul agomotului (n, n, ) care suprapus peste mesajul codat duce la iesirea ˆ, m ˆ,... ). din canal (y, y, ) si rezultatul decodării ( m Zgomot m, m, Codor canal x, x, n, n, Canal y, y, Decodor mˆ, mˆ,... Se defineste ca rata brută a erorilor fracţia din simboluri receptionată incorect: n lim n Pr( xi yi ) n i= Definiţia presupune că iesirea demodulatorului este alcătuită din date hard. Caz special important: un canal i.i.d. independent identically distributed ceea ce înseamnă că erorile sunt independente si distribuite identic. Pentru un asemenea canal rata erorilor brute este exact Pr(xi yi). Uzual se consideră că zgomotul, perturbatiile este/sunt aditiv(e). Zgomotul este astfel diferenţa dintre simbolurile recepţionate si cele transmise: ni = yi xi yi = xi + ni Zgomotele canalelor pot fi clasificate (şi) după dependenţa între evenimentele perturbatoare. Zgomotele pot fi:. aleatoare, adică simbolurile sunt independente, poate i.i.d. sau Bernoulli. Orice eveniment perturbator afectează simboluri izolate.. incidentale (burst), ceea ce înseamnă că un eveniment perturbator produce o secventă contiguă de simboluri nesigure. Printre cauzele zgomotelor incidentale se numără persistenţa mai îndelungată (fată de durata unui simbol) a unui eveniment perturbator sau dimensiunea fizică, intensitatea mai mare a perturbatiei (din nou fată de cea normală a unui simbol). Zgomotele incidentale pot apărea si prin generare de erori datorate demodulatorului. 3. catastrofale, când canalul devine inutilizabil pentru un interval de timp comparabil cu sau mai lung decât un pachet de date. Exemplu: coliziunile ethernet. Este necesară retransmiterea, probabil mult mai târziu, deoarece pachetele sunt corupte/afectate fără speranţă de recuperare imediată prin metodele obisnuite. O clasificare a controlului erorilor Controlul erorilor poate fi clasificat în mai multe moduri. După tipul erorilor sub aspectul grupării aleatoare, incidentale (burst), catastrofale. După iesirea modulatorului care poate fi digitală (hard) sau analogică (soft). După tipul protecţiei la erori care poate fi prin detectare sau prin corectare. După tipul codului care poate fi bloc sau convoluţional. 4

5 După tipul decodorului care poate fi algebric sau probabilistic. Primele două clasificări sunt utilizate la alegerea schemei de codare potrivită ultimelor trei criterii de clasificare. Tipuri de protejare la erori Detectarea erorilor. Scopul este acela de a evita utilizarea de date false, eronate. Datele pierdute pot însemna o situatie nefericită; datele gresite pot duce la un dezastru. Solutia: în mesaje, pachete, frames, sectoare de memorie sunt incluse sume de control (checksums). Cu mare probabilitate sumele acestea nu sunt valide dacă vreo parte a continutului este alterată. Corectarea erorilor la destinatie. În limba engleză FEC forward error correction sau, despre coduri, ECC error correcting codes. Redundanţele din mesajul codat sunt utilizate pentru estimarea corectă din datele primite a mesajului realmente expediat. Cea mai bună estimare este de obicei mesajul cel-mai-apropiat. Estimarea optimă o reprezintă mesajul cel mai probabil în raport cu mesajul receptionat (MAP Maximum A Posteriori Probability). Corectarea erorilor este mai complexă decât detectarea lor. Un cod corector de erori poate fi utilizat si pentru detectare pe schema: se refuză orice mesaj care are nevoie de corectie. Tipuri de coduri protectoare la erori Coduri bloc. Datele sunt grupate în blocuri care sunt de fapt vectori de k digiti informaţionali. Aceste blocuri sunt codate în cuvinte de cod de n digiti fiecare (n k) prin adăugarea a p = n k digiti redundanţi de verificare. Nu există nici o memorie de la un bloc la altul. Codarea fiecărui bloc este independentă de blocurile anterioare sau de cele care urmează. Cuvânt mesaj Cuvânt mesaj Codor (sistematic) Codor Cuvânt de cod Cuvânt mesaj Protectie O codare în care digitii de informatie apar nemodificati în cuvintele de cod se numeste codare sistematică, iar codul rezultat, sistematic. Coduri convolutionale. Schemele de codare sunt invariante în timp. Un cuvânt de cod de lungime dată depinde nu numai de digitii de informatie curenţi ci şi de alte blocuri informaţionale precedente. 5

6 Există un ordin al memoriei. Există o restrictie de lungime exprimată ca numărul de biti pe care codorul/decodorul îi ia în considerare la codare şi la decodare. În figura alăturată este dat un codor convolutional. v u ui ui - v Acest codor generează un cod cu rata de /, fiecare din cei k = biti aplicati la intrarea codorului produce n = biti la iesire. Aplicatii ale controlului erorilor Sondele interplanetare (zgomot gaussian, decodare la solul terestru). Subsistemele de memorie (SIMM-uri Single In-line Memory Module de 9 biti pentru detectare, DIMM-uri Dual In-line Memory Module de 7 de biti pentru corectare). Magistralele (buses) din calculatoare (viteze mari, lungime de bloc scurtă). În unele sisteme de calcul posibilitatea erorilor este ignorată. Modemurile V.3/V.9 utilizează codurile pe spalier (trellis). Modemurile V.4 utilizează detecţia erorilor cu repetarea transmiterii. Reţelele datacomm (Ethernet, FDDI fiber distributed data interface, WAN, WiFi, Bluetooth) fac uz de obicei numai de detecţia erorilor. Discuri si benzi magnetice (detectie soft pentru erori, corectie pentru erorile incidentale). CD-uri, DAT-uri, minidiscuri, DVD-uri. Sunetul digital necesită codare corectoare de erori. Televiziunea prin satelit. Scheme de codare Exemplele de mai sus arată o gamă foarte diversă de rate ale datelor, de dimensiuni spatiale, de rate ale erorilor. Nici o schemă de protejare la erori nu lucrează la fel de eficient în indiferent ce aplicatie. Unele aplicatii utilizează tehnici de codare multiple. O combinatie obisnuită foloseste un cod convolutional interior si un cod Reed-Solomon exterior. Alegerea unei scheme de codare potrivită poate fi adesea dificilă deoarece caracteristicile erorilor nu sunt cunoscute. Solutia comună: se recurge la Calificativele interior si exterior aplicate codurilor se referă la pozitia logică fată de utilizator/sursă. Interior înseamnă mai apropiat de utilizator/sursă, exterior înseamnă mai depărtat de utilizator/sursă. 6

7 metodele care corectează categorii multiple de erori. Dezavantaj: solutia aleasă poate să nu fie optimă pentru o împrejurare particulară. Multimi alfabetice Definitie: Un alfabet este o multime discretă (de obicei finită) de simboluri. Exemple: B = {, } este un alfabet binar. T = {,, +} este un alfabet ternar. Acest alfabet ternar este utilizat de modulatia cu semne alternative; entitătile binare succesive sunt reprezentate prin ± în alternanţă. X = {,,, FF} este alfabetul simbolurilor pe 8 biti. Este utilizat pentru CD-uri, pentru DVD-uri si pentru cele mai multe dintre hard discuri. Un simbol al alfabetului de canal poate fi: O unitate indivizibilă transmisă, cum ar fi un punct dintr-o varietate de semnale sau o secvenţă de simboluri modulate codate printr-un simbol al unui alfabet de codare. Multimile alfabetice întâlnite/utilizate în acest capitol au uzual m simboluri, cu m întreg pozitiv. Coduri bloc: definitii Alfabetul canalului este multimea de simboluri de iesire ale unui codor de canal aceeasi cu multimea de simboluri care intră în canal, în modulator dacă acesta există. Alfabetul cuvintelor receptionate (denumite uneori în englezeste senseword) este multimea de simboluri de iesire din canal sau din demodulator, totuna cu intrarea decodorului de canal. Alfabetul cuvintelor receptionate poate fi mai cuprinzător decât alfabetul canalului, de pildă când simbolurile primite reprezintă informatie soft. Exemple: Canalele binare cu stergere au alfabetul de intrare {, } si alfabetul de iesire {,?, }. Unele circuite de citire ale discurilor hard (iesirea din canal) cuantizează semnalul de intrare la 6 biti; alfabetul canalului are în acest caz 94 de simboluri. Definitie: Un cod bloc de lungime n peste alfabetul X este o multime nevidă de secvenţe de n simboluri din X. C = {(c,, cn),, (cm,, cmn)} Secventele de n simboluri ale codului se numesc cuvinte de cod. Rata codurilor bloc 7

8 Fie un alfabet al canalului alcătuit din Q simboluri. Rata unui cod bloc cu lungimea blocului n si M cuvinte se defineste ca R = (/n)logqm Tipic, cuvintele de cod de lungime n sunt generate prin codarea a k simboluri informationale (simboluri-date sau simboluri-mesaj). Se utilizează totdeauna o functie de codare inversabilă. În cazul acesta, numărul de cuvinte de cod este M = Qk si rata codului este R = (/n)logqqk = (/n)k = k/n. Un cod cu lungimea blocului n si rata k/n este cunoscut ca un cod (n, k). Rata este o fractie adimensională (biti/biti), este fractia din simbolurile transmise prin canal, care poartă informatie. Codare sistematică Capacitatea de protectie la erori a unui cod bloc depinde numai de mulţimea cuvintelor de cod, nu de modul cum sunt aplicate mesajele sursei pe cuvintele de cod. Evident, în aplicatiile practice este necesar un codor (vezi o figură de mai sus). Un codor este numit sistematic dacă el copiază cele k simboluri ale mesajului fără vreo modificare, de obicei în pozitii consecutive ale cuvâtului de cod, caz în care cuvintele de cod pot fi de forma c = [m p] sau c = [p m] în care m este vectorul celor k simboluri ale mesajului, iar p este vectorul celor n k simboluri redundante, simboluri de protectie/verificare. Aproape toate codurile fac uz de codoare sistematice. O exceptie o constituie codurile Reed-Muller. Coduri bloc: exemple foarte simple C = {} = {SYN} Lungimea blocului n = 8, M =, rata R = (/8)log =. Codurile cu rata sunt denumite coduri inutile. Acest cod ar putea fi utilizat pentru analiza ratei erorilor sau pentru sincronizarea octeţilor. C = {,,, } Lungimea blocului n =, M = 4, rata R = (/)log4 =. Acest cod nu are redundanţă; el nu poate nici să corecteze, nici să detecteze erori. C = {,, } Lungimea blocului n = 3, M = 3, rata R = (/3)log3 =,58. Acest cod ar putea fi utilizat pentru un canal care face bitii să cadă (se poate să apară dar nu ), deoarece orice căzut poate fi detectat. Codul C = {,, } este încă mai bun pentru acest gen de canal. Coduri bloc: exemple mai interesante 8

9 Codul pentru paritatea SIMM-urilor are rata 8/9 si lungimea blocului 9 sau 36. El poate detecta o eroare pe orice secventă de 8 biti (pe un byte sau octet). Codurile corectoare de erori pentru DIMM-uri au lungimea blocului 7 si rata 8/9. Ele pot corecta o eroare si pot detecta două erori în orice secvenţă de 7 de biti. Dimensiunea pachetelor Ethernet se situează între 64 si 58 octeţi (bytes) adică între 5 si 44 biţi. Suma de control utilizată pentru protejarea la erori este reprezentată pe numai 3 de biti, ceea ce face ca rata codului să fie foarte înaltă pentru pachete mari. Numărul de secvente binare de lungime 5 si de pondere sau 3 (aproape echilibrate în componenta lor continuă) este C5 + C53 = + = > 6 = 4 Codul 4B5B TAXI (Transparent Asynchronous Transmitter/Receiver Interface) pentru FDDI (Fiber Distributed Data Interface) utilizează 6 din aceste seturi de 5 pentru a purta 4 biti de informatie. Seturile de 5 biti care fac parte din cod sunt, în sistemul hexadecimal, următoarele: {E A B E F A B C D} Celelalte patru seturi sunt utilizate pentru control. Distanţa Hamming Distanţa Hamming între două cuvinte fiecare de n simboluri este numărul de componente prin care acele cuvinte diferă: dacã xi yi xi = yi n dh(x, y) = d H ( xi, yi ) cu dh(xi, yi) = i= dacã Distanţa Hamming satisface axiomele cunoscute asociate oricărei distanţe: d(x, y), cu egalitate dacă si numai dacă x = y (nenegativitate) d(x, y) = d(y, x) (simetrie) d(x, y) d(x, z) + d(z, y) (inegalitatea triunghiului). Distanţa Hamming este o măsură grosieră, pesimistă a diferenţei dintre două cuvinte. Alte distanţe utile care apar în codarea orientată pe controlul erorilor: Distanta Lee, distanţa pe un cerc, aplicabilă în codarea cu manipulare în fază. Distanta euclidiană utilizată pentru cuvinte recepţionate în Rn. Distanţa minimă Distanţa (Hamming) minimă d* a unui cod bloc este distanţa între două cuvinte de cod diferite cele mai apropiate: d* = min {dh(c, c): pentru c, c cuvinte ale codului si c c} 9

10 Câteva proprietăti evidente ale distantei minime pentru un cod cu lungimea blocului n: d* > deoarece distanta Hamming între două cuvinte distincte este un întreg pozitiv. d* n dacă un cod are cel putin două cuvinte d* = n + sau d* = pentru codul inutil, codul cu un singur cuvânt de cod (prin conventie). d*(c) d*(c) dacă C C codurile mai restrânse au distanţa minimă mai mare sau cel puţin egală. Distanta minimă a unui cod determină atât capacitatea lui de a detecta erori cât si capacitatea lui de a corecta erori. Capacitatea de a detecta erori Fie un cod bloc utilizat exclusiv pentru a detecta erori. Dacă setul de n simboluri recepţionat nu este un cuvânt al codului, a apărut o eroare detectabilă. Dacă setul de n simboluri recepţionat este un cuvânt al codului dar nu este cuvântul de cod transmis, a apărut o eroare care nu poate fi detectată. Fie c cuvântul transmis si fie r cuvântul recepţionat. Dacă d(c, r) < d*, atunci cuvântul recepţionat nu poate fi un cuvânt de cod incorect, incorect dar aparţinând codului. Altminteri c si r ar fi două cuvinte de cod între care distanta ar fi mai mică decât distanta minimă ceea ce este absurd. Fie acum c si c două cuvinte de cod diferite, dintre cele mai apropiate unul de altul. Dacă se transmite c si se receptionează c atunci apare o eroare de pondere d* care nu poate fi detectată. Teoremă: Capacitatea de detectare a erorilor garantată este e = d*. Capacitatea de detectare a erorilor este o măsură a celui mai rău caz pentru cod. Codurile proiectate pentru detectarea erorilor pot detecta marea majoritate a erorilor când sunt incorecte mai mult de d* simboluri. Capacitatea de a corecta erori Despre un cod bloc se poate gândi ca despre o multime de M vectori într-un spaţiu n-dimensional. Spaţiul acesta cu distanta Hamming destul de diferită de distanţa euclidiană, dar totusi o distanţă devine un spaţiu metric. Alături de matematica implicată, intuiţia geometric-vizuală poate fi utilă. Procedura de decodare optimă este uzual aceea a căutării vecinului-cel-maiapropiat. Cuvântul receptionat r este decodat la cel mai apropiat cuvânt de cod c : c = argmin{dh(c, r) : c este cuvânt de cod} Regiunile de decodare în spatiul metric euclidian R se pot obtine prin asanumitele descompuneri Voronoi. Dacă multimea în raport cu care se face descompunerea este o mulţime finită de puncte, regiunile Voronoi sunt

11 delimitate de mediatoarele segmentelor de dreaptă care conectează perechile de puncte care în particular pot fi cuvinte ale codului. Apartenenţa la una sau la alta din regiuni implică distanta cea mai mică faţă de un cuvânt de cod. Acel cuvânt este vecinul-cel-mai-apropiat si de-aici rezultă decizia de decodare. d* Regiune de decodare Sfere de decodare Spatiul Hamming este într-un fel mult mai complicat. Teoremă: La utilizarea decodării la cel-mai-apropiat-vecin, erorile de pondere t pot fi corectate dacă si numai dacă t < d* sau t + d*. Demonstratie: Sferele de rază t care înconjoară cuvintele de cod nu au puncte comune. Altminteri ar exista două cuvinte de cod mai apropiate decât t. Asadar, dacă apar cel mult t erori, decodorul poate decide fără vreo ambiguitate care cuvânt al codului a fost transmis. Regiunea de decodare maximală este uzual mai mare decât sfera de decodare. Cele mai multe decodoare corectează numai când cuvântul recepţionat r apartine unei sfere de decodare de rază t. Aceste decodoare sunt numite cu limitare de distantă. Rezultatele decodării Un cod bloc particular poate avea mai multe variante de decodare, depinzând de tipul de erori aşteptat sau observat, de rata erorilor, de capacitatea de calcul disponibilă la decodare. Admiţând că se transmite cuvântul de cod c, se receptionează cuvântul r si se face (sau nu se face) decodarea la cuvântul de cod c, rezultatul decodării poate fi clasificat astfel: c = c, succes al decodării corectare corectă (include si cazul lipsei vreunei erori) c =?, esec al decodării detectare a unei erori necorectabile, lipsa unei decizii (situatie nu foarte gravă) c c, eroare la decodare corectare incorectă (ceea ce este foarte rău). Important de reţinut: decodorul nu poate deosebi rezultatul c = c de c c.

12 Totusi, la decodare se pot atribui probabilităţi diferitelor situaţii posibile. De regulă, mai multi biti detectati ca eronati indică o probabilitate mai mare ca estimarea cuvântului de cod efectiv transmis să fie gresită. Cuvântul de cod transmis si zgomotul care eventual îl afectează sunt variabile aleatoare asa încât rezultatele decodării sunt ele înseşi evenimente aleatoare cu probabilitătile lor: c =? Pued eroare detectată dar nu corectată (esec al decodorului). (indicele ued = uncorrectable error detected). c c Pmc corectare incorectă (eroare a decodorului). (indicele mc = miscorrection). c c Pue eroare nedetectabilă (numai eroare de detectare). (indicele ue = undetectable error). Definitie: Un decodor complet este un decodor care decodează orice cuvânt recepţionat la un cuvânt al codului; decodorul nu eşuează niciodată (pentru o decizie hard). Pentru un decodor complet, Pued =. Definitie: Un decodor limitat prin distantă corectează toate erorile de pondere cel mult t, dar nu corectează nici o eroare cu ponderea mai mare decât t. Erorile în număr mai mare decât t produc un eşec al decodării sau o eroare de decodare. Exemplu: Codul cu repetiţie simplă. Fiecare simbol de informatie se transmite repetat de n ori. Pentru alfabetul binar sunt două cuvinte de cod: C = {, }. Rata codului: /n. Distanta minimă: d* = n. Detectarea erorilor: până la n simboluri eronate. Pr[eroare nedetectată] = εn, cu ε probabilitatea/rata erorii pe bit. Corectarea de erori: până la (n )/ simboluri eronate. Pr[corectie gresită] = Pr[mai mult de n/ erori] (pentru alfabet binar). Pentru alfabetul binar, pot fi utilizate două cuvinte de cod complementare. De exemplu, C = {, } = {55, AA}, forma a doua a scrierii fiind în baza 6 (hexadecimal). Codul C ar putea fi mai bun dacă erorile ar fi de genul toate simbolurile recepţionate zerouri sau toate unităţi binare. Exemplu: Coduri cu verificarea simplă a paritătii. Cuvântului-mesaj i se atasează un bit de verificare astfel încât toate cuvintele codului să aibă aceeasi paritate pară sau impară. Cuvintele de paritate pară sunt definite printr-o singură ecuaţie de verificare a parităţii: c c cn = (c + c + + cn) mod = cu, operatia sau-exclusiv. Dacă se adaugă cn cu sau-exclusiv (XOR) în ambii membrii ai ecuatiei de mai sus se obtine ecuatia de codare cn = c c cn Această relatie arată cum se calculează bitul de verificare cn din biţii de date, bitii informationali sau bitii-mesaj c, c,, cn.

13 Oricare bit ci poate fi considerat bit de control deoarece el se poate calcula din ceilalti n biti. Capacitatea de protectie la erori a codurilor cu paritate simplă: Orice eroare pe un bit (sau pe un număr impar de biti) poate fi detectată. Rata codului: (n )/n = /n. Detectia erorilor: bit eronat si orice număr impar de biti eronati. Erorile pe biti sunt considerate i.i.d. cu probabilitatea ε, functia de probabilitate pentru numărul de erori în cuvântul de lungime n este binomială: Pr[ eroare] = Cnε( ε)n nε Pr[ erori] = Cnε( ε)n (/)nε Pr[k erori] = Cnkεk( ε)n k (/k!)nkεk Aproximările sunt valabile pentru n mare si ε << /n. Pentru ε = /, probabilitatea erorii nedetectate este / n. Acesta este un caz special al regulii generale conform căreia probabilitatea erorii nedetectate cu p biti de verificare este aproximativ p. Exercitiu: A se verifica: Pr[număr impar de erori] = k imparcnkεk( ε)n k = (/) (/)( ε)n. Exemplu: Coduri non-binare cu verificare simplă. Se presupune că s-a definit o operaţie de adunare pe un alfabet non-binar, de pildă adunarea modulo 5 pe alfabetul {,,, 3, 4}. Un cod bloc poate fi definit printr-o singură ecuaţie de verificare sau prin ecuaţia de codare corespunzătoare: c + c + + cn = cn = c c cn Acest cod poate detecta orice eroare care constă dintr-un simbol eronat singular şi cele mai multe din pattern-urile cu două sau mai multe simboluri eronate. Unele operatii de adunare sunt mai bune decât altele. Pentru simbolurile de 8 biti: 8-biti exclusiv paralel: doi biti eronati situati în aceleasi pozitii în doi octeti (bytes) diferiti nu pot fi detectati, ceea ce este foarte rău. Pentru adunarea pe 8 biti fără semn, două erori în aceleasi pozitii ale bitilor sunt detectate numai atunci când bitii schimbă valoarea transferului în pozitiile următoare, ceea ce este rău. Aritmetica cu complementele la unitate pare o alegere mai bună pentru operatorul de adunare (utilizat în suma de control Fletcher pentru OSI open systems interconnection). Este încă mai bine. Coduri produs simple Biţii mesajului, bitii de informatie sunt aranjaţi într-o matrice bidimensională. Se adaugă biţi de paritate pe fiecare linie si pe fiecare coloană. Suma de control Fletcher Fletcher checksum este un algoritm de calcul al unei sume de control sensibilă la pozitie. Datează din anii 97 târzii. Obiectivul sumei de control Fletcher este acela de a furniza proprietăti de detectare a erorilor apropiate de cele ale CRC Cyclic Redundancy Check dar cu efort de calcul mai redus decât cel asociat tehnicilor de însumare. 3

14 Biti de paritate pe linii Mesaj: k k biti n = (k + )(k + ) k = kk n k = k + k + Biti de paritate pe coloane O eroare singulară face ca una din ecuatiile de paritate pe linii şi una din ecuatiile de paritate pe coloane să nu fie verificate. Bitul incorect este localizat la intersectia liniei neconforme cu coloana neconformă. Erorile duble pot fi detectate două linii sau două coloane (sau ambele) au paritate necorespunzătoare dar nu pot fi corectate. Unele erori triple pot genera corectări gresite. Exercitiu: Care din ele? Aproape toate erorile multiple pot fi detectate codul produs are redundanţă în exces. Aceste coduri produs sunt simple dar ineficiente. O ecuaţie de paritate neverificată localizează linia sau coloana în care este eroarea, dar o ecuatie verificată dă informatie puţină despre cuvântul de cod. Exerciţiu: Ce fracţie din erori nu se poate detecta? Coduri Hamming O ecuaţie de verificare eficientă oferă informatii asupra locaţiei erorii. Este ca o privire la bitii dintr-o parte a cuvântului de cod si este independentă de celelalte ecuatii de verificare. Tabelul următor defineste un cod cu verificare de paritate Hamming (7, 4). c c c3 c4 c5 c6 c7 3 ecuatii de verificare a paritătii Unitătile binare indică bitii din cuvântul de cod care intervin în ecuatiile de verificare a paritătii3. Ecuatiile de verificare a paritătii petru codul Hamming (7, 4) sunt cele trei ecuatii care urmează si sunt satisfăcute de toate cuvintele de cod valide si numai de cuvintele de cod. c c3 c5 c7 = c c3 c6 c7 = c4 c5 c6 c7 = Ecuatiile de verificare pot fi scrise condensat într-o formă matricială. Matricea cu elemente binare 3 Termenul de paritate are aici un sens extins, diferit de cel comun, par/impar = cu soţ/fără soţ din aritmetica obisnuită. 4

15 H = este matricea de verificare (a parităţii). Cuvintele de cod sunt caracterizate analitic de ecuatiile c H = [c c7]ht = c7 Zerourile din partea dreaptă a semnelor de egalitate reprezintă vectori de dimensiuni corespunzătoare, cu toate componentele nule. Cu alte cuvinte, un bloc c de 7 biti este un cuvânt de cod dacă si numai dacă cht =. Ecuatiile de codare pentru codurile Hamming (7, 4), cele care permit calculul bitilor redundanţi, de protecţie în functie de bitii mesajului se deduc astfel: bitii unui cuvânt de cod situati în pozitiile,, 4 apar fiecare într-o singură ecuatie astfel că c, c, c4 se pot calcula din ceilalti biti, c3, c5, c6, c7, bitii mesajului. c = c3 c5 c7 c = c3 c6 c7 c4 = c5 c6 c7 Aceste ecuaţii ale codorului (liniar) pot fi scrise ca un produs vector-matrice. [c c c4] = [c3 c5 c6 c7]p = [c3 c5 c6 c7] Şi alti 3 biti pot fi aleşi ca set al bitilor de control al paritătii, de pildă {c, c3, c4}, dar nu orice set de 3 biti din cei 7. În particular, ca exemplu, c, c, c3 nu pot fi calculati din c4, c5, c6, c7 deoarece cele 3 coloane situate în stânga extremă a matricei H formează o matrice singulară, neinversabilă. Detectarea si corectarea erorilor cu codurile Hamming (7, 4) se bazează pe faptul că fiecare bit al unui cuvânt de cod este prezent în cel putin o ecuaţie din cele de verificare, ceea ce implică posibilitatea detectării oricărei erori pe un singur bit. Fiecare bit este verificat printr-un set unic de ecuatii, asadar localizarea erorii poate fi făcută prin reţinerea acelor ecuatii de paritate care nu sunt verificate. Definitie: Sindromul s = [s s s] al unui vector recepţionat r = [r r r7] este vectorul binar care indică ecuatiile de paritate care nu sunt verificate. r r3 r5 r7 = s r r3 r6 r7 = s [s s s] = [r r r7]ht r4 r5 r6 r7 = s Dacă s =, decodorul admite că r nu conţine nici o eroare. Aceasta este cea mai plauzibilă concluzie în conditiile unor ipoteze raţionale. Fiecare valoare nenulă pentru s corespunde unei erori într-o pozitie diferită din cele 3 = 7 ale cuvântului recepţionat. Dacă a apărut o singură eroare, 5

16 sindromul serveste la identificarea acelei pozitii. Pentru matricea H de verificare a parităţii pentru codul Hamming (7, 4) dată mai sus, sindromul s = [s s s] este reprezentarea binară a locatiei acelei erori (cu bitul s cel mai semnificativ). Distanţa minimă pentru codurile Hamming (7, 4). Codurile Hamming în general pot corecta o singură eroare, deci d* t + = + = 3. Codurile Hamming pot detecta erorile duble (atunci când sunt utilizate exclusiv pentru detecţie). Distanţa minimă este de fapt 3. Asadar codurile Hamming pot fie să corecteze o eroare, fie să detecteze două erori, niciodată si una si alta. În cazul unui cod Hamming cu m 3 biti de paritate, sunt m vectori sindrom nenuli, deci lungimea blocului este n = m. Rata codului se apropie repede de pentru n mare. Câteva coduri Hamming: m n k Rata,3333,574,7333,8387,947,9686,9995, Coduri Hamming modificate4 (prin expandare, prin purjare). Două modalităţi simple de a modifica un cod Hamming: Se adaugă în prima coloană un bit de paritate global: c = c c7 c c7 = si o linie, ultima, de unităţi binare. H = 4 Acest cod expandat are lungimea blocului 8 dar acelasi număr de cuvinte de cod. Parametrii codului sunt (8, 4, 4), rata este /. Ecuatia prin care se calculează bitul suplimentar c este încă o ecuaţie de verificare. Se adaugă o conditie de verificare a paritătii efective, în sensul clasic: c c c6 c7 =. Vezi si secţiunea Coduri liniare modificate 6

17 H = Acest cod purjat (expurgated) constă din cuvintele de cod Hamming de paritate pară (în sens clasic). Parametrii codului sunt (7, 3, 4), iar rata este 3/7. Distanta minimă pentru codurile Hamming modificate. Aceste coduri Hamming modificate, cel expandat si cel purjat sunt construite prin suplimentarea redundantei codului Hamming (7, 4) care are distanta minimă 3. Distanta minimă a codurilor extinse nu este mai mică, ci este cel putin 3. Toate cuvintele de cod sunt de paritate pară, deci distanta între ele este pară. De aceea si distanta minimă este un număr par care trebuie să fie cel putin 4. Codurile Hamming conţin cuvinte de cod de pondere 3. Bitul de paritate suplimentar face să crească distanţa prin cel putin o unitate. Astfel, distanta minimă a codurilor Hamming extinse este d* = 4. Aceste coduri pot corecta o eroare si pot detecta simultan erorile duble. O eroare dublă este indicată de o paritate generală pară, dar de sindrom nenul, ceea ce corespunde nesatisfacerii uneia sau mai multor ecuatii Hamming din cele m originare. Coduri produs generale Fie C un cod bloc (n, k) si C un cod bloc (n, k). Codul produs C C este un cod (nn, kk). k n k k n k Un codor (sistematic) pentru un cod produs general se realizează astfel: Mai întâi se aranjează cele kk simboluri informationale într-o matrice cu dimensiunile k k. Se codează apoi primele k linii folosind codul C. În final se codează fiecare din cele n coloane folosind codul C. Distanta minimă pentru codul produs C C este d* = d* d*. Prin definiţie, fiecare coloană este cuvânt de cod din C. Codurile C si C sunt liniare, de unde rezultă că liniile sunt cuvinte de cod din C. Definitia aceasta presupune codoare sistematice pentru C si pentru C. 7

18 Exemplu de cod produs în general: Se consideră produsul a două coduri Hamming expandate (8, 4, 4) Mesaj 4 Parametrii codului produs sunt (n, k, d*) = (64, 6, 6), rata lui este /4. Capacitatea de a corecta erori a codului este t = (6 )/ = 7. Codurile produs pot fi decodate până la capacitatea de corectare a erorilor garantată. Procedura de decodare cere un decodor de coloane care poate corecta atât erori cât si stergeri. Există coduri mai eficiente, de pildă codul BCH expandat (64, 5, 6) care include numai 39 de biti de verificare pentru aceeasi distanţă minimă. Coduri non-binare corectoare de o singură eroare Ecuaţia de verificare unică c + c + + cn = permite detectarea unui singur simbol eronat în setul de n recepţionat. Mai mult, sindromul definit ca s = r + r + + rn indică magnitudinea erorii. Dacă locatia erorii este i si simbolul incorect este ri = ci + ei si s = r + r + + rn = c + (ci + ei) + + cn = ei Sindromul spune exact cât trebuie scăzut din simbolul eronat pentru a obţine cuvântul de cod expediat. Ce nu se stie este unde este situată eroarea, care simbol este greşit. Pentru a identifica locatia erorii este necesară o a doua ecuatie. Efectul magnitudinii unei erori asupra sindromului ar trebui să fie diferit pentru localizări diferite. O alegere rezonabilă pentru această a doua ecuatie este c + c + + n cn = Acum, orice cuvânt al codului trebuie să satisfacă două ecuatii c + c + + cn = c + c + + n cn = Acestea sunt si ecuatiile de codare, cele din care se pot exprima c, c în functie de c3,, cn. Exemplu: Fie simbolurile valori pe 4 biti cu adunarea modulo 6. Pentru n = 5, H = 3 5 8

19 este matricea de verificare a paritătii pentru un cod care ar putea corecta erorile pe un singur simbol, cum se poate constata, nu totdeauna. Procedura de decodare. Se presupune că există o singură eroare de magnitudine ei, situată în locatia i. Sindromul s = [s s] poate fi exprimat în functie de necunoscutele i si ei: n s = s = jrj = iei + j= n j= n rj = ei + j= n j= c j = ei jc j = iei Acum ei si i se pot determina din ecuatiile sindromului: ei = s i = iei/ei = s/s Din nefericire, împărţirea nu-i definită totdeauna în aritmetica modulo 6. De pildă, dacă s = 4, s = 8, ecuatia în i, s = is mod 6 are patru solutii:, 6,, 4. Aşadar, nu există o certitudine asupra poziţiei erorii unice detectate. Corpuri finite Problema aceasta a împărtirii cu rezultat incert se rezolvă prin utilizarea unei alte operatii de multiplicare, mai bună. Pentru aceasta se defineste GF(6)5, corpul cu 6 elemente. În corpul GF(6) multiplicarea are o operatie inversă de împărtire si cele mai multe dintre proprietătile familiare din aritmetica obişnuită sunt valide. O altă tratare posibilă este aceea cu aritmetica modulo 7, cu alfabetul canalului {,,,..., 6}. Matricea de verificare a paritătii pentru un cod corector de o eroare peste GF(7) este H = 3 6 Pattern-ul erorii si locatia ei pot fi calculate folosind ecuatiile de mai devreme: pattern: ei = s locatie: i = iei/ei = s/s Folosind aritmetica din corpul GF(6) sau aritmetica modulo 7, aceste ecuatii pot fi rezolvate de fiecare dată când s. Coduri Reed-Solomon Codurile de mai sus peste GF(6) sau peste GF(7) sunt exemple de coduri Reed-Solomon. Codurile Reed-Solomon utilizează simboluri dintr-un corp finit GF(Q) si au lungimea cuvintelor n = Q. 5 GF Galois field, termenul în limba engleză pentru corp finit sau corp Galois (notaţia s-a păstrat aici pentru a da coerenţă lecturii acestui text cu alte posibile lecturi ale cititorului în limba engleză, limbă în care sunt publicate extrem de multe lucrări în domeniu). 9

20 Fiecare linie din matricea de verificare H constă din puteri consecutive ale unor elemente din GF(Q). Dacă elementele sunt alese cu grijă, fiecare ecuatie de verificare suplimetară sporeste distanta minimă cu o unitate. De exemplu, matricea de verificare a paritătii H = = corespunde unui număr de 4 ecuatii. Această matrice defineste un cod peste corpul finit GF(7) care are o distantă minimă de 5. Codul poate corecta până la două simboluri eronate, în cuvinte de cod de lungime 6. Procedurile de decodare a codurilor Reed-Solomom sunt printre obiectivele principale ale acestei părti a lucrării prezente. Tipurile de erori în canal (revedere) Rata brută a erorilor într-un canal de comunicatie este numărul mediu de simboluri eronate pe simbol transmis. Rata brută a erorilor poate varia în timp, asa încât se recurge la medierea pe segmente de date. Cum se măsoară rata erorilor? Se trimit date cunoscute si se contorizează simbolurile incorecte. Se tin evidenţe ale numărului de erori corectate si ale cuvintelor receptionate necorectabile. Un alt parametru al perturbatiilor este persistenţa (aglomerarea, dependenţa statistică). Erorile catastrofale fac canalul de neutilizat pentru mult timp sunt afectate multe pachete de date. Retransmiterea devine absolut necesară. Erorile incidentale apar atunci când canalul pe durate scurte devine foarte perturbat, foarte zgomotos, ceea ce se traduce într-o secventă contiguă de simboluri greşite sau incerte. Erorile aleatoare sunt simboluri de zgomot independnete, i.i.d. sau cu o statistică lent variabilă în timp. Fiecare eveniment perturbator afectează simboluri izolate. Exemple. Trei canale cu rata bitilor eronati 3: Situatie catastrofală. Un canal de comunicatie care este inutilizabil 9 ore în fiecare an (furtuni solare, poate), dar altminteri lipsit de zgomote, are o rată medie a bitilor eronati de cca. 3. O redundanţă suplimentară mică permite detectarea pachetelor alterate. Redundanţa generală este de cca. % necesar pentru pachetele retransmise. Erori incidentale. Se presupune că erorile apar în aglomerări (clusters) de - de biti. Capitolul prezent se referă si la coduri care tratează eficient erorile incidentale. Aceste coduri sunt utilizate adesea ca un al doilea nivel, în combinatie cu coduri de nivel primar care rezolvă erorile distribuite uniform.

21 Erori aleatoare. Pr[xi yi] = ε, o constantă independentă de momentul i si de datele xi. Probabilitatea ca un bit receptionat oarecare să fie eronat este egală cu rata medie a biţilor eronati. La o rată a bitilor eronati dată, erorile aleatoare sunt mai dificil de tratat decât erorile incidentale, care la rândul lor sunt mai dificil de rezolvat decât erorile catastrofale. O susţinere a acestei afirmaţii: reordonarea unui bloc mare de date pentru a separa bitii care erau initial laolaltă transformă erorile incidentale în erori izolate. Canale de comunicatie Se reia aici o parte din schema bloc de comunicatie prezentată la începutul lucrării. Codor canal Modulator Demodulator Canal Decodor canal Zgomot Modulatorul transformă iesirea digitală a codorului de canal în forme de undă potrivite transmiterii printr-un anumit canal fizic, demodulatorul estimează valorile digitale din formele de undă recepţionate. Schema adoptată pentru codare trebuie să tină seamă de metoda de modulatie. Dar, odată codul de canal ales, modulatorul si demodulatorul pot fi incluse în blocul canalului. Se obtine astfel un model simplificat. Codor canal Decodor canal Canal digital Zgomot Acest canal simplificat are intrări si iesiri digitale. Modelul canalului digital Modelul matematic al unui canal de comunicatie discret în timp (digital) prezentat aici este probabilistic. Codor canal Canal digital x, x,, xn y, y,, yn Zgomot Decodor canal

22 Un canal discret este caracterizat deplin de un set de probabilităti condiţionate Pr[iesiri y, y,, yn intrări x, x,, xn] Se admite cauzalitatea canalului: yj este independent de xi pentru i > j. Un canal este discret dacă mulţimile alfabetice de intrare si de iesire X si Y sunt discrete. Un canal este fără memorie dacă iesirea la momentul i depinde numai de intrarea la acelaşi moment i. Atunci Pr[y, y,, yn x, x,, xn] = Pr[y x]pr[y x] Pr[yn xn] Definitia unui canal discret fără memorie (DMC Discrete Memoryless Channel) cere ca probabilitătile de trecere, de tranziţie Pr[yi xi] să nu depindă de momentul i. Canale binare simetrice Cel mai simplu, cel mai popular si ocazional 6 si cel mai adecvat model al unui canal este modelul canalului binar simetric (BSC binary symmetric channel). ε y = x Pr[ y x] = ε ε ε ε = ε y x Modelul sub forma unei graf de trazitie este următorul: ε ε ε ε 6 Robert Gallager, un reputat cercetător în teoria informatiei declara într-o conversatie la Stanford că n-a avut ocazia vreodată să lucreze pe un canal binar simetric. El vrea să spună că cele mai multe canale au zgomote corelate.

23 .9.8 E n t ro p ie C a p a c it a t e R a t a e r o r il o r Capacitatea unui canal binar simetric (BSC) este foarte uşor de calculat dar este foarte greu de atins. Expresia capacitătii canalului este C(ε) = H(ε) îu care H(ε) = ε logε ( ε)log( ε) este funcţia entropică binară. H(ε) este o măsură a cantitătii de informatie sau de incertitudine într-o decizie binară cu probabilitătile a priori ε, ε. Alăturat sunt date curbe care reprezintă capacitatea si entropia la rate diverse ale bitilor eronati. Tabelul însoţitor ilustrează numeric cele două functii, H(ε) si C(ε). Rata bitilor eronati (ε) H(ε), , , , ,85383,37469,46969,88,334 C(ε), , , , , , , , , Erori aleatoare asupra biţilor Referirea la biţi eronaţi aleator presupune un canal binar cu erori independente identic distribuite (i.i.d. independent identically distributed), cu alte cuvinte un canal binar simetric. Un canal binar simetric are un singur parametru de zgomot, ε: 3

24 rata bitilor eronati = ε = Pr[ri ci] = probabilitatea de inversare Acest model de canal presupune că erorile nu depind de mesaj. Numărul de erori într-un cuvânt de n biti recepţionat are o distributie binomială: Pr[i erori] = Cniεi( ε)n i, i =,, n Un cod bloc cu distanţa minimă d* t + poate corecta până la t erori. Dacă apar mai mult de t erori, decodorul produce două rezultate posibile: poate recunoaşte că cuvântul receptionat este la distanţă mai mare decât t de orice cuvânt de cod sau poate corecta gresit la cuvântul de cod (unic) c situat la mai putin de t de cuvântul recepţionat r. Când se produce o corectie gresită, c este o estimare mai proastă decât r însusi. Probabilitătile de eroare pentru coduri cu repetiţie Se consideră codul cu repetiţie (n, ) cu lungimea blocului n = t + impară. Este codat numai un bit din mesaj, fie acela m. Decodorul estimează pe m prin vot majoritar. O eroare de decodare apare atunci când cuvântul recepţionat are mai mult de n/ biti eronati. Probabilitatea unei corectii gresite, Prmc (miscorrection) este Prmc = Pr[eroare la decodare] = Pr[erori pe mai mult de t biti] = n ( nε )t + i i n i t+ t+ n t C ε ( ε ) C ε ( ε ) = n n (t + )! i= t + Aproximările se aplică dacă rata erorilor este mică, ε << /n si dacă lungimea cuvântului este mult mai mare decât numărul erorilor în cuvânt, n >> t. Deoarece numai un bit este informaţional, rata erorii este totuna cu rata erorii decodorului. Pr[ mˆ m ] = Pr[ cˆ c ] = Prmc Utilizând inegalitatea lui Chernoff sau aproximarea lui Stirling, se poate arăta că dacă ε < /, atunci Prmc exponenţial cu n. Probabilitatea erorii pentru codurile Hamming Un cod Hamming (7, 4) are 4 = 6 cuvinte de cod. Fiecare cuvânt al codului are o regiune de decodare corectă care contine + 7 = 8 cuvinte recepţionate. Regiunile de decodare nu au zone comune, astfel că ele conţin 6 8 = 8 = 7 vectori, adică toate seturile de n = 7 biti posibile. Mesaj m 4 Cuvânt de cod c 4 Cuvânt receptionat r 3 4 Zgomot 4 3 Cuvânt estimat 4 3

25 Pentru două erori, dh(c, r) = si corectarea greşită făcută de decodor produce dh(c, c ) = 3. Rata bitilor eronati evaluată între c si c este Pr[ erori] (3/7). Se poate arăta că pentru codorul sistematic greşelile în c sunt distribuite uniform peste cei sapte biti ai cuvântului de cod. Modele ale unor canale mai generale Uneori nu este disponibil un model statistic bun al sursei de zgomot. Se admite uneori fără verificare ipoteza că erorile sunt i.i.d. (independent identically distributed), erori independente distribuite identic. Un cod protector la erori ar trebui să asigure protecţia la mai multe tipuri de erori. Figura de mai jos ilustrează o posibilă actiune concomitentă a perturbatiilor aleatoare si a perturbatiilor incidentale, generatoare de erori aleatoare si de erori incidentale. m, m, x, x, Codor canal Zgomot aleator Canal + y, y, Decodor canal ˆ, m ˆ,... m Zgomot incidental Mai sus s-au adus în discuţie modele pentru perturbatiile si erorile aleatoare. Iată acum un model clasic al erorilor incidentale, modelul Gilbert-Elliot. ε ε Starea normală ε ε Starea incidentală Acesta este un model markovian. Probabilitătile ε, ε diferă uzual prin multe ordine de mărime, de pildă ε = 6, ε =. Exemplu de model al erorilor. Se presupune o combinatie de erori aleatoare ( bit) si incidentale (până la 45 de biti). Pr[eroare aleatoare] = 6, Pr[eroare incidentală] = 4 7 Rata brută a bitilor eronati este / = 5. Se presupune că se transmit pachete de de biti si se cere ca rata bitilor eronati după corectare să fie. Pentru a obtine această performanţă cu un cod corector de erori aleatoare se consideră Pr[5 erori] ( 5)5/5! = /,83 Corectarea a 5 erori aleatoare ar fi suficientă numai dacă apar erori aleatoare. Dar pachetele cu secvenţa incidentală de până la 45 de biti nu pot fi corectate. Erorile incidentale contribuie la rata totală a erorilor cu cca. 9 6 >>. În plus, cerinţa de corectarea a 5 erori aleatoare este supradimensionată. 5

26 Pr[4 erori fără erori incidentale] ( 6)4/4! = /4 4, 4 Din aceste calcule apare necesară o metodă specială de corectare a amestecului de erori aleatoare si incidentale. Metode de corectarea mixturilor de erori aleatoare si incidentale: Se intercalează cuvintele de cod astfel încât un incident provoacă vătămări mai reduse repartizate pe mai multe cuvinte de cod. Un incident pe 45 de biti poate afecta cel mult 5 biti în fiecare din cele cuvinte de cod care ar alcătui un supercuvânt de cod lung de biti. Astfel se poate utiliza un cod corector de 5 erori. Acest cod necesită 5 de biti de verificare la fiecare subcuvânt de cod de de biţi, adică un total de 5 de biti suplimentari. Se utilizează un cod care corectează erori pe simboluri, simboluri formate din mai multi biti. Un cod Reed-Solomon cu simboluri ale canalului de biti are lungimea blocului de simboluri sau 3 biti. Cu 5 de biti de verificare se poate corecta orice pattern de erori restrâns la 5 de simboluri. În particular, un incident de 45 de biti afectează cel mult 6 simboluri, asa încât incidentele multiple până la 4 pot fi corectate. Câteva reguli simple:. Fiind dati p biţi de redundanţă, se poate atinge o probabilitate a erorii nedetectate de p sau mai mică. De exemplu codul CRC-6 este o sumă de verificare care asigură o rată a erorilor nedetectate de 6 =,6 5.. Pentru mesaje de n biti, aproximativ tlogn biti sunt necesari si suficienţi pentru a corecta până la t biti eronati. De pildă, codurile BCH cu lungimea blocului 55 poate corecta o eroare cu 8 biti de control, două erori cu 6 biti de control ş.a.m.d. 3. Se poate face un compromis raţional în ceea ce priveste capacitatea de a corecta si cea de a detecta erorile: la o rată a bitilor eronati dată, un bit eronat corectat pentru doi biti eronati detectati. De pildă, un cod care poate corecta erori poate detecta 4 erori sau poate corecta o eroare si detecta erori. Elemente de algebră pentru coduri protectoare la erori Sectiunea prezentă a acestui curs se concentrează asupra codurilor bloc liniare. Codarea produce cuvinte de cod ale căror componente sunt combinatii liniare ale simbolurilor mesajului. Detectia erorilor utilizează sindromul, o combinatie liniară a simbolurilor cuvântului de cod. Corectarea erorilor necesită aflarea zerourilor unor polinoame cu coeficienti functii rationale de componentele sindromului. Toate aceste operatii implică adunări şi multiplicări efectuate cu simboluri ale canalului. Decodarea include la rându-i operatii de împărtire, iar simbolurile nenule au nevoie adesea de un reciproc, de un invers multiplicativ. 6

27 De aceea se definesc corpuri (fields) structuri algebrice cu operatii aditive şi multiplicative inversabile. Corpurile moştenesc proprietăti ale altor structuri algebrice (grupuri, inele) şi sunt multimi de scalari pentru anumite spatii vectoriale. Este nevoie asadar şi de definirea unor grupuri, inele şi spatii vectoriale. Elemente de teoria numerelor şi de aritmetică modulară (motivaţie) Codurile protectoare la erori folosesc ecuatii de verificare. Aceste ecuatii cer o aritmetică definită pentru simboluri ale cuvintelor de cod. Aritmetica de precizie finită este mai usor de implementat decât cea de precizie nelimitată. Corpurile finite (cu operatiile/operatorii +,,, ) sunt definite printr-o aritmetică modulară: Aritmetica întregilor modulo un număr prim: mod = Aritmetica polinoamelor modulo un polinom prim (cu coeficientul cel mai putin semnificativ în prima pozitie): (x3 + x + ).(x + ) mod (x4 + x + ) =. = De observat că produsul a doi vectori de 4 biţi este tot un vector de 4 biţi. Aritmetica modulară are şi alte aplicatii: generarea de numere pseudoaleatoare, criptografia cu cheie publică etc. Elemente de teoria numerelor Dacă a b = m atunci m se numeste produsul factorilor a şi b. Despre numărul m se mai spune că este un multiplu al lui a şi al lui b. Numerele a şi b sunt divizori ai lui m, ceea ce se scrie a m şi b m şi se citeste a divide pe m, b divide pe m. Un divizor propriu este un divizor care satisface dubla inegalitate < a < m. Exemple de numere si divizorii lor proprii: m Divizori proprii, 3, 4, 7, 4, 4, 8, 6, 3, 64, 8 Observaţie: Numerele 6 = si 8 = , egale cu suma divizorilor inferiori lor ca valoare sunt numite numere perfecte. Un număr prim sau mai simplu un prim este un întreg p > care nu are divizori proprii. Singurii divizori (pozitivi) ai unui număr prim p sunt şi p. Câteva numere prime:, 3, 5, 7,, 3, 7, 9, 3, 9, 3, 37. Singurul număr prim par este. Cazul p = este adesea exclus în teoremele relativ la corpurile finite, dar este cazul cel mai important pentru aplicaţiile corpurilor finite la codurile protectoare la erori. 7

28 Euclid a arătat că numerele prime sunt infinit de multe. Demonstratia se face prin reducere la absurd. Se admite că ar exista numai un număr finit de prime, {p, p,, pt}. Atunci m = (p p pt) + ar fi un număr care nu se divide cu nici un pi. Astfel că fie m este prim, fie m are un divizor prim care ar trebui să difere de orice pi. Desi nu există o formulă simplă pentru primul al x-lea, teorema numerelor prime spune că: Numărul primelor mai mici decât x, π(x) este aproximativ x/lnx. Mai precis, π(x) odată cu x. Un fapt demonstrat de Bertrand: Pentru orice întreg n, între n şi n, există un prim. În particular, există cel putin un prim de m biti pentru orice m. Când d > nu este un factor al lui n, împărtirea lui n la d produce un rest nenul. Algoritmul împărtirii exprimă deîmpărtitul n ca suma unui multiplu qd al împărtitorului d şi un mic rest r: n = qd + r cu r < d. Restul este notat cu n mod d (citit: n modulo d). De observat că potrivit acestei definitii a împărtirii, câtul q = n/d nu este totdeauna întregul cel mai apropiat de numărul rational n/d. Câtul şi restul generat de algoritmul împărtirii sunt unice. Admitând că qd + r = qd + r cu r r < d, rezultă r r = (q q)d < d, astfel că r r este un multiplu nenegativ al lui d mai mic decât d. Absurd! De aici r r = şi r = r şi în cele din urmă q = q. Cele mai multe arhitecturi de calcul au o instructiune de împărtire care returneazǎ atât câtul cât şi restul în registre separate, partial şi pentru cǎ implementǎrile standard ale împǎrtirii produc ambele valori. Câtul, rotunjit adecvat este rezultatul necesar în calculele numerice, dar restul este mai util pentru codarea în scopul protejǎrii la erori şi pentru criptare. Cel mai mare divizor cumun, gcd(m, n), al unei perechi de întregi m şi n este cel mai mare numǎr care divide şi pe m şi pe n. Surprinzǎtor, gcd(m, n) este şi cel mai mic întreg pozitiv de forma am + bn cu a şi b întregi. De exemplu, = gcd(3, 8) = Demonstratie: Este limpede cǎ orice divizor comun al lui m şi n este divizor al lui d = am + bn. Pentru a arǎta cǎ d este un divizor al lui m, se utilizeazǎ teorema împǎrtirii întregi pentru m şi d: m = q(am + bn) + r cu r < d = am + bn. Restul r este tot o combinatie liniarǎ întreagǎ de m şi n: r = m q(am + bn) = ( qa)m qbn < d Deoarece d este cea mai micǎ combinatie liniarǎ pozitivǎ de m şi n, restul r trebuie sǎ fie nul, astfel d este un divizor al lui m. Similar, d este şi divizor al lui n. Din gcd(m, n) = am + bn se vede cǎ gcd(m, n) nu este numai cel mai mare divizor comun al lui m şi n, ci şi un multiplu al tuturor divizorilor comuni ai lui 8

29 m şi n. Utilizând aceastǎ reprezentare a celui mai mare divizor comun, se poate arǎta cǎ dacǎ gcd(m, n) = d atunci gcd(cm, cn) = cd. Demonstratie: Evident, cd este divizor comun al numerelor cm şi cn. Dar d = am + bn cd = c(am + bn) = a(cm) + b(cn) ceea ce aratǎ cǎ orice divizor comun al numerelor cm şi cn este şi un divizor al lui cd. Douǎ numere sunt relativ prime sau coprime dacǎ cel mai mare divizor comun al lor este, adicǎ nu au nici un divizor comun propriu. Dacǎ m şi n sunt relativ prime, atunci gcd(m, n) =. În acest caz, existǎ întregii a şi b astfel încât am + bn =. De aici bn = am = mod m b = n mod m Asadar b este reciprocul lui n modulo m. O metodǎ de a calcula atât cel mai mare divizor comun cât şi coeficientii a şi b o constituie algoritmul lui Euclid. Iatǎ acum o proprietate utilǎ a numerelor coprime: dacǎ m nq şi gcd(m, n) = atunci m q. Demonstratie: Dacǎ gcd(m, n) = atunci gcd(mq, nq) = q = amq + bnq este suma a doi multipli ai lui m, astfel q este multiplu al lui m şi m q. Un caz special important al acestui rezultat: dacǎ p este prim şi p ab atunci p divide pe a sau p divide pe b (nu şi pe a şi pe b). Demonstratie: Deoarece p este prim, fie p a, fie gcd(a, p) =, caz în care p b. O factorizare a lui m este o reprezentare m = a a at. Orice întreg m poate fi factorizat în prime. Demonstratie: Se face prin inductie dupǎ m. Dacǎ m este prim atunci factorizarea lui este m = m. Altminteri, m = a b cu a < m şi b < m. Prin inductie, a şi b au factorizǎrile lor în prime a = p p pr şi b = q q qs. Asadar, m = a b = p p pr q q qs este o factorizare pentru m. Teorema fundamentalǎ a aritmeticii spune cǎ factorizarea în prime a oricǎrui întreg pozitiv este unicǎ, abstractie fǎcând de ordinea factorilor. Demonstratie: Se admite cǎ un întreg n are douǎ factorizǎri diferite. Simplificând cu primele comune, egalitatea celor douǎ reprezentǎri se aduce la forma p p pr = q q qs cu primele pi şi qj diferite pentru orice i şi orice j. Dar p q q qs impune pe p ca divizor al unuia dintre factorii qj şi atunci p = qj, ceea ce este contradictoriu. Cel mai mic multiplu comun al întregilor m şi n, lcm(m, n) este cel mai mic numǎr întreg pozitiv care este un multiplu atât pentru m cât şi pentru n. Fiind date factorizǎrile lui m şi n (cu unii exponenti ei, fj posibil nuli) m = pe pe... ptet, n = pf pf... ptf t cel mai mare divizor comun şi cel mai mic multiplu comun sunt min( et, f t ) min( e, f ) min( e, f ) gcd(m, n) = p p... pt max( e, f ) max( e, f ) max( e, f ) t t p... pt lcm(m, n) = p Deoarece ei + fi = min(ei, fi) + max(ei, fi), rezultǎ cǎ mn = gcd(m, n) lcm(m, n). Algoritmul lui Euclid este o metodǎ eficientǎ de a afla gcd(m, n) fǎrǎ 9

30 factorizare, astfel cǎ cel mai mic multiplu comun lcm(m, n) poate fi calculat cu usurintǎ. Conceptele de divizibilitate, primalitate, cel mai mare divizor comun şi cel mai mic multiplu comun apar şi în alte capitole de algebrǎ. Un inel este o structurǎ algebricǎ cu opearatii de adunare şi înmultire cu proprietǎti rezonabile. Un domeniu cu factorizare unicǎ este un inel în care teorema factorizǎrii unice este satisfǎcutǎ. Un inel care are un algoritm de împǎrtire care produce un rest care este mai mic decât împǎrtitorul este numit domeniu euclidian. Orice domeniu euclidian este totodatǎ un domeniu de factorizare unicǎ şi demonstratia este analogǎ demonstratiei de mai sus conform cǎreia orice întreg are o factorizare în prime unicǎ. Un corp este un inel în care orice element nenul are un invers multiplicativ (un reciproc). Cel mai restrâns corp este GF(): el are elementele {, }, operatia aditivă sau-exclusiv (XOR), operatia multiplicativă si (AND). Un inel important pentru codurile corectoare de erori îl formeazǎ polinoamele cu coeficienti în GF(). Dacǎ p este un numǎr prim, atunci orice întreg a cuprins între şi p are un invers multiplicativ modulo p, adicǎ existǎ un întreg i astfel încât ai = mod p. Demonstratie: Se considerǎ primii p multipli ai lui a, {ai: i =,,, p }. Se aratǎ mai întâi cǎ fiecare multiplu are un rest distinct modulo p. Dacǎ ai = aj mod p cu i < j < p atunci aj ai = a(j i) este un multiplu de p şi p (j i) deoarece p nu este divizor al lui a. Dar j i < p asa încât j i = şi j = i. Aceasta aratǎ cǎ multimea {ai mod p: i =,,, p } contine p elemente distincte din multimea de p numere {,,, p }, astfel cǎ prin principiul pigeonhole7, pentru un i, ai = mod p. De aici rezultǎ cǎ întregii modulo p formeazǎ un corp (un inel în care orice element nenul are un invers multiplicativ) dacǎ (si numai dacǎ) p este prim. Teorema restului chinezesc. Fie m,, mr întregi pozitivi, doi câte doi relativ primi şi fie m = mm mr. Pentru orice secventǎ de întregi a,, ar astfel încât ai < mi, existǎ exact un întreg a astfel încât a < m şi a = ai mod mi ( i r). Demonstratie: În timp ce x parcurge m întregi distincţi {,, m }, secventele de r resturi (x mod m,, x mod mr) parcurg toate cele m = mm mr valori posibile, din care exact una trebuie sǎ fie (a,, ar) pe acelasi principiu pigeonhole. De fapt, existǎ o formulǎ explicitǎ pentru a în functie de a,, ar. Fie Mi = (m/mi)ϕ(mi) mod m, cu ϕ( ) functia totient a lui Euler definitǎ mai jos. Astfel r i= j M i mod a j = δ ij = a = ai M i mod m i j i= 7 În matematică, principiul pigeonhole spune că dacă n obiecte sunt depuse în m cutii (pigeonholes) si n > m, atunci cel putin o cutie trebuie să contină mai mult de un obiect. 3

31 Numǎrul de întregi între şi un întreg pozitiv n, care sunt relativ primi cu n este cunoscut ca functia totient a lui Euler şi se noteazǎ cu ϕ(n). Cu factorizarea n = pe pe... ptet, pentru ϕ(n) existǎ o formulǎ generalǎ destul de simplǎ ϕ ( n) = ϕ ( pe )ϕ ( pe )...ϕ ( ptet ) = t i= t ( pi ) piei = n pi i= în particular, ϕ(n) = p dacǎ n = p, un numǎr prim şi ϕ(n) = (p )pe = ( /p)pe dacǎ n = pe, o putere a unui numǎr prim. Întregii relativ primi cu n formeazǎ un grup multiplicativ cu ϕ(n) elemente. Cu alte cuvinte, produsul a douǎ numere întregi de acest gen este şi el relativ prim cu n, numǎrul este elementul neutru la înmultire şi fiecare astfel de întreg are un invers multiplicativ. O functie f(n), cum este ϕ(n), pentru care f(mn) = f(m)f(n) ori de câte ori m şi n sunt numere mutual prime se numeste functie multiplicativǎ. O altǎ functie multiplicativǎ utilǎ este functia Möbius definitǎ mai departe. Un numǎr este liber de pǎtrate dacǎ nu este divizibil cu vreun numǎr care este un pǎtrat, adicǎ nu are nici un divizor de forma a. Altfel spus, un numǎr este liber de pǎtrate dacǎ şi numai dacǎ factorizarea primǎ a lui este de forma pp pt fǎrǎ ca vreun factor prim sǎ aparǎ mai mult de o datǎ. Functia Möbius µ(n) este definitǎ ca µ ( n) = ( )t n= n nu este liber de patrate, adica, pentru un prim p, p n n = p p... pt este produsul a t prime distincte De exemplu, µ() = µ(3) = µ(5) =, µ(4) =, µ(6) =. Un fapt important care va fi stabilit mai târziu este acela cǎ existǎ polinoame ireductibile de orice grad, peste orice corp finit. De fapt, se poate gǎsi numǎrul exact de polinoame ireductibile folosind formula de inversiune a lui Möbius: g ( n) = f ( d ) f ( n) = d n n µ g (d ) = d d n d n n µ (d ) g d cu toate sumele luate pe toti divizorii d ai lui n (inclusiv şi n). De exemplu, divizorii lui pot fi aranjati în urmǎtoarea latice a divizibilitǎtii. Nodurile grafului sunt etichetate cu divizorii lui, iar arcele sunt etichetate cu divizorii primi

32 Imediat în tabel sunt date douǎ exemple de utilizare a formulei de inversare Möbius pentru divizori ai lui. d m(d) g(d) g(n/d) g(d) g(n/d) f(d) Mai întâi, pentru f(n) = n valorile lui g(d) sunt arǎtate în tabel. Se pot utiliza valorile g(d) din tabel pentru a verifica formula de inversiune a lui Möbius pentru f(): µ g (d ) = d d = µ()g() + µ(6)g() + µ(4)g(3) + µ(3)g(4) + µ()g(6) + µ()g() = = g() g(4) g(6) + g() = = = f() Al doilea, pentru g(n) = n valorile lui f(d) pot fi calculate utilizând formula de inversiune Möbius şi sunt cuprinse în acelasi tabel. În general, dacǎ g(n) este n atunci f(n) = d n n µ g ( d ) = n + d n µ g ( d ) n d d n, d < n d d < n d = n (n ) =. Aceastǎ inegalitate aratǎ faptul cǎ un corp GF( n) cu n elemente are cel putin douǎ elemente de gradul n astfel încât existǎ totdeauna un polinom ireductibil cu coeficienti binari, de gradul n. Algoritmul lui Euclid şi împărţirea în corpuri finite Cel mai mare divizor comun al unei perchi de întregi r şi s (gcd(r, s) greatest common divisor) este cel mai mare întreg care divide atât pe r cât şi pe s. Algoritmul lui Euclid este o metodă eficientă de a găsi gcd(r, s); este mult mai rapid decât factorizarea lui r şi s urmată de reţinerea factorilor comuni. Ca produs secundar al algoritmului lui Euclid, se pot găsi întregii a şi b astfel încât d = gcd(r, s) = ar + bs. Dacă gcd(r, s) = atunci algoritmul produce valoarea reciprocă (inversul multiplicativ) a(l) lui r în inelul întregilor modulo s. Idea algoritmului lui Euclid este de a reduce calculul lui gcd(r, s) pentru r, s > la calculul lui gcd(r, s ) cu perechea de numere (r, s ) mai mici decât cele din perechea (r, s). Mai mici înseamnă că ambele componente sunt în relatia r r, s s, dar fie r < r, fie s < s. Dacă r < s atunci (s mod r) < r asa încât (r, s ) = (r mod s, r) reprezintă o problemă mai mică potrivit acestei definitii. 3

33 Algoritmul lui Euclid generează o secvenţă descrescătoare r > r > > rn > în care fiecare ri este obtinut din două numere anterioare prin ri = ri mod ri şi valoarea ultimă este rn = gcd(r, s). Resturile sunt definite iterativ astfel: s r r... rn rn = Qr + r = Qr + r = Q3r + r3... = Qnrn + rn = Qn + rn < r < r < r < r < r3 < r... < rn < rn Procedura se opreste după un număr finit de pasi deoarece fiecare rest este un număr pozitiv mai mic decât restul precedent. Resturile succesive satisfac o relatie de recurenţă liniară ri = ri Qiri cu conditiile initiale r = s şi r = r. Decurge de aici că fiecare divizor comun al numerelor ri şi ri divide şi pe ri şi fiecare divizor comun al numerelor ri şi ri divide şi pe ri. Asadar gcd(ri, ri ) = gcd(ri, ri ) pentru orice etapă i. În particular, rn = gcd(rn, rn ) = gcd(r, r ) = gcd(r, s). Fiecare rest ri este o combinatie liniară întreagă a celor două resturi anterioare. Astfel, tot inductiv, restul ultim este o combinatie liniară a primelor două resturi r = r şi r = s, adică rn = gcd(r, s) = ar + bs, cu a şi b întregi. (Evident, a şi b sunt de semne diferite.) Coeficientii a şi b pot fi calculati iterativ prin generarea secventelor {ai} şi {bi} astfel ri = air + bis pentru i =,,,, n Valorile initiale pentru {ai} şi {bi} sunt evident a =, b = şi a =, b =. Perechile ai, bi se pot determina din ai, ai, bi, bi astfel ri = Qiri + ri = Qi(ai r +bi s) + (ai r +bi s) = = ( Qiai + ai )r + ( Qibi + bi )s = air + bis Se observă că secventele {ai} şi {bi} satisfac pe etape aceeasi relatie de recurenţă care defineste şi secvenţa de resturi {ri}: ai = Qiai + ai bi = Qibi + bi Exemplu: Stabilirea numerelor a şi b astfel încât gcd(7, 37) = 7a + 37b. ri Qi 5 33 ai bi 3 5 6

34 Verificarea rezultatului: 7 ( 3) = + =. O aplicatie importantă a algoritmului lui Euclid extins este calculul reciprocelor în corpuri finite GF(p), cu p un număr prim. Dacă r este un element nenul din GF(p) atunci < r < p şi r este relativ prim cu p, asa încât gcd(r, p) =. Algoritmul lui Euclid în varianta extinsă produce întregii a şi b astfel încât = ar + bp. Asadar, reciprocul elementului r este r = a mod p. Exemplul parcurs mai sus arată că reciprocul lui 7 în GF(37) este 3 = 4. La utilizarea algoritmului lui Euclid pentru aflarea de valori reciproce în GF(p), coloana bi este numai pentru verificare. Se poate arăta că valoarea an dată de algoritm este totdeauna mai mică (în modul) decât p, astfel că a mod p este fie a, fie p + a. Împărţirea simplificată Algoritmul lui Euclid în descrierea de mai sus implică uzual împărtiri repetate. Pentru a garanta că restul este mic, ri < ri, câturile trebuie definite ca Qi = ri /ri. În fapt, sunt suficiente şi divizări mult mai grosiere şi alte alegeri pentru Qi pot fi mai eficiente din punct de vedere al calculelor. Alegând pe Qi ca puterea lui cea mai mare dar inferioară raportului ri /ri, se obtine o implementare a algoritmului lui Euclid a cărui complexitate este aproape la fel cu aceea a algoritmului uzual de împărtire binară. Exemplu: Aflarea reciprocei lui 3 în GF(9) prin diviziune incompletă. ri Qi 6 ai bi Asadar, în GF(9) valoarea reciprocă a lui 3 este 7 = 9. O altă metodă de calcul al celui mai mare divizor comun (gcd), care evită împărtirea este algoritmul binar gcd datorat lui Stein. Algoritmul lui Euclid pentru polinoame Algoritmul lui Euclid poate fi utilizat şi pentru calculul divizorului comun cel mai mare al polinoamelor cu coeficienti într-un corp. Algoritmul euclidian extins pentru polinoame produce polinoamele a(x) şi b(x) astfel încât gcd(r(x), s(x)) = a(x)r(x) + b(x)s(x) 34

35 Dacă r(x) şi s(x) sunt relativ prime, atunci a(x) este reciprocul lui r(x) în inelul polinoamelor mod s(x). Dacă s(x) este ireductibil, atunci orice polinom nenul r(x) de grad mai mic decât al lui s(x) este relativ prim cu s(x), astfel că toate polinoamele nenule din inelul polinoamleor mod s(x) au un reciproc, un invers multiplicativ. Decurge de aici că polinoamele cu aritmetica modulo un polinom ireductibil formează un corp. Exemplu: A se afla reciprocul lui x3 + x modulo x4 + x + peste GF(). ri(x) x4 + x + x3 + x x + x + x Qi(x) x+ x x+ x ai(x) x+ x + x + x3 + x ri(x) Qi(x) ai(x) Asadar, (x3 + x) mod (x4 + x + ) = x3 + x. Tabloul al doilea contine reprezentarea sintetică a polinoamelor ca vectori de biti (primul, cel mai semnificativ). Reprezentarea binară este naturală pentru implementarea pe calculatoare de aritmetici polinomiale atât software cât şi hardware. Adunarea şi scăderea sunt simple operatiuni sau-exclusiv bit-cu-bit, multiplicarea şi împărtirea cer pasi de deplasare şi operatii sau-exclusiv. Implementarea algoritmului lui Euclid pentru polinoame poate fi simplificată prin alegerea câturilor Qi(x) ca fiind monoame xj şi nu rezultatul unei împărtiri complete ri /ri. Această versiune a algoritmului necesită uzual mai multi pasi decât versiunea cu obtinerea lui Qi(x) prin divizarea polinomială completă, dar calculul câtului, al restului şi al lui ai(x) este mult facilitat la fiecare pas. Exemplu: A se găsi reciprocul lui x3 + x + modulo x5 + x + în GF() prin divizări sintetice incomplete. ri Qi ai Asadar, (x3 + x + ) mod (x5 + x + ) = x4. Complexitatea calculelor pentru algoritmul lui Euclid O cale de a evalua timpul de calcul consumat de algoritmul lui Euclid pentru întregi constă în a număra pasii de diviziune. Un pas de divizare reduce 35

36 problema cu foarte putin când câtul este mic, de pildă când Qi =. Dar în medie, resturile din algoritmul euclidian descresc exponential la o rată nu mai mică decât φ = ( + 5 )/,683 (celebrul număr cunoscut ca proportia de aur). Cazul cel mai dezavantajos pentru algoritmul lui Euclid este calculul celui mai mare divizor comun (gcd) pentru doi termeni succesivi ai sirului Fibonacci. Numerele Fibonacci sunt definite de relatia de recurenţă Fn = Fn + Fn cu conditiile de start F =, F =. Primele câteva numere:,,,, 3, 5, 8, 3,, 34, 55, 89. Se poate arăta că Fn + şi Fn + alcătuiesc cea mai mică pereche de numere pentru care calculul gcd necesită n pasi de divizare. Exemplu: Este uşor a arăta că gcd(fn +, Fn + ) =. (Un fapt amuzant: gcd(fm, Fn) = Fgcd(m, n).). Algoritmul lui Euclid consumă numai câtiva pasi pentru a arăta aceasta. Se ia ca exemplu F8 = şi F9 = 34. ri Qi ai bi ri Qi ai bi ri 34 Qi 4 ai 3 bi Algoritmul lui Euclid cere mai multi pasi pentru a găsi gcd(34, ) decât a găsi gcd pentru perechile de numere mai mari, vecine (35, ) şi (34, ). Calculul reciprocelor în GF(m) folosind algoritmul lui Euclid extins pentru polinoame poate fi efectuat în cca. m cicluri ale ceasului uzând de deplasări de m biti şi de sau-exclusiv. Intrările algoritmului lui Euclid sunt p(x), polinomul prim peste GF() de gradul m care defineste aritmetica în GF(m) şi r(x), un polinom de grad inferior lui m al cărui reciproc în GF(m) se calculează. Fiecare pas de diviziune de polinoame produce un rest al cărui grad este mai mic decât gradul restului anterior. Sunt necesari cel mult m pasi de diviziune pentru a obtine gcd (care e cunoscut în avans a fi ) şi polinomul a(x) care satisface relatia a(x)r(x) = mod p(x). Unii pasi de diviziune cer mai multe cicluri deoarece împărtirea printr-un polinom de grad mult mai mic decât cel al împărtitorului reclamă cicluri suplimentare. Dar în acest caz, restul rezultat este de grad mic. Calculele în general constă într-un amestec de pasi de diviziune facili şi dificili, dar numărul total de cicluri necesar est O(m) în cel mai rău caz. (Constanta multiplicativă ascunsă în notatia O(m) este mică, apropiată de într-o implementare îngrijită.) De la grupuri la corpuri 36

37 Această sectiune se ocupă de coduri bloc liniare. Vectorii cuvinte de cod sunt transformări liniare ale vectorilor mesaj: c = mg. Cuvintele de cod c sunt vectori cu n componente (n-tuple). Mesajele m sunt vectori cu k componente (k-tuple). Matricea G, matricea generatoare a codului are dimensiunile k n. Operatiile cu c, m, G sunt adunarea, scăderea, înmultirea si împărtirea. Structurile algebrice utilizate în codarea algebrică sunt de la cele mai complexe la cele mai simple spatiile vectoriale, corpurile, inelele si grupurile. Polinoamele cu coeficienti si matricile cu elemente într-un corp sunt de asemenea foarte importante. Grupuri Definitie: Un grup este o structură algebrică (G, ) compusă dintr-o multime G si o operatie care satisfac axiomele următoare:. Închidere: pentru orice a, b din G, a b apartine lui G.. Asociativitate: (a b) c = a (b c) = a b c. 3. Existenta uni element neutru e astfel încât e a = a e = a. 4. Existenta inverselor: pentru orice element a din G există un element a astfel încât a a = a a = e. Exemple de grupuri: permutările unei multimi finite, translatiile si rotatiile din plan, numerele (întregi, rationale, reale, complexe) cu operatia de adunare, întregii cu adunarea modulo m (grupuri finite), întregii relativ primi cu m si multiplicarea modulo m (grupuri finite). Alte exemple de grupuri: Grupurile numerice sunt de obicei comutative (abeliene), grupurile de permutări nu sunt comutative. Cel mai restrâns grup nonabelian este cel alcătuit din cele 3! = 6 permutări de 3 obiecte, S3. Acest grup de permutări poate fi reprezentat prin următoarele matrici de permutare 3 3:,,,,,. Exemplu de produs necomutativ: 37

38 = = Fapt: orice grup este un subgrup (o submultime care este grup) al unui grup de permutări. Proprietăti ale grupurilor Orice grup are un element neutru unic. Orice element al unui grup are un invers unic. Inversul elementului a b este b a. Posibilitatea de simplificare: din ab = ac b = c si din ba = ca b = c. Grupuri finite Definitie: Ordinul unui grup finit este numărul de elemente din grup. Pentru orice întreg n există cel putin un grup de ordinul n: Z/(n) = {,,, n }, întregii cu adunarea modulo n. Cum se poate arăta că întregii cu operatia de adunare modulo n formează un grup? Primele trei axiome sunt evident satisfăcute:. Închiderea: (a + b) mod n < n.. Elementul neutru este deoarece a + = + a = a. 3. Inversul aditiv al lui a este (n a) mod n = { n a a> a =. Asociativitatea decurge din lema fundamentală a calculului modular. Lemă: Orice formulă întreagă care contine numai operatorii +, si poate fi calculată modulo n folosind reduceri modulo n ale oricărei subexpresii. Demonstratie: Lema se demonstrează prin inductie. Subgrupuri Definitie: Un subgrup al unui grup G este o submultime H a lui G care este ea însăsi grup cu operatia din G: H este închisă la operatia din G. H contine elementul neutru. H contine inversul oricărui element din H. Un subgrup propriu este un subgrup altul decât {e} si G. 38

39 Numărul de elemente ale unui subgrup propriu H satisface inegalitatea < H < G în care S este numărul de elemente dintr-o multime S, cardinalul acelei multimi. De fapt, H divide pe G. Teorema lui Lagrange: Ordinul unui subgrup (propriu) este un divizor (propriu) al numărului G. Exemple de subgrupuri Două din cele cinci grupuri abeliene de ordinul 6. G = Z6 = {,,, 5} cu adunarea modulo 6. G are numai un subgrup cu 8 elemente, multimea întregilor pari {,,, 4}. G = Z4 = {, }4, vectorii de 4 biti cu adunarea sau-exclusiv bit-cu-bit. G are mai multe subgrupuri de 8 elemente, inclusiv {} {, }3 si multimea de vectori binari cu 4 componente de paritate pară. Alte grupuri de ordinul 6 sunt Z8 Z, Z4 Z4 si Z4 Z Z. Subgrupuri generate de un element Subgrupul generat de o multime S G este cel mai mic subgrup al lui G care contine toate elementele lui S. Subgrupul generat de un element a este 39

40 e, a, a, a a = a, (a ) = a, si toate celelalte puteri negative sau pozitive ale lui a, adică {ai i Z}. Într-un grup finit, unele elemente din {e, a, a, a3,...} apar de două (sau mai multe) ori. Se admite că ai = ai + n, i, n >, cu i primul exponent pentru care apare repetitia si n cel mai mic număr pentru acel i. Multiplicând egalitatea cu a i = (ai) se obtine e = an. Astfel, subgrupul generat de a este {e, a, a,, an }. ai j i j i j Dacă i, j < n atunci a (a ) = i j + n. a i< j Subgrupul generat de a seamănă cu Zn. Ordinul lui a este ordinul subgrupului generat de a. Codomenii Un subgrup H poate fi considerat un subspatiu al lui G, de dimensiune mai redusă. H poate fi deplasat prin translatie dacă se adaugă un element fix g fiecărui element din H. Mulţimile acestea obtinute prin translatie se numesc codomenii. Definitie: Un codomeniu la stânga al unui subgrup H este g H = {g h h H}. Similar, un codomeniu la dreapta al subgrupului H este H g = {h g h H}. Într-un grup care nu este comutativ, codomeniile la stânga si la dreapta ar putea fi diferite. Descompunerea în codomenii Lemă: Orice element al lui G apartine exact unui codomeniu al subgrupului H. Demonstratie: Se discută cazul codomeniilor la stâga. Cazul codomeniilor la dreapta este similar si demonstratia este practic aceeasi. Evident g = g e apartine cel putin unui codomeniu si anume lui g H. Urmează a se dovedi faptul că două codomenii distincte sunt disjuncte. Se presupune că g se regăseste în două codomenii, g H si g H. Se poate scrie g = g h = g h cu h, h H de unde g = g h h. 4

41 Acum, pentru orice h3 din H, g h3 = (g h h ) h3 = g (h h h3) g H. Faptul acesta spune că elementele lui g H apartin lui g H si g H g H. La fel se arată că g H g H. În concluzie cele două codomenii se suprapun deplin, altfel spus: sunt identice. Teorema lui Lagrange Prin proprietatea de simplificare, există o corespondentă biunivocă între H si g H. Astfel fiecare codomeniu are acelasi număr de elemente ca si subgrupul însusi. Deoarece codomeniile sunt disjuncte, pentru orice grup finit G si orice subgrup H, G = H (numărul de codomenii ale lui H). Teorema lui Lagrange: Ordinul oricărui subgrup (propriu) al unui grup finit este un divizor (propriu) al ordinului grupului. Corolar: Un grup de ordin prim nu are subgrupuri proprii. Corolar: Ordinul unui element oarecare este un divizor al ordinului grupului. Reciproca teoremei lui Lagrange nu este totdeauna adevărată. Fiind dat un divizor d al lui G nu există cu necesitate un subgrup al lui G de ordinul d. Totusi, dacă G este abelian, atunci există un subgrup de ordinul d. O reciprocă partială este teorema lui Cauchy care spune că dacă G are un divizor prim p atunci G are un element de ordinul p. Inele Definitie: Un inel este o multime R cu operatiile binare + si care satisfac axiomele următoare:. (R, +) este grup comutativ. Asociativitatea multiplicării: (a b) c = a (b c) 3. Distributivitate: a (b + c) = (a b) + (a c), (b + c) a = (b a) + (c a). (Se dau două relatii de asociativitate deoarece multiplicarea poate fi necomutativă) Iată un exemplu de proprietate evidentă care este adevărată pentru toate inelele. Propozitie: În orice inel, a =. Demonstratie: Conform legii distributivitătii, a = ( + ) a = ( a) + ( a) = a prin scăderea lui a din ambele părti ale egalitătii. Inele importante În acest curs sunt utilizate cu precădere câteva inele: Inelul întregilor: Z = {, 3,,,,,, 3, } Inelul întregilor modulo m: Zm = {,,, m } Inelul polinoamelor cu coeficienti într-un corp: F[x] = { f + fx + fx + + fnxn n, fi F} 4

42 Inelul polinoamelor peste un corp modulo un polinom prim p(x) de gradul m Matricile n n cu coeficienti într-un corp. Sunt unele similitudini, dar si diferente între inelul întregilor si inelul polinoamelor binare. Similitudini: Elementele pot fi reprezentate prin siruri de biti Multiplicarea prin algoritmi deplasare-şi-adunare. Diferente: Aritmetica pentru polinoame nu necesită transfer Factorizarea polinoamelor binare este facilă, factorizarea întregilor pare dificilă. Inele cu proprietăti suplimetare Prin adăugarea unor proprietăti suplimentare inelelor, se ajunge la corpuri. Inel comutativ: a b = b a. Matricile sunt un exemplu familiar de inel necomutativ: = = Unele subgrupuri ale grupului matricilor sunt comutative. Asa sunt numerele complexe a b c d = ac bd ad bc = c d a b c c b a b a d ad + bc ac bd d Inel cu unitate: Există un element astfel încât a = a = a. Inel fără element unitate: multimea întregilor Z = {, 4,,, +, +4, }. Dacă există, elementul unitate este unic. Inverse si divizori Inversul sau reciprocul lui a: un element a astfel încât a a = a a =. Dacă există un invers, ele este unic. Un element cu un invers este numit inversabil. Inversabile în inele familiare: Întregii ±. Polinoame peste un corp: constantele nenule. Matrici peste un corp: matrici cu determinantul nenul. Divizor: Dacă c = a b atunci a si b sunt divizori ai lui c. Unitătile dintr-un inel sunt divizori ai lui. Un element c diferit de unităti este ireductibil ori de câte ori dacă c = a b atunci ori a ori b este unitar. Divizori al lui zero: Dacă a b = dar a si b, atunci a si b sunt divizori ai lui zero. Întregii si polinoamele peste un corp nu au divizori ai lui zero. 4

43 Domeniu de integritate, inel cu împărtire, corp Domeniu de integritate: un inel comutativ fără divizori ai lui zero. Domeniile de integritate au multe proprietăti în comun cu întregii. De pildă, multimea întregilor este submultime a numerelor rationale, p p, q Z, q q Q= polinoamele sunt o submultime a multimii fractiilor rationale p( x) p ( x ), q ( x F [ x ], q ( x ) q( x) F(x) = Câtul de elemente din orice domeniu de integritate alcătuiesc un corp. Inel cu împărtire sau corp asimetric: inel necomutativ în care orice element nenul are un invers multiplicativ. Cel mai faimos corp asimetric: cuaternionii lui W.Hamilton extensie a numerelor complexe obtinută prin adăugarea a încă două elemente imaginare, j şi k, astfel încât i = j = k = ijk = Corp: un inel cu împărtire comutativ. Corpuri, polinoame si spatii vectoriale Un corp constă într-o multime F dotată cu operatorii asociativi si comutativi + si care satisfac axiomele următoare: 4. (F, +) este grup comutativ 5. (F {}, ) este grup comutativ 6. Distributivitate: a(b + c) = (ab) + (ac) = ab + ac. Corpurile au 4 operatii aritmetice de bază: +, şi inversele lor si. Exemple de corpuri infinite: numerele rationale Q, numerele reale R, numerele complexe C, functiile rationale. Corpurile finite, toate posibile: GF(p) = întregii cu aritmetica modulo un număr prim p GF(pm) = polinoamele peste GF(p) cu aritmetica modulo un polinom prim de gradul m. Corpul finit GF(p) Unicul corp finit cu p elemente (p prim) este Zp = {,, +,, p } = {,,, p } cu adunarea si multiplicarea mod p. Acest corp este numit GF(p). Asociativitatea si comutativitatea adunării si multiplicării mod p decurge din proprietătile corespunzătoare din aritmetica întregilor. Singura axiomă care rămâne de verificat este aceea referitoare la existenta inveselor multiplicative. 43

44 Dacă p este un număr prim, atunci gcd(r, p) = pentru orice r pozitiv si mai mic decât p. Deoarece gcd(r, p) = ar + bp pentru anumiti întregi a si b, = gcd(r, p) = ar + bp ar = bp mod p Asadar, reciprocul lui r în GF(p) este a mod p. Polinoame Polinoamele peste un corp F, notat F[x] sunt expresii de forma f + fx + fx + + fnxn, n N, fi F F[x] cu aritmetica uzuală a polinoamelor este un inel cumutativ cu unitate si fără divizori ai lui zero, adică un domeniu de integritate. Unghiuri diferite de vedere a polinomului f(x) cu coeficienti într-un corp F: Functie: x f + fx + fx + + fnxn cu x, f, f,, fn F Serie finită de puteri: f + fx + fx + + fnxn + xn + + Secventă finită: (f, f,, fn -, fn) cu elemente din F. Serie cu un număr finit de termeni nenuli: (f, f,, fn -, fn,,,...). Varianta functională nu se potriveste corpurilor finite; polinoamele binare, de pildă, sunt extrem de multe dar numai = 4 functii de la {, } la {, }. Definitie: Gradul unui polinom este exponentul termenului cu cea mai mare putere a nedeterminatei x. Prin conventie, gradul lui este. Proprietăti ale gradelor polinoamelor: grad{f(x) ± g(x)} max[grad{f(x)}, grad{g(x)}] grad{f(x)g(x)} = grad{f(x)} + grad{g(x)} grad{f(x)/g(x)} = grad{f(x)} grad{g(x)} cu conditia ca g(x). Polinoame prime Definitie: Un polinom monic este un polinom cu coeficientul principal unitar. Exemplu: x3 + x + 3x + 4 este monic, x3 + 4x + 5x + 7 nu este monic. Orice polinom monic nu este nul. Toate polinoamele nenule peste GF() sunt monice. Definitie: Un polinom ireductibil este un polinom care nu are divizori proprii (divizori de grad mai mic). Definitie: Un polinom prim este un polinom monic ireductibil. Exemple: Peste corpul numerelor reale, x + este ireductibil, dar prim este x + /. i i x nu este Peste corpul numerelor complexe, x + / = x + prim. De observat că ireductibilitatea depinde de care anume coeficienti sunt admisi în polinoamele factor. Algoritmul împărtirii pentru polinoame 44

45 Pentru orice polinom dempărtit a(x) F[x] si pentru orice polinom împărtitor d(x) F[x] există un cât unic q(x) si un rest unic r(x) astfel încât a(x) = q(x)d(x) + r(x), cu grad{r(x)} < grad{d(x)} Se pot defini acum multiplii si divizorii polinoamelor întocmai ca la numerele întregi. Cel mai mare divizor comun al polinoamelor r(x) si s(x), gcd(r(x), s(x)) este polinomul monic de cel mai mare grad care este divizor comun al celor două polinoame si de cel mai mic grad de forma a(x)r(x) + b(x)s(x). Dacă p(x) este prim si grad{r(x)} < grad{p(x} = m atunci gcd(r(x), p(x)) =. a(x)r(x) + b(x)p(x) = a(x)r(x) mod p(x) = a(x) = r(x) mod p(x). Asadar, r(x) are un invers multiplicativ (un reciproc). Polinoamele peste F de grad inferior lui m cu aritmetica mod p(x) formează un corp. Dacă F este GF(p), atunci corpul finit GF(pm) constă în m-tuplele din GF(p). Corpul finit GF(4) Un polinom prim de gradul 4 peste GF() este x4 + x + si mai sunt alte două. Elementele lui GF(4) pot fi reprezentate prin polinoame sau prin siruri de biti (primul bit cel mai semnificaiv). De pildă: = + x = + x + x3 = x3 Puterile mai mari ale lui x pot fi reduse prin operatii cu resturi: x4 = x4 mod (x4 + x + ) = x + x x3 = x + = Această unică ecuatie determină deplin multiplicarea în GF(4) definită utilizând această reprezentare. Tabelul de multiplicare pentru GF(4) 45

46 Spatii vectoriale Un spatiu vectorial este o multime V de vectori peste un corp de scalari F, cu un operator binar + pe V si un produs scalar-vector care satisfac axiomele:. (V, +) este un grup comutativ.. Există un scalar () pentru care v = v pentru orice vector v din V. 3. Asociativitate: (aa) v = a (a v). 4. Distributivitate: a (v + v) = a v + a v, (a+ a) v = a v + a v. Revenind la definitia unui corp: o multime F cu operatorii asociativi si comutativi + si care satisfac axiomele:. (F, +) este un grup comutativ. (F {}, ) este un grup comutativ 3. Distributivitate: a (b + c) = (a b) + (a c) se observă similitudinea axiomelor pentru spatii vectoriale si pentru corpuri. Un corp este un spatiu vectorial peste el însusi de dimensiune. Acoperire, bază, independenţă liniară Definitie: Acoperirea unei multimi de vectori {v,, vn} este multimea tuturor combinatiilor liniare ale acelor vectori: {a v + + an vn a,, an F} Definitie: O multime de vectori {v,, vn} este liniar independentă (LI) dacă nici un vector din acea multime nu este o combinatie liniară a celorlalti vectori; echivalent, nu există o multime de scalari {a,, an} nu toti nuli astfel încât a v + a v + + an vn =. 46

47 Definitie: O bază pentru un spatiu vectorial este o multime de vectori LI care acoperă spatiul vectorial. Definitie: Un spatiu vectorial este finit dimensional dacă are o bază finită. Lemă: Numărul vectorilor dintr-un set liniar independent este cel mult egal cu numărul de vectori dintr-un set acoperitor. Teoremă: Toate bazele pentru un spatiu vectorial de dimensiune finită au acelasi număr de elemente. Astfel dimensiunea unui spatiu vectorial este binedefinită. Coordonatele unui vector Teoremă: Orice vector poate fi exprimat ca o combinatie linară unică a vectorilor din bază. Demonstratie: Se presupune că {v,, vn} este o bază si că a v + a v + + an vn = b v + b v + + bn vn. sunt două reprezentări distincte ale aceluiasi vector în baza dată. Atunci (a b) v + (a b) v + + (an bn) vn = Dar vectorii bazei sunt liniar independenti si (a b) =,, (an bn) =, de unde egalitatea coeficientilor şi unicitatea reprezentării. Se spune că V este izomorf cu spatiul vectorial Fn = {(a,, an) ai F} cu adunarea si multiplicarea scalară componentă cu componentă. Teoremă: Dacă V este un spatiu vectorial de dimensiune n peste un corp cu q elemente, atunci numărul de elemente din V este qn. Produs scalar si complement ortogonal Definitie: Un subspatiu vectorial (liniar) al unui spatiu vectorial V este o submultime W care este ea însăşi spatiu vectorial închisă la adunarea de vectori si la multiplicarea cu scalari. Teoremă: Dacă W este un subspatiu al lui V atunci dimensiunea lui W este mai mică sau egală cu dimensiunea lui V. Demonstratie: O bază {w,, wk} pentru subspatiul k-dimensional W poate fi extinsă la o bază a lui V prin adăugarea a n k vectori {vk +,, vn}. În consecintă relatia între dimensiunile lui W si V este cea din enuntul teoremei. Definitie: Produsul scalar (interior) al vectorilor a si b dintr-un spatiu vectorial V peste un corp F este (a,, an) (b,, bn) = ab + + anbn. Definitie: Două n-tuple sunt ortogonale dacă produsul lor scalar este zero. Definitie: Complementul ortogonal al unui subspatiu W de n-tuple este multimea W de vectori ortogonali fiecărui vector din W. v W dacă si numai dacă v w = pentru orice w W Teoremă (a dimensiunii): Dacă dim(w) = k atunci dim(w ) = n k. Teoremă: Dacă W este un subspatiu al unui spatiu vectorial finit dimensional, atunci W = W. 47

48 Transformări liniare si multiplicarea matricilor Definitie: O transformare liniară pe un spatiu vectorial V este o functie T care aplică vectori din V pe vectori din V astfel încât pentru orice vectori v, v si orice sclari a, a T(av + av) = at(v) + at(v). Orice transformare liniară T poate fi descrisă de o matrice M de dimensiunile n n. Coordonatele vectorului T(v,, vn) sunt componentele produsului vectormatrice (v,, vn)m. Fiecare componentă a lui w = vm este produsul scalar al lui v cu o coloană din M: n wj = vmj + + vnmnj = i= vi mij Iată un alt mod de a privi pe w = vm. Fie mi linia i din M. Atunci (v,, vn)m = vm + + vnmn Astfel vm este o combinatie liniară de linii ale lui M ponderate cu coordonatele lui v. Dacă v se află printre n-tuple, vm se află printre vectorii subspatiului generat de liniile lui M. Rangul unei matrici Definitie: O matrice pătrată este nesingulară dacă are inversă (multiplicativă). Definitie: Determinantul matricii A = (aij) este det A = σ ( )σ a iσ ( i )...ai nσ ( i n ) cu σ permutări ale multimii {,, n} si ( )σ semnl permutării σ. Teoremă: O matrice este nesingulară dacă si numai dacă determinantul ei este nenul. Definitie: Rangul unei matrici este dimensiunea celei mai mari submatrici nesingulare. Rangul unei matrici poate fi calculat eficient astfel:. Prin eliminarea Gauss se aduce matricea la forma (superior) triunghiulară.. Rangul este numărul de linii nenule ale matricei în forma (superior) triunghiulară. Teoremă: Rangul unei matrici este dimensiunea spatiului liniilor, care egalează dimensiunea spatiului coloanelor. Asadar, numărul de linii liniar independente este acelasi cu numărul de coloane liniar independente. Coduri bloc liniare si coduri grup 48

49 Definitie: Un cod bloc liniar peste un corp F este un subspatiu liniar al lui Fn cu n lungimea blocului pentru acel cod. Definitie: Un cod grup este un subgrup al n-tuplelor peste un grup aditiv. Fapte despre coduri bloc liniare si despre codurile grup. Într-un cod grup suma si diferenta cuvintelor de cod sunt cuvinte de cod. Într-un cod bloc liniar si multiplii scalari ai cuvintelor de cod sunt cuvinte de cod. Orice cod bloc liniar este un cod grup, dar nu si invers. Un cod grup binar este cod bloc liniar deoarece singurii scalari sunt si. Codurile cu verificare a paritătii sunt coduri bloc liniare peste GF(). Orice cod cu verificarea paritătii este definit de un set de ecuatii binare omogene. Dacă C este un cod bloc liniar peste GF(Q) de dimensiune k, atunci rata lui este R = logqqk/n = k/n. Ponderea minimă Ponderea Hamming wh(v) este numărul de componente nenule ale lui v. Fapte evidente: wh(v) = dh(, v) dh(v, v) = wh(v v) = wh(v v) wh(v) = dacă si numai dacă v =. Definitie: Ponderea minimă (Hamming) a unui cod bloc este ponderea cuvântului nenul cu cea mai mică pondere: wmin = w* = min{wh(c) : c C, c } Exemple de ponderi minime: Coduri cu verificarea simplă a partitătii: w* = Codurile cu repetitie: w* = n Codul Hamming (7, 4): w* = 3 (sunt 7 cuvinte de cod de pondere 3). Enumeratorul ponderilor: A(x) = + 7x3 + 7x4 + x7. Codul produs simplu: w* = 4. Distanta minimă este egală cu ponderea minimă Teoremă: Pentru orice cod liniar, d* = w*. Demonstratie: Se dovedeste că w* d* si w* d*. ( ) Fie c un cuvânt de cod nenul de pondere minimă. Vectorul nul este un cuvânt de cod astfel că w* = wh(c) = dh(, c) d*. ( ) Fie c c două cuvinte de cod dintre cele mai apropiate. Atunci c c este un cuvânt de cod nenul astfel că d* = dh(c, c) = wh(c c) w*. Din cele două inegalităţi demostrate rezultă că d* = w*. Relatia se mentine si pentru codurile grup deoarece în demonstratie se foloseste numai scăderea. 49

50 Este mai usor a găsi ponderea minimă decât a stabili distanta minimă deoarece minimizarea ponderii este uniparametrică. Căutarea prin calcul: se testează toti vectorii de pondere,, 3,.., până este găsit un cuvânt de cod. Şi determinarea distributiei ponderilor unui cod liniar este în general mai facilă decât determinarea distributiei distanţelor acelui cod. Matricea generatoare Definitie: O matrice generatoare a unui cod bloc liniar C de lungime a blocului n si de dimensiune k este o matrice G, k n, cu liniile alcătuind o bază pentru C. Fiecare cuvânt de cod este o combinatie liniară de linii ale matricii generatoare G. c = mg = [m m mk ][ gt gt gk T]T = = mg + mg mk gk. Deoarece G are rangul k, reprezentarea lui c este unică. Fiecare componentă a lui c este produsul scalar al vectorului m cu coloana corespunzătoare din G: cj = mg,j + mg,j mk gk,j. Ambele seturi de ecuatii pot fi folosite pentru codare. În ambele cazuri, fiecare simbol al cuvântului de cod necesită k multiplicări cu constante şi k adunări. Matricea de verificare a paritătii Definitie: Codul dual al lui C este complementul ortogonal C. Definitie: O matrice de verificare a paritătii pentru un cod bloc liniar C este o matrice H de dimensiunile r n cu liniile care parcurg (span) complementul ortogonal C. Evident, r n k. Exemplu: G si H pentru codul cu paritate simplă (5, 4). G= H = [ ] (H este matricea generatoare pentru codul cu repetitie (5, ) codul dual). Exemplu: G si H pentru codul Hamming ciclic (7, 4). G= H = (Un cod ciclic este un cod bloc liniar pentru care permutarea circulară a unui cuvânt de cod produce tot un cuvânt de cod). Cuvintele de cod sunt definite de H 5

51 Teoremă: Dacă C este un cod bloc liniar (n, k) cu matricea de verificare a paritătii H, atunci un n-tuplu c este cuvânt de cod dacă si numai dacă cht =. Demonstratie: ( ) Se admite că c este cuvânt de cod. Fiecare componentă a produsului cht este produsul scalar al lui c cu o coloană din HT, linie în H. Deoarece liniile din H sunt din C, oricare linie din H este ortogonală lui c. Asadar, fiecare componentă a produsului cht este chi =. ( ) Deoarece liniile lui H mătură (span) C, orice n-tuplu care satisface cht = aparţine complementului ortogonal C. Conform teoremei dimensiunii, C = C. Asadar, dacă cht = atunci c apartine codului C. ( ) În concluzie C constă din vectorii c care satisfac ecuatia cht =. Matrici generatoare si matrici de verificare a paritătii Uzual H se alege astfel încât să aibă n k linii independente si în anasamblu dimensiunile (n k) n. Uneori este convenabil sau elegant ca matricea de verificare a paritătii să aibă linii redundante (de exemplu la codurile BCH binare discutate mai departe). Fiecare linie a lui H corespunde unei ecuatii care trebuie verificată de toate cuvintele de cod. Deoarece fiecare linie a matricei G este un cuvânt de cod, pentru orice matrice de verificare a paritătii H, Gk n H rt n = k r (r n k) Fiecare din matricea k r corespunde unui cuvânt de cod si unei ecuatii. Invers, dacă GHT = si rangul lui H = n k atunci H este o matrice de verificare a paritătii. Cum se poate deduce H din G? H s-ar putea afla din G prin găsirea a n k solutii liniar independente ale ecuatiei GHT =. Ecuatiile acestea sunt usor de rezolvat atunci când G este sistematică. Matrici generatoare sistematice Definitie: O matrice generatoare sistematică este de forma p, p G = [P I] =, pk, p, n k p, n k pk, n k Avantajele matricilor generatoare sistematice: Simbolurile mesajului apar în cuvintele de cod separate, nu amestecate, în pozitiile cele mai din dreapta, n k,, n. Complexitatea codorului este redusă. Numai simbolurile de verificare trebuie calculate: cj = mg,j + mg,j + + mk gk,j (j =,, n k ) 5

52 Ecuatiile codorului pentru simbolurile de verificare produc usor ecuatiile de verificare a paritătii: cj cn kg,j cn k + g,j cn gk,j = (mi = cn k + i) Matricea de verificare a paritătii sistematică este usor de găsit: H = [I PT]. Matricea de verificare a paritătii sistematică Fiind dată matricea generatoare k n sistematică (v.mai sus), matricea de verificare a paritătii (n k) n corespunzătoare este H = [In k PT] = p, p, p, n k pk, pk, pk, n k (Semnele minus nu sunt necesare pentru corpurile de caracteristică, de pildă pentru GF(m)). Fiecare linie din H corespunde unei ecuatii satisfăcute de orice cuvânt de cod. Aceste ecuatii spun cum se calculează simbolurile de verificare c,, cn k în functie de simbolurile informationale cn k,, cn. Ponderea minimă si coloanele lui H Deoarece pentru orice cuvânt de cod c = (c c cn ), cht =, orice cuvânt de cod nenul stabileste o dependenţă liniară între o submultime de linii ale lui HT. Astfel (cht)t = HcT = ch + ch + + cn hn = este o dependenţă liniară între o submulţime de coloane din H. Teoremă: Ponderea minimă a unui cod bloc liniar este cel mai mic număr de coloane liniar dependente ale matricii de control al paritătii. Demonstratie: O submultime de w coloane liniar dependente corespunde unui cuvânt de cod de pondere w. Un set de coloane din H este liniar dependent dacă o coloană este o combinatie liniară de celelalte coloane. Un cod bloc liniar are w* dacă şi numai dacă o coloană a lui H este un multiplu al unei alte coloane. Codurile Hamming binare au w* = 3 deoarece H nu are coloane identice. O întrebare de bază: cum se poate stabili o matrice H astfel încât nici o combinatie de 5 (sau de 7 sau mai multe) coloane să nu prezinte dependenţă liniară? Calculul ponderii minime Rangul lui H este numărul maxim de coloane liniar independente. Rangul poate fi determinat într-un timp de O(n3) prin operatii liniare eliminarea Gauss. Distanta minimă este cel mai mic număr de coloane liniar independente. 5

53 Aflarea distantei minime este dificilă (NP-hard). Trebuie lucrat cu un număr foarte mare de submultimi de coloane. Soluţia: se proiectează coduri a căror distantă minimă poate fi verificată ca având limite inferioare dorite. Dimensiunea spatiului coloanelor lui H este n k. Astfel oricare n k + coloane sunt liniar dependente. Asadar, d* = w* n k + pentru orice cod bloc liniar. Aceasta este cunoscută ca limita Singleton. Exercitiu: Să se arate că limita Singleton se mentine pentru orice cod bloc (n, k), nu numai pentru codurile bloc liniare. Coduri separabile de maximă distantă Codurile care ating limita Singleton sunt numite coduri separabile de maximă distantă (MDS maximum-distance separable). Codurile cu repetitie satisfac limita Singleton cu egalitate: d* = n = (n ) + = (n k) + O altă clasă de coduri MDS o reprezintă codurile cu paritate simplă d* = = + = (n k) + Cele mai cunoscute coduri MDS nonbinare sunt codurile Reed-Solomon peste GF(Q). Parametrii unui cod Reed-Solomon sunt (n, k, d*) = (Q, Q d*, d*) n k = d*. Exercitiu: Arătati că codurile cu repetiţie si codurile cu paritate simplă sunt singurele coduri MDS binare netriviale. Coduri bloc liniare: recapitulare Un cod bloc liniar (n, k) este un subspatiu al unui corp finit Fn. Sumele şi diferentele cuvintelor de cod precum si multiplii cu scalari ai cuvintelor codului sunt la rândul lor cuvinte de cod. Un cod grup peste un grup aditiv G este închis sub operatiile de sumă si diferentă. Un cod bloc liniar (n, k) peste un corp finit F = GF(q) are M = qk cuvinte de cod si o rată de k/n. Un cod bloc liniar C poate fi definit prin două matrici: o matrice generatoare G si o matrice de verificare a paritătii H. Liniile matricii G sunt o bază pentru C cu C = {mg: m Fk}. Matricea H generează pe C, deci C = {c Fn: cht = }. Ponderea Hamming a unui n-tuplu este numărul componentelor nenule. Ponderea minimă w* a unui cod bloc este ponderea Hamming a cuvintelor nenule de pondere minimă. Distanta minimă a oricărui cod bloc liniar este egală cu ponderea minimă. Ponderea minimă a unui cod bloc liniar este cel mai mic număr de coloane ale matricii de verificare a paritătii liniar dependente. 53

54 Decodarea prin sindrom Codurile bloc liniare sunt mai simple decât codurile bloc în general: Codarea este o multiplicare vector-matrice. (Codurile ciclice sunt chiar mai simple se foloseste multiplicarea/împărtirea de polinoame). Decodarea este inerent neliniară. Un fapt: decodoarele liniare sunt foarte slabe. Totusi, câtiva pasi ai procesului de decodare sunt liniari: calculul sindromului, corectarea finală după ce au fost găsite pattern-ul erorii si localizarea erorilor, extragerea mesajului estimat din estimatul cuvântului de cod. Definitie: Vectorul eroare sau pattern-ul erorilor e este diferenta dintre n-tuplul receptionat r si cuvântul de cod transmis c. e=r c r=c+e De retinut: modelul fizic al zgomotului poate să nu fie de tip aditiv si distributia probabilistică a erorii e poate depinde de c. Se admite un model al erorilor de canal determinat de Pr[e]. Prin multiplicarea cu H a ecuatiei r = c + e se obtine s = rht = (c + e)ht = cht + eht = + eht = eht. Sindromul unui cuvânt receptionat r este vectorul s = rht. Sindromul lui r (cunoscut la receptie) este egal cu sindromul pattern-ului erorilor e (necunoscut de receptor dar estimabil). Decodarea constă în găsirea celui mai plauzibil pattern e astfel încât eht = s = rht. Plauzibilitatea depinde de caracteristicile erorilor. Pentru canale binare simetrice, cel mai plauzibil pattern însemnă cel mai mic număr de biti eronati. Decodorul selectează pattern-ul erorilor de cea mai mică pondere care satisface eht = s. Pentru canalele cu evenimente incidentale, pattern-urile de eroare sunt plauzibile dacă simbolurile eronate sunt grupate. Tabloul decodării prin sindrom constă în pasii următori:. Se calculează sindromul s = rht pentru n-tuplul receptionat.. Se stabileste cel mai plauzibil pattern de eroare e cu eht = s. 3. Se estimează cuvântul de cod transmis, c = r e. ˆG. 4. Se determină mesajul m din ecuatia de codare cˆ = m Numai pasul al doilea necesită operatii neliniare. Pentru valori mici ale diferentei n k, la pasul al doilea se pot utiliza căutarea în tabele. Pentru codurile BCH si Reed-Solomon, locatiile erorilor sunt zerourile unor anumite polinoame peste alfabetul canalului. Aceste polinoame locatoare ale erorilor sunt functii liniare de sindrom. O provocare: aflarea, apoi rezovarea acestor polinoame. Pasul al patrulea nu este necesar pentru codurile sistematice deoarece m este un fragment din estimatul lui c, imediat lizibil. 54

55 Decodarea prin sindrom: exemplu Un cod bloc liniar (8, 4) este definit de matricile sistematice H= G = Fie două mesaje si rezultatele codării lor m = [ ] c = [ ] m = [ ] c = [ ]. Se admite pattern-ul de eroare e = [ ] care se adaugă ambelor cuvinte de cod. Rezultatul: r = [ ] s = [ ] r = [ ] s = [ ] Sindromurile sunt aceleasi si se potrivesc pe coloana 6 a lui H. De aceea se corectează bitul 6. Codul din acest exemplu este un cod Hamming expandat, cu enumeratorul de ponderi A(x) = + 4x4 + x8. Matricea standard Decodarea prin tabele de sindromuri poate fi descrisă la fel de bine utilizând asa-numita matrice standard. Matricea standard a unui cod grup C este descompunerea în codomenii a lui Fn în raport cu subgrupul C. e e3 en c c + e c + e3 c + en c3 c3 + e c3 + e3 c3 + en cm cm + e cm + e3 cm + en. Prima linie este codul C, cu vectorul nul în prima coloană. Fiecare din celelalte linii este un codomeniu. 3. n-tuplul din prima coloană a unei linii este numit lider de codomeniu. Liderul de codomeniu se alege uzual a fi pattern-ul de eroare cel mai plauzibil, de pildă pattern-ul de eroare cu cea mai mică pondere. Decodarea cu matricea standard 55

56 Un cod bloc liniar (n, k) peste GF(Q) are M = Qk cuvinte de cod. Fiecare n-tuplu apare exact o dată în matricea standard. Asadar, numărul de linii N satisface relatia MN = Qn N = Qn k Toti vectorii dintr-o linie a matricii standard au acelasi sindrom. Există deci o corespondentă biunivocă între liniile matricii standard şi cele Qn k valori ale sindromului. Decodarea prin utilizarea matricii standard: se decodează cuvântul receptionat r la cuvântul de cod din topul coloanei care-l contine pe r. Regiunea de decodare pentru un cuvânt de cod este coloana cu acel cuvât de cod situat pe linia cea mai de sus. Decodorul scade liderul de codomeniu din vectorul receptionat pentru a obtine cuvântul de cod estimat. Matricea standard si regiunile de decodare Pondere Pondere Lider de codomeniu Pondere t Pondere peste t Cuvinte de cod Bula de rază Bula de rază Bula de rază t Vectori de pondere peste t Matricea standard: un exemplu Matricile generatoare si de verificare sistematice pentru un cod bloc liniar sunt G = H = Matricea standard are şase lideri de codomeniu de pondere si unul de pondere. La se găseste un script Perl care generează matricea standard alăturată. Codul este un cod Hamming scurtat. 56

57 Matricea standard: recapitulare Matricea standard este un aranjament al tuturor n-tuplelor după conceptia decodării. e e3 en c c + e c + e3 c + en c3 c3 + e c3 + e3 c3 + en cm cm + e cm + e3 cm + en Prima linie este codul C cu vectorul nul în prima coloană. Celelalte linii sunt fiecare câte un codomeniu. n-tuplul din prima coloană de pe fiecare linie se numeste lider de codomeniu. Cuvântul receptionat r este decodat la cuvântul de cod din topul coloanei care-l contine pe r. Regiunea de decodare pentru un cuvânt de cod este coloana care contine acel cuvânt de cod. Decodorul scade liderul de codomeniu din r pentru a obtine cuvântul de cod estimat. Decodarea prin sindrom: recapitulare Decodarea prin sindrom este apropiată de decodarea cu matricea standard.. Se calculează sindromul s = rht pentru n-tuplul receptionat.. Se găseste cel mai plauzibil pattern de eroare e cu eht = s. Acest pattern de eroare este lider al codomeniului care-l contine pe r. 3. Se estimează cuvântul de cod transmis: c = r e. Cuvântul de cod estimat c este în topul coloanei din matricea standard care-l contine pe r. 4. Se determină mesajul m din ecuatia de codare c = mg. În genral, m = cr unde R este o pseudoinversă a matricii G. Dacă codul este sistematic, atunci R = [(n k) k Ik k]t. Operatii neliniare reclamă numai pasul si sunt cele mai dificile conceptual. Surprinzător, efortul de calcul este dedicat în cea mai mare măsură evaluării sindromului. Limite asupra distantei minime Distanta minimă a unui cod bloc este măsură a capacitătii unui cod de a controla erorile. O distantă minimă mare garantează fiabilitatea în faţa erorilor aleatoare. 57

58 Totusi, un cod cu distantă minimă redusă poate fi fiabil dată fiind probabilitatea redusă de a transmite cuvinte de cod apropiate de alte cuvintele de cod. Distanta minimă se utilizează ca măsură a fiabilitătii unui cod deoarece: Un singur număr este mai usor de înteles decât o distributie de ponderi sau de distante. Capacitătile garantate de a detecta si de a corecta erori sunt, respectiv e = d*, t = (d* )/. Codurile algebrice descrise în aceste pagini sunt limitate de distanta minimă aceste coduri nu pot corecta mai mult de t erori chiar dacă există un cuvânt de cod foarte apropiat. Limita Hamming (sfere împachetate) Limita Hamming pentru un cod bloc (n, k) atunci când alfabetul canalului are Q caractere: Un cod corectează t erori dacă si numai dacă raza t în jurul cuvintelor de cod nu conduce la suprapuneri. Asadar Qk = numărul cuvintelor de cod (volumul spaţiului)/(volumul sferei de rază t) = Qn/V(Q, n, t) în care V(Q, n, t) este volumul (numărul de elemente ale) unei sfere de rază t în spatiul Hamming de n-tuple peste alfabetul de Q simboluri al canalului: V(Q, n, t) = + Cn(Q ) + Cn(Q ) Cnt(Q )t. După o rearanjare a inegalitătii se obtine o limitare inferioară asupra lui n k. Qn k V(Q, n, t) n k logqv(q, n, t) şi de aici o limitare superioară pentru rata R a codului R (/n)logq( + Cn(Q ) + Cn(Q ) Cnt(Q )t) Limitarea Hamming: exemplu Un pachet de date pentru comunicatii fără fir contine 9 de esantioane audio, 6 biti pentru două canale. Numărul de biti de informatie este 9 6 = 644. Legătura este un canal binar simetric cu o rată brută a erorilor de 3. t n k n Rata codului,983,98,978,975,97,97,967,965 Pr[> t erori]

59 ,96,96,958, Câti biti de protectie sunt necesari pentru o comunicare fiabilă? Limitarea Hamming arată că mai mult de 4% din redundanţă este necesară pentru a atinge o rată rezonabilă a erorilor per bit. Alte limitări asupra distantei minime Limita superioară McEliece-Rodemich-Rumsey-Welch (MRRW) R H(,5 δ ( δ ) ) în care H este functia entropie binară si δ = d*/n este distanta minimă normalizată. Limita superioară Plotkin pentru coduri bloc binare liniare (exercitiu): n k d* k d = d*/n,5 pentru k mare. Limita inferioară Varshamov-Gilbert pentru codurile bloc binare. Dacă d* < n/ atunci există un cod cu distanta minimă d* si rata R care satisface relatia d i R log Cn H(d*/n) = H(δ). i= Pentru comparatie, limita Hamming este R H(δ/). Grafice pentru rată în functie de distanta minimă normalizată 59

60 Limita MRRW este mai tare decât limita Hamming cu exceptia ratelor înalte. Limita Hamming este destul de strânsă. De pildă, pentru a corecta erori la de biti, limita Hamming cere 78 de biti de verificare, dar există un cod BCH care are de biti de verificare. Coduri perfecte Definitie: Un cod bloc este numit perfect dacă orice cuvânt receptionat este la distanta t de exact un cuvânt de cod. Alte definitii pentru codurile perfecte: Sferele de decodare se împachetează perfect Au decodoare complete limitate prin distantă Satisface limitarea Hamming cu egalitate. Există clase de coduri perfecte, dar în număr finit: Codurile fără redundantă (k = n) Codurile cu repetitie cu lungimea blocului impară: n = m +, k = m, t = m Codurile Hamming binare: n = m, n k = m Codurile Hamming nonbinare: n = (qm )/(q ), n k = m, q > Codul Golay binar: q =, n = 3, k =, t = 3 Codul Golay ternar: q = 3, n =, k = 6, t =. Codurile Golay datează din 949. Coduri cvasiperfecte 6

61 Definitie: Un cod este cvasiperfect dacă orice n-tuplu este la distanta t de cel mult un cuvânt de cod si este în distanta t + de cel putin un cuvânt de cod. Echivalent, un cod este cvasiperfect dacă sferele de rază t centrate pe cuvintele de cod nu se suprapun în timp ce sferele de rază t + acoperă complet spatiul de n-tuple. Exemple de coduri cvasiperfecte: Codurile cu repetitie de lungime a blocului pară Codurile Hamming si Golay expandate cu bit de verificare a paritatătii generale. Exercitiu: Să se arate că oricare din codurile Hamming purjate (obtinute prin adăugarea unei ecuatii de verificare a paritătii generale) nu este cvasiperfect. Coduri liniare modificate Lungimea de bloc proiectată a unui cod bloc liniar este determinată de proprietătile algebrice si combinatoriale ale matricilor si polinoamelor. Lungimea de bloc dorită a unui cod bloc liniar este adesea diferită de cea proiectată. Exemplu: Lungimea proiectată a unui cod Hamming binar este m (7, 5, 3, ). Numărul de simboluri informationale poate însă să nu fie k = m m (4,, 6, ). Sunt şase modalităti de a modifica parametrii unui cod bloc liniar (n, l, n k) prin creşterea unuia dintre parametri, diminuarea altuia si lăsarea neschimbată a celuilalt. Modificarea cea mai obişnuită este scurtarea codului prin renunţarea la simboluri informationale. Alte modificări pot fi făcute prin lungire, purjare, augmentare, perforare, expandare. Coduri scurtate Scurtare: se menţine n k, se diminuă k, implicit n. Simbolurile informationale sunt şterse pentru a obtine o lungime de bloc dorită, mai mică decât lungimea de bloc proiectată. Simbolurile informationale lipsă sunt de obicei imaginate a fi la începutul cuvântului de cod si sunt considerate nule. Exemplu: Frame-urile Ethernet sunt pachete de lungime variabilă. Dimensiunea maximă a pachetului este de cca. 5 de octeti de informatie sau de biti. Suma de control ethernet pe 3 de biti provine din codul Hamming cu lumgimea blocului proiectată de 3 = biti sau octeti. Costul codorului/decodorului poate fi redus prin stergerea de simboluri cu grijă alese. 6

62 Exemplu de cod scurtat Matricea sistematică de verificare a paritătii pentru un cod Hamming binar (5, ) este H= Acest cod poate fi scurtat la (, 8) prin stergerea coloanelor de pondere maximă, la 4. H = Codul scurtat poate corecta erorile pe un singur bit într-un cuvânt de informatie de 8 biti. Fiecare ecuatie de verificare este un sau-exclusiv de 5 sau 6 biti, mai putin decât 8 intrări în codul originar. Coduri lungite Lungire: se menţine n k, se măreşte k, în consecinţă n. Sunt introduse simboluri informationale suplimentare şi se includ în ecuatiile de verificare. Lungirea este dificil de realizat fără reducerea distantei minime a codului. Exemplu: Codurile Reed-Solomon extinse, obţinute lungind codurile ReedSolomon (Q, k) la (Q +, k + ) prin adăugarea a două coloane în stânga matricei H. De la H= α α α α4 α d α d α Q α (Q ) d (Q ) α se trece la H = α α α α4 α d α d α Q α (Q ) d (Q ) α Coduri purjate (expurgated) Purjare: se mentine n, se scade k si se majorează n k. 6

63 Cuvintele de cod sunt sterse prin adăugarea de ecuatii de verificare, reducând dimensiunea codului. Scopul este cresterea capacitătii de protectie la erori. Exemplu: Codul Hamming (7, 3) purjat. Exemplu: Codul BCH binar (5, 7) corector de două erori se obtine din codul Hamming (5, ) prin adăugarea a patru linii la matricea H H+ = Matricea de verificare a partităţii combinată este H = α α α 3 α α 3 α 4 H + α 3 α 6 α 9 α 36 α 39 α 4 Se poate verifica independenţa liniară a oricăror 4 coloane peste GF() astfel că d* 5. Coduri augmentate Augmentare: Se menţine n, se măreste k si se micşorează n k. Se adaugă cuvinte de cod prin suplimentarea bazei cu vectori noi linii noi ale matricei generatoare. Această actiune face să crească rata codului în timp ce posibil face să scadă distanta lui minimă. Exemplu: Matricea generatoare a codului Reed-Muller R(r, m) este definită prin augmentare: G = [G G Gr]T i Submatricea Gi are Cm linii si n = m coloane. Numărul bitilor de informatie este k = Cm + Cm + + Cmr Se poate arăta că ponderea minimă este m r. Codurile Reed-Muller au o gamă largă de distante minime si de rate corespunzătoare. Codurile cu rata / au d* = n ceea ce este în esentă optim. Coduri expandate Expandare: Se mentine k, se măresc n k si n. Se adaugă simboluri de verificare noi si ecuatiile resprective. Exemplu: Codul Hamming expandat se obtine prin adăugarea unui bit de paritate generală; se creste prin aceasta distanta minimă de la 3 la 4. Constatare: Dacă distanta minimă a unui cod bloc liniar binar este impară, bitul de paritate generală sporeste distanta minimă cu o unitate la numărul par imediat următor. Exemplu: Codul Golay binar este un cod (3, ) cu distanta minimă 7, este un cod perfect corector de trei erori. Adăugarea unui bit de paritate generală 63

64 modifică distanta minimă la 8. Codul Golay binar, cu parametrii (4,, 8) a fost utilizat pentru protectie la erori pe navele spatiale Voyager I si Voyager II. Coduri perforate Perforare: Se mentine k la aceeasi valoare, se diminuă n k si n. Stergerea unor simboluri de verificare poate conduce la o reducere a distantei minime. Cu toate acestea, codurile perforate pot corecta marea majoritate a erorilor până la distanta minimă a codului originar. Perforarea poate reduce distanta minimă dar nu reduce semnificativ fiabilitatea codului. Codurile perforate pot fi obtinute din codurile simple care au redundanţă în exces. Exemplu: Se poate perfora un cod produs simplu (9, 4) care are d* = 4 pentru a obtine un cod (8, 4) cu d* = 3. La expandarea codului perforat prin adăugarea unui bit de paritate generală, se recuperează codul produs simplu. Decodoarele cu decizie soft si decodoarele corectoare de erori-si-ştergeri pot trata simbolurile de verificare lipsă ca simboluri nesigure. Modificări ale codurilor bloc liniare (sumar) Se schimbă doi din cei trei parametri ai codului bloc, n, k, n k. Scurtare: se sterg simboluri ale mesajului n k fixat, k si n diminuate Lungire: se adaugă simboluri ale mesajului n k fixat, k si n majorate Perforare: se şterg simboluri de verificare k fixat, n k si n diminuate Expandare: se adaugă simboluri de verificare k fixat, n k si n majorate Purjare: se sterg cuvinte de cod, se adaugă ecuatii de verificare n fixat, k diminuat, n k majorat Augmentare: se adaugă cuvinte de cod, se şterg ecuatii de verificare n fixat, k majorat, n k diminuat Într-o imgine: lungire expandare scurtare perforare k simboluri informaţionale n k simboluri de verificare purjare augmentare Corpuri finite: motivatie 64

65 Codurile bloc algebrice tratează fiecare simbol al canalului ca un element al unui corp finit. Un codor liniar multiplică simbolurile cu constante si acumulează produsele pentru a genera fiecare simbol cuvânt de cod. Calculul sindromului utilizează de asemenea multiplicarea-acumularea. Singurele cunostinte despre corpuri necesare la detectarea erorilor se referă la multiplicarea si adunarea elementelor. Sunt totusi necesare mai multe cunostinte despre structura corpurilor pentru a proiecta coduri bune, pentru a implementa eficient unităti aritmetice pe operatiile care structurează corpul, pentru a dezvolta decodoare pentru codurile bazate pe polinoame (codurile ciclice). În cele ce urmează sunt disecate corpurile finite. Corpuri finite: sumar executiv Un corp finit cu q elemente este notat cu GF(q) (Galois field, după Evariste Galois (8-83) un matematician foarte bun, mult mai puţin bun trăgător la ţintă). Dacă p este un număr prim, atunci aritmetica în GF(p) coincide cu aritmetica cu numere întregi modulo p. Orice corp finit GF(q) = GF(pm) este un spaţiu vectorial de m-tuple peste GF(p) cu adunarea modulo p pe componente, cu multiplicarea de polinoame modulo un polinom prim. Orice element nenul din GF(q) este de un ordin multiplicativ care-l divide pe q. Grupul multiplicativ din GF(q) este ciclic: orice element nenul este de forma αi cu α un element primitiv si i q. Multiplicarea si împărtirea pot fi făcute prin adunarea sau scăderea de logaritmi. (x β ) = f (x ) cu f (x) polinoame prime de xq = β GF ( q ) {} β β grade egale cu divizori ai lui m, dimensiunea lui GF(q). Caracteristica corpului Caracteristica unui corp este numărul pozitiv cel mai mic de unităti care adunate dau zero (dacă nici o astfel de sumă nu dă zero, caracteristica se zice că este zero). Teoremă: Caracteristica unui corp finit este un număr prim. Demonstratie: Se face prin reducere la absurd. Fie rs cel mai mic număr pozitiv de unităti care adunate dau zero, cu r > si s >. Prin asociativitate = = r r rs r r r s cu termenii din suma intermediară de sume în număr de s. Prin distributivitate 65

66 + r = r( ) = rs = r +... s s Dar r, asa încât rs = implică s =, adică =s= s cu alte cuvinte, o sumă de s unităti este nulă, ceea ce contrazice presupunerea că numărul rs este cel mai mic număr de unităti de sumă nulă. Întregii unui corp În orice corp, subgrupul aditiv generat de este denumit întregii corpului. Întrun corp finit F de caracteristică p, întregii corpului sunt {,, +, + +,, p } Aritmetica este aceeasi cu aritmetica întregilor modulo p, deoarece orice sumă a unui multiplu de p unităti este zero. De asemenea, întregii corpului sunt multime închisă la împărtire deoarece orice întreg nenul al corpului are un reciproc modulo p. De aceea întregii corpului sunt un subcorp al lui F. Ei formează cel mai mic subcorp deoarece orice corp trebuie să contină pe si toate sumele si produsele de unităti. Orice corp F este un spatiu vectorial peste subcorpul GF(p) al întregilor lui F. Astfel dacă m este dimensiunea lui F peste GF(p) atunci F are pm elemente. De unde: Teorema: Un corp finit de caracteristică p are pm elemente. Un corp de caracteristică zero este infinit. Întregii lui se comportă ca întregii obişnuiti si numerele rationale câturile întregilor corpului sunt cel mai mic subcorp. Aritmetica în corpuri finite Fie F un corp finit de caracteristică p. F este un spatiu vectorial peste GF(p). Elementele lui F au reprezentări în coordonate ca m-tuple peste GF(p). Se alege o bază arbitrară. Adunarea este imediată. Dacă a = (a,, am ) si b = (b,, bm ) atunci suma este a + b = (a + b,, am + bm ). Se adună pur si simplu componentele în GF(p). Multiplicarea este întrucâtva mai dificilă. De pildă (,,, ) (,,, ) = ( m, m,..., mm ) cu mi ce de a i-a coordonată a produsului primului vector cu el însusi. O descriere completă a multiplicării ar putea necesita m3 componente scalare, mijk, cu mijk coordonata a i-a a produsului vectorilor unitate ej si ek. O bază potrivit aleasă pentru F peste GF(p) simplifică mult multiplicarea: baza = {, α,, αm } αi αj = αi + j ( i, j m ) 66

67 Primele m puteri,, α, α,, αm determină multiplicarea în F. Corpul finit GF(4) Fie GF(4) = {,, β, δ}, în care, sunt elementele neutre pentru adunare si multiplicare. Axiomele corpurilor permit numai operatiile din aceste tabele: + β δ β δ δ β β δ β δ δ β β δ β δ β δ β δ δ β Orice element nenul din grupul aditiv are ordinul, adică este propriul său invers (opus). Grupul multiplicativ de dimensiune 3 trebuie să fie ciclic deoarece 3 este prim. Atât β cât si δ sunt elemente generatoare. De observat că β si δ sunt indistincte: schimbând între ele aceste două elemente tabelele de operatii rămân aceleasi. Cele două operatii sunt distributive, dar distributivitatea lor nu este evidentă. Pentru a întelegecorect tabelele de operatii, este necesară o interpretare oarecum diferită. O modalitate bună de a defini corpul finit GF(4) o oferă polinoamele (binare) peste GF() luate modulo un anumit polinom de gradul peste GF(). Singurul polinom prim de gradul peste GF() este x + x +. Alte polinoame de gradul sunt factorizabile cu factori proprii (de grad inferior): x = x x, x + x = x(x + ), x + = (x + ) Asadar GF(4) = {,, x, x + } cu aritmetica modulo x + x +. Tabelele de operatii pentru GF(4), care utilizează reprezentarea polinomială: + x x+ x x+ x+ x x x x+ x+ x+ x x x+ x x+ x x+ x x+ x+ x Prin substitutiile x β, x + δ, se obtin tabelele de mai devreme. Aritmetica modulo x + x + este echivalentă cu înlocuirea tuturor aparitiilor lui x + x + cu. În particular, peste GF() x + x + = x = x + Astfel x si toate puterile mai mari ale lui x modulo x + x + pot fi înlocuite cu polinoame de grad cel mult. Orice element nenul din GF(4) este o putere a lui x: GF(4) = {,, x, x = x + } 67

68 Altfel spus, x este un element primitiv. Definitie: Un element primitiv al unui corp finit este orice element α care generează grupul multiplicativ al corpului. GF(4) este mai usor de înteles dacă se înlocuieste nedeterminata x cu α. Atunci orice element din GF(4) este o combinatie liniară a vectorilor din bază, si α: GF(4) = {,, α, α + } Asadar, multiplicarea în GF(4) este determinată de produse de si α. Produsele vectorilor din bază definesc multiplicarea (o functie biliniară): α α α α + α α + α α α+ α α + α α + α + α Polinoamele binare în α de grad inferior lui pot fi reprezentate prin vectori binari (primul bit cel mai putin semnificativ), a + aα = (a, a). Tabelele de multiplicare în GF(4) binar (primul bit este cel mai puţin semnificativ) si în cuaternar: Notă: în tabelele de mai sus β si 3 δ. Aritmetica în corpul finit în GF(8) Pentru a defini corpul finit GF(8) este necesar un polinom f(x) prim de gradul 3 peste GF(). În acest polinom, coeficientul liber f trebuie să fie, altminteri f(x) ar fi divizibil cu x. Paritatea coeficientilor ar trebui să fie impară, altminteri f(x) ar fi dixizibil cu x deoarece (x ) f(x) f() = f f f f3 = Dintre cele 8 polinoame monice de gradul 3, două satisfac cerinţele de mai sus: x3 + x + si x3 + x +. Ambele sunt prime deoarece nu au factori de gradul (adică pe x sau pe x + ). Oricare poate fi utilizat pentru a defini aritmetica din GF(8). Tabelele cu artimetica sunt întrucâtva mai simple când se utilizează x3 + x +. 68

69 Când GF(8) este reprezentat ca polinoame binare modulo x3 + x +, ecuatia cheie este α3 + α + = α3 = α + în care elementul α este polinomul x. Puteri în GF(8) Puterile lui α pot fi calculate folosind ecuatia α3 + α + = α3 = α + În tabelul de mai jos, reprezentările pe 3 biti ale elementelor corpului multiplicativ au ca prim bit pe cel mai putin semnificativ. i αi α α α3 = α + α + α α3 + α = α + α + α3 + α + α = α + α + α = Orice element nenul din GF(8) este o putere a lui α, α este un element primitiv. Orice element din GF(8) este o combinatie liniară binară de {, α, α}. Bază pentru GF(8) GF(8) poate fi reprezentat sub forma combinatiilor liniare binare de {, α, α}. Multimea {, α, α} este liniar independentă peste GF() deoarece orice dependenţă liniară f + f α + f α = ar corespunde unui polinom f(x) de gradul peste GF() astfel încât f(α) =. Dar polinomul minimal al lui α este x3 + x +. GF(8) are ca elemente cele 8 combinatii liniare ale acestor vectori din bază. Tabela de multiplicare este determinată de produsele vectorilor din bază: αi αj = αi + j ( i, j ) sau αi (i =,, 3) Multiplicarea este asociativă si distributivă fată de adunare deoarece este derivată din multiplicarea de polinoame modulo x3 + x +. Multiplicarea este inversabilă deoarece polinomul definitor x3 + x + este prim. Reciprocele pot fi găsite în tabele de puteri ale lui α deoarece α i = α7 i. Tabele de operatii în GF(8) 69

70 Elementele lui GF(8) pot fi reprezentate prin cifrele octale,..., 7: = =, α = =, α = = 4, α3 = = 3, cu bitul cel mai putin semnificativ la stânga. Tabelele de operatii în GF(8): Multiplicarea este determinată de 4 = 3 α α = α3 = α +. Important: simbolurile,,, 7 pentru elementele din GF(8) sunt simple abrevieri pentru reprezentarea prin vectori de 3 biti. Elementele lui GF(8) nu se comportă ca întregii. Aritmetica corpului finit GF(9) Cel mai mic corp nonbinar de dimensiune mai mare decât este GF(3 ) = GF(9). GF(9) poate fi definit de un polinom prim pătratic peste GF(3). Sunt trei polinoame prime de gradul al doilea peste GF(3): x +, x + x +, x + x + Acestea sunt prime deoarece,, nu sunt zeroruri si nu apar în factori liniari. GF(9) ar putea fi definit utilizând x +. Dacă α + = atunci α este rădăcina pătrată a lui, un element imaginar cu proprietăti similare lui i din numerele complexe. Dar α nu este o primitivă deoarece α4 = (α) = ( ) =. Celelalte două polinoame sunt polinoame primitive. Zerourile lor sunt elemente primitive si puterile lor generează elementele nenule ale lui GF(9). Puteri în GF(9) Fie a un zero al lui x + x +. Atunci α + α + = α = α α = α +. (Aceeasi expresie a fost folosită pentru GF(4), dar aici aritmetica scalarilor este modulo 3). Puterile lui α calculate utilizând definitia: i αi 7

71 α α = α + α + α = α + α + α = 3α + = α α = α + α + α = 4α + = α + α + α = 3α + = Cum era de asteptat, α 8 =. Ordinul multiplicativ al lui α este 8. Multiplicarea si împărtirea în GF(9) Produsul elementelor a = a + aα si b = b + bα din GF(9): (a + aα)(b + bα) = ab + (ab + ab)α + abα = = ab + (ab + ab)α + (abα + ab) = (ab + ab) + (ab + ab + ab)α (Expresie folosită si pentru GF(4), dar aici multiplicările si adunările sunt modulo 3). (a, a) (b, b) = (ab + ab, ab + ab + ab) Exercitiu: Aflati formula pentru reciproca (a + aα) = (b + bα). Indicatie: Una din tratările posibile: rezolvarea sistemului în b si b ab + ab = ab + (a + a)b = Aritmetica în corpul finit GF(6) Există trei polinoame prime de gradul 4 peste GF(): x4 + x +, x4 + x3 +, x4 + x3 + x + x + Cel mai simplu este x4 + x +. Fie α un element care satisface α4 + α + = α4 = α +. Puterile lui α pot fi coloanele unei matrici de verificare a paritătii, în varianta sistematică. H= În GF(6), folosind α4 = α +, componentele produsului y = a b sunt: y = ab + ab3 + ab + a3b y = ab + ab + ab3 + ab + a3b + ab3 + a3b y = ab + ab + ab + ab3 + a3b + a3b3 y3 = ab3 + ab + ab + a3b + a3b3 Teorema fundamentală a algebrei 7

72 Lemă: Fie f(x) un polinom peste GF(q) GF(Q). Un element β din GF(Q) este un zero al lui f(x) dacă si numai dacă x β este un divizor al lui f(x) peste GF(Q). Demonstratie: Prin algoritmul împărtirii f(x) = q(x)(x β) + r(x), cu grad{r(x)} < grad{(x β)} = Astfel grad{r(x)}, adică r(x) este un polinom constant, r(x) = r. Asadar r = r(β) = f(β) q(β)(β β) = f(β) si f(x) este un multiplu de x β dacă si numai dacă f(β) =. Lemă: Un polinom f(x) de gradul n peste un corp are cel mult n zerouri. Demonstratie: Fiecare zero al lui f(x) corespunde unui factor liniar al lui f(x). Deoarece grad{f(x)} = n, există cel mult n factori liniari, aşadar cel mult n zerouri distincte. Aceasta trece drept teorema fundamentală a algebrei. Varianta lui Gauss: o ecuatie polinomială cu coeficienti complecşi si gradul cel putin are cel putin o rădăcină complexă. Exemple de factori si de zerouri Exemplu: Polinoame de gradul peste GF(): x = x x, x + = (x + )(x + ), x + x = x(x + ), x + x + Singurul polinom prim de gradul peste GF() are zerourile în GF(4) = {,, β, δ } (x + β)(x + δ) = x + (β + δ)x + βδ = x + x + Dacă un polinom este prim depinde de ce coeficienti sunt admisi în factori. Exemplu: GF(4) poate fi reprezentat prin polinoame în α de grad inferior lui 4, cu α un zero al polinomului prim peste GF() x4 + x +. Asadar x + α este un factor al lui x4 + x + peste GF(4). Un alt zero este α: (α)4 + α + = (α4 + α + ) = =. 4 Similar, α = (α ) si α8 = (α4) sunt zerouri. Peste GF(6) există factorizarea x4 + x + = (x + α)(x + α)(x + α4)(x + α8). GF(Q) constă din zerourile lui xq x Ordinul grupului multiplicativ al lui GF(Q) este Q. Fie e ordinul lui β din GF(Q). Conform teoremei lui Lagrage, e (Q ) astfel că βq = βe (Q )/e = (βe)(q )/e = (Q )/e =. Acest fapt arată că orice element nenul din GF(Q) este un zero pentru xq. Cazul special al lui necesită un factor în plus, x, care conduce la x(xq ) = xq x Acest polinom are cel mult Q zerouri. Asadar, GF(Q) coincide cu multimea zerourilor lui xq x. 7

73 Similar, pentru orice subcorp, GF(q) este multimea zerourilor lui xq x. Se obtin factorizările peste GF(Q). xq x = (x β ), xq x = β GF ( Q ) (x β ) β GF ( q ) xq x = x(xq ) = x(xq )(xq (q ) + + xq + ) În ultima expresie intervine faptul că (q ) (Q ). Elemente primitive Fapt: Grupul multiplicativ al corpului finit GF(q) este ciclic de ordinul q. Demonstratia face uz de lema asupra grupurilor: dacă pentru orice divizor d al ordinului unui grup sunt cel mult d elemente de un ordin care-l divide pe d, atunci grupul este ciclic. Definitie: Un element primitiv al lui GF(q) este un generator al grupului multiplicativ. Fie α un element primitiv al lui GF(q). Toate elementele primitive sunt α i cu gcd(i, q ) =. = ai + b(q ) α = αai + b(q ) = αai = (αi)a Dimpotrivă, dacă gcd(i, q ) = d > atunci ordinul lui αi este (q )/d < q. Dacă q este prim atunci sunt q elemente primitive. Acest fapt este posibil numai pentru q = 3 si pentru q = m cu m impar. GF(4), GF(8), GF(6), GF(3) au respectiv, 6, 8, 3 de elemente primitive. În general, GF(q) are φ(q ) elemente primitive. Functia φ a lui Euler: revedere Functia lui Euler φ(n) este numărul de întregi între si n care sunt relativ primi cu n. e e e Formula pentru φ(n) poate fi pusă în relatie cu factorizarea n = p p... pt t : Dacă p este prim atunci φ(n) = p (,,, p sunt coprime cu p) Dacă p este prim atunci φ(pe) = pe pe (numai multiplii lui p nu sunt coprimi cu p) φ(n) este o functie multiplicativă: dacă gcd(r, s) = atunci φ(rs) = φ(r)φ(s). Prin combinarea acestor adevăruri se obtine formula: p φ (n) = ( p ) p e t ei ( pi ) p p i= n = p prim n = p e o putere a unui prim n = pe pe... ptet în general Polinoame minimale 73

74 Fie β GF(Q) si GF(q) GF(Q). Definitie: Polinomul minimal al lui β peste GF(q) este polinomul monic f(x) peste GF(q) de cel mai mic grad astfel încât f(β) =. Exemplu: GF(4) = {,, β, δ}. Polinoamele minimale peste GF() sunt x, x +, β, δ x + x + Teoremă: Se presupune că GF(q) GF(Q) cu Q = qm.. Orice β din GF(Q) are un polinom minimal peste GF(q) f(x) de grad cel mult m.. Polinomul minimal este unic. 3. Polinomul minimal este prim peste GF(q). 4. Dacă g(x) este un polinom oarecare peste GF(q) astfel încât g(β) = atunci f(x) g(x). Orice β din GF(Q) este un zero al polinomului xq x, ai cărui coeficienti (,, ) apartin lui GF(q). Astfel polinomul minimal există si are gradul cel mult Q. Demonstratie:. GF(Q) este un spatiu vectorial de dimensiune m peste GF(q). Asadar, orice set de m + elemente este dependent liniar peste GF(q). În particular, se consideră primele m + puteri ale lui β: {, β, β,, βm}. Există în GF(q) m + scalari f, f,, fm, nu toti nuli, astfel încât f + f β + + fm βm = = f(β). Cu alte cuvinte, β este un zero al polinomului f(x) = f + fx + + fmxm un polinom nenul peste GF(q) de grad cel mult m. Asadar, polinomul minimal al lui β are gradul cel mult m.. Dacă f(x) si f(x) sunt polinoame distincte de acelasi grad, atunci f(x) = f(x) f(x) ar fi un polinom nenul de grad mai mic. Deoarece f(β) =, apare o contradictie. 3. Dacă f(x) = f(x)f(x) are divizori proprii, atunci f(β) = f(β)f(β) = f(β) = sau f(β) = ceea ce contrazice minimalitatea lui f(x). 4. Prin algoritmul împărtirii, g(x) = q(x)f(x) + r(x), cu grad{r(x)} < grad{f(x)} Dacă g(β) = atunci r(β) = g(β) q(β)f(β) = Dacă r(x) atunci f(x) nu este minimal. Asadar r(x) = f(x) g(x). Punctul 4 semnifică faptul că polinoamele minimale sunt minimale într-un sens mai tare decât cel mai mic grad. De observat că punctul decurge din acest punct 4. Elemente si polinoame primitive Fie α un element primitiv pentru GF(Q) si fie GF(q) un subcorp al lui GF(Q). 74

75 Fie f(x) un polinom minimal al lui α peste GF(q) si m = grad{f(x)}. Orice element nenul al lui GF(Q) este o putere a lui α: GF(Q) = {, α, α,, αq } Orice element al lui GF(Q) este un polinom în α de grad cel mult m. b = b + bα + bα + + bm αm Multiplicarea unui polinom în α cu α utilizează ecuatia f(α) = : α(b + bα + bα + + bm αm ) = = bα + bα + + bm αm bm (f + + fm αm ) Un polinom primitiv este polinomul minimal al unui element primitv. O definite echivalentă: f(x) peste GF(q) de gradul m este primitiv dacă ordinul lui f(x) este qm, adică cel mai mic n astfel încât xn = mod f(x) este n = qm. Conjugate Definitie: Conjugatele lui β peste GF(q) sunt zerourile polinomului minimal al lui β peste GF(q), inclusiv β. Exemplu: GF(4) = {,, β, δ}. β si δ = β + sunt conjugate deoarece (x + β)(x + δ) = x + (β + δ)x + βδ = x + x + Exemplu: GF(8) = {,, α, + α, α,, + α + α}, cu α3 = α +. Polinomul minimal al lui α este f(x) = x3 + x +. Un alt zero al lui f(x) este α: f(α) = (α)3 + α + = (α3 + α + ) = 4 Astfel α si α = α + α sunt conjugatele lui α, ceea ce dă factorizarea x3 + x + = (x + α)(x + α)(x + α4) = (x + )(x + )(x + ) Triplele din reprezentările αi au în prima linie bitul cel mai putin semnificativ. Conjugatele sunt de nedistins din punct de vedere algebric. De pildă numărul complex +i are coodonatele (, ) numai prin conventie. Coeficienti binomiali si numere prime Lemă: Dacă p este prim si < k < p atunci p este un divizor al numărului Cpk. Demonstratie: Cpk = [p(p )(p ) (p k + )]/k! = p [(p )(p ) (p k + )]/k! Numitorul k! divide pe p(p )(p ) (p k + ) si este relativ prim cu p. Asadar k! divide pe (p )(p ) (p k + ). De aici rezultă că Cpk este multiplu al lui p. Lemă: În GF(pm), (a + b)p = ap + bp. Demonstratie: Din dezvoltarea binomială p (a + b)p = ap + C k = k p a p k b k + bp = ap + bp 75

76 deoarece Cpk este multiplu de p pentru < k < p si în GF(pm) multiplii de p sunt zero. Corolar: În GF(m), (a + b) = a + b. Cu alte cuvinte, ridicarea la pătrat este o operatie liniară. Corolar: În GF(q) cu q = pm rezultă (a + b)q = ( a + b) p = a p + b p = aq + bq. m m m Conjugatele lui β Teoremă: Conjugatele lui β peste GF(q) sunt β, β q, β q, β q, cu r cel mai mic întreg pozitiv pentru care β q = β. Observatie: β q = β Q = β, asa încât r m. De fapt, r m. Demonstratie: Mai îmtâi se arată că β q sunt conjugate. Pentru orice f(x) peste GF(q) [f(β)]q = (f + fβ + fβ + )q = q q q q q = f + f β + f β +... = f + fβq + fβq + = f(βq) deoarece fiq = fi pentru coeficientii din GF(q). Fie f(x) polinomul minimal al lui β. Şi pentru acesta f(βq) = [f(β)]q = q =. Conlcluzia: βq este un zero al polinomului minimal deci este conjugat al lui β. Se dovedeste acum că toate conjugatele lui β sunt în { β q }. Se consideră produsul r r m i i f ( x ) = ( x β )( x β q )( x β q q r )...( x β de factori liniari asociati tuturor conjugatelor lui β de forma β [ f ( x )] = ( x β )( x β q q q = ( x β )( x β q deoarece β q r q q q q q )...( x β qr ) qi. )= )...( x β ) = f ( x ) q = β. Asadar, r f q + fq x q f rq x q = f + fxq + + fr x qr Deoarece fiq = fi, toti coeficientii lui f(x) sunt în GF(q). Evident, β este un zero pentru f(x). Orice alt polinom peste GF(q) care-l are pe β ca zero trebuie să aibă aceeiasi r factori liniari. Asadar f(x) este un divizor al oricărui astfel de polinom şi este de aceea minimal. Conjugate: recapitulare Conjugatele lui β sunt zerourile polinomului minimal al lui β. Conjugatele lui β peste GF(q) sunt β, β q, β q,, β q. Polinomul minimal al lui β este prim peste GF(q) dar se factorizează peste orice corp GF(Q) care-l contine pe β (si implicit conjugatele sale). r f ( x ) = ( x β )( x β q )( x β q )...( x β q r ) Dacă β GF(q ) atunci are cel mult m conjugate (inclusiv el însusi). m 76

77 Dacă β are r conjugate, atunci subspatiul liniar al lui GF(qm) generat de {, β, β,, βr } este un corp cu qr elemente. Reciprocele există deoarece f(x) este prim. Dacă r < m atunci β apartine lui GF(qr), un subcorp propriu al lui GF(qm). Deoarece GF(qm) este spatiu vectorial peste GF(qr), se deduce că r m. Coduri ciclice Un cod bloc liniar este ciclic dacă orice permutare circulară a unui cuvânt de cod este un cuvânt de cod. Codurile ciclice au multe particularităti avantajoase. Au o descriere algebrică plină de eleganţă c(x) = m(x)g(x), cu g(x) polinomul generator c(x)h(x) = mod (xn ), cu h(x) polinomul de verificare a paritătii c(β) =,, c(βt) =, cu βi GF(qm). Codoare si unităti de sindrom realizate cu registre de deplasare. Corectarea simplă a erorilor incidentale (error trapping). Corectarea erorilor aleatoare prin rezolvarea de ecuatii polinomiale. Codurile ciclice sunt (prin definitie) un caz foarte special al codurilor liniare. Aproape toate codurile bloc uzuale sunt coduri ciclice (eventual scurtate). Permutările circulare ale n-tuplelor si polinoamele Definitie: Deplasatul spre dreapta a lui (v v... vn ) este (vn v... vn ). Ceas Deplasatul spre deapta al vectorului v este notat cu v(). Când n-tuplele sunt polinoame de grad cel mult n, deplasatul spre dreapta al lui v(x) = (v v... vn vn ) = v + vx vn xn + vn xn este tot un polinom de grad cel mult n. v()(x) = (vn v v... vn ) = vn + vx + vx vn xn Deplasatul spre dreapta cu i pozitii al lui v = v(x) este notat cu v(i) = v(i)(x). Proprietăţi ale permutărilor circulare Unele aspecte evidente ale deplasărilor circulare ale n-tuplelor: v(n) = v 77

78 Deplasatul spre stânga cu i pozitii v( i) este acelasi cu deplasatul spre dreapta v(n i) v(i) = v(i mod n). Primele două afirmatii sunt cazuri particulare ale celei de a treia. Deplasarea ciclică spre dreapta este o transformare liniară v() = vs, cu S matricea permutare următoare: S = Orice registru de deplasare liniar cu feedback corespunde unei matrici în forma canonică ratională. Registrul ciclic este cel mai simplu registru de deplasare cu feedback. Numere si plinoame Când n-tuplele binare reprezintă întregi, deplasarea cu un număr de pozitii (de biţi) echivalează cu o multiplicare sau o împărtire cu puteri ale lui. Deplasarea simplă spre stânga este o multiplicare cu, deplasarea simplă spre dreapta este o împărtire la cu ignorarea restului. Deplasările ciclice spre stânga si spre dreapta sunt multiplicări si împărtiri cu modulo n. Când n-tuplele reprezintă polinoame peste un corp (finit), deplasările ciclice corespund la multiplicări si împărtiri cu puteri ale lui x modulo (xn )8. Polinoamele se scriu cu coeficientul cel mai semnificativ la dreapta. (v v... vn vn ) v + vx vn xn + vn xn Deplasările ciclice elementare spre dreapta sunt multiplicări cu x, cu exceptia coeficientului lui xn care devine coeficientul lui x =. Astfel deplasatul ciclic spre dreapta diferă de produsul cu x printr-un multiplu al lui xn. Descrierea polinomială a deplasărilor ciclice Lemă: Deplasatul ciclic spre dreapta al lui v(x) este v()(x) = xv(x) vn (xn ) = xv(x) mod (xn ). Demonstratie: Prin definitia deplasatului ciclic spre dreapta v()(x) = vn + vx + vx vn xn = = vn + vx + vx vn xn + vn xn vn xn = = xv(x) vn (xn ) = xv(x) mod (xn ) Când vn =, deplasarea ciclică spre dreapta coincide cu deplasarea logică spre dreapta: vn = v()(x) = xv(x) Polinomul xn este numit polinomul ciclic de gradul n. Polinomul nul este singurul polinom de grad inferior lui n care este divizibil cu xn. Astfel xn generează codul care constă dintr-un vector cu toate componentele nule. 8 78

79 Coduri ciclice: definitie şi proprietăti de bază Definitie: Un cod ciclic este un cod bloc liniar pentru care permutarea ciclică spre dreapta a oricărui cuvânt de cod este un cuvânt de cod. Prin iterare, toate permutările ciclice ale cuvintelor de cod sunt cuvinte de cod; astfel prin permutarea circulară cu i pozitii a unui cuvânt de cod c(x) se obtine tot un cuvânt al codului c(i)(x) = xic(x) mod (xn ) Deoarece codurile ciclice sunt liniare, sumele deplasatelor ciclice sunt cuvinte de cod; astfel pentru orice polinom a(x) = a + ax amxm m a(x)c(x) mod (xn ) = i= (ai x i c( x) mod ( x n )) este un cuvânt al codului. Caz special important: grad{a(x)} < n grad{c(x)} conduce la grad{a(x)c(x)} < n a(x)c(x) mod (xn ) = a(x)c(x) ceea ce arată că a(x)c(x) este cuvânt de cod. Polinom generator Teoremă: Fie C un cod ciclic (n, k) peste GF(q).. Există un polinom monic g(x), numit polinom generator, astfel încât ntuplul c(x) este un cuvânt de cod dacă si numai dacă g(x) este un divizor al lui c(x).. Polinomul generator este unic. 3. Gradul polinomului generator este n k. 4. Polinomul generator este un divizor al lui xn. Demonstratie: Pentru k = se poate lua g(x) = xn. În cazul acesta toate afirmatiile sunt evident adevărate. Se presupune acum k > si implicit n k < n.. Fie g(x) cel mai mare divizor comun monic al cuvintelor nenule ale codului, {ci(x)}. Există atunci polinoamele {ai(x)} astfel încât g(x) = i ai ( x )ci ( x) = ai ( x )ci ( x) mod (xn ) = = (a ( x)c ( x) mod ( x i i i i n ) ) deoarece grad{g(x)} < n. Expresia ultimă arată că g(x) este o combinatie liniară de cuvinte de cod si este în consecintă un cuvânt de cod care este un divizor al tuturor celorlalte.. Dacă ar exista două polinoame generatoare, fiecare din ele ar fi un divizor al celuilalt si deoarece ambele sunt monice, raportul lor este. 3. Fie r = grad{g(x)}. Dacă grad{m(x)} < n r atunci grad{m(x)g(x)} < n astfel că m(x)g(x) este un cuvânt de cod. 79

80 Invers, orice cuvânt de cod este de forma c(x) = m(x)g(x), de unde grad{m(x)} < n r. Există asadar qn r cuvinte de cod. Un cod (n, k) peste GF(q) are qk cuvinte de cod. Aşadar qn r = qk n r = k r = n k. 4. (Un truc) Deplasarea ciclică spre dreapta a lui g(x) cu k digiti este un cuvânt de cod g(k)(x) = ( g g gn k ) = = + gxk + gxk gn k xn + xn xn = = xkg(x) (xn ) De aici xn = xkg(x) g(k)(x) o sumă de multipli ai lui g(x) ceea ce face şi din xn un multiplu de g(x). Matricea generatoare nesistematică Fie C un cod ciclic (n, k) generat de polinomul g(x) de gradul r = n k. Cuvintele de cod xig(x) (i =,,, k ) formează o bază pentru C deoarece orice cuvânt de cod m(x)g(x) = mg(x) + mxg(x) mk xk g(x) este o combinatie liniară de xig(x). Matricea cu linii xig(x) este matricea generatoare nesistematică a codului. g ( x) g g g r xg ( x) g g g r = G = x k g ( x) g g g r k x g ( x) g g g r Fiecare linie a matricii G este o deplasată ciclică la dreapta a primei linii. Fiecare simbol al mesajului produce aceeasi iesire a codorului, numai că întârziată. Matricea G este baza pentru două codoare simple care folosesc multiplicarea cu g(x). Exemple de coduri ciclice binare Codul (n,) care constă în vectorul nul: g(x) = xn. Codul (n, n) al tuturor n-tuplelor, un alt cod ciclic trivial: g(x) =. Codurile (n, ) si (n, n) sunt duale. Produsul polinoamelor lor generatoare este xn. Codurile cu verificarea simplă a paritătii, de paritate pară sunt ciclice: g(x) = x = x +. Matricea lor generatoare nesistematică este 8

81 G= Codurile cu paritate simplă impară nu sunt liniare si, de aceea, nu sunt nici ciclice. Aceste coduri sunt codomenii ale codurilor cu paritate simplă pară si de aceea au aceeasi capacitate de protectie la erori în multe situatii. Codurile cu repetitie au polinomul generator g(x) = + x + + xn si G = [ ]. Matrici generatoare sistematice Un codor sistematic copiază digitii mesajului în pozitii consecutive ale cuvântului de cod. Conventie: sunt transmişi mai întâi digitii cei mai semnificativi cn, cn,, cn n. Pentru ca digitii mesajului (k digiti) să apară la finalul cuvântului de cod, ei trebuie deplasati spre dreapta cu n k pozitii m(x) ( m m mk ) = xn km(x) Pentru a genera un cuvânt de cod valid, coeficientii de ordin scăzut în număr de n k trebuie aleşi astfel încât n-tuplul complet să fie multiplu de g(x). Se presupune că xn km(x) are un rest nenul la împărtirea cu g(x). Atunci un cuvânt de cod valid poate fi obtinut prin scăderea acelui rest din xn km(x). Un exemplu cu numere întregi: 3 mod 7 = 3, deci 3 3 = 8 este un multiplu de 7. Codorul sistematic pentru codul ciclic generat de polinomul g(x) parcurge următoarea schemă: m(x) xn km(x) (xn km(x) mod g(x)) = xn km(x) Rg(x)(xn km(x)) = = ( m m mk ) (p p pn k... ) Cele două polinoame din diferenţa de mai sus nu au coeficienti concomitent nenuli pentru vreuna din puterile lui x. Scăderea de polinoame este de fapt o operatie de multiplexare. m(x) xn k mod g(x) c(x) Codorul crează un cuvânt de cod prin ataşarea la digitii mesajului a restului modulo g(x) cu semn schimbat al mesajului deplasat. Codorul sistematic utilizează împărtirea pentru a produce multipli ai polinomului generator. Restul împărtirii la un polinom fix este o functie liniară. Codorul sistematic execută o transformare liniară. Astfel iesirea lui este determinată de valorile de iesire pentru orice bază. 8

82 Baza standard constă în k vectori unitate {, x,, xk }. Simbolurile de verificare pentru mesajul xi sunt (xn kxi) mod g(x) = xn k + i mod g(x). Liniile matricii generatoare sistematice pentru i =,,, k sunt gi(x) = xn k + i mod g(x) + xn k + i = s[n k + i](x) + xn k + i cu s[j](x) = xj mod g(x). Se va vedea că s[j](x) este deplasatul al j-lea cu feedback al lui s[](x). Coeficientii lui s[j](x) formează portiunea de verificare a paritătii din matricea generatoare sistematică. s[ n k ] s[ n k + ] G = [ n ] s sn[ n kk ] sn[ n kk +] [ n ] sn k Prima linie din G este exact g(x), la fel ca la matricea nesistematică G. Matricea generatoare sistematică are k(n k + ) elemente nenule, la fel ca G. Atât G cât si G sunt determinate de n k valori, coeficienti ai lui g(x). De exemplu, acest registru de deplasare multiplică cu x modulo x6 + x + x5 +. Matricea generatoare sistematică pentru codul cu paritate simplă (4, 3): g(x) = x + xj mod g(x) = G = Peste GF(), x7 + = (x + )(x3 + x + )(x3 + x + ). Există 3 = 8 divizori ai lui x7 + si deci 8 coduri ciclice de lungime a blocului 7. Dacă g(x) = x3 + x +, un polinom primtiv, se obtine codul Hamming ciclic. G= H = Codul dual are matricea generatoare H, codul de maximă lungime (7, 3). Coduri ciclice de lungime a blocului 5 Peste GF(), polinomul ciclic x5 + are cinci factori primi distincţi x5 + = (x + )(x + x + )(x4 + x + )(x4 + x3 + )(x4 + x3 + x + x + ) Sunt în total 5 coduri ciclice. Câteva polinoame generatoare mai utile: (x4 + x + ) Hamming ciclic binar (5, ) 8

83 (x4 + x + )(x4 + x3 + x + x + ) BCH (5, 7) corector de două erori (x + x + )(x4 + x + )(x4 + x3 + x + x + ) BCH (5, 5) corector de trei erori (x + )(x + x + )(x4 + x + )(x4 + x3 + x + x + ) (5, 4) de lungime maximă Aceste coduri, cu distantele minime 3, 5, 7, 8 sunt obtinute prin purjare. Distributia ponderilor pentru codurile ciclice de lungime Coduri echivalente Codul Hamming (7, 4) ciclic nu este acelaşi cu codul Hamming (7, 4) dintr-o sectiune anterioară. Bitii de verificare sunt în pozitiile,, 3 si nu în pozitiile,, 4. Hciclic = Hvechi = Definitie: Două coduri bloc care sunt la fel cu exceptia unei permutări a pozitiilor simbolurilor se numesc echivalente. Codurile echivalente au aceeasi distributie a ponderilor si aceeasi pondere minimă. Nu orice cod bloc liniar este sistematic. De pildă, cel cu matricea generatoare G = Orice cod bloc linar este echivalent cu un cod bloc liniar care are o matrice generatoare sistematică G = [P I] (sau G = [I P]). Polinomul de verificare a paritătii Polinomul de verificare a paritătii pentru un cod ciclic generat de g(x) este h(x) = (xn )/g(x). Gradul acestui polinom de verificare este n (n k) = k. Polinomul de verificare a paritătii defineste o relatie satisfăcută de toate cuvintele de cod c(x)h(x) = m(x)g(x)h(x) = m(x)(xn ) = xnm(x) m(x) = mod (xn ) = = ( m mk ) (m mk ) Deoarece grad{m(x)} < k, coeficientii lui xi în c(x)h(x) sunt nuli pentru i = k,, n. Aceasta corespunde la n k ecuatii de verificare: xk xk + n x = = c hk chk + + chk c hk ck h ck h + + ck h ck + h = cn k hk + cn k hk + + cn h + cn h 83

84 Matricea de verificare a paritătii nesistematică Cele n k ecuatii de verificare obtinute din c(x)h(x) = mod (xn ) corespund matricii nesistematice de verificare a paritătii: c c ck ck ck + ck + cn R h R( x) hk hk h h hk hk h h xh ( x ) H = = x n k h R ( x ) hk hk h h n k R x h ( x ) hk hk h h Această marice are aceeasi formă ca matricea generatoare nesistematică. Liniile matricei H sunt deplasări ciclice are lui h(x) citit în ordine inversă: hr(x) = hk + hk x + + hxk + hxk. Deoarece h(x) este la rându-i un divizor al lui xn, el generează un cod ciclic (n, n k). Se observă că hr(x) = xkh(x ) ceea ce face ca zerourile lui hr(x) să fie reciprocele zerourilor lui h(x). Polinomul hr(x) se mai numeste si polinomul reciproc al lui h(x). Relatia gr(x)hr(x) = (g(x)h(x))r = (xn )R = xn = (xn ) arată că hr(x) este divizor al lui xn. Matricea de verificare a paritătii H are forma unei matrici generatoare nesistematică. Liniile lui H sunt deplasări ale polinomului inversat hr(x). h h R ( x) generează un cod ciclic care este dualul codului generat de g(x). Codul ciclic generat de h(x) constă în ceea ce se obtine prin citirea inversă a dualului codului ciclic generat de g(x). Circuitul sindromului Circuitul de calcul al sindromului corespunzător lui H execută multiplicarea printr-un polinom fix h(x). Acest circuit face o convolutie a secventei de intrare r, r,, rn cu secventa de coeficienti ai polinomului de verificare a paritătii h, h,, hk. Deoarece grad{r(x)} n, produsul r(x)h(x) are gradul cel mult n + k. 84

85 Numai n k din cei n + k coeficienti ai polinomului produs r(x)h(x) sunt utilizati ca sindrom. Sindromul constă în coeficientii puterilor xk,..., xn din r(x)h(x). Acestia sunt generati după ce rn,..., rn k au fost deplasati în registru. Sindrom plinomial Matricea sistematică de verificare a paritătii poate fi obtinută din matricea generatoare sistematică astfel: G = [P I] H = [I PT] Constructia directă: se defineste sindromul polinomial ca fiind restul împărtirii la polinomul generator s(x) = r(x) mod g(x) = s + sx + + sn k xn k Orice cuvânt de cod este un multiplu al lui g(x) ceea ce face ca sindromul unui cuvânt de cod să fie nul. Astfel s(x) = r(x) mod g(x) = (c(x) + e(x)) mod g(x) = = c(x) mod g(x) + e(x) mod g(x) = e(x) mod g(x) Functia rest este liniară în împărţitorul r(x). Aşadar, resturile tuturor n-tuplelor sunt combinatii liniare de xi mod g(x) pentru i =,,, n. Matricea de verificare a paritătii sistematică Sindromul polinomial s(x) corespunde matricii sistematice de verificare a paritătii T x xn k = H = x n k mod g ( x ) x n mod g ( x ) s[ n k ] s[ n k ] [n k ] sn k s[ n ] s[ n ] s[ n ] s[ n ] sn[ n k ] sn[ n k ] Coloana i din H este sindromul lui xi si constă din coeficientii lui xi mod g(x). Caz special: coloana n k constă în coeficientii lui g(x) cu exceptia lui xn k. Coloana i se obtine din coloana i printr-o deplasare liniară cu feedback. Circuitul sindromului # Sindromurile corespunzătoare lui H pot fi calculate foarte eficient utilizând un registru de deplasare liniar cu feedback care implementează împărtirea de polinoame. 85

86 Circuitele de codare pot fi utilizate de asemenea la calculul sindromului. sindromul = = simbolurile actuale de verificare simbolurile de verificare asteptate cu simbolurile de verificare asteptate calculate din simbolurile informaţionale receptionate. Sindromuri partiale Zerourile polinomului generator determină cuvintele de cod: c(x) este un cuvânt al codului dacă si numai dacă c(β) = pentru orice β zero al lui g(x). Primul dacă este adevărat când g(x) nu are zeroruri multiple, adică nu are factori repetati. Zerourile lui g(x) apartin uzual extensiei GF(qm) a corpului GF(q). Fie {β,, βt} multimea care include cel putin un zero al fiecărui factor prim al lui g(x). Sindromurile partiale S,, St sunt n Si = r(βi) = r + rβi + + rn β i (i =,, t) Sindromurile partiale apartin aceluiasi corp extensie ca si β,, βt. Fiecare componentă Si a sindromului corespunde la m ecuatii liniare peste GF(q). Ecuatiile sunt dependente liniar dacă βi este într-un subcorp propriu al lui GF(qm). Exemplu: codul Hamming ciclic Fie p(x) un polinom primitiv peste GF() de gradul m. Cea mai mică valoare n pentru care p(x) (xn ) este n = m. Codul ciclic generat de p(x) are lungimea blocului n = m. Matricea H de verificare a paritătii care are drept coloane pe xi mod p(x) are coloanele nenule distincte, asa încât codul poate corecta orice eroare singulară. Coloanele lui H sunt puteri succesive ale unui α = x din GF(m): H = [ α α αn αn ] Fie eroarea singulară situată în locatia i, adică e(x) = xi. Sindromul partial pentru α este S = r(α) = r + rα + + rn αn = c(α) + e(α) = e(α) = α i. 86

87 Decodorul trebuie să găsească locatia i din sindromul S = αi. Decodorul trebuie să calculeze un logaritm discret al bazei α. Coduri Hamming non-binare Orice cod corector de o eroare are distanţa minimă d* 3, deci oricare două coloane ale matricei de verificare sunt liniar independente, cu alte cuvinte nici o coloană din H nu este multiplul alteia. Sunt în total qm m-tuple peste GF(q). Numărul maxim de coloane liniar independente în perechi este (qm )/(q ) = qm + qm + + q + adică numai unul din cele q zerouri multiple ale oricărui m-tuplu. Coloanele se normalizează prin impunerea ca primul element nenul să fie. Exemplu: H = Procedura de decodare pentru acest cod (3, ): se calculează sindromul s = rht. Se normalizează sindromul prin împărtirea cu primul element nenul si. Coloana egală din H este locatia erorii şi si este magnitudinea erorii. Coduri Hamming non-binare ciclice Un cod Hamming non-binar ciclic este definit de un element β din GF(qm) de ordin n = (qm )/(q ). Matricea de verificare este H = [ β β βn ] şi g(x) este polinomul minimal al lui β peste GF(q). (Fapt: grad{g(x)} = m). Coloanele lui H sunt liniar independente peste GF(q) dacă si numai dacă β j/β i = β l nu este în GF(q). Fapt: există un cod ciclic Hamming de lungime n dacă si numai dacă n si q sunt mutual prime (sau coprime), ceea ce este adevărat dacă si numai dacă m si q sunt coprime. Exemplu: Dacă q = 3 atunci q =, astfel că se cer valori impare pentru m. Fie GF(33) definit de polinomul primitiv x3 + x + si β = α. H = [ α α4 α α4] = Polinomul generator x3 + x + x + poate fi găsit prin mai multe metode si poate apoi să fie folosit la construireaa unei matrici sistematice de verificare a paritătii. Codul Golay ciclic 87

88 Ordinele multiplicative ale elementelor lui GF() divid pe = 47 = Sunt φ(3) = de elemente de ordinul 3. Conjugatele pentru oricare astfel de β sunt β, β, β4, β8, β6, β9, β8, β3, β3, β6, β Polinomul minimal are gradul. Polinoamele prime de gradul sunt x + x + x6 + x5 + x4 + x + x + x9 + x7 + x6 + x5 + x + Aceste polinoame sunt imaginea în oglindă unul celuilalt si zerourile lor sunt reciproce. Puterile consecutive β, β, β3, β4 prezente printre conjugate garantează d* 5. Lemă: Cuvintele codului Golay de ponderi pare au ponderile multiplu de 4. Teoremă: Codurile Golay ciclice au d* = 7 si sunt de fapt coduri perfecte. Enumeratorul de ponderi: + 53x7 + 56x8 + 88x + 88x + 56x5 + 53x6 + x3. Exemple de coduri ciclice: CRC-6 Codurile ciclice sunt utilizate frecvent pentru detectarea erorilor deoarece circuitele de codare si de calcul al sindromului sunt foarte simple. Cel mai comun polinom generator este CRC-6: CRC-6 = x6 + x5 + x + = (x + )(x5 + x + ) Factorul x5 + x + este primitiv de gradul 5 si are în consecintă ordinul9 5. Aşadar lungimea de bloc CRC-6 proiectată este 5 = 3767 biti. Uzual se foloseşte un cod semnificativ scurtat. Exemple de coduri ciclice: CRC-CCITT Un alt polinom generator popular este CRC-CCITT = x6 + x + x5 + = (x + )p(x) cu p(x) un polinom primitiv de gradul 5 p(x) = x5 + x4 + x3 + x + x4 + x3 + x + x + Polinoamele CRC-6 si CRC-CCITT au numai patru coeficienti nenuli, aşa încât circuitele de codare cu registre de deplasare necesită numai trei porţi sauexclusiv. Ordinul unui polinom este cel mai mic întreg n > pentru care g(x) (xn ). Acronime: CRC Cyclic Redundancy Check; CCITT Consultative Committee on International Telephone and Telegraph 9 88

89 Distanţa minimă pentru CRC-6 si CRC-CCITT este 4. Ambele coduri corectează erorile singulare si detectează erorile duble sau detectează până la 3 erori. Orice cod ciclic cu n k = 6 detectează erorile incidentale de lungime până la 6 biti, ceea ce este optimal. Sindromurile codurilor ciclice: revedere Pentru orice matrice de verificare H, vectorul sindrom este s = rht. Pentru o matrice H pe baza polinomului de verificare h(x) = (xn )/g(x) rht (r(x)h(x) mod (xn )) xk Pentru o matrice H sistematică, coloana a j-a este xj mod g(x), astfel că rht r(x) mod g(x) = Rg(x)(r(x)) Sindromul polinomial este s(x) = r(x) mod g(x). Sindromurile partiale sunt definite folosind zerourile β,, βs ale lui g(x): Sj = r(βj), j =,, s Zerourile βj si sindromurile partiale Sj apartin unui corp GF(qm), extensie a alfabetului de canal GF(q). Toate sindromurile de mai sus contin aceeasi informatie si pot fi obtinute unele din altele prin transformări liniare. Cazurile în care g(x) are zerouri multiple cer o tratare specială. Coduri BCH binare corectoare a două erori Dacă α este o primitivă în GF(m), ea defineste un cod Hamming ( m, m m): c(x) C c(α) = = c + cα + + cn αn Ideea cheie: pentru a corecta mai multe erori trebuie utilizate mai multe ecuatii de forma c(β) =. Conjugatele lui α în GF() nu pot fi folosite deoarece c(α) = c(α ) =. Cu alte cuvinte, cele m ecuatii peste GF() care corespund la α i i [ i i i ] Hi = α α α ( n ) sunt liniar dependente de cele m ecuatii care corespund lui α. Din fericire cele mai multe din celelalte alegeri functionează. Exercitiu: Orice non-conjugată a lui αi care nu apartine unui subcorp propriu al lui GF(m) poate fi folosită. BCH Bose şi Ray-Chaudhuri 89

90 Fie α3 elementul ales. Această alegere aparent evidentă lucrează foarte bine. Matricea de verificare a paritătii reprezentată peste GF(m) este α α α n H= 3 α 6 α 3( n ) α Cuvintele de cod definite de H sunt polinoamele c(x) cu zerouri în α si α3. Astfel fiecare cuvânt al codului este un multiplu al polinoamelor minimale ale lui α si α3. Fie f(x) si f3(x) aceste polinoame minimale peste GF(). Polinomul generator este g(x) = f(x) f3(x). Cele două polinoame minimale sunt de grade cel mult m. Astfel, grad{g(x)} m. H are două linii cu elemente din GF(m), totuna cu m linii peste GF(). Asadar numărul de biti de verificare satisface relatia n k m. Fapt: Dacă m 3 atunci n k = m. Sindromuri pentru codul BCH corector de două erori Se consideră un pattern de eroare de pondere : e(x) = x i + x i, i < i < n Sindromul lui r(x) are două componente sindrom partiale S, S3: S = r(α) = e(α) = α i + α i i i S3 = r(α3) = e(α3) = α 3i + α 3i = (α )3 + (α )3 Sindromurile partiale pot fi calculate din r(x) cu circuite multiplicatoareacumulatoare. Sindromurile sunt cantităti cunoscute în acest sistem de ecuatii, calculate în derularea curentă a calculului. Necunoscutele i si i apar în exponenti ecuatiile sunt transcendente. Decodarea codului BCH corector de două erori: o schimbare de variabile Problema se simplifică printr-o schimbare de variabile: X = α i, X = α i Schimbarea conduce la un sistem algebric de ecuatii de gradul 3: S = α i + α i = X + X S3 = α 3i + α 3i = X 3 + X 3 9

91 Necunoscutele X si X sunt numite locatoare de erori. Locatiile erorilor sunt obtinute din X, X prin logaritmare în baza α: i = logαx, i = logαx. Decodarea codului BCH corector de două erori: o reducere de grad Gradul acestui sistem poate fi redus: S3 X 3 + X 3 = = X + X X + X = (X + X) + XX = S + XX S X + X Cele două ecuatii se pot rescrie astfel: X + X = S XX = S3/S + S = (S3 + S3)/S Suma si produsul celor două necunoscute pot fi calculate din cantităti cunoscute, sindromurile partiale S si S3. Mai departe se rezolvă o ecuatie polinomială de gradul al doilea cu coeficientii cunoscuti. Decodarea codului BCH corector de două erori: ecuatia polinomială Polinomul de gradul al doilea care are ca zerouri pe X si X este următorul: ΛR(x) = (x X)(x X) = x (X + X)x + XX = = x + Sx + (S3 + S3)/S = x + λx + λ Dacă sunt două erori atunci X X si λ = S = X + X si coeficientul ultim, λ = (S3 + S3)/S este definit si nenul deoarece X, X. Dacă λ =, λ atunci ΛR(x) are numai un zero deoarece orice element din GF(m) are o rădăcină pătrată unică: α i/ i = l α = (i + m ) / i = l + α i Decodarea codului BCH corector de două erori: alte cazuri Când sunt două erori, locatoarele de erori sunt zerouri ale lui ΛR(x). Locatiile bitilor eronati pot fi găsite prin evaluarea lui ΛR(αi) pentru i =,,, n. (Formula pătratică nu poate fi utilizată în GF( m). Cu toate acestea există suficiente metode eficiente de a factoriza polinoamele de gradul doi peste GF(m)). Ce se întâmplă dacă erorile sunt mai puţin de două? Pentru o eroare, patternul erorii este e(x) = x i şi componentele sindromului sunt S = e(α) = α i = X Unele surse folosesc termenul de numere ale locatiei erorilor în loc de locatoare de erori. Este gresit: locatoarele de erori nu sunt numere ci sunt elemente ale unui corp finit GF( m). 9

92 S3 = e(α3) = α şi în acest caz S3 = S3 si λ =. Dacă nu sunt erori, S = S3 =. 3i = X 3 Codul BCH corector de două erori: procedura de decodare. Se calculează sindromurile partiale S = e(α) si S3 = e(α3).. Dacă S = S3 = atunci se presupune că nu există nici o eroare este presupunerea cea mai plauzibilă. 3. Dacă S si S3 = S3 se admite existenta unei erori. Locator de erori este X = S. Locatia erorii este i si satisface X = α i. 4. Dacă S si S3 S3 se admite existenţa a două erori. Locatoarele de erori sunt zerourile în GF(m) ale lui ΛR(x): ΛR(x) = x + Sx + (S3 + S3)/S i i Dacă X = α, X = α sunt zerourile lui ΛR(x), erorile sunt în locatiile i, i. 5. Dacă ΛR(x) nu are două zerouri în GF( m), sau dacă S = si S3, atunci sunt cel putin trei erori (necorectabile dar detectabile). Codul BCH corector de două erori: corectare greşită, costul calculului Când sunt mai mult de erori, decodorul poate corecta gresit. Când sunt 3 erori, decodorul poate corecta gresit cu o probabilitate de cca. /. (De ce? Circa jumătate din sindromuri corespund unor erori corectabile). Dacă 3 erori sunt corectate gresit, biti corecti vor fi inversati, ceea ce conduce la un total de cel putin 5 biti eronati în cuvântul de cod corectat gresit. Calculul sindromurilor partiale necesită nunai scalori pentru α si α3. Corectarea erorilor utilizează o împărtire si câteva (putine) operatii de multiplicare generale pentru a calcula pe ΛR(x) si pentru a afla zerorurile polinomului. Aproape tot efortul de calcul se concentrează pe evaluarea sindromului. Este necesară de asemenea o metodă eficientă de a găsi exponentii i si i din X si X. Pentru a reduce consumul de energie, trebuie avut în vedere compromisul între complexitatea decodorului si complexitatea codorului/sindromului. Coduri ciclice: recapitulare Un cod ciclic este un cod bloc liniar pentru care orice permutare circulară a unui cuvânt de cod este un cuvânt al codului. Deplasarea ciclică cu i pozitii spre dreapta a unui n-tuplu v(x) este notată cu v(i) (x) si este echivalentă cu multiplicarea cu xi modulo (xn ). Deplasarea ciclică cu i pozitii spre stânga este echivalentă cu deplasarea ciclică spre dreapta cu n i pozitii: v( i)(x) = v(n i)(x). 9

93 Un cod ciclic (n, k) are un polinom generator g(x) care este divizor al tuturor cuvintelor codului. Un cuvânt de lungime n, c(x) apartine codului ciclic C generat de polinomul g(x) dacă si numai dacă c(β) =, c(β) =,, c(βt) = în care β, β,, βt sunt zerorui ale lui g(x) într-un corp extensie. Polinomul generator este un polinom monic de gradul n k, este unic si divide pe xn. Polinomul de verificare a paritătii este h(x) = (xn )/g(x). Cuvintele de cod pot fi generate: nesistematic: m(x) m(x)g(x) sistematic: m(x) xn km(x) xn km(x) mod g(x) Portiunea de verificare a paritătii din matricea generatoare G constă în linii de forma xi mod g(x) cu i =,,, n k. Cuvintele de cod pot fi caracterizate de c(x) mod g(x) = sau de c(x)h(x) = mod (xn ) Aceleasi relatii sunt folosite şi la detectarea şi/sau la corectarea erorilor. Matricea de verificare a paritătii H poate fi nesistematică si atunci liniile ei se obtin prin n k deplasări spre stânga ale lui hr(x), polinomul h(x) citit în ordine inversă, sau sistematică si atunci coloanele ei sunt xi mod g(x) cu i =,,, n k. Polinomul sindrom, s(x) = r(x) mod g(x) are gradul mai mic decât n k şi are în consecintă n k componente. Sindromurile partiale sunt Si = r(βi), cu β, β,, βt zerorui ale lui g(x). Nu sunt necesare toate zerourile lui g(x). Un element din fiecare clasă de conjugate este suficient. Exemple de coduri ciclice: Codul (n, ), codul inutil, cu g(x) = xn. Codul (n, n), codul repetitiv, cu g(x) =. Codul (n, n ), codul binar cu paritate simplă, cu polinomul generator x. Codurile Hamming cu lungimea blocului m, cu generator un polinom primitiv de gradul m. Codurile Hamming binare purjate care au polinomul generator (x + )p(x). Factorul x + creste distanta minimă la 4. Codurile Golay (3,, 7) care au polinoame generatoare de gradul cu zerouri elemente din GF() de ordinul 3. Codrile CRC (Cyclic Redundancy Check) definite de polinoame generatoare de forma CRC-6 = x6 + x5 + x + = (x + )(x5 + x + ) CRC-CCITT = x6 + x + x5 + = (x + )p(x) Un cod ciclic peste GF(q) este cod ciclic şi peste orice corp extensie GF(Q) si are acelasi polinom generator. Erori incidentale (burst) 93

94 Definitie: Un incident de lungime l este un n-tuplu ale cărui simboluri incerte sunt restrânse la o întindere de l simboluri si nu mai putine. Definitie: Un incident circular (wraparound) de lungime l este orice deplasare ciclică a unui incident de lungime l. Un incident este specificat prin locatie si prin pattern-ul incidentului. Locatia este definită de digitul cel mai putin semnificativ al incidentului. Pattern-ul unui incident de lungime l este un polinom b(x) de gradul l. Incident: e(x) = xib(x), în care i este locaţia si b(x) este pattern-ul (b ). Incident wraparound: e(x) = xib(x) mod (xn ). Exemplu: Se consideră următoarele secvente de lungime : este un incident de lungime 4, cu locatia 3 si pattern-ul + x + x3. este un incident circular (wraparound) de lungime 4, cu locatia 8 si pattern-ul + x + x3. Este un incident (şi) de lungime 9. Detectarea erorilor incidentale Codurile ciclice sunt optime pentru a detecta erorile incidentale. Teoremă: Orice cod ciclic (scurtat) cu polinomul generator de gradul r poate detecta erorile incidentale de lungime cel mult r. Demonstratie: Trebuie arătat că nici un incident de lungime cel mult r nu este cuvânt de cod. Un astfel de incident este de forma e(x) = xib(x) cu b(x) si grad{b(x)} < r. Termenul constant al lui g(x) este nenul astfel că g(x) si xi sunt relativ prime. Dacă g(x) xib(x) atunci g(x) b(x), ceea ce este imposibil deoarece grad{b(x)} < grad{g(x)}. Capacitatea de a detecta o eroare incidentală este exact r deoarece g(x) este un cuvânt de cod care ar fi un incident de lungime r +. Erorile incidentale de lungime mai mare decât r pot fi detectate în majoritate. Pentru multimi alfabetice binare r + l = r + Pr[a detecta un incident de lungime l] = r l> r+ Exerciţiu: Capacitatea de a detecta erorile incidentale pentru un cod bloc (n, k) este cel mult n k. Caracterizarea codurilor corectoare de erori incidentale Lemă: Un cod bloc poate corecta toate incidentele de lungime cel mult l dacă si numai dacă niciodată două cuvinte de cod nu diferă prin suma a două incidente de lungime cel mult l. 94

95 ? r(x) c(x)? l l Corolar: Un cod bloc liniar poate corecta orice incident de lungime cel mult l dacă si numai dacă nici un cuvânt de cod nu este suma a două incidente de lungime cel mult l. În figura alăturată cuvântul nul si c(x) apartin codului. c(x) este suma a doua incidente. Decizia pe baza cuvântului receptional r(x) este dificilă dacă nu imposibilă: s-a transmis cuvântul nul sau cuvântul c(x)? Teoremă: (limita Rieger) Capacitatea l a unui cod bloc liniar (n, k) de a corecta erori incidentale satisface relatia l n k. Demonstratie: Toate cele Ql polinoame de grad inferior lui l trebuie să aibă sindromuri diferite. Altminteri diferenta dintre două asemenea polinoame ar fi un cuvânt de cod sumă a două incidente de lungime cel mult l. Eficienţa corectării erorilor incidentale Definitie: Eficienţa corectării erorilor incidentale a unui cod bloc liniar (n, k) cu capacitatea l de a corecta erori incidentale se defineste ca fiind l/(n k). Luând în considerare limita Rieger, eficienţa este subunitară, cel mult egală cu unitatea. Codurile Reed-Solomon au t simboluri de verificare si pot corecta t erori aleatoare si în consecintă pot corecta erori incidentale cu lungimea cel mult t. Codurile Reed-Solomon sunt coduri nonbinare cu eficienta corectării erorilor incidentale. Codurile Fire sunt o clasă de coduri ciclice cu orice capacitate dorită de a corecta erori incidentale şi au o eficientă a corectării erorilor incidentale de aproximativ /3. Coduri eficiente corectoare de erori incidentale se pot găsi prin cercetare cu calculatorul. O altă limită (aproximativă) pentru numărul de verificări necesare pentru a corecta incidente de lungime l în lungimi ale blocului de n este n k l + logqn. Această limită este de obicei mai tare decât limita Rieger. Principiul decodării ciclice Teoremă: (principiul decodării ciclice) Fie r(x) un cuvânt receptionat în cazul utilizării unui cod ciclic. Dacă simbolul j al deplasatului ciclic r(i)(x) poate fi corectat, atunci aceeasi magnitudine a erorii poate fi utilizată pentru a corecta simbolul (j i) mod n al lui r(x). 95

96 r(x) j i r(i)(x) i j r(i)(x) mod g(x) = s[i](x) e(x) s(x) = r(x) mod g(x) e( i)(x) Sindromurile s[](x),, s[n ](x) ale deplasatelor ciclice r()(x),, r(n )(x) pot fi calculate prin deplasarea repetată a registrului de sindrom cu feedback g(x). Lemă: Sindromul lui r()(x) este s[](x) = xs(x) mod g(x). Demonstratie: Se evaluează sindromul pentru r()(x). r()(x) mod g(x) = (xr(x) rn (xn )) mod g(x) = = xr(x) mod g(x) = x(r(x) mod g(x)) mod g(x) = xs(x) mod g(x) = s[](x) în trecrea de la a doua la a treia expresie uzând de faptul că g(x) este divizor al lui xn. Principiul decodării ciclice sugerează metoda de decodare următoare: Se calculează s(x) = r(x) mod g(x). Se deplasează registrul sindromului cu feedback până când s[i](x) contine un sindrom care este cunoscut a corespunde la eroarea e(x). Se decodează r(x) utilizând pe e( i)(x). Această metodă lucrează bine în special pentru erorile incidentale (a se vedea error trapping mai departe). Exemplu de decodor cu registru de deplasare: Fie g(x) = x4 + x +, un polinom primitiv peste GF(). Acest polinom generează un cod Hamming binar ciclic (5, ). Coloanele matricii de verificare a paritătii sunt xi mod g(x) pentru i =,, 4: H= Un singur bit eronat în pozitia maxim semnificativă a lui r(x) este dat de e(x) = x4. Sindromul lui e(x) = x4 este = + x3, care este ultima coloană din H. Dacă de pildă se scurtează codul la (, 8) sindromul unei erori în pozitia maxim semnificativă ar fi x mod g(x) = = x + x + x3. Se poate generaliza această tratare la corectarea erorilor incidentale de scurtă durată. Se poate arăta că polinomul generator (x + )(x4 + x + ) = x5 + x4 + x + poate corecta erori incidentale de lugime ce mult. Un decodor ar trebui să corecteze bitul cel mai semnificativ când registrul sindrom contine sindromuri ale lui x4 sau ale lui x3 + x4. Decodor cu registru de deplasare pentru codul Hamming 96

97 Decodorul de mai jos corectează cel mai semnificativ bit când registrul de deplasare contine. Decodorul poate lucra în regim de pipeline. În prima fază, se calculează sindromul lui r(x) utilizând primul registru de deplasare cu feedback liniar. În faza a doua cuvântul de cod bufferizat este corectat bit cu bit. Dacă registrul sindromului este nenul la finalul fazei de corectare înseamnă că a fost detectată o eroare necorectabilă. Error trapping Dacă pattern-ul erorii e(x) este în cele n k simboluri de ordin scăzut atunci grad{e(x)} este mai mic decât n k. r(x ) n k k În acest caz, s(x) = r(x) mod g(x) = e(x) mod g(x) = e(x). Polinomul sindrom este identic cu polinomul eroare. În general, r(x) s(x) este un cuvânt de cod obtinut prin corectarea exclusiv a bitilor de verificare. Dacă s(x) este un pattern de eroare plauzibil, adică corectabil, se estimează e(x) = s(x). Deoarece grad{s(x)} < n k, pattern-urile de eroare care sunt restrânse la n k locatii consecutive pot fi corectate în acest mod. Conform limitei Rieger, incidentele corectabile au lungimea cel mult (n k)/, asa încât ele pot fi rotite în pozitiile de ordin inferior. Pentru a preciza când este de corectat cel mai semnificativ bit al lui r(x) se calculează sindromul r(n k)(x). Prin aceasta se deplasează bitul cel mai semnificativ al lui r(x) din pozitia n, în partea celor mai semnificativi biti de verificare, pozitia n k. 97

98 r(x) n-k k n-k k r(n k)(x) Apoi se testează sindromul cuvântului receptionat deplasat pentru a vedea dacă este un incident de lungime cel mult l localizat în zona celor l digiti de verificare de ordin superior. Când incidentul corectabil este localizat în zona celor l simboluri de verificare cele mai semnificative, atunci cei n k l digiti de ordin redus ai sindromului sunt nuli. x x x n k-l l O modalitate de a calcula sindromul lui r(n k)(x) este deplasarea lui s(x) de n k ori într-un LSFR (linear feedback shift register) cu polinomul de feedback g(x). Rezultatul este s[n k](x). O metodă mai bună: se injectează simbolurile receptionate în LSFR al sindromului la capătul de sus: r(n k)(x) mod g(x) = xn kr(x) mod g(x) = xn ke(x) mod g(x) Circuitul corespunzător arată ca în figură. Circuitul sindromului utilizează acelaşi parcurs al datelor/mesajului ca si codorul sistematic. Coduri Fire: definiţie Un cod Fire este un cod ciclic peste GF(q) cu polinomul generator g(x) = (xt )p(x) = xt p(x) p(x) care satisface conditiile următoare: 98

99 p(x) este un polinom prim peste GF(q) de gradul m si ordinul e. m t. p(x) nu divide pe xt. gcd(q, t ) =. (Această conditie este totdeauna îndeplinită pentru q = m). Lungimea de bloc n este ordinul polinomului generator g(x). (Ordinul este cel mai mic n > pentru care g(x) xn. Un n mai mare produce o distantă minimă de ). În general, ordinul unui polinom este cel mai mic multiplu comun al ordinelor factorilor săi. În cazul codurilor Fire, n = lcm(e, t ). Codurile Fire au fost descoperite de Philip Fire în 959. Codurile Fire: proprietăti Capacitatea de a corecta erori incidentale: cel putin t, cel mult m. Eficienţa corectării erorilor incidentale este t/(t + m). Când m = t se obtine eficienţa maximă: t/(3t ) /3. Decodorul error trapping necesită n pasi. Deocodrul rapid al lui Chien foloseste sindromurile partiale s(x) = r(x) mod (xt ) s(x) = r(x) mod p(x) Decodorul rapid corectează în (t ) + e << n pasi. Decodor error-trapping pentru coduri Fire Exemplu: Polinomul generator pentru codul Fire (35, 7) este g(x) = (x5 + )(x3 + x + ) = x8 + x6 + x5 + x3 + x +. Acest cod corectează erori incidentale de lungime cel mult 3. Eficienţa: ( 3)/8 = 3/4. Decodor error-trapping pentru codul Fire (35, 7) Decodarea rapidă a codurilor Fire 99

100 Codul Fire cu g(x) = (x7 + )(x4 + x + ) poate corecta incidente de lungime cel mult 4. Lungimea blocului este n = lcm(7, 5) = 5. r(x) r(x) s(x) s(x) Calculul sindromului pentru r = : Pattern-ul incidentului poate fi identificat prin deplasarea lui s(x) în registrul sindromului. s[] ( x) = s[] ( x) = s[ ] ( x) = b(x) = Deoarece deplasări spre dreapta echivalează cu 5 deplasări spre stânga, locatia erorii satisface i mod 7 = 5. Locatia erorii se determină prin deplasarea lui s(x) până când este recunoscut incidentul b(x). s[ ] ( x ) = s[] ( x) = s[ ] ( x ) = s[ 3] ( x ) = = b(x) Deoarece trei deplasări simple spre dreapta echivalează cu deplasări spre stânga, locatia erorii satisface i mod 5 =. Locatia erorii este unica solutie modulo 5: i =. Coduri intercalate Definiţie: Intercalatul de mod λ al unui cod bloc C(n, k) este codul bloc C{λ} (λn, λk) în care orice subsecvenţă

101 (cj, cj + λ, cj + λ,, cj + (n )λ), j =,,, λ de n simboluri ale cuvântului de cod spaţiate cu λ simboluri unul de altul este un cuvânt de cod din C. De exemplu, O modalitate de a reprezenta un cod intercalat în mod λ este aceea printr-o matrice λ n: cλ c λ c c cλ + c λ + c= cλ cλ c3λ c( n ) λ c( n ) λ + cnλ Fiecare linie este un cuvânt de cod din C. Elementele lui c sunt transmise pe coloane. Coduri intercalate: capacitatea de protectie la erori incidentale Teoremă: Dacă un cod C are capacitatea l de a corecta erori incidentale, atunci capacitatea de a corecta erori incidentale ale intercalatului de mod λ, C{λ} este λl. Demonstratie: Se consideră un incident de lungime h într-un cuvânt de cod intercalat. verificare incident corectabil incident necorectabil Cod Reed-Solomon scurtat (4, intercalat de mod 5 peste GF(3) Fiecare linie are cel mult h/λ erori consecutive (uzual cel puţim h/λ erori). O lungime a incidentului de cel mult λl produce un incident de lungime cel mult l în oricare linie, ceea ce îl face corectabil. Din contra, un incident necorectabil de lungime l + într-o linie nu este corectabil. Lungimea lui în datele serializate este λl +.

102 Eficienţa corectării erorilor incidentale pentru un cod intercalat este λl/[λ(n k)] = l/(n k). Aceasta este la fel cu eficienta codului de bază C. Intercalarea este o cale simplă si eficientă de a trata incidentele îndelungi, numai că apar probleme de cost: Memorie: matricea codului (cu exceptia coloanei ultime) trebuie stocată înainte de încheierea decodării vreunei linii λ(n ) simboluri. Întârziere: matricea codului (cu exceptia ultimei coloane) trebuie receptionată înainte de a decoda prima linie λ(n ) simboluri în cel mai rău caz. Costul cu memorarea poate fi redus la aproximativ jumătate prin utilizarea unui circuit intercalator convolutional. Memoria circuitului intercalator este împărtită între transmitător si receptor. Erori incidentale: recapitulare O eroare incidentală de lungime l este un n-tuplu cu simbolurile nenule grupate pe o întindere de l simboluri si nu mai putine. Capacitatea de detectare a erorilor incidentale a oricărui cod bloc (n, k) este cel mult n k. Un cod ciclic (n, k) poate detecta orice incident de lungime cel mult n k. Un cod ciclic (n, k) poate detecta toate incidentele mai lungi de n k + cu exceptia a (n k) din ele. Limita Rieger: dacă l este capacitatea unui cod bloc liniar de a corecta erori incidentale, atunci l n k. Eficienta corectării erorilor incidentale: l/(n k). Codurile corectoare de incidente ciclice pot decoda în n paşi utilizând error trapping. Codul Fire are polinomul generator g(x) = (xt )p(x) si poate corecta incidente de lungime cel mult m. Intercalarea de mod λ a unui cod multiplică capacitatea de protectie la erori incidentale de λ ori. Limita Rieger se mentine pentru orice cod bloc (n, k), nu neapărat liniar. Subcorpuri ale corpurilor finite Se presupune că GF(q) GF(Q) au caracteristica p. Atunci q = pm, Q = pm, m M

103 GF(Q) este un spatiu vectorial peste GF(q) de dimensiune n. Q = qn pm = (pm)n = pmn M = nm m M. Exponentul subcorpului divide exponentul corpului extensie. Exemplu: Subcorpuri ale lui GF(35) sunt GF(7), GF(5), GF(). GF(9) nu este continut în GF(35) deoarece 9 nu este un divizor al lui 35. Cel mai mic subcorp care contine si pe GF( 9) si pe GF(35) este GF(lcm(9, 35)) = GF(9 35) = GF(665). GF(35) are subgrupuri aditive de ordinul 9, dar nici un subcorp de dimensiunea 9. Exemple de subcorpuri: GF(8) GF(8) GF(4) GF() GF(). Acestea se numesc corpuri turn GF( q ). GF(56) [4] GF(6) [] GF(4) [] GF() [] GF(4) GF() două zerouri ale lui x + x +. GF(6) GF(4) zerouri date de trei polinoame prime de gradul 4 x4 + x +, x4 + x3 +, x4 + x3 + x + x +. GF(56) GF(6) 4 de zerouri date de 3 de polinoame prime de gradul 8 x8 + x4 + x3 + x +,, x8 + x7 + x6 + x5 + x4 + x3 +. m Exemple de subcorpuri: GF() GF() are = 4 elemente care nu partin nici unuia dintre subcorpurile proprii. 3

104 Fiecare element maximum de complex al lui GF( ) este un zero al unui polinom de gradul peste GF(), aşa încât sunt 4/ = 335 polinoame prime de gradul. Există φ(495) = (3/) (4/5) (6/7) (/3) 495 = 78 elemente primitive, asa încât există 78/ = 44 polinoame primitive de gradul peste GF(). Clase de conjugare GF(Q) poate fi partitionat în clase de conjugare pentru orice subcorp GF(q) GF(Q). Fiecare clasă de conjugare constă în toate zerouile unui polinom minimal peste GF(q). Exemplu: GF(6) GF(), Clasele de conjugare pentru si sunt {} si {}. Element α α3 α5 α7 Clasa de conjugare {α, α, α4, α8} (α6 = α) {α3, α6, α, α4 = α9} (α8 = α3) {α5, α} (α = α5) {α7, α4, α3, α} (α = α7) Fiecare element din GF(Q) = GF(qm) este o putere a unui element primitiv α. Clasele de conjugare pot fi reprezentate prin exponenti (logaritmi în baza α). Exponentii membrilor unei clase de conjugare care-l contine pe αi sunt i, qi mod (Q ), qi mod (Q ),, qr i mod (Q ) pentru un r m, de fapt r m. Clase de conjugare pentru GF(64) Exemplu: GF(64) GF(). Clasele de conjugare, reprezentate prin exponenti: {} ( GF()) {3, 6, 5, 4, 9, 38} {,, 4, 8, 6, 3} {5, 3, 6, 57, 5, 39} {3, 6,, 4, 48, 33} {, 4} ( GF(4)) {5,,, 4, 7, 34} {3, 46, 9, 58, 53, 43} {7, 4, 8, 56, 49, 35} {7, 54, 45} ( GF(8)) {9, 8, 36} ( GF(8)) {3, 6, 6, 59, 55, 47} {,, 44, 5, 5, 37} Exponentii din fiecare clasă de cojugare se găsesc prin multiplicarea cu modulo 63. Clasele cu mai putin de 6 conjugate apartin subcorpurilor proprii. Exponentii elementelor nenule ale subcorpurilor proprii ale lui GF(64): GF() = {} GF(4) = {, 4} GF(8) = {9, 8, 36}, {7, 54, 45} Polinoame minimale pentru GF(64) 4

105 Tabelul exponential pentru GF(64) definit de polinomul primitiv x6 + x + : Polinomul minimal pentru α9 este x3 + x + deoarece α9 =, α8 =, α7 = α7 + α8 + = Polinomul minimal pentru α este x + x + deoarece α =, α4 = α4 + α + = Polinomul minimal pentru α este x6 + x +. Aritmetica în GF(m): recapitulare Adunarea/scăderea: sau-exclusiv bit-cu-bit (m porti pe operatie) Multiplicare: serial (deplasare si adunare) paralel (combinational) reprezentarea în subcorp tabele log si antilog prin software Împărtire (calculul reciprocelor): algortimul lui Euclid căutare în tabel căutare secventială compromis timp-memorie exponentiere reprezentarea în subcorp tabele log si antilog prin software Împărtirea este executată ca o multiplicare cu reciproca: a/b = a b. Împărtirea pe un singur ciclu nu este necesară pentru că decodoarele utilizează putine împărtiri. Cele mai multe metode de multiplicare şi divizare consumă O(m) operatii cu biti. Multiplicări cu constante 5

106 GF(m) este un spatiu vectorial de dimensiune m, peste GF(). Se alege o bază {, α, α,..., αm } cu α de obicei un element primitiv. Multiplicarea cu o constantă b = b + bα + + bm αm este o aplicatie liniară. Ea poate fi descrisă printr-o matrice B m m peste GF(). Pentru a ajunge la componentele lui B se utilizează distributivitatea: a b = (a + aα + + am αm ) b = ab + a(αb) + + am (αm b). Produsele bi = αib pentru i m pot fi precalculate. Componentele acestor vectori pot fi depuse într-o matrice binară b, b b, b b b, B = =, b bm, bm, m b, m b, m bm, m Produsul a b este produsul vector-matrice y = a b = ab = [ a am ] a b, b, bm, b, b, bm, b, m b, m bm, m Un bit yj din y este produsul scalar al vectorului linie a cu coloana j din B: m yj = ab i= i i, j = a i :bi, j = i Sumele din formulele de mai sus trebuie întelese ca sau-exclusiv, produsele ca si logic. Un circuit scalor în GF(m) poate fi construit din cel mult m(m ) porti sauexclusiv cu două intrări. Scalorii tipici fac uz de cca. m/ porti sau-exclusiv. Numărul acesta de porti estimat nu include utilizarea subexpresiilor comune. Stabilirea unui circuit minimal este o problemă NP-completă. Exemplu: scalor în GF(6) GF(6) are ca polinom primitiv, posibil între altele, pe x6 + x +. Multiplicarea cu b = [ ] se defineste prin matricea B dată mai jos. Liniile lui B sunt xib (i =,,.., 5), cu bitul cel mai semnificativ la dreapta. Liniile succesive ale lui B se obtin prin deplasarea liniei precedente spre dreapta cu pattern-ul de feedback [ ] care corespunde lui + x + x6. B= y = a a a5 y = a a a5 y = a a3 y3 = a a4 y4 = a3 a5 y5 = a a4 6

107 Produsul y = a b = ab poate fi citit din coloanele lui B. Matrice de matrici multiplicatoare Matricea Mb care corespunde multiplicatorului b = xj mod p(x) constă în m linii consecutive, xj mod p(x),, xj + m mod p(x), din matricea de puteri ale elementului primitiv x. Deoarece p(x) este primitiv, matricea de puteri ale lui x modulo p(x) este aceeasi cu matricea de puteri ale elementului primitiv α. Pentru GF(4), matricea (5 + 3) 4 spre dreapta (cu primul bit cel mai putin semnificativ bit) contine toate matricile multiplicatori. De pildă, M α constă din liniile 7 la din acest tabel. 7 Mα 7 i 3 αi = i αi Multiplicarea în general Fie GF(m) polinoamele peste GF() modulo p(x) prim de gradul m. i Pentru a(x), b(x) în GF(m), fie ti = ab j= j i j coeficientul lui xi în a(x)b(x). a(x)b(x) = (t + tx + + tm xm + tmxm + + tm xm ) mod p(x) = = t + tx + + tm xm + tm(xm mod p(x)) tm (xm mod p(x)) Cele m polinoame xm mod p(x),..., xm mod p(x) pot fi precalculate si depuse ca linii ale unei matrici binare (m ) m: 7

108 x m mod p ( x ) α m x m + mod p ( x ) α m + T= = m m mod p ( x ) α x Liniile lui T se obtin prin deplasări cu feedback corespunzătoare lui p(x). Produsul y = a b poate fi exprimat în notatie matricială: y = (a,, am ) (b,, bm ) = I = [t tm ] + [tm... tm ]T = [t tm tm... tm ] T cu I matricea unitară m m si T matricea (m ) m de mai sus. Formula de calcul de nivel inferior pentru bitii yj ai produsului, pentru j =,, m : m yj = tj + t i= Tij = m+ i j l= al b j l + m m T i= ij al bm + i l l = i+ Fiecare bit al vectorului produs este o sumă a unui subset de termeni produs aibj. Vectorul produs constă în m functii biliniare de a si b. Exemplu de multiplicare în general GF(4) poate fi definit de oricare din următoarele trei plinoame prime peste GF(): p(x) = x4 + x +, p(x) = x4 + x3 +, p3(x) = x4 + x3 + x + x +. Matricile T sunt respectiv T =, T =, T3= Ecuatiile pentru produs în cazul folosirii lui T3: = [y y y y3] = [t t t t3] + [t4 t5 t6] = [t t4 t5 t t4 t6 t t4 t3 t4] Chiar dacă p3(x) nu este primitiv, este un polinom prim si poate fi utilizat pentru a defini corpul Galois GF(4). Dezvoltarea formei matriciale produce ecuatiile booleene următoare: t = ab y = t t4 t5 t = ab ab y = t t4 t6 t = ab ab ab y = t t4 t3 = ab3 ab ab a3b y3 = t3 t4 t4 = ab3 ab a3b t5 = ab3 a3b t6 = a3b3 8

109 Pentru orice corp GF(m), fiecare produs aibj apare în cel putin o relatie. Asadar, sunt necesare m porti şi pentru metoda evidentă. Numărul de porti sauexclusiv este (m ) pentru a calcula {t, t,, tm } plus numărul de unităti binare din T pentru a calcula {y, y,, ym } din { t, t,, tm }. Polinoamele de genul lui x6 + x + produc putini de în T. Se ignoră aici simplificările obişnuite ale unor subexpresii. Multiplicarea prin folosirea de reprezentări în subcorp Corpurile Galois pot fi reprezentate prin utilizarea unor subcorpuri mai mari decât corpul întregilor. GF(m) = perechile din GF(m) modulo un polinom prim de gradul peste GF(m). O alegere bună: un polinom prim pătratic de forma x + αx +, cu α în GF(m). a b = (a + ax)(b + bx) = ab + (ab + ab)x + abx = = ab + (ab + ab)x + ab(αx + ) = (ab + ab) + (ab + ab + αab)x Răspuns final: componentele (y, y) = (a, a) (b, b) sunt y = ab + ab y = ab + ab + αab Singura subexpresie comună este ab, prezentă atât în y cât si în y. Multiplicarea în GF(m) foloseste operatii în subcorpul GF(m). În circuitul alăturat sunt patru multiplicatoare, un scalor si trei sumatoare. Multiplicările pot fi executate paralel, secvential sau două deodată. Se poate atinge un compromis între timpul necesar si numărul de porti. Reciproce: algoritmul lui Euclid Se presupune că GF(Q) este reprezentat ca polinoame modulo un polinom prim p(x). Algortimul lui Euclid extins pentru gcd(r(x), p(x)) stabileste a(x), b(x) astfel încât a(x)r(x) + b(x)p(x) = gcd(r(x), p(x)) = 9

110 Dacă gradul lui p(x) este m, algoritmul consumă O(m) operatii pe registre de m digiti. Implementarea este cât se poate de directă. Neajuns: O(m) tempo-uri (cicluri ale ceasului). Resturile ri(x) si coeficientii ai(x) pot împărti spatiul de memorare. Restul final r este o constantă si reciprocul este r a(x). Reciproce: căutarea în tabele Se memorează reciprocele precalculate într-o memorie read-only m m. Pentru masivele curente de porti, un bit de ROM costă cam /8 din costul unei porti nici cu două intrări. Tabelul de reciproce pentru GF(8) necesită aproximativ 56 de porti. Multiplicatorul combinational pentru GF(8) utilizează 64 de circuite şi si 66 de circuite sau-exclusiv, ceea ce echivalează cu cca. 6 de porti. Cu toate acestea, tabelele de căutare nu sunt la fel de fezabile pentru corpuri mai cuprinzătoare. De pildă, echivalentul în porti pentru un tabel de reciproce GF() este de cca. 8, ceea ce este mult mai mult faţă de 4 de porti necesare unui multiplicator combinaţional. Dimensiunea tabelelor de căutare poate fi redusă prin precalculul efectuat pentru a transforma intrarea la o valoare a cărei reciprocă este cunoscută, apoi prin postcalcularea pentru a ajusta inversa. De pildă, dacă inversa lui βαi este δ (obtinută din tabel) atunci inversa lui β este δαi. Căutarea secventială Reciproca lui a poate fi găsită prin testarea relatiei a b = pentru fiecare element din GF(m). Toate valorile b nenule pot fi generate utilizând un registru de deplasare cu feedback liniar de maximă lungime. De pildă, dacă corpul este definit de p(x) = x5 + x + : valoarea initială: a valoarea finală: valoarea initială: valoarea finală: a

111 La deplasarea unui registru, se multiplică continutul cu elementul primitiv α. Registrul cu deplasare spre stânga este încărcat cu a, cel cu deplasare spre dreapta este încărcat cu. Cele două registre sunt deplasate simultan si sincron până când registrul cu deplasare spre stânga atinge. După fiecare deplasare, raportul registrului din stânga la cel din dreapta este a. Dacă i este numărul de deplasări necesare, atunci a αi =, asa încât valoarea αi din registrul cu delasare spre dreapta contine reciprocul lui a. Compromisul timp-memorie O memorie asociativă cum este un tabel hash poate fi utilizată pentru a reduce numărul de tempo-uri (cicluri) necesar pentru găsirea reciprocului fără a utiliza uni tabel de căutare complet. De exemplu, presupunând că se stochează reciprocele lui α6i pentru i =,,, (m)/6, fragmentul următor de program află recirocul lui a în cel mult 6 pasi: for (i = ; i < 6; i++) { if (a αi este în tabelul de reciproce) { return αi reciproc(a αi); } } Timpul de căutare poate fi scăzut prin utilizarea unei memorii asociative încă mai cuprinzătoare. Aceeasi tratare poate fi utilizată pentru a reduce memoria necesară la calculul logaritmului discret al celor m valori de intrare într-un tabel de căutare directă pe (m)/c intrări dacă sunt folosite c căutări. Reciproce prin exponentiere Dacă β este un element nenul din GF(q) atunci βq =. Astfel, β = βq. Puterile lui β pot fi calculate eficient prin ridicarea la pătrat si multiplicare cu β. Reprezentarea binară a lui m contine m biti:. Ridicare la pătrat Valoare initială: β Valorile succesive ale elementului de memorie sunt, β, β6, β4,, β. Se obtine β = β în m cicluri ale ceasului, o multiplicare/ridicare la pătrat per ciclu. În GF(m) ridicarea la pătrat este liniară si poate fi reprezentată printr-o matrice binară m m. m m

112 Reciproce prin reprezentarea în subcorpuri Se consideră GF(m) ca fiind multimea perechilor din GF(m) modulo un polinom prim x + αx + peste GF(m). Caz special: x + b. Se utilizează algoritmul lui Euclid pentru a calcula (x + b) : x + αx + = (x + b)(x + (α + b)) + (b + αb + ) (x + b) = (x + (α + b))/(b + αb + ) = (α + b)/(b + αb + ) + x/(b + αb + ) În general, reciprocul unui element arbitrar ax + b (a ): (ax + b) = a (x + b/a) = [x + (α + b/a)]/[a((b/a) + α(b/a) + ] = = [ax + (αa + b)]/(b + αab + a) = = (αa + b)/(b + αab + a) + ax/(b + αab + a) Numitorul este nenul deoarece a este nenul si x + αx + este prim. Calculul lui (ax + b) uzează de operatii din subcorpul GF(m): o inversare, o scalare, o ridicare la pătrat si trei multiplicări. Reciproce: circuite combinaţionale recursive Dacă β este în GF(m), atunci ( β + ) = β ( + )( ) = β =. Deoarece ordinul lui β + divide pe m, el apartine unui subcorp mai mic GF(m). Reciprocul lui poate fi calculat utilizând un circuit mai mic. Exemplu: Circuitul reciprocei în GF(8) = GF((4)): m m m m m m β Puterea a 6-a β 7 β 6 Inversa în GF(6) β 7 β m Circuitul pentru β este liniar, utilizează cca. m/ porti sau-exclusiv. Multiplicatoarele utilizează O(m) porti. Unitatea reciprocă prin subcorp este mică. Costul general al circuitului este aproximativ cât 3 multiplicatoare generale. Metoda aceasta a fost descoperită de Itoh si Tsuji în 988. Implementarea hardware a aritmeticii în corpuri Galois este prezentată în teza de doctorat a lui Christof Paar sustinută la Universitatea din Essen în 994: Efficient VLSI Architectures for Bit-Parallel Computation în Galois Field. Definitia codurilor BCH Codurile BCH sunt coduri ciclice peste GF(q) (alfabetul canalului) definite de o matrice de verificare (d ) n peste GF(qm) (alfabetul decodorului):

113 α b α b b + α ( b + ) H = α α b + d α (b + d ) α ( n ) b α ( n )(b + ) ( n )(b + d ) α Parametrii de proiectare ai unui cod BCH sunt: α un element de ordinul n din GF(qm)3 b un întreg nenegativ oarecare (este suficient ca b < n) d un alt întreg cu încadrarea d n (d = si d = n + sunt cazuri triviale) Liniile lui H sunt alcătuite din primele n puteri ale unor puteri consecutive ale elementului α. Cazuri speciale ale codurilor BCH Un cod BCH primitiv este un cod BCH definit prin utilizarea unui element α primitiv4. Dacă α este element primtiv al lui GF(qm), atunci lungimea blocului este n = qm. Aceasta este lungimea de bloc maxim posibilă pentru alfabetul decodorului GF(qm). Un cod BCH în sens restrâns este un cod BCH cu b =. Unele formule de decodare se simplifică dacă b =. Cu toate acestea, uzual se foloseste b. Matricea de verificare (a paritătii) pentru un cod BCH în sens restrâns primitiv, corector a t erori este α α α α 4 α t α 4t α ( n ) α ( n ) t ( n ) α cu n = qm si α o rădăcină de ordinul n a unitǎtii în GF(qm). Fiecare linie a lui H este o linie a matricei de transformare Fourier în corpul finit de dimensiune n. Cuvintele de cod sunt n-tuple ale cǎror spectre au zerouri la t frecvente consecutive. Coduri Reed-Solomon Codurile Reed-Solomon sunt coduri BCH cu alfabetul decodorului identic cu alfabetul canalului. Polinoamele minimale peste GF(Q) ale elementelor lui GF(Q) au gradul. Astfel polinomul generator al unui cod Reed-Solomon corector a t erori este g(x) = (x αb)(x αb + ) (x αb + t ) = 3 4 Element de ordinul n, fie acesta α, este acela pentru care αn =, cu n minim. Un element din GF(qm) care generează grupul multiplicativ al corpului GF(qm). 3

114 = g + gx gt xt + xt cu g, g,..., gt elemente din GF(Q). Distanta minimǎ este t +, indiferent de alegerea fǎcutǎ pentru α si b. Uzual α este selectat a fi o rǎdǎcinǎ primitivǎ a unitǎtii în GF(Q) pentru a maximiza lungimea blocului. Exponentul de bazǎ b poate fi ales pentru a reduce complexitatea codorului si/sau a decodorului. Un exemplu: Discurile compacte audio si cele CD-ROM utilizeazǎ douǎ coduri corectoare de erori Reed-Solomon peste GF(8). Polinomul primitiv utilizat pentru definirea aritmeticii corpului este x8 + x4 + x3 + x +. Exponentul de bazǎ este b =. Polinomul generator al codului Reed-Solomon (55, 5) este g(x) = (x + )(x + α)(x + α)(x + α3) = = x4 + α75x3 + α49x + α78x + α6 = = x4 + fx3 + 36x + 78x + 4 În reprezentǎrile hexadecimale ale coeficientilor, cel mai semnificativ bit este la stânga, adicǎ =, α =, α = 4 ş.a.m.d. Nu existǎ trinoame prime de gradul 8; de fapt, nu existǎ trinoame prime de gradul 8m oricare ar fi m. Codul BCH (5, 7, 5): matricea de verificare a paritǎtii Matricea de verificare a paritǎtii pentru codul BCH binar (5, 7, 5) este = H = α 3 α α α 6 α α 3 9 α 4 = α 4 Deoarece liniile lui H sunt liniar independente, sunt 8 sindroame. Existǎ + C5 + C5 = < 7 < 8 pattern-uri de eroare de pondere cel mult. Acest cod nu atinge limita Hamming. O matrice sistematicǎ de verificare a paritǎtii poate fi obtinutǎ folosind polinomul generator. Nu existǎ un cod binar bloc liniar (5, 8) cu distanta minimǎ 5. Cod BCH (5, 7, 5): polinomul generator 4

115 Polinomul generator este cel mai mic multiplu comun al polinoamelor minimale pentru α, α, α3, α4: g(x) = (x4 + x + )(x4 + x3 + x + x + ) = = x8 + x7 + x6 + x4 + = + x4 + x6 + x7 + x8 Codurile BCH sunt ciclice, asadar au codoare si circuite sindrom registre de deplasare. Pentru codul binar BCH (5, 7, 5) poate fi utilizatǎ o captare (trapping) de erori modificatǎ. Orice pattern de eroare pe biti poate fi rotit în 8 pozitii de verificare. Astfel, pot fi necesare douǎ treceri de captare a erorilor. Cod BCH (5, 5, 7) Polinomul generator al unui cod BCH capabil a corecta trei erori este definit de zerourile α, α3, α5: g(x) = f(x)f3(x)f5(x) = (x4 + x + )(x4 + x3 + x + x + )(x + x + ) = = x + x8 + x5 + x4 + x + x + Matricea de verificare a paritǎtii este 3 5 peste GF(4) sau 5 peste GF(): = α α α 4 H = α 3 α 6 α 4 α 5 α α 7 5 =

116 Ultimele douǎ linii sunt redundante: ultima linie este alcǎtuitǎ numai din zerouri, penultima si antepenultima sunt identice. Rezultǎ ecuatii de verificare si k = 5. Matricea H are linii independente si defineste un cod ciclic binar (5, 5). Polinomul de verificare a paritǎtii h(x) = (x4 + x3 + )(x + ) include toti divizorii primi ai lui x5 care nu sunt inclusi în g(x). Dualul acestui cod BCH este un cod Hamming (5, ) purjat (expurgated) cu d* = 4. Codul BCH (5, 5) se obtine din codul de lungime maximǎ (5, 4) prin augmentare, care include si complementele cuvintelor de cod originale. Enumeratorul de ponderi este A(x) = + 5x7 + 5x8 + x5. Codul BCH (3, 6, 7) Zerourile cuvintelor de cod sunt α, α3, α5 în GF(5). Matricea de verificare a paritǎtii: H = Polinomul generator: x5 + x + x + x9 + x8 + x7 + x5 + x3 + x + x +. Nu este tocmai evident cǎ fiecare set de 6 coloane din H este liniar independent! Pentru lungimea blocului de 3, toate codurile BCH binare cu d* = 7 au 5 biti de verificare. Codul expandat cu (n, k, d*) = (3, 6, 8) este un cod Reed-Muller. Coduri BCH cu GF(6) alfabet al decodorului Se presupune cǎ α este o rǎdǎcinǎ primitivǎ în GF(6). Matricea de verificare a paritǎtii urmǎtoare defineste un cod BCH în sens restrâns primitiv peste orice alfabet de canal care este un subcorp al lui GF(6). 6

117 H = α α α3 α4 α α α α α α α α Cele trei multimi alfabetice posibile ale canalului sunt GF(), GF() si GF(4). Codurile BCH care corespund acestor mulţimi sunt Codul BCH binar (5, 7) peste GF(), prezentat mai devreme Codul BCH (5, 9) peste GF(4) Codul Reed-Solomon (5, ) peste GF(6). Lungimile de bloc în simboluri sunt 5 de fiecare dată, lungimile de bloc în biti sunt 5, 3, 6. Alfabetul de canal GF(6) Cele patru linii ale lui H sunt liniar independente peste GF(4). H defineste un cod (5, ) peste GF(4) cu distanţa minimǎ 5. Codul este un cod Reed-Solomon peste GF(6) corector de douǎ erori. Folosind tabele de puteri ale lui α se poate gǎsi polinomul generator: g(x) = (x + α)(x + α)(x + α3)(x + α4) = = α + a3x + α6x + α3x3 + x4 = 7 + 8x + Ex + Dx3 + x4 Coeficientii polinomului generator sunt calculati cu atimetica din GF(4). Coeficientii pot fi reprezentaţi fie în modul exponential, fie în modul binar. Notatia exponentialǎ simplificǎ multiplicarea (se adunǎ exponentii modulo 5), notatia binarǎ simplificǎ adunarea ( sau-exclusiv pe valori pe 4 biti). Implementǎrile hardware utilizeazǎ vectori de biti si adesea tabele log/antilog. Alfabetul de canal GF(4) Fie GF(4) = {,, β, δ} cu δ = β + = β. GF(6) constǎ în perechi de elemente din GF(4) care are polinomul primitiv x + x + β. H defineste un cod BCH peste subcorpul GF(4). H[ ] = β β β δ β δ β δ β β β δ β δ δ δ β β δ β δ β β 7 δ β δ δ β β δ β β β β δ β β β δ δ δ β δ δ β β δ δ δ δ β β β β δ β δ β β δ β δ δ β δ δ

118 Ultimele douǎ linii, care corespund conjugatei lui α4 peste GF(4), sunt redundante (linia 7-a este egalǎ cu suma liniilor si, linia 8 este identicǎ cu linia ). Astfel g(x) = f(x) f(x) f3(x) are gradul 6 de unde rezultǎ un cod (5, 9, 5) peste GF(4). Alfabetul de canal GF() Matricea 6 5 care urmeazǎ are linii redundante peste GF(). Orice linie din blocurile de patru linii al doilea si al patrulea este o combinatie liniarǎ a primelor patru linii. H [ ] = Prin stergerea liniilor redundante din H, se obtine matricea de verificare a paritǎtii a codului BCH (5, 7) peste GF(), corector de erori, discutat mai devreme. Matrici Vandermonde Definitie: O matrice Vandermonde µ µ, V(x,, xµ) este o matrice de forma x x V= xµ xµ xµ µ xµ O aplicatie remarcabilă a matricilor Vandermonde este cea legată de interpolarea polinomialǎ. Fiind date valorile polinomului f(x) de gradul µ în µ puncte distincte x,, xµ 8

119 yi = f(xi) = f + fxi + + fµ xiµ (i =,, µ) coeficientii lui f(x) pot fi gǎsiti prin rezolvarea ecuatiei matriciale [y y yµ] = [f f fµ ]V(x,, xµ) Matrici Vandermonde nesingulare Lemǎ: Matricea Vandermonde V(x,, xµ) este nesingularǎ dacǎ si numai dacǎ valorile x,, xµ sunt distincte. De fapt, det V(x,, xµ) = ( xi x j ) = i> j µ i i= j= ( xi x j ) Demonstratie: Determinantul este un polinom în µ variabile, x,, xµ. Ca polinom în xi, zerourile lui sunt xj pentru j i. Astfel xi xj este un factor al determinantului oricare ar fi perechea (i, j) cu i > j. Aceştia sunt toţi factorii deoarece gradul lui det V(x,, xµ) este (µ ) + (µ ) = µ(µ )/ = Cµ Coeficientul monomului de pe diagonala principalǎ µ i= xii = x x3... xµµ este egal cu atât în determinant cât si în formula de mai sus a determinantului. Limita BCH Teoremǎ: Un cod BCH a cǎrui matrice de verificare a paritǎtii are d linii are dmin d. Demonstratie: Fiecare set de d coloane din H este liniar independent peste GF(qm). Pentru a evidentia aceasta se considerǎ o submatrice alcătuită din coloanele i,, id. α ib α i (b + ) det α i (b + d ) α i d b α id (b + ) = (α ib...α id (b + d ) α i i d b α ) det α i ( d ) Determinantul acesta este nenul deoarece α i,, α doua este o matrice Vandermonde cu coloane distincte. id α id id ( d ) α si matricea a Proiectarea codurilor BCH Cuvintele unui cod BCH au zerouri care sunt d puteri consecutive al lui α. Conjugatele peste alfabetul GF(q) al canalului sunt si ele zerouri. Gradul polinomului generator este numǎrul total de conjugate. Exemplu: Alfabetul canalului GF(), alfabetul decodorului GF(6). Primele şase clase de conjugare sunt reprezentate de exponentii: 9

120 {} {,, 4, 8, 6, 3} {3, 6,, 4, 48, 33} {5,,, 4, 7, 34} {7, 4, 8, 56, 49, 35} {9, 8, 36} d* = 5 necesitǎ 4 puteri. Exponentii {,, 3, 4} conjugate. d* = 9 necesitǎ 8 puteri. Exponentii {,, 8} 4 conjugate. d* = necesitǎ puteri. Exponentii {,, } 7 conjugate. d* = 4 necesitǎ 3 puteri. Exponentii {,, 3} conjugate, dar mai bine {,, } 7 conjugate (codul purjat expurgated). GF(56): puteri ale unui element primitiv Alfabet al decodorului GF(56) Codurile BCH primitive în sens restrâns, corectoare de douǎ erori peste GF(), GF(), GF(4), GF(8) pot fi definite de o aceeasi matrice de verificare a paritǎtii: H = α α α3 α4 α α α α α 54 α 58 α 75 α 6 Polinoamele generatoare lcm(f(x), f(x), f3(x), f4(x)) au coeficienti din subcorpuri. GF() = {,, α85, α7} = {,,D6,D7} GF(4) = {,, α7,, α38} = {,B,98,D6}

Metode iterative pentru probleme neliniare - contractii

Metode iterative pentru probleme neliniare - contractii Metode iterative pentru probleme neliniare - contractii Problemele neliniare sunt in general rezolvate prin metode iterative si analiza convergentei acestor metode este o problema importanta. 1 Contractii

Διαβάστε περισσότερα

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate. Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi" Iaşi 2014 Fie p, q N. Fie funcţia f : D R p R q. Avem următoarele

Διαβάστε περισσότερα

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a. Definiţie Spunem că: i) funcţia f are derivată parţială în punctul a în raport cu variabila i dacă funcţia de o variabilă ( ) are derivată în punctul a în sens obişnuit (ca funcţie reală de o variabilă

Διαβάστε περισσότερα

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică Gh. Asachi Curs 14 Funcţii implicite Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi" Iaşi 2014 Fie F : D R 2 R o funcţie de două variabile şi fie ecuaţia F (x, y) = 0. (1) Problemă În ce condiţii ecuaţia

Διαβάστε περισσότερα

riptografie şi Securitate

riptografie şi Securitate riptografie şi Securitate - Prelegerea 12 - Scheme de criptare CCA sigure Adela Georgescu, Ruxandra F. Olimid Facultatea de Matematică şi Informatică Universitatea din Bucureşti Cuprins 1. Schemă de criptare

Διαβάστε περισσότερα

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE. 5 Eerciţii reolvate 5 UNCŢII IMPLICITE EXTREME CONDIŢIONATE Eerciţiul 5 Să se determine şi dacă () este o funcţie definită implicit de ecuaţia ( + ) ( + ) + Soluţie ie ( ) ( + ) ( + ) + ( )R Evident este

Διαβάστε περισσότερα

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare 1 Planul în spaţiu Ecuaţia generală Plane paralele Unghi diedru 2 Ecuaţia generală Plane paralele Unghi diedru Fie reperul R(O, i, j, k ) în spaţiu. Numim normala a unui plan, un vector perpendicular pe

Διαβάστε περισσότερα

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă. III. Serii absolut convergente. Serii semiconvergente. Definiţie. O serie a n se numeşte: i) absolut convergentă dacă seria modulelor a n este convergentă; ii) semiconvergentă dacă este convergentă iar

Διαβάστε περισσότερα

5.4. MULTIPLEXOARE A 0 A 1 A 2

5.4. MULTIPLEXOARE A 0 A 1 A 2 5.4. MULTIPLEXOARE Multiplexoarele (MUX) sunt circuite logice combinaţionale cu m intrări şi o singură ieşire, care permit transferul datelor de la una din intrări spre ieşirea unică. Selecţia intrării

Διαβάστε περισσότερα

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea Serii Laurent Definitie. Se numeste serie Laurent o serie de forma Seria n= (z z 0 ) n regulata (tayloriana) = (z z n= 0 ) + n se numeste partea principala iar seria se numeste partea Sa presupunem ca,

Διαβάστε περισσότερα

Sisteme diferenţiale liniare de ordinul 1

Sisteme diferenţiale liniare de ordinul 1 1 Metoda eliminării 2 Cazul valorilor proprii reale Cazul valorilor proprii nereale 3 Catedra de Matematică 2011 Forma generală a unui sistem liniar Considerăm sistemul y 1 (x) = a 11y 1 (x) + a 12 y 2

Διαβάστε περισσότερα

Criptosisteme cu cheie publică III

Criptosisteme cu cheie publică III Criptosisteme cu cheie publică III Anul II Aprilie 2017 Problema rucsacului ( knapsack problem ) Considerăm un număr natural V > 0 şi o mulţime finită de numere naturale pozitive {v 0, v 1,..., v k 1 }.

Διαβάστε περισσότερα

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1 Functii definitie proprietati grafic functii elementare A. Definitii proprietatile functiilor. Fiind date doua multimi X si Y spunem ca am definit o functie (aplicatie) pe X cu valori in Y daca fiecarui

Διαβάστε περισσότερα

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile Metode de Optimizare Curs V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile Propoziţie 7. (Fritz-John). Fie X o submulţime deschisă a lui R n, f:x R o funcţie de clasă C şi ϕ = (ϕ,ϕ

Διαβάστε περισσότερα

Curs 1 Şiruri de numere reale

Curs 1 Şiruri de numere reale Bibliografie G. Chiorescu, Analiză matematică. Teorie şi probleme. Calcul diferenţial, Editura PIM, Iaşi, 2006. R. Luca-Tudorache, Analiză matematică, Editura Tehnopress, Iaşi, 2005. M. Nicolescu, N. Roşculeţ,

Διαβάστε περισσότερα

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor. Fiind date doua multimi si spunem ca am definit o functie (aplicatie) pe cu valori in daca fiecarui element

Διαβάστε περισσότερα

Metode de interpolare bazate pe diferenţe divizate

Metode de interpolare bazate pe diferenţe divizate Metode de interpolare bazate pe diferenţe divizate Radu Trîmbiţaş 4 octombrie 2005 1 Forma Newton a polinomului de interpolare Lagrange Algoritmul nostru se bazează pe forma Newton a polinomului de interpolare

Διαβάστε περισσότερα

Curs 4 Serii de numere reale

Curs 4 Serii de numere reale Curs 4 Serii de numere reale Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi" Iaşi 2014 Criteriul rădăcinii sau Criteriul lui Cauchy Teoremă (Criteriul rădăcinii) Fie x n o serie cu termeni

Διαβάστε περισσότερα

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER 2. Circuite logice 2.4. Decodoare. Multiplexoare Copyright Paul GASNER Definiţii Un decodor pe n bits are n intrări şi 2 n ieşiri; cele n intrări reprezintă un număr binar care determină în mod unic care

Διαβάστε περισσότερα

Integrala nedefinită (primitive)

Integrala nedefinită (primitive) nedefinita nedefinită (primitive) nedefinita 2 nedefinita februarie 20 nedefinita.tabelul primitivelor Definiţia Fie f : J R, J R un interval. Funcţia F : J R se numeşte primitivă sau antiderivată a funcţiei

Διαβάστε περισσότερα

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE ABSTRACT. Materialul prezintă o modalitate de a afla distanţa dintre două drepte necoplanare folosind volumul tetraedrului. Lecţia se adresează clasei a VIII-a Data:

Διαβάστε περισσότερα

Esalonul Redus pe Linii (ERL). Subspatii.

Esalonul Redus pe Linii (ERL). Subspatii. Seminarul 1 Esalonul Redus pe Linii (ERL). Subspatii. 1.1 Breviar teoretic 1.1.1 Esalonul Redus pe Linii (ERL) Definitia 1. O matrice A L R mxn este in forma de Esalon Redus pe Linii (ERL), daca indeplineste

Διαβάστε περισσότερα

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0 Facultatea de Hidrotehnică, Geodezie şi Ingineria Mediului Matematici Superioare, Semestrul I, Lector dr. Lucian MATICIUC SEMINAR 4 Funcţii de mai multe variabile continuare). Să se arate că funcţia z,

Διαβάστε περισσότερα

MARCAREA REZISTOARELOR

MARCAREA REZISTOARELOR 1.2. MARCAREA REZISTOARELOR 1.2.1 MARCARE DIRECTĂ PRIN COD ALFANUMERIC. Acest cod este format din una sau mai multe cifre şi o literă. Litera poate fi plasată după grupul de cifre (situaţie în care valoarea

Διαβάστε περισσότερα

4. CIRCUITE LOGICE ELEMENTRE 4.. CIRCUITE LOGICE CU COMPONENTE DISCRETE 4.. PORŢI LOGICE ELEMENTRE CU COMPONENTE PSIVE Componente electronice pasive sunt componente care nu au capacitatea de a amplifica

Διαβάστε περισσότερα

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM Seminar S ANALA ÎN CUENT CONTNUU A SCHEMELO ELECTONCE S. ntroducere Pentru a analiza în curent continuu o schemă electronică,

Διαβάστε περισσότερα

Geometrie computationala 2. Preliminarii geometrice

Geometrie computationala 2. Preliminarii geometrice Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Geometrie computationala 2. Preliminarii geometrice Preliminarii geometrice Spatiu Euclidean: E d Spatiu de d-tupluri,

Διαβάστε περισσότερα

Câmp de probabilitate II

Câmp de probabilitate II 1 Sistem complet de evenimente 2 Schema lui Poisson Schema lui Bernoulli (a bilei revenite) Schema hipergeometrică (a bilei neîntoarsă) 3 4 Sistem complet de evenimente Definiţia 1.1 O familie de evenimente

Διαβάστε περισσότερα

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale. 5p Determinați primul termen al progresiei geometrice ( b n ) n, știind că b 5 = 48 și b 8 = 84 5p Se consideră funcția f : intersecție a graficului funcției f cu aa O R R, f ( ) = 7+ 6 Determinați distanța

Διαβάστε περισσότερα

Subiecte Clasa a VIII-a

Subiecte Clasa a VIII-a Subiecte lasa a VIII-a (40 de intrebari) Puteti folosi spatiile goale ca ciorna. Nu este de ajuns sa alegeti raspunsul corect pe brosura de subiecte, ele trebuie completate pe foaia de raspuns in dreptul

Διαβάστε περισσότερα

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane Subspatii ane Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane Oana Constantinescu Oana Constantinescu Lectia VI Subspatii ane Table of Contents 1 Structura de spatiu an E 3 2 Subspatii

Διαβάστε περισσότερα

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor Facultatea de Matematică Calcul Integral şi Elemente de Analiă Complexă, Semestrul I Lector dr. Lucian MATICIUC Seminariile 9 20 Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reiduurilor.

Διαβάστε περισσότερα

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b.

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b. Lucrare Soluţii 28 aprilie 2015 Varianta 1 I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2 Definiţie. Numărul întreg p se numeşte număr prim dacă p 0,

Διαβάστε περισσότερα

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice 1 Conice pe ecuaţii reduse 2 Conice pe ecuaţii reduse Definiţie Numim conica locul geometric al punctelor din plan pentru care raportul distantelor la un punct fix F şi la o dreaptă fixă (D) este o constantă

Διαβάστε περισσότερα

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca Conice Lect. dr. Constantin-Cosmin Todea U.T. Cluj-Napoca Definiţie: Se numeşte curbă algebrică plană mulţimea punctelor din plan de ecuaţie implicită de forma (C) : F (x, y) = 0 în care funcţia F este

Διαβάστε περισσότερα

Spatii liniare. Exemple Subspaţiu liniar Acoperire (înfăşurătoare) liniară. Mulţime infinită liniar independentă

Spatii liniare. Exemple Subspaţiu liniar Acoperire (înfăşurătoare) liniară. Mulţime infinită liniar independentă Noţiunea de spaţiu liniar 1 Noţiunea de spaţiu liniar Exemple Subspaţiu liniar Acoperire (înfăşurătoare) liniară 2 Mulţime infinită liniar independentă 3 Schimbarea coordonatelor unui vector la o schimbare

Διαβάστε περισσότερα

Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism. (Y = f(x)).

Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism. (Y = f(x)). Teoremă. (Y = f(x)). Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism Demonstraţie. f este continuă pe X: x 0 X, S Y (f(x 0 ), ε), S X (x 0, ε) aşa ca f(s X (x 0, ε)) = S Y (f(x 0 ), ε) : y

Διαβάστε περισσότερα

Subiecte Clasa a VII-a

Subiecte Clasa a VII-a lasa a VII Lumina Math Intrebari Subiecte lasa a VII-a (40 de intrebari) Puteti folosi spatiile goale ca ciorna. Nu este de ajuns sa alegeti raspunsul corect pe brosura de subiecte, ele trebuie completate

Διαβάστε περισσότερα

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0 SERII NUMERICE Definiţia 3.1. Fie ( ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0 şirul definit prin: s n0 = 0, s n0 +1 = 0 + 0 +1, s n0 +2 = 0 + 0 +1 + 0 +2,.......................................

Διαβάστε περισσότερα

Asupra unei inegalităţi date la barajul OBMJ 2006

Asupra unei inegalităţi date la barajul OBMJ 2006 Asupra unei inegalităţi date la barajul OBMJ 006 Mircea Lascu şi Cezar Lupu La cel de-al cincilea baraj de Juniori din data de 0 mai 006 a fost dată următoarea inegalitate: Fie x, y, z trei numere reale

Διαβάστε περισσότερα

2 Transformări liniare între spaţii finit dimensionale

2 Transformări liniare între spaţii finit dimensionale Transformări 1 Noţiunea de transformare liniară Proprietăţi. Operaţii Nucleul şi imagine Rangul şi defectul unei transformări 2 Matricea unei transformări Relaţia dintre rang şi defect Schimbarea matricei

Διαβάστε περισσότερα

Vectori liberi Produs scalar Produs vectorial Produsul mixt. 1 Vectori liberi. 2 Produs scalar. 3 Produs vectorial. 4 Produsul mixt.

Vectori liberi Produs scalar Produs vectorial Produsul mixt. 1 Vectori liberi. 2 Produs scalar. 3 Produs vectorial. 4 Produsul mixt. liberi 1 liberi 2 3 4 Segment orientat liberi Fie S spaţiul geometric tridimensional cu axiomele lui Euclid. Orice pereche de puncte din S, notată (A, B) se numeşte segment orientat. Dacă A B, atunci direcţia

Διαβάστε περισσότερα

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă Coordonatori DANA HEUBERGER NICOLAE MUŞUROIA Nicolae Muşuroia Gheorghe Boroica Vasile Pop Dana Heuberger Florin Bojor MATEMATICĂ DE EXCELENŢĂ pentru concursuri, olimpiade şi centre de excelenţă Clasa a

Διαβάστε περισσότερα

1.3 Baza a unui spaţiu vectorial. Dimensiune

1.3 Baza a unui spaţiu vectorial. Dimensiune .3 Baza a unui spaţiu vectorial. Dimensiune Definiţia.3. Se numeşte bază a spaţiului vectorial V o familie de vectori B care îndeplineşte condiţiile de mai jos: a) B este liniar independentă; b) B este

Διαβάστε περισσότερα

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2 .1 Sfera Definitia 1.1 Se numeşte sferă mulţimea tuturor punctelor din spaţiu pentru care distanţa la u punct fi numit centrul sferei este egalăcuunnumăr numit raza sferei. Fie centrul sferei C (a, b,

Διαβάστε περισσότερα

Matrice. Determinanti. Sisteme liniare

Matrice. Determinanti. Sisteme liniare Matrice 1 Matrice Adunarea matricelor Înmulţirea cu scalar. Produsul 2 Proprietăţi ale determinanţilor Rangul unei matrice 3 neomogene omogene Metoda lui Gauss (Metoda eliminării) Notiunea de matrice Matrice

Διαβάστε περισσότερα

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu INTRODUCERE Laborator 1: ÎN ALGORITMI Întocmit de: Claudia Pârloagă Îndrumător: Asist. Drd. Gabriel Danciu I. NOŢIUNI TEORETICE A. Sortarea prin selecţie Date de intrare: un şir A, de date Date de ieşire:

Διαβάστε περισσότερα

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005. SUBIECTUL Editia a VI-a 6 februarie 005 CLASA a V-a Fie A = x N 005 x 007 si B = y N y 003 005 3 3 a) Specificati cel mai mic element al multimii A si cel mai mare element al multimii B. b)stabiliti care

Διαβάστε περισσότερα

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Aplicaţii ale principiului I al termodinamicii la gazul ideal Aplicaţii ale principiului I al termodinamicii la gazul ideal Principiul I al termodinamicii exprimă legea conservării şi energiei dintr-o formă în alta şi se exprimă prin relaţia: ΔUQ-L, unde: ΔU-variaţia

Διαβάστε περισσότερα

Seminar 5 Analiza stabilității sistemelor liniare

Seminar 5 Analiza stabilității sistemelor liniare Seminar 5 Analiza stabilității sistemelor liniare Noțiuni teoretice Criteriul Hurwitz de analiză a stabilității sistemelor liniare În cazul sistemelor liniare, stabilitatea este o condiție de localizare

Διαβάστε περισσότερα

Problema a II - a (10 puncte) Diferite circuite electrice

Problema a II - a (10 puncte) Diferite circuite electrice Olimpiada de Fizică - Etapa pe judeţ 15 ianuarie 211 XI Problema a II - a (1 puncte) Diferite circuite electrice A. Un elev utilizează o sursă de tensiune (1), o cutie cu rezistenţe (2), un întrerupător

Διαβάστε περισσότερα

III. Reprezentarea informaţiei în sistemele de calcul

III. Reprezentarea informaţiei în sistemele de calcul Metode Numerice Curs 3 III. Reprezentarea informaţiei în sistemele de calcul III.1. Reprezentarea internă a numerelor întregi III. 1.1. Reprezentarea internă a numerelor întregi fără semn (pozitive) Reprezentarea

Διαβάστε περισσότερα

CURS 11: ALGEBRĂ Spaţii liniare euclidiene. Produs scalar real. Spaţiu euclidian. Produs scalar complex. Spaţiu unitar. Noţiunea de normă.

CURS 11: ALGEBRĂ Spaţii liniare euclidiene. Produs scalar real. Spaţiu euclidian. Produs scalar complex. Spaţiu unitar. Noţiunea de normă. Sala: 2103 Decembrie 2014 Conf. univ. dr.: Dragoş-Pătru Covei CURS 11: ALGEBRĂ Specializarea: C.E., I.E., S.P.E. Nota: Acest curs nu a fost supus unui proces riguros de recenzare pentru a fi oficial publicat.

Διαβάστε περισσότερα

Zgomotul se poate suprapune informaţiei utile în două moduri: g(x, y) = f(x, y) n(x, y) (6.2)

Zgomotul se poate suprapune informaţiei utile în două moduri: g(x, y) = f(x, y) n(x, y) (6.2) Lucrarea 6 Zgomotul în imagini BREVIAR TEORETIC Zgomotul este un semnal aleator, care afectează informaţia utilă conţinută într-o imagine. El poate apare de-alungul unui lanţ de transmisiune, sau prin

Διαβάστε περισσότερα

8 Intervale de încredere

8 Intervale de încredere 8 Intervale de încredere În cursul anterior am determinat diverse estimări ˆ ale parametrului necunoscut al densităţii unei populaţii, folosind o selecţie 1 a acestei populaţii. În practică, valoarea calculată

Διαβάστε περισσότερα

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R În cele ce urmează, vom studia unele proprietăţi ale mulţimilor din R. Astfel, vom caracteriza locul" unui punct în cadrul unei mulţimi (în limba

Διαβάστε περισσότερα

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB 1.7. AMLFCATOARE DE UTERE ÎN CLASA A Ş AB 1.7.1 Amplificatoare în clasa A La amplificatoarele din clasa A, forma de undă a tensiunii de ieşire este aceeaşi ca a tensiunii de intrare, deci întreg semnalul

Διαβάστε περισσότερα

Sisteme liniare - metode directe

Sisteme liniare - metode directe Sisteme liniare - metode directe Radu T. Trîmbiţaş 27 martie 2016 1 Eliminare gaussiană Să considerăm sistemul liniar cu n ecuaţii şi n necunoscute Ax = b, (1) unde A K n n, b K n 1 sunt date, iar x K

Διαβάστε περισσότερα

Câteva limite fundamentale in telecomunicaţii. Curs festiv, an 5, promoţia iunie 2004

Câteva limite fundamentale in telecomunicaţii. Curs festiv, an 5, promoţia iunie 2004 Claude E. Shannon Vladimir Kotelniov Câteva limite fundamentale in telecomunicaţii Curs festiv, an 5, promoţia 004 9 iunie 004 Introducere Ieşirea unei surse discrete este o variabilă aleatoare S ce ia

Διαβάστε περισσότερα

Coduri grup - coduri Hamming

Coduri grup - coduri Hamming Capitolul 5 Coduri grup - coduri Hamming 5. Breviar teoretic Dacăîn capitolul precedent s-a pus problema codării surselor pentru eficientiezarea unei transmisiuni ce se presupunea a nu fi perturbată de

Διαβάστε περισσότερα

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE 5.5. A CIRCUITELOR CU TRANZISTOARE BIPOLARE PROBLEMA 1. În circuitul din figura 5.54 se cunosc valorile: μa a. Valoarea intensității curentului de colector I C. b. Valoarea tensiunii bază-emitor U BE.

Διαβάστε περισσότερα

Demonstraţie: Să considerăm polinomul {f(x)} asociat cuvântului - cod: f(x) = h(1) + h(α)x h(α n 1 )X n 1 = a 0 (1 + X + X

Demonstraţie: Să considerăm polinomul {f(x)} asociat cuvântului - cod: f(x) = h(1) + h(α)x h(α n 1 )X n 1 = a 0 (1 + X + X Prelegerea 13 Coduri Reed - Solomon 13.1 Definirea codurilor RS O clasă foarte interesantă de coduri ciclice a fost definită în 1960 de Reed şi Solomon. Numite în articolul iniţial coduri polinomiale,

Διαβάστε περισσότερα

2. Circuite logice 2.5. Sumatoare şi multiplicatoare. Copyright Paul GASNER

2. Circuite logice 2.5. Sumatoare şi multiplicatoare. Copyright Paul GASNER 2. Circuite logice 2.5. Sumatoare şi multiplicatoare Copyright Paul GASNER Adunarea în sistemul binar Adunarea se poate efectua în mod identic ca la adunarea obişnuită cu cifre arabe în sistemul zecimal

Διαβάστε περισσότερα

a. 11 % b. 12 % c. 13 % d. 14 %

a. 11 % b. 12 % c. 13 % d. 14 % 1. Un motor termic funcţionează după ciclul termodinamic reprezentat în sistemul de coordonate V-T în figura alăturată. Motorul termic utilizează ca substanţă de lucru un mol de gaz ideal având exponentul

Διαβάστε περισσότερα

Definiţia 1.1 Fiind date mulţimile A (alfabetul sursă) şi B (alfabetul cod), o codificare

Definiţia 1.1 Fiind date mulţimile A (alfabetul sursă) şi B (alfabetul cod), o codificare Prelegerea 1 Codificare şi decodificare 1.1 Codificare Definiţia 1.1 Fiind date mulţimile A (alfabetul sursă) şi B (alfabetul cod), o codificare este o aplicaţie injectivă K : A B. Elementele mulţimii

Διαβάστε περισσότερα

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1 FNCȚ DE ENERGE Fie un n-port care conține numai elemente paive de circuit: rezitoare dipolare, condenatoare dipolare și bobine cuplate. Conform teoremei lui Tellegen n * = * toate toate laturile portile

Διαβάστε περισσότερα

Coduri detectoare şi corectoare de erori

Coduri detectoare şi corectoare de erori Coduri detectoare şi corectoare de erori Adrian Atanasiu Editura Universităţii BUCUREŞTI Prefaţă Vă uitaţi la televizor care transmite imagini prin satelit? Vorbiţi la telefon (celular)? Folosiţi Internetul?

Διαβάστε περισσότερα

V O. = v I v stabilizator

V O. = v I v stabilizator Stabilizatoare de tensiune continuă Un stabilizator de tensiune este un circuit electronic care păstrează (aproape) constantă tensiunea de ieșire la variaţia între anumite limite a tensiunii de intrare,

Διαβάστε περισσότερα

10. STABILIZATOAE DE TENSIUNE 10.1 STABILIZATOAE DE TENSIUNE CU TANZISTOAE BIPOLAE Stabilizatorul de tensiune cu tranzistor compară în permanenţă valoare tensiunii de ieşire (stabilizate) cu tensiunea

Διαβάστε περισσότερα

Functii Breviar teoretic 8 ianuarie ianuarie 2011

Functii Breviar teoretic 8 ianuarie ianuarie 2011 Functii Breviar teoretic 8 ianuarie 011 15 ianuarie 011 I Fie I, interval si f : I 1) a) functia f este (strict) crescatoare pe I daca x, y I, x< y ( f( x) < f( y)), f( x) f( y) b) functia f este (strict)

Διαβάστε περισσότερα

Să se arate că n este număr par. Dan Nedeianu

Să se arate că n este număr par. Dan Nedeianu Primul test de selecție pentru juniori I. Să se determine numerele prime p, q, r cu proprietatea că 1 p + 1 q + 1 r 1. Fie ABCD un patrulater convex cu m( BCD) = 10, m( CBA) = 45, m( CBD) = 15 și m( CAB)

Διαβάστε περισσότερα

Codificatorul SN74148 este un codificator zecimal-bcd de trei biţi (fig ). Figura Codificatorul integrat SN74148

Codificatorul SN74148 este un codificator zecimal-bcd de trei biţi (fig ). Figura Codificatorul integrat SN74148 5.2. CODIFICATOAE Codificatoarele (CD) sunt circuite logice combinaţionale cu n intrări şi m ieşiri care furnizează la ieşire un cod de m biţi atunci când numai una din cele n intrări este activă. De regulă

Διαβάστε περισσότερα

Curs 2 Şiruri de numere reale

Curs 2 Şiruri de numere reale Curs 2 Şiruri de numere reale Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi" Iaşi 2014 Convergenţă şi mărginire Teoremă Orice şir convergent este mărginit. Demonstraţie Fie (x n ) n 0 un

Διαβάστε περισσότερα

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15 MĂSURI RELE Cursul 13 15 Măsuri reale Fie (,, µ) un spaţiu cu măsură completă şi f : R o funcţie -măsurabilă. Cum am văzut în Teorema 11.29, dacă f are integrală pe, atunci funcţia de mulţime ν : R, ν()

Διαβάστε περισσότερα

2. Circuite logice 2.2. Diagrame Karnaugh. Copyright Paul GASNER 1

2. Circuite logice 2.2. Diagrame Karnaugh. Copyright Paul GASNER 1 2. Circuite logice 2.2. Diagrame Karnaugh Copyright Paul GASNER Diagrame Karnaugh Tehnică de simplificare a unei expresii în sumă minimă de produse (minimal sum of products MSP): Există un număr minim

Διαβάστε περισσότερα

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1) Ecuatii exponentiale Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. Cea mai simpla ecuatie exponentiala este de forma a x = b, () unde a >, a. Afirmatia.

Διαβάστε περισσότερα

O generalizare a unei probleme de algebră dată la Olimpiada de Matematică, faza judeţeană, 2013

O generalizare a unei probleme de algebră dată la Olimpiada de Matematică, faza judeţeană, 2013 O generalizare a unei probleme de algebră dată la Olimpiada de Matematică, faza judeţeană, 2013 Marius Tărnăuceanu 1 Aprilie 2013 Abstract În această lucrare vom prezenta un rezultat ce extinde Problema

Διαβάστε περισσότερα

Aurelian Claudiu VOLF. Coduri. Universitatea Al. I Cuza Iaşi

Aurelian Claudiu VOLF. Coduri. Universitatea Al. I Cuza Iaşi Aurelian Claudiu VOLF Coduri Universitatea Al. I Cuza Iaşi 2011 Cuprins Cuprins... 2 Prefaţă... 3 Unele notaţii... 5 I. Coduri corectoare de erori... 6 II. Coduri liniare... 14 III. Corpuri finite... 26

Διαβάστε περισσότερα

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice Teme de implementare in Matlab pentru Laboratorul de Metode Numerice As. Ruxandra Barbulescu Septembrie 2017 Orice nelamurire asupra enunturilor/implementarilor se rezolva in cadrul laboratorului de MN,

Διαβάστε περισσότερα

Modelare şi simulare Seminar 4 SEMINAR NR. 4. Figura 4.1 Reprezentarea evoluţiei sistemului prin graful de tranziţii 1 A A =

Modelare şi simulare Seminar 4 SEMINAR NR. 4. Figura 4.1 Reprezentarea evoluţiei sistemului prin graful de tranziţii 1 A A = SEMIR R. 4. Sistemul M/M// Caracteristici: = - intensitatea traficului - + unde Figura 4. Rerezentarea evoluţiei sistemului rin graful de tranziţii = rata medie de sosire a clienţilor în sistem (clienţi

Διαβάστε περισσότερα

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera. pe ecuaţii generale 1 Sfera Ecuaţia generală Probleme de tangenţă 2 pe ecuaţii generale Sfera pe ecuaţii generale Ecuaţia generală Probleme de tangenţă Numim sferă locul geometric al punctelor din spaţiu

Διαβάστε περισσότερα

Curs 2 DIODE. CIRCUITE DR

Curs 2 DIODE. CIRCUITE DR Curs 2 OE. CRCUTE R E CUPRN tructură. imbol Relația curent-tensiune Regimuri de funcționare Punct static de funcționare Parametrii diodei Modelul cu cădere de tensiune constantă Analiza circuitelor cu

Διαβάστε περισσότερα

Examen AG. Student:... Grupa: ianuarie 2016

Examen AG. Student:... Grupa: ianuarie 2016 16-17 ianuarie 2016 Problema 1. Se consideră graful G = pk n (p, n N, p 2, n 3). Unul din vârfurile lui G se uneşte cu câte un vârf din fiecare graf complet care nu-l conţine, obţinându-se un graf conex

Διαβάστε περισσότερα

Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili

Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili Anexa 2.6.2-1 SO2, NOx şi de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili de bioxid de sulf combustibil solid (mg/nm 3 ), conţinut de O 2 de 6% în gazele de ardere, pentru

Διαβάστε περισσότερα

Toate subiectele sunt obligatorii. Timpul de lucru efectiv este de 3 ore. Se acordă din oficiu 10 puncte. SUBIECTUL I.

Toate subiectele sunt obligatorii. Timpul de lucru efectiv este de 3 ore. Se acordă din oficiu 10 puncte. SUBIECTUL I. Modelul 4 Se acordă din oficiu puncte.. Fie numărul complex z = i. Calculaţi (z ) 25. 2. Dacă x şi x 2 sunt rădăcinile ecuaţiei x 2 9x+8 =, atunci să se calculeze x2 +x2 2 x x 2. 3. Rezolvaţi în mulţimea

Διαβάστε περισσότερα

4. Măsurarea tensiunilor şi a curenţilor electrici. Voltmetre electronice analogice

4. Măsurarea tensiunilor şi a curenţilor electrici. Voltmetre electronice analogice 4. Măsurarea tensiunilor şi a curenţilor electrici oltmetre electronice analogice oltmetre de curent continuu Ampl.c.c. x FTJ Protectie Atenuator calibrat Atenuatorul calibrat divizor rezistiv R in const.

Διαβάστε περισσότερα

Coduri detectoare/corectoare de erori. Criptarea informaţiei

Coduri detectoare/corectoare de erori. Criptarea informaţiei 2 Coduri detectoare/corectoare de erori. Criptarea informaţiei 1. Prezentare teoretică În cadrul acestei lucrări de laborator se vor prezenta algotimii CRC şi Reed-Solomon folosiţi la detectarea şi corectarea

Διαβάστε περισσότερα

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:, REZISTENTA MATERIALELOR 1. Ce este modulul de rezistenţă? Exemplificaţi pentru o secţiune dreptunghiulară, respectiv dublu T. RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii

Διαβάστε περισσότερα

CONCURS DE ADMITERE, 17 iulie 2017 Proba scrisă la MATEMATICĂ

CONCURS DE ADMITERE, 17 iulie 2017 Proba scrisă la MATEMATICĂ UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ CONCURS DE ADMITERE, 7 iulie 207 Proba scrisă la MATEMATICĂ SUBIECTUL I (30 puncte) ) (0 puncte) Să se arate că oricare ar

Διαβάστε περισσότερα

Noţiuni introductive

Noţiuni introductive Metode Numerice Noţiuni introductive Erori. Condiţionare numerică. Stabilitatea algoritmilor. Complexitatea algoritmilor. Metodele numerice reprezintă tehnici prin care problemele matematice sunt reformulate

Διαβάστε περισσότερα

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3 SEMINAR 2 SISTEME DE FRŢE CNCURENTE CUPRINS 2. Sisteme de forţe concurente...1 Cuprins...1 Introducere...1 2.1. Aspecte teoretice...2 2.2. Aplicaţii rezolvate...3 2. Sisteme de forţe concurente În acest

Διαβάστε περισσότερα

ANEXA 4. OPERAŢII ARITMETICE IMPLEMENTĂRI

ANEXA 4. OPERAŢII ARITMETICE IMPLEMENTĂRI ANEXA 4. OPERAŢII ARITMETICE IMPLEMENTĂRI ADUNAREA ÎN BINAR: A + B Adunarea a două numere de câte N biţi va furniza un rezultat pe N+1 biţi. Figura1. Anexa4. Sumator binar complet Schema bloc a unui sumator

Διαβάστε περισσότερα

CONCURSUL DE MATEMATICĂ APLICATĂ ADOLF HAIMOVICI, 2017 ETAPA LOCALĂ, HUNEDOARA Clasa a IX-a profil științe ale naturii, tehnologic, servicii

CONCURSUL DE MATEMATICĂ APLICATĂ ADOLF HAIMOVICI, 2017 ETAPA LOCALĂ, HUNEDOARA Clasa a IX-a profil științe ale naturii, tehnologic, servicii Clasa a IX-a 1 x 1 a) Demonstrați inegalitatea 1, x (0, 1) x x b) Demonstrați că, dacă a 1, a,, a n (0, 1) astfel încât a 1 +a + +a n = 1, atunci: a +a 3 + +a n a1 +a 3 + +a n a1 +a + +a n 1 + + + < 1

Διαβάστε περισσότερα

Concurs MATE-INFO UBB, 1 aprilie 2017 Proba scrisă la MATEMATICĂ

Concurs MATE-INFO UBB, 1 aprilie 2017 Proba scrisă la MATEMATICĂ UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ Concurs MATE-INFO UBB, aprilie 7 Proba scrisă la MATEMATICĂ SUBIECTUL I (3 puncte) ) (5 puncte) Fie matricele A = 3 4 9 8

Διαβάστε περισσότερα

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite Capitolul 4 Integrale improprii 7-8 În cadrul studiului integrabilităţii iemann a unei funcţii s-au evidenţiat douăcondiţii esenţiale:. funcţia :[ ] este definită peintervalînchis şi mărginit (interval

Διαβάστε περισσότερα

Acesta este capitolul 2 Noţiuni de teoria informaţiei al ediţiei electronică

Acesta este capitolul 2 Noţiuni de teoria informaţiei al ediţiei electronică Acesta este capitolul 2 Noţiuni de teoria informaţiei al ediţiei electronică a cărţii Reţele de calculatoare, publicată la Casa Cărţii de Ştiinţă, în 2008, ISBN: 978-973-133-377-9. Drepturile de autor

Διαβάστε περισσότερα

Laborator 11. Mulţimi Julia. Temă

Laborator 11. Mulţimi Julia. Temă Laborator 11 Mulţimi Julia. Temă 1. Clasa JuliaGreen. Să considerăm clasa JuliaGreen dată de exemplu la curs pentru metoda locului final şi să schimbăm numărul de iteraţii nriter = 100 în nriter = 101.

Διαβάστε περισσότερα

Principiul Inductiei Matematice.

Principiul Inductiei Matematice. Principiul Inductiei Matematice. Principiul inductiei matematice constituie un mijloc important de demonstratie in matematica a propozitiilor (afirmatiilor) ce depind de argument natural. Metoda inductiei

Διαβάστε περισσότερα

prin egalizarea histogramei

prin egalizarea histogramei Lucrarea 4 Îmbunătăţirea imaginilor prin egalizarea histogramei BREVIAR TEORETIC Tehnicile de îmbunătăţire a imaginilor bazate pe calculul histogramei modifică histograma astfel încât aceasta să aibă o

Διαβάστε περισσότερα

CURS XI XII SINTEZĂ. 1 Algebra vectorială a vectorilor liberi

CURS XI XII SINTEZĂ. 1 Algebra vectorială a vectorilor liberi Lect. dr. Facultatea de Electronică, Telecomunicaţii şi Tehnologia Informaţiei Algebră, Semestrul I, Lector dr. Lucian MATICIUC http://math.etti.tuiasi.ro/maticiuc/ CURS XI XII SINTEZĂ 1 Algebra vectorială

Διαβάστε περισσότερα