Vous êtes sur la page 1sur 56

CODAGE LINEAIRE

1
INTRODUCTION
Les canaux mobiles et/ou sans fil, à titre d’exemple, sont des environnements très
hostiles et fortement corrompus. Néanmoins, ces systèmes réels fonctionnent de
manière satisfaisante et sont améliorés d’année en année. Ceci est dû surtout au codage
de canal

 Le codage de canal est utilisé pour détecter et souvent corriger les symboles reçus en
erreur

 La détection d'erreur peut être utilisée par le récepteur pour générer un ARQ 1
(Automatic Repeat reQuest) vers l'émetteur pour une retransmission de la trame en
erreur, comme dans les réseaux informatiques (stop & wait, go-back-n, protocoles de
répétition sélective)

 Lorsque la retransmission n'est pas une option : codage de correction d'erreur directe
FEC (Forward Error Correction) , basé sur une redondance dans les données
transmises pour que le récepteur détecte et corrige les erreurs.

 L’objectif de ce chapitre 3 est donc d’étudier et de comprendre le principe de ce type


de codage dit FEC. 2
CODES LINEAIRES
Généralites
Deux grandes familles de codes FEC:

Les codes en bloc (linéaires, polynomiale, cycliques ou non) : le


codage/décodage d'un bloc dépend uniquement des informations de ce bloc.

Les codes en treillis (convolutifs, récurcifs ou non) :


le codage/décodage d'un bloc dépend des informations d'autres blocs
(généralement de blocs précédemment transmis).
CODAGE FEC
CODES EN BLOC CODES CONVOLUTIFS
AUTRES LINEAIRES
Non- Polynomiaux cycliques
cycliques
Golay BCH
RS BCH Binaire 3
CODES LINEAIRES
Généralités
Les codes de blocs font partie de codes correcteurs d' erreurs. Ils sont appelés ainsi, car
ils codent des données dans des blocs. C'est-à-dire, qu’ils agissent sur un bloc de k bits
de données d'entrée pour produire n bits de données de sortie appelés Code. Parmi les
codes en blocs nous avons les codes en blocs linéaires. Il existe de très nombreux
exemples de codes de blocs linéaires, appliqués dans diverses domaines notamment en
télécommunications et dans les réseaux informatiques. Ils peuvent avoir une forme
algébrique, polynomiale ou cyclique. Ainsi, ils pourront être générés à partir d’une
matrice dite génératrice ou encore à travers des polynômes booléens.

Exemples de codes en bloc (linéaires, cycliques ou non) :


 Codes simples comme le code de Parité
 Codes linéaires, de Hamming
 Codes de Reed-Muller
 Codes de Golay
 Codes LDPC
 Codes polynomiaux
 Codes cycliques 4
CODES LINEAIRES
Définition et propriété
Définition : Un code linéaire de longueur n sur  et de dimension k,
noté (n,k), est un sous-espace vectoriel de n de dimension k. Donc un
codage est toute application linéaire injective de n dans k (k et n deux
entiers où n≥k)
00 000
Exemple : 01 011
10 101
11 110

Propriété : Si CD est un code linéaire l’ensemble des distances entre les


mots de CD est l’ensemble des poids de CD

Ce qui nous permet de dire que la distance minimale de CD , code


linéaire, est le poids minimum de CD 5
CODES LINEAIRES
Propriété

 Un code de bloc (qk, n) sur X dans Fq est appelé un code linéaire (n, k) si ses
mots de code forment un sous-espace vectoriel k-dimensionnel de l'espace
vectoriel Fqn
Le code C est un groupe additif, en particulier, si c, c ‘  C alors c + c'  C
 Le vecteur tout zéro est un mot de code: 0  C.
 Les combinaisons linéaires de mots de code sont des mots de code: c1, ..., cl
 C et a1, ..., al  Fq, puis a1c1 + ··· alcl  C

6
CODES LINEAIRES
Un codeur de bloc linéaire est une transformation linéaire Fk2 Fn2

Pour le codage en bloc, notamment le codage linéaire, il s’agit de générer à


