No Name
No Name
24 juin 2025
1. Préliminaires
I Généralitées
I Anneau de galois
I Modules
[Link]éorie des Codes - Codes Correcteures
I Généralitées
I Code Linèaire
I Paramétres d’un code linèaire
I Codage par Multiplication Matrice-Vecteur
1. Préliminaires
I Généralitées
I Anneau de galois
I Modules
[Link]éorie des Codes - Codes Correcteures
I Généralitées
I Code Linèaire
I Paramétres d’un code linèaire
I Codage par Multiplication Matrice-Vecteur
1. Préliminaires
I Généralitées
I Anneau de galois
I Modules
[Link]éorie des Codes - Codes Correcteures
I Généralitées
I Code Linèaire
I Paramétres d’un code linèaire
I Codage par Multiplication Matrice-Vecteur
définition
Un anneau est un ensemble A muni de deux lois de composition internes + et × vérifiant
les conditions suivantes
1 Le couple (A, +) est un groupe abélien, et l’élément neutre est noté 0A .
2 La loi × est associative et distributive à gauche et à droite par rapport à la loi +.
3 La loi × possède un élément neutre noté 1A .
ab ∈ p =⇒ a ∈ p ou b ∈ p.
ab ∈ p =⇒ a ∈ p ou b ∈ p.
ab ∈ p =⇒ a ∈ p ou b ∈ p.
Propriété
S = {I ⊆ A | I est un idéal et x n ∈
/ I, ∀n ≥ 1}.
Propriété
S = {I ⊆ A | I est un idéal et x n ∈
/ I, ∀n ≥ 1}.
Par conséquent, \
p = Nil(A).
p idéal premier
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 8 / 92
Généralitées
On peut montrer que cet idéal maximal m est un idéal premier ne contenant aucun x n . Cela
contredit le fait que x appartient à tous les idéaux premiers.
Ainsi, x doit être nilpotent, donc
\
p ⊆ Nil(A).
p idéal premier
Par conséquent, \
p = Nil(A).
p idéal premier
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 8 / 92
Généralitées
Propriété
Preuve : Soit A un anneau fini, alors il admet un nombre fini d’idéaux premiers
{P1 , P2 , . . . , Ps } donc A/Pi , 1 ≤ i ≤ s sont des anneaux intègres. Or un anneau intègre fini est
un corps, donc les Pi sont des idéaux maximaux pour 1 ≤ i ≤ s. Ce qui conduit à
s
\
Nil(A) = Pi = P.
i=1
Propriété
Preuve : Soit A un anneau fini, alors il admet un nombre fini d’idéaux premiers
{P1 , P2 , . . . , Ps } donc A/Pi , 1 ≤ i ≤ s sont des anneaux intègres. Or un anneau intègre fini est
un corps, donc les Pi sont des idéaux maximaux pour 1 ≤ i ≤ s. Ce qui conduit à
s
\
Nil(A) = Pi = P.
i=1
Définition
Un anneau qui posséde un unique idéal maximal est appelé anneau local commutatif.
Cet idéal est alors constitué de l’ensemble des éléments non inversibles.
Par conséquent, les assertions suivantes sont équivalentes :
1 A a exactement un idéal maximal.
2 A est un anneau local.
3 Les diviseurs de zéro de A sont contenus dans un idéal propre.
4 Les diviseurs de zéro de A forment un idéal.
5 Les diviseurs de zéro de A forment un groupe commutatif additif.
6 Pour tout x dans A, l’un des deux éléments de l’ensemble {x , 1 + x } est inversible.
avec h(x ) ∈ Fq [x ].
Chaque classe d’équivalence est représentée par un unique polynôme de degré strictement
inférieur à n.
lemme : Soit I un idéal dans Fq [x ]/(x n − 1), et soit g(x ) un polynôme unitaire de degré
minimal tel que [g(x )] ∈ I. Pour tout polynôme f (x ) vérifiant [f (x )] ∈ I, alors g(x ) divise f (x ).
Preuve de lemme :
On effectue la division euclidienne de f (x ) par g(x ) dans Fq [x ] :
f (x ) = q(x )g(x ) + r (x ),
où deg(r (x )) < deg(g(x )) ou r (x ) = 0. La minimalité du degré de g(x ) garantit que le reste
r (x ) doit être nul si [f (x )] ∈ I. Ainsi, g(x ) divise f (x ).
lemme : Soit I un idéal dans Fq [x ]/(x n − 1), et soit g(x ) un polynôme unitaire de degré
minimal tel que [g(x )] ∈ I. Pour tout polynôme f (x ) vérifiant [f (x )] ∈ I, alors g(x ) divise f (x ).
Preuve de lemme :
On effectue la division euclidienne de f (x ) par g(x ) dans Fq [x ] :
f (x ) = q(x )g(x ) + r (x ),
où deg(r (x )) < deg(g(x )) ou r (x ) = 0. La minimalité du degré de g(x ) garantit que le reste
r (x ) doit être nul si [f (x )] ∈ I. Ainsi, g(x ) divise f (x ).
Thérème
Soit I un idéal dans Fq [x ]/(x n − 1). Les affirmations suivantes sont vraies :
1 Il existe un unique polynôme unitaire g(x ) de degré minimal tel que [g(x )] ∈ I.
2 I est un idéal principal engendré par [g(x )].
3 g(x ) divise x n − 1 dans Fq [x ].
Preuve :
1- Supposons qu’il existe un autre polynôme unitaire h(x ) de degré minimal tel que [h(x )] ∈ I.
Par l’Affirmation, g(x ) divise h(x ). Comme g(x ) et h(x ) ont le même degré minimal, cela
implique que h(x ) = cg(x ). De plus, puisque h(x ) et g(x ) sont unitaires, on a nécessairement
h(x ) = g(x ). Ainsi, il existe un unique polynôme unitaire g(x ) de degré minimal tel que
[g(x )] ∈ I.
Thérème
Soit I un idéal dans Fq [x ]/(x n − 1). Les affirmations suivantes sont vraies :
1 Il existe un unique polynôme unitaire g(x ) de degré minimal tel que [g(x )] ∈ I.
2 I est un idéal principal engendré par [g(x )].
3 g(x ) divise x n − 1 dans Fq [x ].
Preuve :
1- Supposons qu’il existe un autre polynôme unitaire h(x ) de degré minimal tel que [h(x )] ∈ I.
Par l’Affirmation, g(x ) divise h(x ). Comme g(x ) et h(x ) ont le même degré minimal, cela
implique que h(x ) = cg(x ). De plus, puisque h(x ) et g(x ) sont unitaires, on a nécessairement
h(x ) = g(x ). Ainsi, il existe un unique polynôme unitaire g(x ) de degré minimal tel que
[g(x )] ∈ I.
2- Supposons [f (x )] ∈ I, alors par l’affirmation g(x ) divise f (x ). Par conséquent [g(x )] divise
[f (x )], ce qui signifie que [f (x )] = [g(x )][q(x )] pour un certain [q(x )] ∈ Fq [x ]/(x n − 1). On a
donc I ⊆ h[g(x )]i.
Réciproquement, soit [h(x )] ∈ h[g(x )]i. Alors [h(x )] = [g(x )][r (x )] pour un certain
[r (x )] ∈ Fq [x ]/(x n − 1). Comme [g(x )] ∈ I et que I est un idéal, on a [h(x )] ∈ I. Ainsi
h[g(x )]i ⊆ I.
On conclut que A = h[g(x )]i, donc I est un idéal principal engendré par [g(x )].
3- Remarquons que [x n − 1] = 0 ∈ A, donc par l’affirmation, g(x ) doit diviser x n − 1 dans Fq [x ].
Remarques :
a. Les corps de Galois peuvent donc être considérés comme des anneaux de Galois ne
contenant aucun diviseur de zéro. L’exemple le plus utilisé en théorie du codage est
A = Zp m , l’anneau des entiers modulo p m .
b. L’ordre additif de l’élément neutre pour la multiplication par un est la caractéristique,
notée car(A).
c. La caractéristique d’un anneau de Galois A est
car(A) = p m , m ∈ N.
d. L’anneau Zp m est un anneau local pour p premier.
Proposition
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 15 / 92
Anneaux de Galois
Définition
Si A est commutatif, unitaire, et que l’ensemble de ses diviseurs de zéro est de la forme
pA, où p est un nombre premier, alors A est un anneau de Galois.
Remarques :
a. Les corps de Galois peuvent donc être considérés comme des anneaux de Galois ne
contenant aucun diviseur de zéro. L’exemple le plus utilisé en théorie du codage est
A = Zp m , l’anneau des entiers modulo p m .
b. L’ordre additif de l’élément neutre pour la multiplication par un est la caractéristique,
notée car(A).
c. La caractéristique d’un anneau de Galois A est
car(A) = p m , m ∈ N.
d. L’anneau Zp m est un anneau local pour p premier.
Proposition
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 15 / 92
Anneaux de Galois
Définition
Si A est commutatif, unitaire, et que l’ensemble de ses diviseurs de zéro est de la forme
pA, où p est un nombre premier, alors A est un anneau de Galois.
Remarques :
a. Les corps de Galois peuvent donc être considérés comme des anneaux de Galois ne
contenant aucun diviseur de zéro. L’exemple le plus utilisé en théorie du codage est
A = Zp m , l’anneau des entiers modulo p m .
b. L’ordre additif de l’élément neutre pour la multiplication par un est la caractéristique,
notée car(A).
c. La caractéristique d’un anneau de Galois A est
car(A) = p m , m ∈ N.
d. L’anneau Zp m est un anneau local pour p premier.
Proposition
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 15 / 92
Modules
Définition
Un A-module (E, +, .) est un ensemble muni d’une loi interne + et d’une loi externe
A × E → E, (α, θ) 7→ αθ, vérifiant :
(I) (E, +) est un groupe abélien.
(II) On a aussi les quatre propriétés suivantes, pour tous τ, ν ∈ A et tous θ, ϑ ∈ E :
1 τ (θ + ϑ) = τ θ + τ ϑ,
2 (τ + ν)ϑ = τ ϑ + νϑ,
3 (τ ν)ϑ = τ (νϑ),
4 1ϑ = ϑ si 1 est l’unité de A.
Définition
Une partie N de E est un sous-module si et seulement si elle contient 0, et si pour tous
κ, ι dans N, et tout τ dans A, on a κ + ι ∈ N et τ κ ∈ N.
Définition
Une partie N de E est un sous-module si et seulement si elle contient 0, et si pour tous
κ, ι dans N, et tout τ dans A, on a κ + ι ∈ N et τ κ ∈ N.
RemarqueY : Soit (Mt )t∈I une famille de A-modules où I est un ensemble fini ou non. Alors le
produit Mt est un S-module pour les lois évidentes ; on l’appelle le produit des S-modules
t∈I
Mt .
Définition
Soit
M (Mt )t∈I une famille de A-modules.
Y La somme directe (externe) des Mt , notée
Mt , est le sous-module de Mt constitué des familles presque nulles (Mt )t∈I . Si
t∈I t∈I
I est fini, la somme directe coïncide avec le produit direct.
RemarqueY : Soit (Mt )t∈I une famille de A-modules où I est un ensemble fini ou non. Alors le
produit Mt est un S-module pour les lois évidentes ; on l’appelle le produit des S-modules
t∈I
Mt .
Définition
Soit
M (Mt )t∈I une famille de A-modules.
Y La somme directe (externe) des Mt , notée
Mt , est le sous-module de Mt constitué des familles presque nulles (Mt )t∈I . Si
t∈I t∈I
I est fini, la somme directe coïncide avec le produit direct.
Définition
Un S-module M est dit de type fini s’il existe une partie finie G de M telle que M est
engendré par G. Il est libre s’il possède une base, c’est-à-dire
X une famille (xt )t∈I telle que
tout élément x de M s’écrit de manière unique x = αt xt , avec (αt )t∈I une famille
t∈I
presque nulle d’éléments de A.
Lors d’une communication, les messages peuvent être altérés par des fautes d’orthographe, une
diction rapide ou des bruits perturbateurs, bien qu’une compréhension partielle reste souvent
possible, comme avec un réarrangement des lettres internes d’un mot. Le transfert
d’informations numériques est crucial, notamment pour les sondes spatiales recevant des
signaux sur de longues distances, rendant essentielle la minimisation des pertes d’information
grâce aux codes correcteurs. Lors de la transmission, un mot de code C peut être corrompu
par un canal bruité, aboutissant à une version altérée Ĉ reçue. Le défi principal est que le
récepteur ne connaît pas initialement le message original x .
Estimation du message
original x
Exemple :
1-Code de Parité (ASCII 8 bits)
x=65 : ’C’=(01000001).
x=67 ; ’C’=(01000011).
Exemple :
1-Code de Parité (ASCII 8 bits)
x=65 : ’C’=(01000001).
x=67 ; ’C’=(01000011).
et que pour tout mot r ∈ An , il existe un unique mot m ∈ C qui minimise la distance
d(r , m).
On remarque que la distance minimale dC est forcément impaire et liée à la capacité de
correction eC par la relation
dC = 2eC + 1.
Défintion
Un code répétition de langueur n sur un Alphabet binaire {0,1} est définis par :
1 Chaque bit d’information est répété n foit pour formé un mot codé.
2 Le code est donc de paramètre n, 1, c’est à dire que la dimension est 1 (un seul bit
d’information et de langueur codé est n).
et que pour tout mot r ∈ An , il existe un unique mot m ∈ C qui minimise la distance
d(r , m).
On remarque que la distance minimale dC est forcément impaire et liée à la capacité de
correction eC par la relation
dC = 2eC + 1.
Défintion
Un code répétition de langueur n sur un Alphabet binaire {0,1} est définis par :
1 Chaque bit d’information est répété n foit pour formé un mot codé.
2 Le code est donc de paramètre n, 1, c’est à dire que la dimension est 1 (un seul bit
d’information et de langueur codé est n).
Exemple : pour n = 3 le bit 0 est codé par 000, et le bit 1 est codé par 111.
Définition
Un code de parité est un code linèaire [n, n − 1, 2] où chaque mot de code
(c0 , c1 , . . . , cn−1 ) vérifie la condition de parité :
Le bit supplémentaire cn−1 est appelé bit de parité et permet de détecter une erreur
simple.
Le code de parité bidimensionnel applique une parité sur chaque ligne et colonne d’une
matrice de bits, permettant de détecter et parfois corriger des erreurs isolées.
Exemple : pour n = 3 le bit 0 est codé par 000, et le bit 1 est codé par 111.
Définition
Un code de parité est un code linèaire [n, n − 1, 2] où chaque mot de code
(c0 , c1 , . . . , cn−1 ) vérifie la condition de parité :
Le bit supplémentaire cn−1 est appelé bit de parité et permet de détecter une erreur
simple.
Le code de parité bidimensionnel applique une parité sur chaque ligne et colonne d’une
matrice de bits, permettant de détecter et parfois corriger des erreurs isolées.
1 0 1 0
0 1 0 1
1 1 0 0
Étape 1 : Calcul des bits de parité des lignes : On ajoute une colonne à droite pour la
parité paire (somme modulo 2) :
1 0 1 0 0
0 1 0 1 0
1 1 0 0 0
Étape 2 : Calcul des bits de parité des colonnes : On ajoute une ligne en bas pour la
parité paire :
1 0 1 0 0
0 1 0 1 0
1 1 0 0 0
0 0 1 1 0
dH (C ) = min{d(c, c 0 ) | c, c 0 ∈ C , c 6= c 0 }.
dH (C ) = min{d(c, c 0 ) | c, c 0 ∈ C , c 6= c 0 }.
dH (C ) = min{d(c, c 0 ) | c, c 0 ∈ C , c 6= c 0 }.
Le poids minimal d’un code C est le minimum des poids non nuls du code, i.e. :
k n
n =
G x C
Exemple :
1 1 0 0
La matrice : G = 0 1 0 0
0 0 1 1
encode (1, 1, 1) comme (1, 0, 1, 1) et (1, 0, 0) comme (1, 1, 0, 0).
On Remarque que uG est une combinaison linèaire des lignes de la matrice génératrice, donc
C est l’espace des lignes de G.
Théorème
Soit C un code linèaire sur A à une permutation des coordonnées prés C admet une
matrice génératrice G sur sous la forme standard suivante :
Ik0 A0,1 A0,2 ··· A0,e−1 A0,e
0
γIk1 γA1,2 ··· γA1,e−1 γA1,e
0 0 γ 2 Ik2 ··· γ 2 A2,e−1 γ 2 A2,e
G = .
.. .. .. .. .. ..
. . . . . .
0 0 0 ··· γ e−1 Ike−1 γ e−1 Ae−1,e
Définition
Un code linèaire de paramètres (n, k, d) est dit systématique si l’encodage consiste à
rajouter n − k bits à la fin du mot. Pour un code linèaire, sa matrice génératrice G est
de la forme
G = Ik | B ,
où Ik est la matrice identité de taille k × k et B une matrice de taille k × (n − k).
C ⊥ = {v ∈ An | v · w = 0 pour tout w ∈ C }.
Propriété
C ⊥ = {v ∈ An | v · w = 0 pour tout w ∈ C }.
Propriété
Définition
Le rang de C est défini par :
e−1
X
k(C ) = ki .
i=0
Il est clair que k(C ) est le nombre minimum de vecteurs d’une famille génératrice de C . De
plus nous avons une relation entre C et son dual C ⊥ :
Remarque : Soit C un code linèaire de type {k0 , k1 , . . . , ke−1 } sur Z4 . Alors son code dual C ⊥
est de type {ke , ke−1 , . . . , k1 }.
k k
n = x
H C
c∈C ⇐⇒ HcT = 0.
Soit C un code linèaire sur A. le code C est le noyau (à droite), ker(H), de H dans F n ,
i.e
C = ker(H) = {x ∈ An | Hx = 0} .
D’après la relation bien connue entre le rang d’une matrice et la dimension de son noyau,
on a
HG T = 0 =⇒ GH T = 0
Exemple : Le code linèaire de Hamming [7, 4, 3] sur F = GF(2) est défini par la matrice de
contrôle
0 0 0 1 1 1 1
H = 0 1 1 0 0 1 1 ,
1 0 1 0 1 0 1
Propriétés
Théorème
Soit C un code.
Définition
Soit Fn2 l’espace vectoriel sur le corps fini à deux éléments. On appelle syndrome du mot
m le vecteur s = HmT , où H est la matrice de contrôle du code.
Supposons que w soit un mot erroné, r = m + e, avec m un mot du code et e le vecteur
d’erreur. Ainsi,
Hr T = H(m + e)T = HmT + He T = He T ,
car m appartient au code, donc HmT = 0.
Le mot erroné et l’erreur ont le même syndrome. L’ensemble des mots associés à un
syndrome donné est appelé classe latérale (ou coset) de W .
Corriger r revient donc à trouver le mot d’erreur e de poids minimal vérifiant r = m + e
avec m ∈ C dans la classe latérale de r . Cela n’est possible que si ce mot d’erreur est
unique, ce qui suppose qu’il y ait moins d’erreurs que la capacité de correction du code.
Chaque syndrome est associé à un unique mot m ∈ Fn2 dont le poids w (m) vérifie w (m) ≤
w (e) avec e ∈ C .
Preuve : Supposons qu’il existe m, m0 ∈ Fn2 tels que w (m), w (m0 ) ≤ w (e), m, m0 ∈
/ C et
HmT = Hm0T .
m − m0 = 0 =⇒ m = m0 .
Chaque syndrome est associé à un unique mot m ∈ Fn2 dont le poids w (m) vérifie w (m) ≤
w (e) avec e ∈ C .
Preuve : Supposons qu’il existe m, m0 ∈ Fn2 tels que w (m), w (m0 ) ≤ w (e), m, m0 ∈
/ C et
HmT = Hm0T .
m − m0 = 0 =⇒ m = m0 .
Étudions le cas r = 3.
Considérons un code C (7, 4, 3) de Hamming binaire de matrice génératrice suivante :
1 0 0 0 1 1 0
0 1 0 0 1 0 1
G = .
0 0 1 0 0 1 1
0 0 0 1 1 1 1
Les codes linéaires définis sur des anneaux finis offrent une structure plus riche que les codes
classiques sur corps finis, permettant de modéliser des alphabets complexes adaptés aux
architectures modernes et d’élargir la gamme de codes, notamment cycliques, BCH et Goppa,
ainsi que leur usage en cryptographie avancée. Ces anneaux fournissent un cadre naturel pour
concevoir des codes performants et flexibles, répondant aux besoins des systèmes de
communication à haut débit et des protocoles de sécurité.
Définition
Soit un code linèaire C ⊆ An . On dit que C est cyclique si et seulement si il est stable
par l’opérateur de décalage cyclique σ, c’est-à-dire :
∀c ∈ C , σ(c) ∈ C ,
où l’opérateur σ est défini par
Exemple : Le code de parité (n, n − 1) est un code cyclique. En effet, si c = (c0 , . . . , cn−1 ) est
un mot de code, alors
n−2
X
cn−1 = ci mod 2.
i=0
Comme X − 1 est un polynôme de degré n, A est isomorphe à A[X ]/(X n − 1). Dans
n n
Autrement dit, l’opération de décalage d’un vecteur revient à multiplier son polynôme associé
par X dans A[X ]/(X n − 1).
Cette propriété est à la base du théorème suivant qui donne une caractérisation algébrique du
code cyclique.
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 57 / 92
Caractéristique
Théorème
Soit C (X ) l’ensemble des polynômes associés aux mots du code cyclique C . Alors C (X )
est un idéal de A[X ]/(X n −1).(Comme A[X ]/(X n −1) est principal alore C (X ) est engen-
dré par un unique polynôme unitaire g(x ) divisant x n − 1, appelé polynôme générateur
du code. Ainsi, le code cyclique s’écrit C = hg(x )i = {g(x )q(x ) | q(x ) ∈ Rn }.
Preuve
Soit A un anneau commutatif unitaire et
Rn = A[X ]/(X n − 1)
On définit
C (X ) = {c(X ) ∈ Rn | c ∈ C }.
q(X ) · c(X ) ∈ C (X ).
k = n − deg(g(X ))
Théorème
0 0 0 ··· 0 c0 c1 c2 ··· ct
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 60 / 92
Opération de codage
Soit C un code cyclique de polynôme générateur g ; soit G une matrice génératrice de C
construite à partir de g comme dans le théorème 6. Soit m = [m0 , . . . , mk−1 ] ∈ Ak un mot
source et
k−1
X
m(X ) = mi X i
i=0
son polynôme associé. Le mot de code associé à m est φ(m) = mG de polynôme associé C .
Par l’écriture de G à partir des coefficients de g(X ) (théorème 6), on a :
k−1
X
C (X ) = ai (X i g(X )) mod X n − 1
i=0
k−1
" !#
X
i
= g(X ) mi X mod X n − 1
i=0
= [g(X ) · m(X )] mod X n − 1.
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 61 / 92
Algorithmes pour codage et decodage des codes cyclique avec détéction et
corréction des erreurs
Algorithme de Codage (Forme Systématique)
1-Entrées/Sorties
Entrée : Message m = (m0 , m1 , . . . , mk−1 ) (k bits)
Sortie : Mot de code c = (c0 , c1 , . . . , cn−1 ) (n bits)
Polynôme générateur : g(x ) de degré n − k
2-Algorithme
k−1
X
1: Représenter le message comme polynôme : m(x ) = mi x i
i=0
2: Multiplier par x n−k : x n−k · m(x )
n−k
3: Calculer le reste : r (x ) = (x · m(x )) mod g(x )
n−k
4: Construire le mot de code : c(x ) = x · m(x ) − r (x )
5: return c = coefficients de c(x )
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 62 / 92
Algorithmes pour codage et decodage des codes cyclique avec détéction et
corréction des erreurs
x 3 · m(x ) = x 3 + x 5 + x 6
r (x ) = x
c(x ) = x 6 + x 5 + x 3 + x
c = (0, 1, 0, 1, 0, 1, 1)
Détection d’Erreurs
1: Calculer le syndrome : s(x ) = r (x ) mod g(x )
2: if s(x ) 6= 0 then
3: return "Erreur détectée"
4: else
5: return "Pas d’erreur"
6: end if
2-Algorithme
1: Calculer s(x ) = r (x ) mod g(x )
2: if s(x ) 6= 0 then
3: Trouver position i dans la table
4: ri ← ri ⊕ 1 (correction)
5: end if
6: return r
r (x ) = (x 3 + x 5 + x 6 ) mod (x 3 + x + 1)
=x (par divisions successives)
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 67 / 92
Exemple d’Application
Étape 4 : Construction du mot de code
c(x ) = x 3 · m(x ) − r (x )
= x6 + x5 + x3 + x
⇒ c = (0, 1, 0, 1, 0, 1, 1)
Détection d’Erreur
1- l’erreur
Erreur en position 2 : r = (0, 1, 1, 1, 0, 1, 1)
r (x ) = x + x 2 + x 3 + x 5 + x 6
2-Calcul du syndrome
2-Correction
Pour s(x ) = x 2 erreur en position 2
Mot corrigé : (0, 1, 0, 1, 0, 1, 1)
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 69 / 92
Codes BCH
Définition
Un code BCH raccourci C(n, η) de longueur n ≤ s est un code sur A dont la matrice de
contrôle de parité est
α1 α2 · · · αn
2 2 2
1 α2 · · · αn
α
H = .
.. . . .
.. . . ..
r r r
α1 α2 · · · αn
pour un certain r ≥ 1, où η = (α1 , α2 , . . . , αn ) = (αk1 , αk2 , . . . , αkn ) est le vecteur locali-
sateur, constitué d’éléments distincts de Gs . Le code C(n, η), avec n = s, est appelé un
code BCH. Dans ce cas, η est unique à permutation des coordonnées.
Lemme Soit α un élément de Gs d’ordre s. Alors les différences αl1 − αl2 sont inversibles dans
R si 0 ≤ l1 6= l2 ≤ s − 1.
Preuve Notons que αl1 − αl2 peut s’écrire comme −αl2 (1 − αl1 −l2 ), où 1 désigne l’unité de R.
Le premier terme du produit, à savoir −αl2 , est une unité. Le second terme peut s’écrire 1 − αj
pour un certain entier j dans l’intervalle [1, s − 1]. Supposons que pour un certain j, 1 − αj ne
soit pas une unité dans R, c’est-à-dire 1 − αj ∈ M1 . Alors, pour tout j < s, (µ0 (α))j = µ0 (1), ce
qui est une contradiction. Ainsi, 1 − αj ∈ R ∗ , 1 ≤ j ≤ s − 1.
Théorème
La distance de Hamming minimale d’un code BCH C(n, η) vérifie d ≥ r + 1.
Lemme Soit α un élément de Gs d’ordre s. Alors les différences αl1 − αl2 sont inversibles dans
R si 0 ≤ l1 6= l2 ≤ s − 1.
Preuve Notons que αl1 − αl2 peut s’écrire comme −αl2 (1 − αl1 −l2 ), où 1 désigne l’unité de R.
Le premier terme du produit, à savoir −αl2 , est une unité. Le second terme peut s’écrire 1 − αj
pour un certain entier j dans l’intervalle [1, s − 1]. Supposons que pour un certain j, 1 − αj ne
soit pas une unité dans R, c’est-à-dire 1 − αj ∈ M1 . Alors, pour tout j < s, (µ0 (α))j = µ0 (1), ce
qui est une contradiction. Ainsi, 1 − αj ∈ R ∗ , 1 ≤ j ≤ s − 1.
Théorème
La distance de Hamming minimale d’un code BCH C(n, η) vérifie d ≥ r + 1.
Lemme Soit α un élément de Gs d’ordre s. Alors les différences αl1 − αl2 sont inversibles dans
R si 0 ≤ l1 6= l2 ≤ s − 1.
Preuve Notons que αl1 − αl2 peut s’écrire comme −αl2 (1 − αl1 −l2 ), où 1 désigne l’unité de R.
Le premier terme du produit, à savoir −αl2 , est une unité. Le second terme peut s’écrire 1 − αj
pour un certain entier j dans l’intervalle [1, s − 1]. Supposons que pour un certain j, 1 − αj ne
soit pas une unité dans R, c’est-à-dire 1 − αj ∈ M1 . Alors, pour tout j < s, (µ0 (α))j = µ0 (1), ce
qui est une contradiction. Ainsi, 1 − αj ∈ R ∗ , 1 ≤ j ≤ s − 1.
Théorème
La distance de Hamming minimale d’un code BCH C(n, η) vérifie d ≥ r + 1.
Les codes BCH sont un cas particulier des codes de Goppa. Pour cela, on choisit g(x ) = x r et
L = {α1 , α2 , . . . , αn }, où chaque αi ∈ Gs pour i = 1, 2, . . . , n. Alors, d’après l’équation (4.1) :
preuve : Nous avons que C(L, g) est un code alternant C(n, η, w) avec η = (α1 , α2 , · · · , αn ) et
w = (g(α1 )−1 , g(α2 )−1 , · · · , g(αn )−1 ). Par conséquent, d’après le Théorème 3.2, nous avons
que C(L, g) possède une distance minimale d ≥ r + 1.
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 79 / 92
Code Goppa
−r
α2−r · · · αn−r
α1
1−r
α1 α21−r · · · αn1−r
H =
.. .. .. ..
. . . .
preuve : Nous avons que C(L, g) est un code alternant C(n, η, w) avec η = (α1 , α2 , · · · , αn ) et
w = (g(α1 )−1 , g(α2 )−1 , · · · , g(αn )−1 ). Par conséquent, d’après le Théorème 3.2, nous avons
que C(L, g) possède une distance minimale d ≥ r + 1.
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 79 / 92
Code Goppa
−r
α2−r · · · αn−r
α1
1−r
α1 α21−r · · · αn1−r
H =
.. .. .. ..
. . . .
preuve : Nous avons que C(L, g) est un code alternant C(n, η, w) avec η = (α1 , α2 , · · · , αn ) et
w = (g(α1 )−1 , g(α2 )−1 , · · · , g(αn )−1 ). Par conséquent, d’après le Théorème 3.2, nous avons
que C(L, g) possède une distance minimale d ≥ r + 1.
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 79 / 92
Exemple :
A[x ]
Soit A = GF (2)[i] et R = , où f (x ) = x 4 + x + 1 est irréductible sur A. Ainsi
(x 4 + x + 1)
s = 15 et G15 est engendré par α, où α4 = α + 1. Soit g(z) = z 4 + z 3 + 1,
L = {1, α, α2 , α7 , α5 , α4 , α7 , α5 , α8 , α9 } et w = (1, α12 , α11 , α7 , α3 , α11 , α6 , α5 , α4 , α13 ). La
matrice
Soit Γ(L, g(z)) un code de Goppa, où g(z) est un polynôme primitif avec deg(g(z)) = t et
|L| = n. Soit dimFq (Γ(L, g(z))) = k, et soit G une matrice génératrice de taille k × n associée
au code de Goppa ; alors le codage d’un vecteur-message m de longueur k sur Fq est donné
par mG.
Définition
Le syndrome du vecteur reçu y est défini par S(y ) où :
n
X yi
S(y ) :=
i=1
z − αi
n
X ci X ei
= +
i=1
z − αi i∈B z − αi
X ei
= mod g(z).
i∈B
z − αi
Proposition : 0
d
Soit e le vecteur d’erreur de poids r : r ≤ . Soit σ(z), w (z) et S(y ) comme décrits
2
ci-dessus. Alors les propriétés suivantes sont vérifiées :
1 deg(σ(z)) = r ;
2 deg(w (z)) ≤ r − 1 ;
3 gcd(σ(z), w (z)) = 1 ;
w (αk )
4 ek = 0 , où k ∈ B et σ 0 représente la dérivée de σ ;
σ (αk )
5 σ(z)S(y ) ≡ w (z) (mod g(z)).
d
Correction des erreurs : Algorithme pour corriger r ≤ :
2
Proposition : 0
d
Soit e le vecteur d’erreur de poids r : r ≤ . Soit σ(z), w (z) et S(y ) comme décrits
2
ci-dessus. Alors les propriétés suivantes sont vérifiées :
1 deg(σ(z)) = r ;
2 deg(w (z)) ≤ r − 1 ;
3 gcd(σ(z), w (z)) = 1 ;
w (αk )
4 ek = 0 , où k ∈ B et σ 0 représente la dérivée de σ ;
σ (αk )
5 σ(z)S(y ) ≡ w (z) (mod g(z)).
d
Correction des erreurs : Algorithme pour corriger r ≤ :
2
0 = (0, 0)T ;
1 = (1, 0)T ;
α = α = (0, 1)T ;
α2 = 1 + α = (1, 1)T ;
α3 = −1 − α = (−1, 0)T ;
α4 = −1 = (−1, −1)T ;
α5 = −1 − α = (−1, −1)T ;
α6 = −1 + α = (−1, 1)T ;
α7 = −1 + α = (−1, 1)T .
!
2+a 1+a a 2+a a a
H=
1 2 2 1 + 2a 2 + 2a 2 + a
ILHAM EL HARRAK ( F.P.T .taza ) Projet de fin d’étude today 87 / 92
Code Goppa
1 0 0 0 2 2 1
Cela donne la matrice génératrice comme :
1 1 1 1 1 0 0
G = −1 1 −1 1 0 1 0 .
1 −1 1 −1 0 0 1