• Aucun résultat trouvé

k

, le décodage au maximum de vraisemblance permet de

retrouver le mot émis.

2.4 Codes linéaires

Les codes linéaires, qui représentent des sous-espaces vectoriels de An, forment la quasi totalité

des codes correcteurs.

On rappelle que l’alphabet A est un corps fini Fq

m

. L’ensemble (Fq

m

)n est naturellement muni

d’une structure d’espace vectoriel. Le corpsFq

m

peut être pris comme corps des scalaires.

2.4.1 Généralités

nition 16. Un codeC de longueurnsur l’alphabetA=Fq

m

est dit linéairesiCest un

sous-espace vectoriel de An.

La dimension du code notéekest égale à la dimension deCen tant qu’espace vectoriel.

Pour un code linéaire Cde longueur net de dimensionk, on note ses paramètres

[n, k, d]

d représente la distance minimale du code telle que dénie au paragraphe précédent.2

Proposition 17. Si Cest un code linéaire alorsd= min

x∈C,x=/ 0wH(x).

2.4.2 Bornes sur les paramètres d’un code

Nous redonnons deux bornes importantes sur les paramètres des codes linéaires :

La borne de Gilbert-Varshamov permet de déterminer des paramètres pour lesquels on est sûr

qu’un code linéaire existe :

Proposition 18. Borne de Gilbert-Varshamov :

Il existe un code linéaire de longueur n, de dimensionket de distance minimale �dsur l’alphabet

Fq lorsque l’inégalité suivante est vériée :

qn−k−1>X

d−2

i=1

n−1

i

(q−1)i

De la proposition17on déduit la borne de Singleton :

Proposition 19. Borne de Singleton :

Notons |C |le cardinal du code |C |, alors :

|C |�qn−d+1

Dans le cas d’un code linéaire Cde paramètres [n, k, d] on a |C |=qk et ce qui précède implique

d�n−k+ 1

2. Ainsi, lorsque l’on note les paramètres d’un code linéaire, on écrit sa dimensionkau lieu de son cardinalM.

Dans le cas d’un code linéaireM=|A|

k

.

Lorsqued=n−k+ 1on dit que le code estparfait ouMDS (Maximum Distance Separable).

2.4.3 Matrice génératrice, matrice de contrôle de parité

nition 20. Une matrice génératrice deC, notée G, est une matrice àk lignes et ncolonnes

dont les vecteurs lignes forment une base de Cen tant que sous-espace vectoriel de An.

Remarque 21.Un sous ensemble{j1...jk}de{1...n}tel que la matrice carrée formée des colonnes

(cj

1

, ..., cjk)est inversible est appelé unensemble d’information.

Si{1...k}est un ensemble d’information on peut se ramener par des opérations sur les lignes à une

matrice de la forme

ncolonnes

G= klignes

1 0 ... 0 × ... ×

0 1 ··· ··· ···

··· ··· 0

0 ··· 0 1 × ... ×

 = (Ik | M )

oùM est une matrice de dimensionsk×(n−k).

On dit qu’une telle matrice est sous forme systématique.

Exemple 22. Le code par bit de contrôle de parité de longueurnsurF2est un code linéaire de

paramètres[n, n−1,2]. Il est MDS. Sa matrice génératrice est

1 0 ... 0 1

0 1 ··· 1

··· ··· 0 ···

0 ··· 0 1 1

nition 23. Soit un code linéaire C[n, k, d].

Une matriceH de dimension (n−k)×nest une matrice de parité pour Csi elle vérie

C=ker(H)

(On fait l’analogie entre la matrice et l’application linéaire)

Autrement dit pour tout x∈(Fq

m

)n on a l’équivalence

x∈C⇔HxT= 0

où0 désigne le vecteur colonne nul à(n−k)composantes.

Proposition 24. Expression de la matrice de parité :

Considérons un code C[n, k, d] dont on donne la matrice génératrice G sous forme systématique

G=(Ik | M)M est de dimensionk×(n−k).

Alors la matrice

H=�

−MT | In−k

Exemple 25. Lecode de Hamming Hmest un code linéaire dont on donne la matrice de parité.