partir des bits du message (par exemple de taille k) des bits de code (de taille n)
formés des bits de message et des bits de contrôle ou de parité ( de taille n-k).
Définitions :
 Un code linéaire C de longueur n est un sous-espace vectoriel de Fkq ​. Si C
est de dimension k, on dit que C est un [n,k]-code.
 Le poids d’un mot de code x=(x1…xn), noté w(x), est le nombre de xi
différents de 0.
 La distance entre deux mots de code x et y est d(x,y).
 La distance minimum d’un code linéaire C est égale au minimum des poids
w(x) pour x ∈ C et non nul.
 Ainsi un code linéaire est toujours défini par les trois paramètres (n,k,d).7
CODES LINEAIRES
Exemple

 Le code suivant : C = {00000, 10110, 01011, 11101}.


Est un code linéaire , C ⊂ (F2)5 c’est-à-dire un sous ensemble de (F2)5. Sa
dimension k=2, Son poids minimal est wmin=3 , sa distance minimale est aussi
dmin=3

 Le code suivant : C={0000,1100,1010,1001,0110,0101,0011,1111}, est un


code linéaire , C ⊂ (F2)4. Sa dimension k=3, Son poids minimal est wmin=2 , sa
distance minimale est aussi dmin=2

 quant au code suivant C={000000, 101010, 010101} ⊂ (F2)6 n’est pas


linéaire. Ne vérifie pas les conditions de linéarité.

8
CODES LINEAIRES
Définition et propriété
Un code linéaire est entièrement déterminé par une de ses bases.

Définition :
Une matrice génératrice d’un code linéaire CD sur le corps  est une
matrice sur  dont les lignes forment une base de CD. C’est une matrice
de k lignes et n colonnes.

Propriétés: Soit CD un code linéaire sur un corps .


a) Toute matrice génératrice est une matrice k × n sur , avec k ≤ n,
dont le rang est k;
b) Inversement, toute matrice k × n sur  de rang k, est une matrice
génératrice d’un code (n,k) sur 
A
Remarque : La matrice G peut être écrite G=[A.P] ou bien P
 9
CODES LINEAIRES
Matrices génératrices d’un code linéaire
Un code linéaire possède plusieurs matrices génératrices

 Les mots du code CD sont toutes les combinaisons linéaires des lignes
d’une matrice génératrice.

Exemple : Trouvez une matrice génératrice G du codage de parité


suivant
Un exemple d’une matrice génératrice de
000 0000
ce code de parité est la suivante:
001 0011
010 Codage 0101
011 0110
100 1001
101 1010
110 1100
111 1111 10
CODES LINEAIRES
Matrices génératrices d’un code linéaire

Un code linéaire possède plusieurs matrices génératrices

 Les mots du code CD sont toutes les combinaisons linéaires des lignes
d’une matrice génératrice.

Exemple : Trouvez les paramètres du code CD don la matrice génératrice


G est représentée ci-dessous

11
CODES LINEAIRES
Matrice génératrice d’un code linéaire systématique

Code Systématique
Un code de n dans k avec n≥k, est systématique si, x k, le vecteur
formé des k premiers bits du code est égal à x.

Un code linéaire systématique possède une matrice génératrice avec


une forme caractéristique (facilité d’utilisation), on dit alors que sa
matrice génératrice est sous forme normale (ou normalisée ou
canonique).

Rappel : Une matrice normalisée ou canonique de taille k × n, si ses k


premières colonnes forment une matrice identité k × k.

12
CODES LINEAIRES
Matrice génératrice d’un code linéaire systématique

 
Sous forme normale, une matrice génératrice G peut prendre la forme
suivante : ou bien encore Ik 
G  Ik P P
 
Où Ik est la matrice identité k × k et P une matrice quelconque k × (n-k)

1 0 0 1 1 0

G  0 1 0 0 1 1 
0 0 1 1 0 1

Matrice identité k × k Matrice quelconque k × (n-k)


Formée par des bits de redondance
13
CODES LINEAIRES
Matrice génératrice d’un code linéaire systématique
Sous forme normale, une matrice génératrice G peut prendre la forme
suivante :
 
