Académique Documents
Professionnel Documents
Culture Documents
Cours et exercices
1
Table des matières
1 Introduction générale 5
2
3.5.1 Le M LD est N P -dur . . . . . . . . . . . . . . . . . . . 37
3.5.2 Le décodage à distance bornée . . . . . . . . . . . . . . 38
4 Codes cycliques 47
4.1 La Factorisation de xn − 1 . . . . . . . . . . . . . . . . . . . . 47
3
6 Quelques Classes de Codes 86
6.1 Les codes de Reed-Muller . . . . . . . . . . . . . . . . . . . . 86
4
Chapitre 1
Introduction générale
cartes perforées de faible fiabilité. Si, durant la semaine, des ingénieurs pou-
vaient corriger les erreurs, les périodes chômées comme les fins de semaines
voyaient les machines s’arrêter invariablement sur des bogues. La frustration
de Hamming le conduit à inventer le premier code correcteur véritablement
efficace. Cette période correspond à la naissance de la théorie de l’informa-
tion. Claude Shannon en 1948 formalise cette théorie comme une branche
des mathématiques en commençant par montrer qu’il existe toujours un bon
code qui peut être utiliser pour envoyer de l’information à travers un canal,
pas de donner explicitement les bon codes, malgré qu’il montre leurs exis-
tence. C’était le début d’une nouvelle ère où une multitudes de branches des
5
linéaire, la géométrie algébrique, les statistiques, les probabilités, la combi-
natoire, l’électronique, la physique quantique, chimie quantique ... trouvent
6
Chapitre 2
propriétés. Ces codes sont les plus intéressants et les plus utilisés en pratique.
7
favoris pour les transmissions, (internet ”les codes fontaines”) pour les com-
munication intersatellitaires (codes BCH, Hadamard ...) ; pour résoudre les
(les codes de parités détecteurs) pour le stockage des donnés (les codes de
n sur Fq et donc on peut considérer des sous espaces vectoriels de Fnq . Cela
pelé un code linéaire [n, k]. Les vecteurs de C sont appelés mots du code
ou (codeword).
<R≤ .
8
Comme un code linéaire est un espace vectoriel, alors il admet une base.
La matrice G dont les lignes forment une base de C est dite matrice géné-
cise 2.1.2 Soit C le code sur F2 tel que : C = {1100, 1110, 1010}
Montrer que si G est une matrice génératrice d’un code linéaire [n, k], alors
on a ce qui suit.
1. G est de rang k.
la matrice génératrice G est donnée ci-dessous : (ce code est dit code à répé-
tition)
G = (11 . . . 111).
ci-dessous :
9
1 0 1
G= ,
0 1 1
Comme une base d’un espace vectoriel n’est pas unique, la matrice géné-
ratrice d’un code linéaire n’est pas unique, cependant il existe une matrice
Définition 2.1.6 Une matrice génératrice d’un code est dite sous forme sys-
10
1 1 1 0
G=
0 0 1 1
Proposition 2.1.9 Tout code C[n, k] peut se mettre sous forme systéma-
Preuve 2.1.10 Une matrice génératrice d’un code [n, k] étant une base du
tant une sous matrice identité k × k on peut alors se ramener à une forme
11
dite matrice de contrôle de parité (parity check matrix) de C, donnée
par :
de Hamming [7, 4]
0 1 1 1 1 0 0
H=
1 0 1 1 0 1 0
1 1 0 1 0 0 1
12
On peut définir sur Fnq une métrique d(., .) appelée distance de Ham-
ming, donnée par :
Exemple 2.1.14
Exercice 2.1.15 Montrer que la distance de Hamming est une métrique sur
Fnq au sens topologique, c’est à dire elle vérifie :
Lemme 2.1.16 Soit τ un entier naturel. Pour tout x ∈ Fnq , alors le nombre
d’éléments d’une boule de Hamming est :
τ µ ¶
X n
|Bτ (x)| = (q − 1)τ (2.3)
i=0
i
13
Preuve 2.1.17 En effet soit j un entier tels que 0 ≤ j ≤ τ . Il existe alors
un mot qui est le centre de la boule tels que d(x, y) = 0, n(q − 1) élément de
¡ ¢
Fnq tels que d(x, y) = 1, n2 n(q − 1)2 élément de Fnq tels que d(x, y) = 2, . . .
P ¡ ¢
etc. Il y a donc au total τj=0 nj n(q − 1)j mots dans une boule.
x = (1110100), w(x) =
y = (0101100), w(y) = .
14
le poids minimal sont égaux, en remarquant que d(x, y) = w(x − y)
Donner la distance minimale d’un code à répétition [n, 1].
1 1 0 1 0 0
H=
1 0 1 0 1 0
0 1 1 0 0 1
Exercice 2.2.1 Soit C un code linéaire [n, k, d] sur Fq . Montrer ce qui suit
15
3. Si C est un code binaire qui contient le mot (1 . . . 1) alors Ai (C) =
An−i (C)
poids le polynôme
n
X
WC (x) = A i xi , (2.4)
i=0
n
X
WC (x, y) = Ai xn−i y i .
i=0
poids le polynôme
W (x, y) = x2 + y 2 .
16
est égale à
WC1 (x, y) = x4 + 40xy 3 + 80y 4 .
1 (1 − x)
WC ⊥ (x) = [1 + (q − 1)x]n WC ( ).
|C| 1 + (q − 1)x
n−r µ ¶ r µ ¶
1 X n−i 1 X n−i
Ai = r A⊥ . (2.5)
q k i=0 r q i=0 n − r i
Preuve en exercice.
comme suit :
Fn−k
q , sont linéairement dépendantes.
17
Lemme 2.3.2 Soit r un entier > 1.
linéairement dépendantes.
Exercice 2.3.4 Donner les paramètres des code C1 et C2 qui admettent pour
matrices génératrice respectivement G1 et G2 suivantes
1 0 1 1
G1 =
0 1 α α2
1 0 0 1 1 1
G2 =
0 1 0 1 α α 2 .
0 0 1 1 α2 α
18
2.3.1 Les bornes sur la distance minimale
familles de codes bien connus. Ça a même été démontré par Dumer et al. que
bornes ont été données. Ces bornes permettent en utilisant des algorithmes
La plus simple des bornes, mais aussi la plus importante est la borne dite
de Singleton :
Lemme 2.3.5 (La Borne de Singleton )Un [n, k, d]q code C, vérifie l’inéga-
lité suivante
k + d ≤ n + 1,
19
la dimension de W = d − 1 on obtient :
Les codes satisfaisant cette borne sont dit M DS (Maximum Distance Sepa-
Proposition 2.3.9 Soit C un [n, k, d] code linéaire, alors les assertions sui-
vantes sont équivalentes :
dants.
indépendants.
20
Exercice 2.3.10 En utilisant les identités de Macwilliams donnés par le
Théorème 2.2.6, montrer que le nombre de mots de poids n − k + 1 d’un code
¡ ¢ Pi−d ¡ ¢ i−d+1−j
Ai = ni j i
j=0 (−1) j (q − 1)
¡n¢ Pi−d ¡ ¢
= i (q − 1) j=0 (−1)j i−1j
q i−d−j .
Problème 2.3.11 Montrer que s’il existe un code [n, k]q qui est M DS, alors
n ≤ q + 1, à l’exception du cas où q est paire et k = 3 ou k = q − 1, dans ce
cas n ≤ q + 2.
La borne de Singleton est le cas linéaire pour la borne dite Borne de Gries-
k−1
X d
n≥ d i e.
i=0
q
Une autre importante borne sur les paramètres d’un code linéaire et qui
résout l’un des problèmes les plus importants en théorie des codes ; pour n, k
21
Le théorème suivant appelé empilement des sphères ou borne de
Hamming donne la réponse.
b d−1 cµ ¶
X 2
n
k
q (q − 1)i ≤ q n .
i=0
i
Exercice 2.3.15 Montrer qu’il ne peut exister un code binaire [12, 7, 5].
n
X
hx, yi = xi y i ,
i=1
par
C ⊥ = {x ∈ Fnq , hx, yi = 0, ∀y ∈ C}.
Exemple 2.4.2 Sur F2 si C = {000, 111} alors C ⊥ = {000, 011, 110, 101}
22
Exercice 2.4.3 Montrer que le code dual C ⊥ d’un code linéaire est un code
linéaire de dimension k ⊥ = n − k. Sa matrice génératrice est la matrice de
matrice génératrice G de C.
Montrer que le code dual du code à répétition [n, 1, n] est le code linéaire
[n, n − 1, 2]. Ces deux codes avec l’espace tout entier (Fnq ) et son dual (le code
Si on considère des codes sur Fq2 , alors nous pouvons considérer le produit
scalaire Hermitien. Le code dual par rapport à ce produit scalaire est un code
linéaire noté par C ⊥h et appelé dual Hermitien. Il est défini par :
n
X
C ⊥h
= {x ∈ Fnq2 , xi yiq = 0 , ∀y ∈ C}.
i=1
23
ment si :
x.x = 0, et x.y = 0, ∀x ∈ C, ∀y ∈ C. (2.7)
Exemple 2.4.6 Le code binaire C = {00, 11} est le plus simple code auto-
dual. Il admet comme énumérateur de poids le polynôme
W (x, y) = x2 + y 2 .
Un code auto-dual C doit être un [n, n/2] code avec n pair. Cette propriété
vient du fait que pour un code linéaire C on a
dim C + dim C ⊥ = n.
24
Exercice 2.4.9 Soit C un [6, 3, 2] code sur F2 , de matrice génératrice
1 0 0 1 1 1
G=
0 1 0 1 1 1 .
0 0 1 1 1 1
En particulier il existe des codes auto-duaux [n, n/2]2 pour tout entier
divisible avec divisor ∆ > 0, alors on a l’une des situations qui se présente
1. q = 2 et ∆ = 2, ou
2. q = 2 et ∆ = 4 et C est auto-dual, ou
25
3. q = 3 et ∆ = 3, et C est auto-dual Euclidien,
Exercice 2.4.13 soit le code binaire C, dont la matrice génératrice est don-
née par
1 1 0 1 1 0
G=
1 1 0 0 0 1
0 1 1 1 0 0
code C 0 équivalent à C.
distance minimale de C ?
26
Exercice 2.4.14 Un [n, k, d]-code linéaire est dit M.D.S (maximum distance
séparable) si l’inégalité de singleton est une égalité pour ce code. i.e. si k =
n − d + 1.
27
Chapitre 3
PSfrag replacements
x = x1 . . . x k
c = c1 . . . c n
y =c+e
28
L’opération de transmission comporte plusieurs étapes, soient l’étape
d’encodage, l’envoie du message à travers le canal et enfin l’opération de
décodage. Ce qui nous intéresse dans ce cours ce sont les opérations d’enco-
contiens q k mots et peut être utilisé pour envoyer q k message. L’étape d’en-
codage consiste à ajouter une certaine redondance au message de tels sorte à
par :
1 0 0 0 1 1
G=
0 1 0 1 0 1
0 0 1 1 1 0
u1 = 011, u2 = 101.
29
message x1 . . . xk par un code [n, k] on obtient le mot du code x1 . . . xk xk+1 . . . xn ,
les k premières coordonnées sont dites symboles d’informations, les autres
O(nk) opérations.
codeur doit corriger les erreurs pour retrouver le message initial avant de le
bruit
entrés et les sorties sont discrètes (non continue). Un canal discret est dit
30
sont des vecteurs de longueur n sur Fq , alors
n
Y
P (y reçu| x envoyé) = P (yi reçu | xi envoyé ) (3.1)
i=1
vante
P (y reçu | y envoyé ) =
Exemple 3.2.4 Le canal symétrique binaire (BSC) est un canal sans mé-
31
PSfrag replacements
1
1−p
1
p
p
0
reçu
1−p
0
envoyé
Exercice 3.2.5 Supposons que la probabilité crossover est de 0.2 sur un ca-
nal binaire symétrique, montrer que la probabilité d’envoyer 5 bits sans erreur
32
3.3 Les algorithmes de décodage
ding (M LD)) est une règle de décodage basée sur l’idée que cy est le plus
33
3.5 Le décodage par syndrôme
SH : Fnq −→ Fn−k
q
(3.3)
y 7−→ SH (y) = Hy t .
−1
De la définition de la matrice de contrôle H de C on obtient que SH ({0}) =
C. Le translaté d’un vecteur y ∈ Fnq est défini comme étant
{y + c|c ∈ C}.
si ils ont le même syndrôme. Tous les translatés d’un code C ont le même
Il est claire que la classe d’équivalence d’un mot de Fnq est le translaté du
34
l’espace ayant le même syndrome Hxt . Considérons maintenant l’ensemble
des mots d’un translaté {a + c| c ∈ C}, supposons que deux éléments du
et donc c1 = c2 , alors cela donne que tous les éléments a + c sont distincts
code est |C|. Du faite que les classes d’équivalence forment une partition de
−1
SH (Hy t ) = y + C.
A tous les translaté on peut associer un mot du plus petit poids contenu dans
le translaté (mot non nécessairement unique), ce mot est appelé coset leader
1. Calculer le syndrôme s = Hy t de y.
−1
2. Dans la liste SH (s) + C trouver le coset leader cl.
3. Décoder y 7→ y − cl.
35
Exemple 3.5.5 On considère le code
1 1 0 1 0 0
C’est un code [6, 3, 3] de matrice de contrôle H =
1 0 1 0 1 0 .
0 1 1 0 0 1
Supposons qu’on a reçu le vecteur y = 101011. Le vecteur syndrôme de y est
s = H t y = (110)t . On a
−1
SH (s) = 101011+C = {101011, 001101, 111110, 011000, 10000, 000111, 010011, 011111},
Exercice 3.5.6 Décoder le mot reçu 1110000 en utilisant [7, 4, 3], en utili-
sant le décodage par syndrôme et le décodage par le mot le plus proche du
code de Hamming.
36
Exercice 3.5.8 En utilisant le code de matrice de contrôle
1 0 0 1 0
H=
0 1 0 1 0
,
0 0 1 1 0
de vraisemblance.
pour un code binaire linéaire. Nous pouvons donc conclure de ce résultat que
toutes les méthodes de décodage que nous venons de voir sont N P -dur pour
les codes linéaires. Cependant on ne savait pas si le M LD est N P -dur pour
qu’un nombre limité d’erreurs. Cela a donné lieux à une règle de décodage
37
3.5.2 Le décodage à distance bornée
définitions.
38
Les mots x et x0 étant distincts et d étant la distance minimale de C, on
obtient ainsi une contradiction.
d − 1, d’où m = m.
Preuve 3.5.16 Si moins de d erreurs ont été commise sur un mot du code
alors le mot reçu n’est pas un mot du code et on sait que les erreurs se sont
produites. Soit x un mot de C tel que d(x, y) = τ ≤ t, alors le mot x de C
Hamming de longueur 7.
sont pas du tout évidentes. Cependant il existe un moyen mais coûteux mais
trés simple pour encoder et décoder si on n’est pas trés exigent ! ! !. Il s’agit
39
d’utiliser le code à répétition. L’encodage dans ce cas est le même que pour
les codes linéaires Ce code est la forme la plus simple des codes linéaire. C’est
1. Souvent on utilise les codes à répétition binaire, dans ce cas le code n’a
que deux mots ; le mot (0 . . . 0) et le mot (1 . . . 1). . Dans ce cas chaque bit
0 → 000
.
1 → 111
Le décodage se fait par le mot le plus proche dans ce cas on dit par vote
majoritaire. Par exemple, si le mot reçu est 001 on en déduit que le bit émis
était 0. Si le message qu’on veut envoyer est 1101 en encodant avec ce code
on trouve 111111000111. Le décodage est ensuite trés simple puisqu’il suffit
40
La situation précédente semble catastrophique et pourtant nous l’utilisons
avec efficacité sans s’en apercevoir ! !. En effet juste par exemple si on utilise
un mot de C avec une coordonné non nulle à la position i. Dans ce cas le code
est [n − 1, k − 1, d − 1] s’il existe un mot de C de poids d avec une coordonnée
41
est un mot de P (C, i), son poids vérifie :
d − 1 ≤ wt(x0 ) ≤ d.
S’il existe un mot de C avec une coordonné non nulle à la position i, alors
f : C −→ Fq
(3.5)
(c1 . . . cn ) 7−→ ci .
f est bien une application linéaire non identiquement nulle, car ∃a ∈ C avec
42
entre C0 et R(C, i) d’où dim R(C, i) = k−1. Dans le cas contraire c’est à dire
∀c ∈ C la ième coordonné est nulle, alors C = C0 et donc dim R(C, i) = k.
S’il existe un mot dans C de poids d tels que sa ième coordonné est nulle
Remarque 3.7.4
Ĉ définie par :
n
X
Ĉ = {(x0 , . . . , xn ) | (x1 , . . . , xn ) ∈ C tel que x0 = − xi }.
i=1
par :
1 ... 1 1
0
Ĥ = ,
..
H .
0
43
Exemple 3.7.6 On considère les codes C1 = {00, 11}, C2 = {00, 01} sur F2
alors Ĉ1 = {000, 011}, Ĉ2 = {000, 101}.
Exercice
3.7.7Soit C1 le code défini sur F4 et de matrice génératrice G1 =
1 0 1 1
, montrer que Ĉ1 = {11011, 001αα2 , 111α2 α, 0000}.
2
0 1 α α
Exercice 3.7.8 Montrer que le code Ĉ est linéaire et admet pour paramètres
ˆ avec dˆ = d ou d + 1. Dans le cas binaire, si d est impaire alors
[n + 1, k, d]
dˆ = d + 1.
par
C1 ⊕ C2 = {(c1 , c2 )|c1 ∈ C1 et c2 ∈ C2 },
G1 0 H1 0
on a GC1 ⊕C2 = , et HC1 ⊕C2 =
0 G2 0 H2
Exemple 3.7.9 Soit C le code binaire [4, 2, 2], donné par la matrice :
1 1 0 0
G= ,
0 0 1 1
44
La somme directe des codes satisfait une propriété intéressante dans le cas
binaire, qui est fausse en général.
C = {(u|u + v); u ∈ C1 , v ∈ C2 }
de matrice génératrice
G1 G1
G= .
0 G2
45
Exemple 3.7.13 On considère C le code [4, 3, 2] construit par la construc-
tion (u|u
+ v)à partir du code C1 et C2 de matrice génératrice respectives
µ ¶
1 0
G1 = et G2 = 1 1
0 1
46
Chapitre 4
Codes cycliques
4.1 La Factorisation de xn − 1
h h
xn − 1 = xmp − 1 = (xm − 1)p .
47
racines n-ièmes de l’unité sur Fq , elles forment le sous groupe E n de F∗qs
de cardinal n. Comme F∗qs est cyclique alors E n est cyclique d’ordre n. Un
s s −1
α ∈ Fqs ⇒ αq = α ⇒ αq = 1 ⇒ n/(q s − 1).
Puisque tout groupe cyclique d’ordre n admet φ(n) éléments d’ordre n, alors
il existe exactement φ(n) racines primitives n-ièmes de l’unité sur Fq . En
particulier puisque φ(n) > 0, donc il existe une racine primitive n-ième de
l’unité sur Fq pour tout entier positif n qui est relativement premier à q.
tion Fqs de xn − 1, alors les racines primitives n-ièmes de l’unité sur Fq sont
qs − 1
{β k | k = u, u < n, (u, n) = 1}.
n
48
donc les racines de xn − 1 sont données par
1, α, . . . , αn−1 ,
n−1
Y
n
x −1= (x − αi ). (4.1)
i=0
Puisque les αi sont distinctes, alors xn −1 n’est rien d’autre que le produit des
polynôme unitaire de plus bas degré Mγ (x) dans Fq [x], vérifiant Mγ (γ) = 0
49
Proposition 4.1.5 ([6] p. 310) Soit α une racine primitive n-ième de l’unité
de Fqs et γ = αj . Alors le polynôme minimal de γ est donné par,
ordl q−1
Y i
Mγ (x) = (x − αjq ). (4.2)
i=0
n
l= .
(n, j)
(Z/nZ)∗ .
suivante de xn − 1 :
Y
xn − 1 = Mj (x),
j∈K
50
Remarque 4.1.7 Si α est une racine primitive nième de l’unité, son poly-
nôme minimale est M1 et donc ordn q = |C1 | = deg M1 .
C0 = {0}, C1 = {1, 2, 4, 8}, C3 = {3, 6, 9, 12}, C5 = {5, 10}, C7 = {7, 11, 13, 14}
Dans cette section nous considérons quelques propriétés des classes cyclo-
deg Mj = ord l q,
n
où l = (n,j)
est l’ordre de γ. Puisque l divise n, alors ord l (q) divise ord n (q).
1. n divise q − 1.
51
2. n divise q + 1.
Ci = C−i .
Lemme 4.2.5
Preuve 4.2.6 Si C1 est réversible, alors il existe k, 1 ≤ k ≤ ordn (q) tel que
q k ≡ −1 mod n, il s’ensuit que jq k ≡ −j mod n, d’où Cj = C−j .
Lemme 4.2.7 S’il existe i > 0 tel que q i ≡ −1 mod n, alors C1 est réver-
sible.
52
3. Si ordq n est paire, alors il existe au moins une classe cyclotomique
modulo n qui est réversible.
Un code linéaire de longueur n est dit cyclique s’il est invariant par le
décalage circulaire à droite,
Exemple 4.3.1 Le code binaire C = {000, 101, 011, 110} est un code cy-
clique.
Le code [7, 3] constitué des mots suivants
53
En considérant l’anneau des polynômes Fq [x] et son anneau quotient
Rn = Fq [x]/(xn − 1),
Fnq −→ Fq [x]/(xn − 1)
alors C est un idéal principal engendré par un polynôme g(x). Donc un mot
c = (c0 , . . . , cn ) de C peut être interprété par le polynôme c(x) = c0 + c1 x +
. . . + cn−1 xn−1 avec g(x) un diviseur de c(x).
Lemme 4.3.2 Soit c(x) = c0 +c1 x+. . .+cn−1 xn−1 un mot d’un code cyclique
ˆ =
de longueur n sur Fq , alors le décalage à droite du mot c(x) est le mot c(x)
ˆ vérifie :
cn−1 + c0 x + . . . + cn−2 xn−1 . Les mots c(x) et c(x)
Les propriétés des codes cycliques sont résumés dans le Théorème suivant.
54
1. Il existe un unique polynôme g(x) unitaire non nul de degré minimal
dans C
de C puisque les degrés possible sont entiers et bornés par 1. Supposons qu’il
existe deux mots g1 (x) et g2 (x) qui soient unitaires et de degré minimales,
alors g1 (x) − g2 (x) est un mot du code car le code est linéaire. En plus et
il est de degré inférieur au degré de g1 ( car g1 et g2 sont unitaire), ce qui
Soit maintenant c un mot du code tel que cn−1 = 1, alors comme g(x)
ˆ = xc(x)−cn−1 (xn −1) d’après le Lemme 4.3.2
divise c(x) et son décalé est c(x)
multiple d’un polynôme de degré deg(g), ces polynômes peuvent donc s’écrire
55
sous la forme g(x)h(x) pour deg(h) ≤ n − 1 − deg(g), il y a donc exactement
q n−deg(g) mots possibles qui par constructions sont tous distincts et donc la
code de Hamming.
56
n − k et admet pour matrice génératrice la matrice :
g g . . . gk 0 0 ... 0
0 1
0 g0 g1 . . . gk 0 ... 0
G= ,
... ... ...
0 0 0 . . . 0 g0 . . . gk
Soit C un code cyclique engendré par g(x) et α une racine primitive nième
TC = {i ∈ Zn | g(αi ) = 0}.
Le dual Euclidien d’un code cyclique C =< g(x) > est un code cyclique qui
vérifie les propriétés données par le lemme suivant.
57
xn −1
est un code cyclique engendré par g ⊥ = h∗ = xn−r h(x−1 ), avec h(x) = g(x)
.
De plus C ⊥ admet pour ensemble de définition l’ensemble suivant :
T ⊥ = {s ∈ Zn | n − s ∈
/ T } = Zn \ (−T ). (4.3)
nôme générateur d’un code cyclique < h⊥ (x) > qui a un matrice génératrice
h⊥ |xn − 1.
Le dual Hermitien d’un code cyclique C =< g(x) > est un code cyclique. Ses
propriétés sont données par le lemme suivant.
engendré par
Y
(x − αi ). (4.4)
i∈Zn \(−qT )
est égale à
T ⊥h = Zn \ (−qT ). (4.5)
Cette borne sera par la suite utilisé dans les codes BCH
58
Lemme 4.4.1 Soit C un code cyclique de longueur n sur Fq , (n, q) = 1, et
T son ensemble de définition. Si T contient r nombres consécutifs, alors la
d ≥ r + 1.
s 2s (n−1)s
1 α α ... α
1 αs+1 α2(s+1) ... α(n−1)(s−1)
H= ,
... ... ... ... ...
1 αs+r−1 α2(s+r−1) . . . α(n−1)(s+r−1)
contrôle complète.
i1 s iw s
α ... α
... ... ... .
αi1 (s+r−1) . . . αiw (s+r−1)
59
4.5 L’équivalence des codes
définit par :
P er(C) = P er(C ⊥ ).
n−1
X n−1
X
< σ(x), σ(y) >= xσ(i) yσ(i) = xi yi =< x, y > .
i=0 i=0
On dit que deux codes C et C 0 sont équivalents par permutation (ou sim-
plement équivalent s’il n’y a pas de confusion), s’il existe une permutation
60
de décodages une instance aléatoire de ce problème est en général facile en
pratique, pour prouver qu’ils sont équivalents il est en revanche nécessaire
trice de C0 à C1 .
Deux codes équivalents ont les mêmes paramètres et les mêmes propriétés,
c’est pour cette raison que les algorithmes d’équivalence des codes trouvent
blème de décodage des codesIl est à noter que le problème de décodage des
g(αb ) = · · · = g(αb+δ−2 ) = 0.
61
On note ce code Bq (n, δ, b), ou simplement Bq (n, δ) si b = 1. Dans ce dernier
cas, il est dit BCH au sens strict. Lorsque α est un élément primitif du
classe des codes BCH est l’une des plus anciennes classe de codes et les plus
des longueurs finies elle a un trés bon comportement. En plus les codes BCH
sont simples à encoder et relativement simple à décoder, en plus ils ont une
grande capacité de correction surtout s’ils sont combinés avec d’autre codes.
Exercice 4.6.1 Donner une borne inférieure sur la distance minimale d’un
code BCH(n, δ)q .
Exercice 4.6.2 Calcul explicite des ensembles de définition des codes BCH
binaires de longueur 16.
δ, nous avons :
62
dimension du code est au moins n − ordn (q)(δ − 1). La borne (4.8) découle
de la borne BCH.
Pour le cas binaire et pour un code au sens strict on remarque que l’en-
La borne donnée par le théorème 4.6.3 est souvent large et insuffisante, d’où
plus haut.
k = q m + 1 − 2m(δ − 1).
Preuve 4.6.6 L’exercice 4.2.9, donne que les classes cyclotomiques Cj pour
δ−1
Y
g= Mi ,
i=1
63
et son degré est 2m(δ − 1). Alors,
Nous avons vu dans les chapitres précédents que la distance minimale est
un important paramètre des codes. Du lemme 4.4.1 nous pouvons déduire
d ≥ δ.
t+1 µ m
X ¶
2 −1
> 2mt , (4.9)
i=0
i
dmin = δ. (4.10)
64
Théorème. 4.6.8 Soit Bq (n, δ) un code BCH de longueur n = q m + 1 et de
distance construite δ ≤ q, tels que
2(δ−1) µ m ¶
X q +1
(q − 1)i > q 2m(δ−1) , (4.12)
i=0
i
2(δ−1) µ m ¶
X q +1
(q − 1)i ≤ q 2m(δ−1) ,
i=0
i
contradiction.
Preuve 4.6.11 Comme nous avons supposé que le code C admet pour dis-
65
les éléments α, α2 , . . . , αδ−1 ne sont pas racines de xb − 1, alors elles doivent
être des racines de 1 + xb + x2b + . . . + x(δ−1)b , ce qui donne un mot de poids
δ dans C et donc dC = δ.
minimale est donc inférieure ou égale à q + 1 ce qui nous donne une autre
borne, dans certains cas elle est meilleure que les précédentes.
q + 1. (4.14)
Remarque 4.6.13 Il est évident que si q est impair alors tous les codes
ces codes.
66
consider l’espace vectoriel
l’application suivante
ev : Lk −→ Fnq
(4.15)
f 7−→ (f (α1 ), . . . , f (αn )),
est injective, et son image C est un [n, k] code, dit code de Reed–Solomon
Preuve 4.7.2 Il est bien évident qu’un code RS est linéaire, la linéarité
Cependant ces codes ont une faiblesse ; leur longueur n ≤ q. Ce qui les rends
impraticaple dans des situations où on exige des codes sur un petit alphabet.
67
En plus asymptotiquement ils sont mauvaix. Malgré cela ils trouvent divers
applications, surtout s’ils sont combinés avec d’autres codes.
1 ··· 1
α1 · · · αn
. .. ..
.. . .
α1k−1 · · · αnk−1
Maintenant on va voir les Reed-Solomon codes comme étant une sous famille
de codes BCH. Un code de Reed-Solomon cyclique au sense-strict,
C sur Fq est un code BCH au sens strict de longueur n = q − 1. Alors
q−1−k
Y
g(x) = (x − αi )
i=1
M DS.
68
la définition donnée dans 2.3. Faite le lien entre les deux définitions.
Exemple 4.7.4 Le code binaire de Golay [23, 12, 7] est un code cyclique d’en-
semble de définition T = C1 . C’est un code BCH au sens strict et de distance
construite δ = 2. Son étendu est un code [24, 12, 8] auto-dual.
avec q. L’entier m est divisible par pα , mais n’est pas divisible par pα+1 .
Pour un entier s premier avec n on appelle multiplicateur une applica-
Fq [x] Fq [x]
tion µs : xn −1
7−→ xn −1
définie par :
Fq [x]
Au fait l’application µs est un automorphisme de xn −1
. Si C est un code
µs : i 7−→ is mod n.
1. S1 ∩ S2 = ∅,
2. S1 ∪ S2 = Zn \ {0} et
69
Le triplet µs , S1 , S2 est appelé splitting modulo n. Ce splitting donne un qua-
driplet de codes ; deux codes cycliques sur Fq , D1 et D2 ayant pour ensembles
duadique even-like.
n−1
De la dernière propriété nous obtenons que |S1 | = |S2 |, et alors |Si | = 2
,
ce qui justifie le choix de n impair.
Autrement, si on considère une racine primitive n-ième de l’unité α de
Y
gi = (x − αj ),
j∈Si
n+1
les codes Ci ont pour polynômes générateurs gi (x − 1) et alors dim Di = 2
n−1
et dim Ci = 2
.
Remarque 4.8.1 Nous avons une caractéristique des mots des codes Di et
Ci , en effet :
X
∀x = (x1 , . . . , xn ) ∈ Di , alors x vérifie xi 6= 0
X
∀x = (x1 , . . . , xn ) ∈ Ci , alors x vérifie xi = 0.
70
seulement si q ≡ ¤ mod n, i.e., si n = pα1 1 . . . pαs s , alors il existe un code
duadique sur Fq si et seulement si q ≡ ¤ mod pi avec i ∈ [s].
Les codes duadiques sont une généralisation des codes dits résidus qua-
dratiques, construit comme suit :
tances minimales qui est large et aussi à cause de leurs lien avec les codes
auto-duaux, ce lien est donné par le théorème suivant.
par µ−1 .
Nous avons le résultat suivant sur la distance minimale des codes dua-
diques.
(i) d2 ≥ n,
71
4.8.1 Orthogonalité des Codes Duadiques
Théorème. 4.8.5 Soit C un [n, (n − 1)/2] cyclique code sur Fq alors C est
auto-orthogonal si et seulement si C est even-like duadique code associé à un
splitting donnée par µ−1
est-il cyclique ?
g(x) = x2 + 2x + 6
x6 − 1.
72
2. Soit C le code cyclique de longueur 6 engendré par g sur F7 [X].
73
Chapitre 5
Les codes sur les anneaux ont commencé à attirer la communité scienti-
fique dès les début des années 90, lorsque Calderbank, Kumar, Hammon et
Solé ont montré que plusieurs familles de codes trés interessantes sont reliés
aux codes sur Z4 .
additif de Zn4 . Un tel sous groupe est un sous-module de Z4 , qui peut être libre
ou pas. On rappel qu’un Z4 -module M est libre s’il existe un sous ensemble
74
Remarque 5.0.12 Si v est un vecteur de Zn4 de composantes égale à 0 ou
2, alors 2v = 0, ce qui implique qu’un tel vecteur ne peut être un vecteur de
75
est une matrice génératrice de C : dans le sens où tout mot de C peut s’écrire
comme étant (xyz)G pour un certain x ∈ Z4 et y ∈ Z2 et z ∈ Z4 .
k1
X kX
1 +k2
ai ci + ai ci ,
i=1 i=k1
est de type 41 22 . Toute matrice d’un Z4 -code linéaire peut s’exprimer sous la
forme de
Ik1 A B1 + 2B2
G=
O 2Ik2 2C
Théorème. 5.0.14 Tout code linéaire sur Z4 est équivalent à un code avec
une matrice génératrice sous sa forme standard.
x · y = x1 y 1 + . . . + xn y n ( mod 4),
76
Exercice 5.0.15 Montrer que le code dual C ⊥ est un code Z4 linéaire. Un
Z4 -linéaire est un code auto-orthogonal s’il vérifie C ⊂ C ⊥ , il est dit auto-
vecteur 120203303.
77
Théorème. 5.0.18 Soient C un code linéaire de Z4 qui est self-orthogonal
avec c ∈ C. Alors :
Il existe des moyens d’obtenir des codes binaire à partir des codes sur Z4 .
En considérant la fonction dite ”Gray” définie par
défini par
L’image d’un code linéaire C sur Zn4 par la fonction Gray est un code non
fonction Gray est bijective les deux codes ont le même nombre d’éléments.
Exemple 5.1.1 On consider le code linéaire sur Z34 définie par C = {000, 121, 202, 323}.
L’image of C par la fonction Gray est le code {000000, 011101, 110011, 101110},
Exercice 5.1.2 Montrer que l’image des codes des exemples 5.0.13 par la
78
On considère le code Z4 -linéaire C de matrice génératrice
1 0 1
G= .
0 1 3
Il est bien ardue de vérifier que G(C) n’est pas linéaire, mais en utilisant le
Théorème 5.1.4, on trouve que 2(013 ? 013) = 2(003) = 002 ∈
/ G(C)
Exercice 5.1.3 Trouver toutes les paires de Z4 telles que G(a) + G(b) 6=
79
2ab). Alors pour v et w ∈ Zn4 , alors G(v) + G(w) = G(v + w + 2(v ? w)). En
particulier cela montre que si G(v) et G(w) sont dans C, alors G(v) + G(w) ∈
puisque v + w ∈ C.
3. Soit C un Z4 code linéaire tels que wtE (c) ≡ 0 mod 8 pour tout c ∈ C,
80
par
1 0 0 0 3 1 2 1
0 1 0 0 1 2 3 1
G= .
0 0 1 0 3 3 3 2
0 0 0 1 2 3 1 1
Dans ce qui suit on montre que le poids de Lee du code O8 est égale à 6.
est alors un code binaire de paramètres (16, 256, 6). Le code G(O8 ) est
81
Un code linéaire sur Z4 admet une matrice génératrice sous la forme
Ik1 A B1 + 2B2
GC = (∗)
0 2Ik2 2C
t t t t
−(B1 + 2B2 ) − C A C In−k1 −k2
G⊥
C = ,
t
2A 2Ik2 O
82
3. Vérifier que G⊥ .Gt = 0 pour tout les codes précédents.
A chaque code linéaire C sur Z4 , on associe deux codes linéaires binaires.
C.
Exercice 5.1.13 Trouver les codes résidus et de torsion des codes donnés
µ ¶
Ik1 A B1
G(1) = Ik1 A B1 et G(2) =
0 Ik2 C
Exercice 5.1.14 Donner les matrices génératrices des codes de l’exercice 5.1.13.
alors le poids de tout mot de Res(C) est divisible par 4 et Res(C) est auto-
orthogonale et on a Res(C) ⊂ T or(C) ⊂ Res(C)⊥ .
Si C est auto-dual alors T or(C) = Res(C)⊥ .
Preuve 5.1.16 Il est evident que Res(C) ⊂ T or(C) (Comparer les matrices
génératrices). Supposons maintenant que C soit Auto-orthogonale, alors on
83
∀c ∈ C(car C est auto-orthogonal), ce qui donne que wE t (c1 ) ≡ 0 mod 4
∀c1 ∈ Res(C), car wE (c) = n1 (c) + n3 (c) + 4n2 (c) ≡ 0 mod 4 d’où
sont des ligues de Ik1 , A, B1 + B2 . Soit s une ligue dans les k2 ligues de G
alors s = (0, 2i, 2c), comme C est auto-orthogonal alors r.s = 2a.i + 2b1 .c =
0 mod 4, d’où a.i + b1 .c = 0 mod 2 mais 2a.i + 2b1 .c = r1 .s1 avec r1 = (j, a, b1 )
et s1 = (0, i, c). s1 est une ligue dans les k2 ligues de G(2) et r1 est une ligue
⊥
dans les k1 ligues de G(1) . Ce qui donne que C (2) ⊂ C (1) .
Res(C) = T or(C)⊥
orthogonale de Zn4 de type 4n/2 2k2 avec k2 6= 0. En plus pour tout code C
auto-orthogonale de type 4n/2 on a le code C (1) est auto-dual.
Preuve 5.1.18 si C est un code auto-orthogonal de Zn4 de type 4n/2 2k2 , alors
84
a Res(C) es Auto-dual et alors Res(C)⊥ d’où
n
n − k1 = n 2 = 2
+ k2 d’où k2 = 0
Exemple 5.1.19 Res(O8 ) est un code auto-dual doubly-even (O8 est le oc-
85
Chapitre 6
Les codes de Reed-Muller (RM )ont été introduits à l’origine par Muller
en 1954, puis Reed a donné une méthode de décodage la même année. Ils
ont été utilisé en pratique marinière en 1973. Plusieurs constructions de ces
codes sont possibles, nos donnons ici la construction matricielle.
Soit m un entier positif, les codes RM sont des codes binaires de longueur 2m ,
suivante
86
m
R(m, m) = F22
La matrice génératrice d’un tel code est G(r, m) telle que
G(r, m − 1) G(r, m − 1)
G(r, m) =
0 G(r − 1, m − 1)
87
R(k, m − 1) ⊂ R(l, m − 1) pour tout 0 ≤ k ≤ l ≤ m. Soit 0 < i ≤ j < m.
Alors
n o
R(i, m) = (u|u + v); u ∈ R(i, m − 1), v ∈ R(i − 1, m − 1)
n o
⊆ (u|u + v); u ∈ R(j, m − 1), v ∈ R(j − 1, m − 1) = R(j, m)
Pour i = 0, comme R(0, m) est le code à répétition, alors on doit just montrer
Le point (ii) s’obtient aussi par récurrence et par la propriété sur les coeffi-
cients binomiaux du triangle de pascal
µ ¶ µ ¶ µ ¶
m−1 m−1 m
+ = (6.2)
i−1 i i
1
Pour m = 1 on a R(0, 1) = h1i, dim(R(0, 1)) = = 1
0
m
Pour m = r on a R(m, m) = F22 et
µ ¶ µ ¶ µ ¶
m m m
+ + ··· + = 2m
0 1 m
88
Supposons que R(i, m − 1) admet pour dimension
µ ¶ µ ¶ µ ¶
m−1 m−1 m−1
M1 = + + ··· + pour 0 ≤ i < m
0 1 i−1
µ ¶ µ ¶ µ ¶
m−1 m−1 m−1
M2 = + + ··· +
0 1 i−1
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
m−1 m−1 m−1 m−1 m−1 m−1
M1 +M2 = + +· · ·+ + + +· · ·+
0 1 i−1 0 1 i−1
µ ¶ µ ¶
m−1 m
En utilisant 6.2 et en remarquant que = alors
0 0
µ ¶ µ ¶
m m
M1 + M2 = + ··· +
0 i
dR(i,m) = min(2d1 , d2 )
89
alors min(2m−1−i , 2m−i ) = 2m−i ce qui donne le résultat.
dR(0,m) = 2m , (la distance minimale du code à répétition de longueur 2m ).
définition la classe C(1) = {1, 2, 3, 4, 6, 8, 9, 12, 13, 16, 18} i.e., c’est un code
90
Chapitre 7
Exercise 2.1.2 :
Le code C1 = {01, 10} n’est pas linéaire car il ne contient pas le mot 00.
Exercice 2.1.3 :
0 < R ≤ 1.
Exercice 2.1.13
(i ) On a d(x, y) = 0 ⇐⇒ {i : xi 6= yi } = ∅ ←→ x = y.
C = {i : xi = zi }. On a A ∪ B ⊂ C donc C ⊂ A ∪ B où X désigne le
Exercice 2.3.4 :
Le code C1 est un code [4, 2, 3]. Ses mots sont {1011, 01αα2 , 0000, 11α2 α}. Le
91
code C2 est un code [6, 3, 4],c’est un code célèbre appelé l’exacode.
Exercice 2.4.9 Le code n’est pas auto-orthogonal car le produit scalaire de
........................................................................................................................................................
92
en additionnant les deux égalités on obtient que
s + q i−m s0 ≡ 0 mod (q m + 1)
93
en sommant les deux égalités, on obtient :
mais elle peut simplifier le calcul pour trouver les mots du code. Supposons
H = In−k |A, alors G = −At |Ik , vient du fait que la matrice de contrôle
94
trouve deux cosets leader cl1 = 01100 et cl2 = 10010 et donc on peut décoder
par deux mots x1 = y − cl1 = 00001 ou x2 = y − cl2 = 11111, cela n’est pas
On pouvait aussi trouver les mots du code C en trouvant une base i.e.,
95
Série N˚1
Exercice 1 :
On considère le code à répétition [3, 1, 3]2 . Donner sa matrice génératrice
systématique et sa matrice de contrôle systématique.
Exercice 2 :
Exercice 3 :
Montrer que n’importe quel corps fini on peut trouver des codes M DS.
96
Série N˚2
Exercice 1 : Supposons qu’après avoir émis le mot x d’un code C, nous avons
reçu un vecteur y erroné.Trouver le lien entre le syndrôme de y et celui de
l’erreur e.
Exercice 2 :
Exercice 5 :
Supposons que nous avons utilisé le code de l’exemple (4.3.1) et nous avons
Exercice 6 :
Donner les codes cycliques binaires de longueur n engendrés par le polynôme
1 + x + · · · + xn−1
97
Série N˚3
Exercice 1 :
Exercice 2 :
Exercice 3 :
1)(x4 + x + 1).
Exercice 4 :
98
2. Montrer que x11 + x9 + x4 + x3 + 1 est un mot de C.
3. En déduire dc .
Exercice 5 :
Exercice 6 :
99
Série N˚4
Exercice 1 :
Le polynôme g(x) = x3 + x + 1 est un générateur d’un code cyclique de
longueur 7.
code.
Exercice 2 :
© ª
C = 00001100, 00001111, 01010101, 11011101
100
Devoir N˚2
Exercice 1 :
lister tout les vecteurs de F42 qui sont à une distance égale à 2 de 1100.
Exercice 2 :
Exercice 3 :
Exercice 4 :
Exercice 6 :
la fonction Gray.
101
Corrigé du Devoir N˚2
Exercice 1 :
Les mots sont {0000, 0101, 0110, 1001, 1010, 1111}.
Exercice 2 :wt (e) ≤ 3
Exercice 3 :
d−1
On a 2
≥ e ⇐⇒ d ≥ 7.
Exercice 4 :
Par la formule de singleton n − k + 1 ≥ d, on obtient 3 = 9 − 7 + 1 ≥ 4.
Exercice 5 :
Exercice 6 :
La matrice génératrice G = ( 1 2 1 ) c’est un code de type 4.
102
Sujet N˚1
Exercice 1 :
C est un code cyclique binaire de longueur 7 engendré par g(x) = x3 + x2 + 1
Exercice 2 :
Exercice 3 :
103
Chapitre 8
Définition 8.0.2 Un corps est un ensemble non vide munis de deux opé-
1. ∀x, y ∈ S; x + y = y + x
2. ∀x, y, z ∈ S; (x + y) + z = x + (y + z)
3. ∀x ∈ S; x + 0 = x
4. ∀x ∈ S, ∃(−x); x + (−x) = 0
5. ∀x, y ∈ S, x · y = y · x
6. ∀x, y, z ∈ S; (x · y) · z = x · (y · z)
7. ∀x ∈ S; x · 1 = x
8. ∀x 6= 0∃x−1 ; x · x−1 ) = 1
9. ∀x, y, z ∈ S; x · (y + z) = x · y + x · z
104
Dans ce chapitre on s’intéresse aux corps finis à cause de leurs liens avec les
codes correcteurs d’erreurs et plus généralament la cryptographie.
Donner F4 .
tif
Preuve 8.0.8 Supposons que n = p.q, avec p, q < n, alors p.q.1K = 0. Alors
φ : Z −→ K
(8.1)
n 7−→ n · 1K ,
105
on peut montrer que ker(φ) = pZ. En plus d’après le premier Théorème
d’isomorphisme on obtient alors, Z/pZ ≡ H où H est un sous groupe de K.
Corollaire 8.0.11 Tout corps fini K contient un sous corps fini premier.
Lemme 8.0.13 Supposons que F est un corps fini et que K est une exten-
sion fini de F , avec d = [K : F ]. Alors |K| = |F |d .
a1 α1 + . . . + ad αd ,
|K| = |F |d .
pn éléments, où n ∈ N∗
Preuve 8.0.16 Nous avons montrer que F contient un sous corps premier
106
Finalement nous avons obtenus le résultat suivant.
La propriété suivante des corps finis est une trés importante propriété.
i i i
(a + b)p = ap + bp ,
pour tout a, b ∈ K et i ∈ N∗ .
jusqu’àu rang i,
107
Lemme 8.1.2 Soit F un corps fini à q éléments et soit a et b ∈ F \ {0} ;
alors :
2. aj = 1 ≡ ord(a)|j.
ord(a)
3. ord(aj ) = (ord(a),j)
.
108
est une racine du polynôme fq (x) = xq − x. Mais puisque le polynôme admet
au plus q éléments, alors F est aussi le corps de décomposition du polynôme
si m divise n.
109
Preuve 8.1.7 L’inclusion Fpm ⊂ Fpn entraîne [Fqn : Fqm ] × [Fqm : Fq ] de
sorte que m divise n. Réciproquement, si m|n et si K est une clôture algé-
m −1 n −1
m|n ⇒ (q m − 1)|(q n − 1) ⇒ (xq − 1)|(xq − 1).
m m
Le polynôme xq − x divisera xq − x et l’on aura Fpm ⊂ Fpn .
110
Bibliographie
Paris, 1997.
[2] K. Guenda Sur l’équivalence des codes, Thèse de Doctorat, Faculté des
Mathematiques, Université des Sciences et Technologie, Alger.
Cambridge, 2003.
[4] R. Lidl and H. Niederreiter, Introduction to finite fields and their appli-
cations, Cambridge University Press 1986.
1992.
111