Cette matrice notéeHmest constituée des2m−1vecteurs colonnes non nuls de(F2)m. Par exemple

pourm= 3on a

H3=

1 1 0 1 1 0 0

1 0 1 1 0 1 0

0 1 1 1 0 0 1

On a choisi l’ordre des vecteurs colonnes de façon à écrire H3 directement sous la forme H3 =

t

M | I

3

. Ceci permet d’écrire la matrice génératrice

G3=

1 0 0 0 1 1 0

0 1 0 0 1 0 1

0 0 1 0 0 1 1

0 0 0 1 1 1 1

= (I4 | M )

Par construction de G3on voit que le codeH3est de longueur7 et de dimension4.

Dans la matriceM on trouve tous les éléments de(F2)3de poids supérieur ou égal à 2 de sorte que

tout vecteur ligne deG3a un poids supérieur ou égal à 3. Si on additionne deux vecteurs lignesvi

etvjdistincts deG3le vecteur résultat a au moins 3 bits égaux à1: les bitsI4i,ietI4j , jet comme

M regroupe des vecteurs lignes distincts de(F2)3il existe au moins un indicektel queMi,k=/Mj ,k

de sorte que Mi,k+Mj ,k= 1. On a trouvé trois bits égaux à 1 donc la distance minimaled est

supérieure ou égale à 3.

Comme il existe des mots de poids 3 on afinalementd= 3.

Le code de Hamming H3est un code surF2de paramètres[7,4,3]. Il est MDS.

On généralise ce résultat pour tout entierm :

Le code de Hamming Hmest un code surF2de paramètres[2m−1,2m−m−1,3].

Remarquons que l’on peut utiliser la matrice de parité pour déterminer l’intersection de deux

sous-espaces vectoriels deAn :

Proposition 26. Soit C1 et C2 deux codes sur An (ce sont donc deux sous-espaces vectoriels

quelconques de An) de matrices de parité respectivesH1etH2. Alors la matriceH=H

1

H

2

nie

par blocs est une matrice de parité de C1∩C2.

Démonstration. Pour tout vecteur v= (v1, ..., vn)∈An on a H vt=H

1

H

2

vt= H

1

v

t

H

2

v

t

!

. Ce

vecteur est nul si et seulement siH1vTetH2vTsont nuls tous les deux i.e. v∈Ker(H1) =C1∩C2=

Ker(H2).

2.4.4 Code dual

Soient de vecteursv= (v1, ..., vn)et w= (w1, ..., wn)deAn. On définit sur Anla forme bilinéaire

symétrique suivante :

<.|.>:

An× An → A

(v,w) 7→ <v|w>=X

n

j=1

vjwj

On appellera produit scalaire surAncette forme bilinéaire. On fait ainsi un léger abus de langage

car le caractère défini n’est pas vérifié, il existe des vecteurs v=/ 0A

n

tels que<v|v�0. De tels

vecteur sont ditsisotropes.

Généralisant la définition usuelle, on dit que vet w sontorthogonaux pour ce produit scalaire si

<v|w>=0.

On en déduit la définition decode dual :

nition 27. Soit C un code (linéaire) de An, le code dualde C, notéC, est l’ensemble des

éléments de An orthogonaux à tous les éléments deC.

C⊥={w∈An;∀v∈C, <v|w>=0}

On vérifie queC⊥ est aussi un code linéaire, plus précisément :

Proposition 28. SoitCun code linéaire de paramètres[k, n]de matrice génératriceGet de matrice

de parité H, alorsC⊥ est un code linéaire de paramètres [n−k, n]de matrice génératrice Het de

matrice de parité G. On a égalementC⊥⊥=C.

Ainsi, pour avoir une matrice génératrice de l’intersection de deux espaces vectoriels C1 et C2,

on peut déterminer une matrice de parité de C1, une matrice de parité de C2, en déduire par

concaténation une matrice de parité deC1∩C2, ce qui donne une matrice génératrice de(C1∩C2)⊥,

dont on reprend à nouveau une matrice de parité qui génère doncC1∩C2.