G '  Ak P G  Ik P 
Où Ik est la matrice identité k × k et P une matrice quelconque k × (n-k)
Théorème :
Deux k×n matrices G1 et G2 engendrent des (n,k)-codes linéaires équivalents si
on peut obtenir G1 à partir G2 par une suite d'opérations à choisir parmi:
 permutation des lignes ;
 addition de deux lignes ;
 permutation des colonnes.

Ce théorème peut être utilisé pour rendre une matrice génératrice


quelconque sous forme normale ou systématique ou bien pour passer d’une
14
matrice génératrice à une autre pour un même code linéaire.
CODES LINEAIRES
Propriétés des matrices génératrices

Si G est une matrice génératrice d’un code linéaire (n,k) noté CD sur (F2)3,
alors :

 Les matrices génératrices de CD sont de la forme A × P, où A est une


matrice carrée inversible de taille k × k sur ;

 Le code CD est donnée par D.G avec D le vecteur d’information de


taille k

Tout code linéaire est équivalent à un code linéaire systématique

D = { 000010110011 .. k=3 G taille n×k n=30 ou 50


Code ={……, …….., …. n=5 code est (5,3) n-k=2 15
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire

Comme nous venons de le voir, un code linéaire peut être représenté par une matrice
génératrice G de taille k × n, avec k le nombre de bits d’information et n le nombre de
bits codés. (n – k) c’est la redondance du code, avec  = k/n le rendement du code.

Ainsi, pour un vecteur quelconque de bits d’informations et connaissant la matrice


génératrice G d’un code linéaire, nous serons en mesure d’obtenir le vecteur CD
correspondant aux bits codés. Il s’agit d’effectuer un produit entre le vecteur D et la
matrice G, où CD =D.G

Un code linéaire ajoute n-k bits de contrôle (bits de redondance) au k bits


d’information. Les n-k bits de contrôle sont définis par l’équation matricielle suivante :
H. CD t=0.

H est matrice de contrôle de parité du code linéaire permettant de définir les n-k bits
16
de contrôle en fonction des bits d’information et du transposé du vecteur CD formé des
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire

H est matrice de contrôle de parité du code linéaire permettant de définir les n-k bits

 
de contrôle en fonction des bits d’information et du transposé du vecteur CD formé des
bits codés.
G  Ik P  H  P I nk
n c’est la taille du code,
 t

K la taille de la donnée
N-k c’est la taille des bits de contrôle qu’on va
Exemple : rajouter dans le code: ex= n=6, k=3 n-k=3
N=7, k=4 , n-k=3

1 0 0 1 1 0 1 0 1 1 0 0

G  0 1 0 0 1 1  
H  1 1 0 0 1 0 

0 0 1 1 0 1 0 1 1 0 0 1
17
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire

 
A quoi va servir la matrice de contrôle de parité?
G  Ik .P  CD  D.G  H  Pt .Ink 
Cont H.CD't 
Au niveau du codeur où D : les H permet de savoir si un mot reçu est
données fournies par la source et CD un mot du code, en calculant son
les données codées appelées syndrome. Si le syndrome du mot est
également l’alphabet X nul, ce mot appartient au code.

En effet, un mot codé CD  a été généré par la matrice génératrice G si et
seulement si HCDt = 0.
Proposition: La distance minimum d de C est caractérisée par les propriétés suivantes:
 d−1colonnes de H sont toujours linéairement indépendantes.
Il y a un système de d colonnes de H qui est lié.

Théorème : Capacité de correction d’un code.


Si dans la matrice H d’un code, tout système de 2e vecteurs colonnes est indépendant,
18
alors le code est capable de corriger e erreurs au moins.
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
Exercice 1:
Soit le code linéaire donné par sa matrice génératrice suivante: k=3, n=6

1) Ce code contient combien de bits d’information et de contrôle?


2) Trouver le vecteur de code CD , pour une vecteur de données
D={011001010101110001} : Cd= [011110,
3) Calculez sa matrice de parité H
4) Quelles sont les images par H des mots 100000, 010000, 001000,
000100, 000010, 000001? Que pouvez vous déduire sur le pouvoir de
correction de ce code? 19
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
Solution de l’exercice 1
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
Suite de la solution de l’exercice 1
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
Exercice 2

