Codes cycliques Hypothse sur V vocabulaire source Code

Codes cycliques • • • Hypothèse sur V = vocabulaire source Code linéaire - caractérisation Codage et décodage d’un code linéaire Code cyclique – caractérisation Distance d’un code cyclique Code de Reed-Solomon

Hypothèse sur le vocabulaire V du canal • V est un corps fini : soient a, b V : e 0, e 1, a+b, -a, a*b, a/b V • Possible ssi |V| = pm avec p premier Soit q = pm : V est alors isomorphe à GFq – Exemple: V= {0, 1} ; V={mots de 32 bits} • Implantation – GFq isomorphe à (Z/p. Z[x])/Q(x) avec Q polynôme irréductible de degré m à coefficients dans Z/p. Z – avec p= 2: facile registre à décalage !

Code linéaire • V corps => Vn est un espace vectoriel • Déf : code linéaire sev de dim k de Vn l – Si x=[x 0, …, x n-1] C, y=[y 0, …, y n-1] C => x+y =[x 0+y 0, …, x n-1+y n-1] C • C est engendré par une matrice génératrice G k colonnes • C=Im(G) G= n lignes

Exemple • V = {a=00, b=01, c=10, d=11} • Code (7, 4) engendré par G G= 01 10 11 00 00 10 11 10 00 01 10 10 10 01 11 10 01 01 10 11 11 10 01 01
![Décodage d’un code linéaire • Il existe G génératrice = [Idk | A ] Décodage d’un code linéaire • Il existe G génératrice = [Idk | A ]](http://slidetodoc.com/presentation_image_h2/8a8cfa44abce93a4c92afaf0960d4cc4/image-5.jpg)
Décodage d’un code linéaire • Il existe G génératrice = [Idk | A ] • Codage( [s 0, …, sk-1] ) =[c 0, …, ck-1 , ck…, cn-1] [ck…, cn-1] = [s 0, …, sk-1]. A = [c 0, …, ck-1]. A • Donc: [c 0, …, ck-1]. A - [ck…, cn-1]. Idn-k = 0 • Soit [-At | Idn-k ]. ct = H. ct = 0 H = Matrice de contrôle : (n-k, n)

Détection d’erreurs • On émet x et on reçoit y; y est un mot de code H. yt = 0 • Syndrome d’erreur : s = H. yt s 0 => il y eu erreur de transmission

Correction d’erreurs • Corriger trouver x=y-c • Or: s = H. yt - H. ct = H. xt • Le syndrome donne toute l’info pour corriger • x non unique : pour chaque s on choisit le xs de poids minimal, stocké dans un tableau Cor[s]= xs • Ex: V= {0, 1}, n=64 k=52 : 264 erreurs possibles mais tableau de taille seulement 212=4096

Distance d’un code linéaire • d = Min { d. H( x , y) ; x, y C } = Min { w. H(x - y) ; x, y C } = Min { w. H( z ) ; z C } • Borne de singleton : d n-k+1 • Prop: d = nbre minimal de cols indép. de H k colonnes quelconques de H sont indépendantes

Bon codes • Facile et efficace à implémenter – Codes cycliques • Etant donné un taux de correction, pouvoir facilement construire un code (n, k, d) qui donne ce taux de correction: – Codes de Reed-Solomon
![Codes cycliques • Décalage : ( [c 0…, cn-1] ) = [cn-1, c 0…, Codes cycliques • Décalage : ( [c 0…, cn-1] ) = [cn-1, c 0…,](http://slidetodoc.com/presentation_image_h2/8a8cfa44abce93a4c92afaf0960d4cc4/image-10.jpg)
Codes cycliques • Décalage : ( [c 0…, cn-1] ) = [cn-1, c 0…, cn-2] • Déf: Code cyclique code linéaire stable par • Description simple, de coût O(n-k=r): – Un code (n, k) est engendré par un mot de code m=[c 0 , …, cn-k-1 , cn-k=1, 0 …, 0] – Ex: code binaire (7, 4) engendré{1011000}
![Caractérisation • Mot de code polynôme de V[X] [c 0 , …, cn-1 ] Caractérisation • Mot de code polynôme de V[X] [c 0 , …, cn-1 ]](http://slidetodoc.com/presentation_image_h2/8a8cfa44abce93a4c92afaf0960d4cc4/image-11.jpg)
Caractérisation • Mot de code polynôme de V[X] [c 0 , …, cn-1 ] Pc = i=0 n-1 ci. Xi • (c) associé au polynôme : X. Pc mod Xn – 1 • m=[c 0 , …, ck-2 , ck-1=1, 0 …, 0] associé à un polynôme: g(X) = i=0 k-1 ci. Xi • Prop. g est un diviseur unitaire de Xn – 1 de degré r
![Codage/décodage code cyclique • Codage : P[a. G] = g(X). Pa mod Xn – Codage/décodage code cyclique • Codage : P[a. G] = g(X). Pa mod Xn –](http://slidetodoc.com/presentation_image_h2/8a8cfa44abce93a4c92afaf0960d4cc4/image-12.jpg)
Codage/décodage code cyclique • Codage : P[a. G] = g(X). Pa mod Xn – 1 – Tout mot de code est un multiple de g mod Xn – 1 – Tout multiple de g mod Xn – 1 est un mot de code • Détection : on reçoit y = Py – Si Py n’est pas multiple de g mod Xn – 1 => erreur – Syndrome d’erreur: Pe = Py mod g • Correction: à partir du syndrome (algorithme de Meggitt)

Distance minimale d’un code cyclique • Théorème BCH ( n premier avec q) – Soit racine primitive de Xn – 1 dans GF(q) – Soit g = i S (X – i) – Si il existe a entier tq {a+1, a+2, …, a+s} S d( C ) s+1 C est au moins s-détecteur et [s/2]-correcteur

Codes de Reed-Solomon • q = 2 m n = 2 m - 1 • Xn-1 x= a GF(q)* (X – a) • Il suffit de prendre générateur de GF(q)* et g = i=s. s+r-1 (X – i) de degré r • Code cyclique (n=k+r, k, r+1) • Optimal, car atteint la borne de Singleton • Ex. Galileo : RS(255, 233) sur V={octets}
- Slides: 14