2.4.5 Exemples d’algorithmes de calcul pour la matrice de parité

Nous nous attardons un peu plus longuement sur les méthodes de calcul des matrices de parité qui

jouent un rôle prépondérant dans les codes que nous introduisons au chapitre VI. Il y a deux cas

où nous avons été amenés à calculer des matrices de parité :

D’une part, mentionnons le cas (fréquent) oùk=n2, pour lequel nous avons le résultat suivant :

Proposition 29. Lorsque k=n2 la matrice génératrice du code peut s’écrire par blocsG= (A|B)

A etB sont des matrices carrées de dimensionk.

Si AetB sont inversibles (ce qui se produit dans le contexte où nous en avons besoin au chapitre

VI) alors une matrice de parité du code est donnée par la matrice par blocs suivante :

H=�

−A−1

T

|B−1

T

Démonstration. La produit par bloc GHT est égal à (−AA1+BB1) = (−I+I) = (0) �

L’autre situation où nous avons eu besoin, dans nos travaux, de calculer une matrice de parité,

est une généralisation de la situation présentée dans la proposition (24). Dans la pratique, rien ne

garantit que la matrice Gpuisse s’écrire sous forme systématique G= (I|M). En effectuant des

opérations sur les lignes deG(on reste dans une base de l’espace vectoriel engendré par les lignes

deG) on peut écrire la matrice sous forme échelonnée de la façon suivante :

G=

0 ... 1 0 0 × ... ×

0 ... 0 ... 1 ··· ··· ···

··· 0 ... 1 ... × ... ×

··· 0 ···

··· 0 ... 0

··· ···

0 0 0 0 ... 0

Quitte à enlever les dernières lignes de la matrice on peut supposer que Gest de rangk.

Si l’on notemjles vecteurs colonnes deGnous obtenons l’écriture suivante pourGaprès opérations

sur les lignes :

G=

n

m11 ... m1 (c

1

1) 1c

1

m1(c

1

+1) ... m1(c

2

1) 0 m1(c

2

+1) ... 0 ... m1(nk)

m21 ··· 0 ··· ··· 1c

2

··· ··· ···

··· ··· ··· 0

mk1 mk(c

1

−1) 0 mk(c

1

+1) mk(c

2

−1) 0 mk(c

2

+1) 1ck mk(n−k)

k

Leskcolonnes grisées d’indices{c1, ..., ck}(ensemble d’information) sont les colonnes de la matrice

identitéIk.

Nous en déduisons l’expression d’une matrice de parité :

Proposition 30. Avec les notations précédentes pour la matrice G, on dénit la matrice H

suivante :

H=

n

1 0 ... m11 ... m21 ... m31 ... 0

··· 1 ··· ··· ··· ···

···

0

0 m1(n−k) m2(n−k) m3(n−k) 1

n−k

c1 ... c2 ... ck

La matriceH ainsi obtenue est une matrice de parité pourG.

Démonstration. Si l’on eectue sur les indices la permutation circulaire

c

1

c

2

ck 1 2 n−k

↓ ↓ ... ↓ ↓ ↓ ... ↓

1 2 k k+ 1 k+ 2 n

, on voit que dans les coecients du produitH GTles termes qui

interviennent dans la somme sont exactement les mêmes que dans la proposition (24) mais dans

un ordre diérent, ainsiH est bien une matrice de parité pourG.

On en déduit un l’algorithme suivant pour la génération d’une matrice de parité :

Entrée : La matriceG.

Sortie : Le rang deG, une matriceH de parité pourG.

• On écrit Gsous forme échelonnée. Quitte à enlever des lignes on suppose que G est de

rangk.

• Au fur et à mesure de la mise sous forme échelonnée on relève un ensemble d’information

{c1, ..., ck} pourG(par exemple en construisant itérativement l’entier P

i=1

k

2ck)

• On construit la matriceH de la façon suivante :

− Les colonnesc1, ..., ck de H sont formées des transposées des lignes 1, ..., k de G

auxquelles on a enlevés les coefficients d’indice(i, ci).

Documents relatifs