Rappel sur le code de Hamming


CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
Rappel sur le code de Hamming
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
Rappel sur le code de Hamming
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
CODES LINEAIRES
Matrice de contrôle de Parité d’un code linéaire
CODES LINEAIRES
CODAGE LDPC
 1948 Shannon publie son célèbre article sur la capacité des canaux sans bruit

1963 Robert Gallager rédige son doctorat. mémoire "Codes de contrôle de parité
à faible densité". Il a introduit les codes LDPC, les a analysés et a donné des
algorithmes de décodage.

1982 Michael Tanner considère les codes LDPC de Gallager et ses propres codes
structurés. Il a introduit la notion d'utilisation d'un graphe bipartite, parfois appelé
graphe de Tanner.

1993 Les codes Turbo ont été introduits. Ils dépassaient les performances de tous
les codes connus et avaient une faible complexité de décodage

1995 L'intérêt est renouvelé pour les codes LDPC de Gallager, dirigé par David
MacKay et bien d'autres. Il a été démontré que les codes LDPC peuvent
essentiellement atteindre la capacité de Shannon sur les canaux AWGN et
d'effacement binaire. 29
CODES LINEAIRES
CODAGE LDPC
Les codes LDPC (Low-Density Parity-Check) sont des codes binaires linéaires
ayant une matrice de contrôle de parité clairsemée (plein de 0) souvent générée
aléatoirement : le nombre de «un» dans la matrice est proportionnel à la
longueur du bloc.

Comment construire un code LDPC?

Pour répondre à cette question, rappelons brièvement le principe du code de


parité (ou Parity Check) (3,2,1) . Autrement dit, pour un message de taille deux
bits, on rajoute un bit de parité pour obtenir un code sur trois bits.

Exemple : C(3,2,1) = {(000) ; (011) ; (110) ; (101)} où en violet les bits


d’information et en vert le bit de parité rajouté.

Généralisation: Parity Check (n, k=n-1, 1)


30
CODES LINEAIRES
CODAGE LDPC
Description générale d’un codage LDPC
Nous considérons l'exemple de six bits de données (d1, d2, d3, d4, d5 et d6)
disposés dans un bloc 2 × 3. Ils sont protégés horizontalement par deux et
verticalement par trois bits de parité.

Les bits de parité p1, p2, p3, p4 et p5 sont calculés selon les équations suivantes

Le signe ⊕ symbolise l'addition modulo 2, c'est-à-dire une opération XOR.


Le code ainsi obtenu est : C= (d1d2d3d4d5d6p1p2p3p4p5) 31
CODES LINEAIRES
CODAGE LDPC
Description générale d’un codage LDPC
Comme les bits de données peuvent être lus directement à partir du mot de code
du canal, ce code est appelé systématique. Avec ce codage, un nombre constant
de bits de données est complété algébriquement par un nombre constant de bits
de parité. Il s'agit d'un code bloc linéaire et le codage peut également être décrit
avec une matrice de contrôle de parité H

 La caractéristique des codes LDPC est telle que la matrice de contrôle de


parité H contient très peu de 1, par rapport à la taille totale. On dit que la
matrice est clairsemée. C'est de là que vient le nom de faible densité.
 Les équations décrits plus haut contiennent alors généralement peu
32
d'éléments et offrent un avantage pour le décodage itératif.
CODES LINEAIRES
CODAGE LDPC
Description générale d’un codage LDPC
La description des codes de canal est également possible via un (graphe
bipartite), qui combine les bits de données avec les bits de parité (figure ci-
dessous). Les nœuds supérieurs (nœuds variables) correspondent aux bits qui
ont été transférés. Les nœuds inférieurs (vérifier les nœuds) se combinent
Bits variables

Nœuds de vérification
Figure : Graphique bipartite de la matrice de contrôle de parité H
Les nœuds de ces bits dont la somme (modulo 2) doit être nulle. Cette
représentation est généralement utilisée en conjonction avec des codes de
contrôle de parité à faible densité (codes LDPC) et s'appelle un graphe de
33
Tanner
CODES LINEAIRES
CODAGE LDPC
Description générale d’un codage LDPC
La description des codes de canal est également possible via un (graphe
bipartite), qui combine les bits de données avec les bits de parité (figure ci-
dessous). Les nœuds supérieurs (nœuds variables) correspondent aux bits qui
ont été transférés. Les nœuds inférieurs (vérifier les nœuds) se combinent
Bits variables

Nœuds de vérification
Figure : Graphique bipartite de la matrice de contrôle de parité H
Les nœuds de ces bits dont la somme (modulo 2) doit être nulle. Cette
représentation est généralement utilisée en conjonction avec des codes de
contrôle de parité à faible densité (codes LDPC) et s'appelle un graphe de
34
Tanner
CODES LINEAIRES
CODAGE LDPC
Description générale d’un codage LDPC

 Cependant, avec les codes LDPC, il est habituel que chaque nœud ait au
moins deux bords.
 Dans l'exemple utilisé ci-dessus, les nœuds des bits de parité n'ont qu'un
front chacun, car le code du canal est systématique.
 En règle générale, aucune distinction n'est faite entre les bits de données et
les bits de parité en relation avec les codes LDPC.
 Cependant, il faut s'assurer qu'au moins un bit de parité est impliqué dans
chaque équation de parité. Les bits de parité doivent apparaître au moins deux
fois dans les équations de parité afin de générer un graphe de Tanner avec au
moins deux arêtes par nœud.
 Cependant, dans les équations précédentes, cela ne s'applique qu'aux bits de
données. Néanmoins, on pourrait combiner linéairement deux équations de
parité ou plus entre elles.
35
CODES LINEAIRES
CODAGE LDPC
Description générale d’un codage LDPC

Exemple:

Le graphique correspondant est un peu plus complexe (figure ci dessous) et la


matrice de contrôle de parité est plus chargée de 1.

Graphique bipartite de la matrice de contrôle de parité H


Notons, qu’à l'aide de l'algorithme de Gauß-Jordan, la conversion de Hmod
36
vers H d'un code de canal systématique est possible.
CODES LINEAIRES
CODAGE LDPC
Opération codage/décodage LDPC : Soit le premier exemple de notre LDPC

Graphique bipartite de la matrice de contrôle de parité H Matrice H de contrôle de Parité

Pour une donnée D, le code CD sera donc


généré par le produit suivant : CD  D.G
L’opération de vérification lors du décodage

: s  H.CD
't

, où CD’ est le code reçu. Si
tous les éléments du vecteur s (le syndrome)
sont nuls alors il n’y a pas d’erreurs, sinon
les éléments non nuls indiquent au moins Matrice G génératrice sous forme
37
une erreur de transmission. Normale
CODES LINEAIRES
CODAGE LDPC
Description générale d’un codage LDPC

Exemple:

Le graphique correspondant est un peu plus complexe (figure ci dessous) et la


matrice de contrôle de parité est plus chargée de 1.

38
DECODAGE D’UN CODE LINEAIRE
Syndromes
Pour un code code CD linéaire (n,k) , si Y est le
^
mot de code transmis et
une erreur  survient, le mot reçu est alors Y Y   . Si H est une
matrice de contrôle de parité pour le code C utilisé, alors :
^
C.Ht  (C   ).Ht  C.Ht  .Ht  0 .Ht  .Ht
^
Définition (Syndrome) :   Le syndrome d'un mot
^
Y relatif à une matrice
de contrôle H est le produit. t
C.H
^
Ce syndrome dépend de l’erreur   C  C et non du mot codé C.

39
DECODAGE D’UN CODE LINEAIRE
Syndromes

L'erreur  se décompose en erreurs élémentaires k correspondantes à


chaque symbole du code transmis , avec  = {k , 2 … , n}:

n
 
^ ^
s C   C .H t   .H t    k hk
  k 1
Avec hk la kème colonne de H

Le correcteur est l'opposé de l'erreur . La correction est de faire correspondre


les colonnes de H aux correcteurs et en additionnant ceux qui correspondent
aux positions non nulles du syndrome.

40
DECODAGE D’UN CODE LINEAIRE
Décodage par Syndromes

Le plan d’un décodage (et correction) d’un message reçu est le suivant :
^ ^ t
 Calculer le syndrome  ; s C   C .H
 

 Obtenir la correction  = - (c.-à-d. l'opposé de l'erreur) par la


combinaison linéaire des correcteurs stockés en mémoire ;
^
 Décoder . C  C 

41
DECODAGE D’UN CODE LINEAIRE
Syndromes

Exemple: Soit une matrice de contrôle de Parité H donnée par:


n=5
1 1 1 0 0
1 0 1 0 1 k=2
H n( n  k )  0 1 0 1 0 Gnk   n-k=3

1 1 0 0 1 0 1 1 1 1
Les correcteurs suivants peuvent alors être dérivés des colonnes de  :

Syndrome Correcteur
101 10000
111 01000
100 00100
010 00010
001 00001 42
DECODAGE D’UN CODE LINEAIRE
Syndromes

Exemple: Suite

En réarrangeant par syndrome le tableau ci-dessus de façon à pouvoir


l'utiliser en pratique (où seul le syndrome est connu), on obtient : :
Syndrome Correcteur
000 00000
001 00001
010 00010
011 ?
100 00100
101 10000
110 ?
111 01000
43
DECODAGE D’UN CODE LINEAIRE
Syndromes

Exemple: Suite

 Le syndrome nul pointe toujours vers aucune correction;

 Pour 011 et 110, le correcteur n'est dans cet exemple pas unique : par
exemple 011=010+001 donne 00011 (00001+00010 ), mais 011=111+100
donne une autre correction, 01100

 Ceci est dû au fait que la distance minimale de ce code est 3 et que ce code
ne peut donc corriger que tous les schémas à 1 erreur, mais pas tous les
schémas à 2 erreurs !

Ces deux syndromes correspondent en fait à deux erreurs de transmission.

44
DECODAGE D’UN CODE LINEAIRE
Décodage par Syndromes

Exemple: Soit un code linéaire dont la matrice génératrice G est donnée par :

1 0 1 0 1 1 1 1 0 0 
G
0 1 1 1 1 H  0 1 0 1 0
 
1 1 0 0 1
Il s’agit d’un code linéaire (5,2). Si le message (bits d’information) à envoyer est 10.
Alors le code généré sera C=(10101) . Supposant que le code reçu présente un bit
erroné soit (00101).
 ^
 ^
Le calcul du syndrome donne : s C   C .H t , soit s=……..
Le correcteur sera donc =  

Ainsi le mot décodé sera : ……… + ………..= ………. Les deux premiers bits du code corrigé
représentent le message original à savoir …….

45
DECODAGE D’UN CODE LINEAIRE
Décodage par Syndromes

Exemple: Soit un code linéaire dont la matrice génératrice G est donnée par :
1 1 1 0 0
1 0 1 0 1 H  0 1 0 1 0
G 
 0 1 1 1 1 1 1 0 0 1

Il s’agit d’un code linéaire (5,2). Si le message (bits d’information) à envoyer est 10.
Alors le code généré sera C=(10101) . Supposant que le code reçu présente un bit
erroné soit (00101). ^ ^ t
s C  C .H
Le calcul du syndrome donne :   ^ , soit s=101
Le correcteur sera donc =10000=C- C

Ainsi le mot décodé sera : 00101 + 10000 = 10101. Les deux premiers bits du code
corrigé représentent le message original à savoir 10

46
CODES LINEAIRES
Borne de SINGLETON

Si d est la distance minimale d’un code linéaire CD(n,k) alors d≤n-k+1 est
appelée borne de Singleton.

Définition:
Un code linéaire CD(n,k) est M.D.S. (Maximum Distance Separable), si
sa distance minimale d atteint la borne de singleton, d=n-k+1

47
CODE PARFAIT
Dans un code parfait tout mot reçu peut être décodé.

Définition:
Soit C un code canal, correcteur d'erreurs, composé de N mots de code, dans
lequel chaque mot de code se compose de n lettres appartenant à un alphabet F
de longueur finie q (Fq), et tous les deux mots de code distincts diffèrent d'au
moins d = 2e + 1 emplacements. Alors C est dit parfait si pour chaque mot
possible w0 de longueur n avec des lettres en F, il y a un mot de code unique w
en C dans lequel au plus e lettres de w diffèrent des lettres correspondantes de
w0.

48
CODE PARFAIT
Autres défintions

1) Définition 1 : Dans un code parfait tout mot de An est à une distance ≤d


d'un mot du code. Il s'ensuit que la distance minimale d'un code parfait doit
être un nombre impair.

2) Définition 2 : Dans un code parfait


 les sphères de décodage sont disjoints parfaitement
 ont des décodeurs à distance limitée complets
 il satisfaire la limite de Hamming avec égalité

La limite de Hamming connue sous le nom de limite de sphères disjointes lié


à la métrique de Hamming dans l'espace de tous les mots possibles. Elle donne
une limitation importante de l'efficacité avec laquelle tout code correcteur
d'erreurs peut utiliser l'espace dans lequel ses mots de code sont intégrés.

Un code qui atteint la limite de Hamming serait un code parfait. 49


CODE PARFAIT

Qu’est ce qu’on entend par sphères et boules ?

Soit m ∈ {0,1}n et k ∈ N.

Une sphère:
On appelle sphère de centre m et de rayon k, et on note S(m, k), l’ensemble des
mots de {0,1}n, a distance k de m:
S(m, k) :={r∈{0,1}n, d(r, m) =k}.

Une boule
On appelle boule de centre m et de rayon k, et on note B(m, k), l’ensemble des
mots de{0,1}n, a distance inférieure ou égale à k de m:
B(m, k) :={r∈{0,1}n, d(r, m)≤k}
50
CODE PARFAIT

Les codes parfaits linéaires (binaires) sont :

 les codes sans redondances où n=k (taille du code = taille de l’information)

les codes de Hamming [2n−k−1,k,dmin=3]. :


Où dmin= 3, t= 1, n= 2n−k−1.

 le code de GolayG23:

La version binaire G23 est un code linéaire binaire (23,12,7) composé de 212 =
4096 mots de code de longueur 23 et de distance minimale 7.
La version ternaire est un (11,6,5) code linéaire ternaire, composé de 3 6 = 729
mots de code de longueur 11 avec une distance minimale de 5.
51
CODE PARFAIT
le code de Golay G23:

Une matrice H de contrôle de parité pour le code binaire de Golay est de la


forme H = [P . I11], où I11 est la matrice d'identité 11 × 11 et P une matrice 11 ×
12

le code de GolayG24:

En ajoutant un bit de contrôle de parité à chaque mot de code dans G23, on


obtient alors le code étendu de Golay G24, qui est un code linéaire binaire
52
CODE PARFAIT

le code de GolayG24:

Une matrice H de contrôle de parité pour le code binaire de Golay est de la


forme H = [P . I11], où I11 est la matrice d'identité 11 × 11 et P une matrice 11 ×
12

53
DECODAGE D’UN CODE LINEAIRE
Propriété:
h(x) = h(y) si et seulement si x – y  Ker(h) : partition de Kn en classes
d’équivalences

Classes latérales:
u  Kn, classe latérale : u + CD = {u+x, x  CD}.
Il y’a qn-k classes latérales et chacune d’elles contient pk vecteurs

Propriété:
2 classes latérales sont disjointes ou confondues

54
DECODAGE D’UN CODE LINEAIRE

Principe du décodage:

 Corriger y c’est trouver 

 y et  ont même syndrome : ils sont dans la même classe latérale

 Si pour chaque classe latérale on connait le syndrome correspondant,


on calcule le syndrome de y et  est dans la classe latérale associée

 Si le code est e-correcteur et w() ≤ e alors il existe un seul mot, w()


≤ e dans la classe latérale

 il suffit de chercher dans la classe latérale associée au syndrome de y


le seul mot de poids ≤ e, c’est 
55
DECODAGE D’UN CODE LINEAIRE

Algorithme du décodage:

 calcul du syndrome de C’(le code reçue et erroné)

Détermination de la classe latérale associée

 recherche dans cette classe du mot , (w() ≤ )

 calcul de C = C’ - 

56

Vous aimerez peut-être aussi