Introduction à l'algèbre et codes cycliques
Introduction à l'algèbre et codes cycliques
A. Bonnecaze
2006-2007
Contents
1 Notes sur ce support de cours 2
2 Rappels algébriques 3
2.1 Groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Corps et anneaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Construction d’un corps fini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5 Logarithme de Zech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Classes cyclotomiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Codes cycliques 12
3.1 Polynôme générateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Représentation matricielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Procédure de codage systématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4 Dual d’un code cyclique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5 Construction d’un code cyclique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1
1 Notes sur ce support de cours
Ce support de cours s’adresse aux étudiants de l’ESIL. Les notions ne sont pas introduites d’une manière
mathématique. Ici, il est plus important de savoir construire une structure que de connaitre et comprendre
les preuves des théorèmes. Ce support aborde les corps finis et les codes cycliques.
Pour ceux qui veulent aller plus loin, voici une petite bibliographie :
2
2 Rappels algébriques
Voici quelques rappels concernant les structures algébriques. Ces structures sont très utilisées en codage et
en cryptologie. Une structure algébrique est un ensemble muni d’une ou plusieurs opérations. Par exemple
l’ensemble des entiers Z muni de l’addition. Dans ce cas, l’opération est dite binaire car elle agit sur deux
éléments de Z.
Les ensembles de nombres les plus utilisés sont : l’ensemble N des entiers naturels, l’ensemble Z des entiers
relatifs, l’ensemble Q des rationnels, l’ensemble R des réels et bien sur l’ensemble C des complexes. En
informatique, on utilise le plus souvent des ensembles finis comme par exemple l’alphabet binaire F2 = {0, 1}.
2.1 Groupes
Un groupe est un ensemble G muni d’une opération binaire sur G notée (par exemple) ∗. Il faut de plus que
les propriétés suivantes soient vérifiées :
On note souvent un groupe comme un triplet (G, ∗, e), ou plus simplement (G, ∗) ou même G s’il n’y a pas
d’ambiguité sur l’élément neutre et l’opération binaire.
Lorsque ∗ est commutative, on dit que le groupe est commutatif ou abélien.
Remarque 1 Ici l’opération ∗ représente une opération binaire quelconque. Il ne s’agit pas forcément de la
multiplication usuelle.
En fait, il est assez fréquent que l’on utilise une représentation additive lorsque le groupe est abélien. Dans
ce cas, la représentation additive de an = a ∗ a ∗ · · · ∗ a (n facteurs) s’écrit na = a + a + · · · + a (n termes)
et l’inverse de a se note −a .
Il existe aussi des groupes finis. Par exemple Zn représente l’ensemble des restes par la division par n (n
entier positif) de tous les entiers.
Zn = {0, 1, . . . , n − 1}.
On note respectivement a + b et ab la somme et le produit usuels de a et b réduits modulo n.
Exemple 2.2 La structure (Z4 , ∗, 1) peut être définie par sa table de multiplication :
∗ 0 1 2 3
0 0 0 0 0
1 0 1 2 3
2 0 2 0 2
3 0 3 2 1
Cette structure ne forme pas un groupe car les éléments 0 et 2 n’admettent pas d’inverse (il n’existe pas de
1 sur la ligne ou la colonne correspondant à 0 ou 2).
3
Le groupe additif (Z4 , +, 0) peut être défini par sa table d’addition :
+ 0 1 2 3
0 0 1 2 3
1 1 2 3 0
2 2 3 0 1
3 3 0 1 2
Proposition 2.3 (Zn , +, 0) forme, pour tout n, un groupe. C’est le groupe additif des entiers modulo n.
Par contre (Zn \ {0}, ∗, 1) n’est pas un groupe car certains éléments n’ont pas d’inverses. Par exemple dans
Z4 , l’élément 2 n’est pas inversible. On a
Proposition 2.4 (Zp \ {0}, ∗, 1) forme, pour tout p premier, un groupe. C’est le groupe multiplicatif des
entiers modulo p. On le note Z∗p .
Preuve La seule difficulté est de montrer que tout élément admet un inverse. Pour cela nous avons besoin
du résultat bien connu de Bezout :
Soit p un nombre premier, alors tout entier a avec 0 < a < p est premier avec p. De plus, il existe deux
entiers u et v tels que au + pv = 1 où 0 < u < p.
Ce résultat nous permet d’écrire que au = 1 mod p. Ainsi u est l’inverse de a dans Z?p .
Définition 2.5 Un groupe fini multiplicatif G est dit cyclique s’il admet un élément a tel que pour tout
b ∈ G, il existe un entier i tel que b = ai . L’élément a est alors appelé un générateur du groupe cyclique. On
note G =< a >.
Exemple 2.6
Définition 2.7 Le nombre d’éléments d’un groupe G est appelé l’ordre du groupe (noté |G|).
Définition 2.9 un sous-ensemble non vide H d’un groupe G est un sous-groupe de G si H est un groupe
pour la même loi. Si H 6= G, H est appelé sous-groupe propre de G.
Si G est un groupe abélien (noté additivement), tout sous-groupe de G contient donc 0. Pour montrer que
H est un sous-groupe de G, il faut montrer que
4
(i) a + b ∈ H pour tout a, b ∈ H, et
Attention : en notation multiplicative, il faut montrer que a.b ∈ H et a−1 ∈ H pour tout a, b ∈ H.
Exercice 2.10 Soit G un groupe abélien et H un sous-ensemble fini non vide de G tel que a + b ∈ H pour
tout a, b ∈ H. Montrer que H est un sous-groupe.
Définition 2.11 Soit G un groupe et a ∈ G. L’ordre de a est le plus petit entier t positif tel que at = 1.
Lorsque t n’existe pas, l’ordre de a est ∞.
Proposition 2.12 Soit G un groupe et a ∈ G un élément d’ordre fini t. Alors | < a > | = t.
Théorème 2.13 (de Lagrange) Si G est un groupe fini et H un sous groupe de G, Alors |H| divise |G|.
Ainsi, si a ∈ G, l’ordre de a divise |G|.
Proposition 2.14 Tout sous-groupe d’un groupe cyclique G est aussi cyclique. En fait, si G est un groupe
cyclique d’ordre n, alors pour chaque diviseur d de n, G contient exactement un sous groupe d’ordre d.
(ii) Si G est un groupe cyclique d’ordre n et d|n, alors G admet exactement φ(d) éléments d’ordre d. En
particulier G admet φ(n) générateurs.
Exemple 2.16 Considérons le groupe multiplicatif Z∗19 = {1, 2, . . . , 18} d’ordre 18. Le groupe est cyclique
et α = 2 est générateur. Les sous-groupes de Z∗19 ainsi que leurs générateurs sont donnés dans le tableau
suivant :
Sous-groupe Générateurs Ordre
{1} 1 1
{1, 18} 18 2
{1, 7, 11} 7, 11 3
{1, 7, 8, 11, 12, 18} 8, 12 6
{1, 4, 5, 6, 7, 9, 11, 16, 17} 4, 5, 6, 916, 17 9
{1, 2, 3, . . . , 18} 2, 3, 10, 13, 14, 15 18
0 + α = α (−α) + α = 0
1∗α=α 0∗α=0
et si α 6= 0 (α−1 ) ∗ α = 1
5
Un corps fini contient un nombre fini d’éléments : C’est son ordre. Les corps finis sont appelés Corps de
Galois.
Un anneau (F, +, ·) admet une structure semblable au corps à ceci près que les éléments de F ? n’admettent pas
forcément un inverse multiplicatif. L’ensemble des inversibles d’un anneau forme un groupe (multiplicatif)
appelé le groupe des inversible de R.
Exemple 2.17 L’anneau des entiers modulo p avec p premier :
Zp = {0, 1, . . . , p − 1}.
0 est l’élément neutre additif et 1 l’élément neutre multiplicatif. L’ordre de Zp est p puisque Zp contient p
éléments.
La caractéristique d’un anneau est le plus petit entier n tel que n.1 = 0. La caractéristique de Zp est donc
p. Si la caractéristique m d’un corps est non nulle, alors m est premier.
On a vu que (Zn , +, 0) et (Z?p , ∗, 1) forment des groupes commutatifs pour tout n et tout p premier. On a
donc
Proposition 2.18 (Zp , +, ·) est un corps si p est premier. Si p n’est pas premier, (Zp , +, ·) est une anneau.
Définition 2.19 Un sous-ensemble F d’un corps E est un sous-corps de E si F est un corps pour les lois
de E. Dans ce cas, E est une extension de F .
2.3 Polynômes
Soit A un anneau, un polynôme f est une expression de la forme
n
X
f (x) = ai xi = a0 + a1 x + · · · + an xn ,
i=0
où n est un entier positif, les coefficients ai , 0 ≤ i ≤ n sont des éléments de A et x un symbole appelé une
indeterminée.
Pn
Définition 2.20 Soit f = i=0 ai xi un polynôme tel que an 6= 0. Alors f est de degré n (on note deg(f ) =
n), a0 est le terme constant et an le coefficient de plus haut degré (leading coefficient en anglais).
Pn Pm
On peut définir la somme et le produit de deux polynômes f = i=0 ai xi et g = i=0 bi xi (m ≤ n):
n
X
f (x) + g(x) = (ai + bi )xi ,
i=0
et
n+m
X X
f (x)g(x) = ck xk , où ck = ai bj ,
k=0 i+j=k
où 0 ≤ i ≤ n et 0 ≤ j ≤ m.
L’ensemble des polynômes sur A muni de ces deux opérations admet une structure d’anneau noté A[x].
On montre facilement que pour tout f, g ∈ F [x] (F étant un corps)
Le polynôme g divise le polynôme f si il existe un polynôme h tel que f = gh. Pour éviter tout problème,
on ne considère ici que des polynômes à coefficients dans un corps.
6
Exemple 2.21 Dans F2 [x], considérons les deux polynômes
f = x7 + x6 + x3 + x2 + x + 1 et
g = x4 + x3 + x2 + 1.
Le polynôme g divise f car f = gh avec h = x3 + x + 1.
Théorème 2.22 Soit g un polynôme non nul dans F [x]. Alors pour tout f ∈ F [x] il existe deux polynômes
q et r de F [x] tels que
f = qg + r, où deg(r) < deg(q).
Toujours dans F [x], si d divise f et g et si tout polynôme divisant f et g divise aussi d, alors d est le plus
grand diviseur commun de f et g. On note d = pgcd(f, g). Si pgcd(f, g) = 1, on dit que f et g sont premiers
entre eux.
Théorème 2.24 Avec les mêmes notations, il existe u, v ∈ F [x] tels que
Définition 2.26 un polynôme non constant f ∈ F [x] est dit irréductible sur F si les seuls polynômes (6= f )
qui le divisent sont constants. Sinon, le polynôme f est réductible.
où a ∈ F , les fi sont des polynômes irréductibles unitaires de F [x] et les exposants ei des entiers positifs.
Cette factorisation est unique.
Rappelons qu’un polynôme unitaire a son coefficient de plus haut degré égal à 1.
Définition 2.29 Un élément a est une racine (ou un zéro) du polynôme f si f (a) = 0.
7
neutre. Cela traduit l’existance d’un inverse pour tout élément non nul.
Dans ce qui suit, nous donnons une méthode générale de construction. Nous allons construire le corps Fpm
qui admet pm éléments.
Soit m un entier positif et f (x) un polynôme irréductible sur Fp de degré m. On considère un élément α
satisfaisant f (α) = 0. Posons
l’ensemble de tous les polynômes en α de degrés inférieurs à m et à coefficients dans Fp . On peut alors munir
cet ensemble des opérations + et ·.
L’opération + est définie comme l’addition de polynômes dans Fp .
L’opération multiplicative se fait en deux étapes : supposons que l’on veuille calculer g1 · g2 , on va d’abord
effectuer une multiplication de polynômes usuelle
puis, si le degré de h est supérieur à m, on va le réduire en effectuant une division par f et en considérant le
reste r de cette division. Si deg(r) < m alors g1 (α) · g1 (α) = r(α) sinon on redivise r(α) jusqu’à obtenir un
reste dont le degré est inférieur à m. En d’autres termes, on fait les caluls “modulo” le polynôme f , modulo p.
Preuve Il est facile de montrer que (Fpm , +, ·) est un anneau contenant pm éléments. Il reste à montrer
que tout élément non nul admet un inverse. Puisque g appartient à Fpm , son degré est inférieur ou égal à
m − 1. Et puisque f est irréductible, les deux polynômes f et g sont premiers entre eux. On peut donc
utiliser Bezout : il existe deux polynômes u(x) et v(x) de Fpm [x] tels que
v(α)g(α) = 1,
et en supposant que deg(v(α)) < m (sinon on réduit modulo f comme précédemment) on a g −1 = v(α).
Le corps Fpm est appelé une extension finie de Fp et Fp est le corps de base. Le corps se note aussi
Fp [x]/(f (x)). Si f est réductible, il existe deux polynômes non nuls f1 et f2 de Fp [x] tels que f = f1 f2 . Cela
signifie que f1 et f2 sont des diviseurs de zéro (donc non inversibles) et Fp [x]/(f (x)) n’est pas un corps.
Exemple 2.32 Soit p = 2 et f (x) = x3 + x + 1 un polynôme irréductible sur F2 . Soit β une racine de f (x).
Le corps fini F23 est défini par
F23 = {a0 + a1 β + a2 β 2 |ai ∈ F2 }.
Les éléments de F23 peuvent donc s’écrire comme des triplets (a0 , a1 , a2 ) ou des polynômes. De plus, puisque
F23 est un corps, F?23 forme un groupe multiplicatif.
8
On peut montrer que tout corps fini peut être construit comme nous venons de le voir. Cela signifie que tout
corps fini F de caractéristique p admet pm éléments (m étant un entier strictement positif).
Exemple 2.33 On veut construire le corps à quatre éléments. On sait que 4 = 22 donc le corps de base est
F2 et pour construire le corps, il suffit d’obtenir un polynôme irreductible de degré m = 2 sur F2 (pour cela
il existe des tables de polynômes irreductibles dans la littérature).
Soit f (x) = x2 + x + 1 un polynôme irréductible sur F2 et soit β une racine de f (x). La caractéristique du
corps est égale à 2, c’est la caractéristique du corps de base. Les éléments de F4 peuvent être représentés
par les polynômes de la forme a1 + a2 β, a1 et a2 étant binaires. On obtient : F4 = {0, 1, β, β + 1}. Le corps
est totalement défini par sa table d’addition et de multiplication que nous construisons maintenant en notant
β+1=β
+ 0 1 β β · 0 1 β β
0 0 1 β β 0 0 1 0 0
1 1 0 β β 1 0 1 β β
β β β 0 1 β 0 β β 1
β β β 1 0 β 0 β 1 β
Considérons maintenant un corps fini F muni de pm éléments et β ∈ F ? = F \ {0}. Alors toute puissance
de β appartient aussi à F ? et comme F est fini, il existe un k et un l tel que β k = β l . Cela signifie que
β k−l = 1.
20 21 22 23 24 25 26 27 28 29 210 211
1 2 4 8 5 10 9 7 3 6 1 2
Définition 2.35 L’ordre d’un élément β non nul dans un corps fini est le plus petit entier r ≥ 1 tel que
β r = 1.
Théorème 2.36 (de l’élément primitif ) Tout corps fini F de taille pm contient un élément β d’ordre pm −1,
appelé élément primitif de F .
Preuve On sait que puisque F est un corps, F ? est un groupe multiplicatif d’ordre pm − 1. On va montrer
plus précisément que c’est un groupe cyclique engendré par un élément β.
Soit β ∈ F ? un élément dont l’ordre r est le plus grand parmi tous les éléments du groupe. On a trivialement
r < pm . Il est facile de montrer que l’ordre l de tout élément b du groupe divise r. Ainsi, puisque β est racine
de l’equation xr − 1, tous les éléments du groupe sont aussi racines de cette même equation et α∈F ? (x − α)
Q
9
Un polynôme primitif est un polynôme qui contient une racine primitive. Il faut noter que tous les polynômes
irréductibles ne sont pas primitifs. Par exemple dans F2 [x], P = x11 +x9 +x7 +x6 +x5 +x+1 est irréductible
de degré 11 et racine de x23 − 1. Soit β une racine de P , β est d’ordre 23 et non 211 − 1 = 2047 donc β
n’est pas une racine primitive de F211 . La donnée de P permet de construire le corps : c’est l’ensemble des
polynômes de F2 [x] “modulo” P (x).
Cependant, d’après le théorème précédent, il existe un élément α d’ordre 211 − 1 = 2047 dont les puissances
forment F?211 . On sait que l’ordre de β divise l’ordre de α. On a β = α89 car 89 ∗ 23 = 2047. En résumé,
voici deux représentations du corps en fonction de β ou α :
P11
F211 = { i=1 ai β i , ai ∈ F2 }
11
= {0} ∪ {1, α, α2 , . . . , α2 −2 }.
Définition 2.40 Le polynôme minimal sur Fp de β est le polynôme unitaire de plus bas degré M (x) dont
les coefficients sont dans Fp tel que M (β) = 0.
Exemple 2.41 Construction du corps F8 = F23 . Le corps admet huit éléments donc il contient un élément
β d’ordre 7 qui est une racine primitive de l’unité. F8 = {0} ∪ {1, β, β 2 , . . . , β 6 }, et β est racine du polynôme
Q7
(x7 − 1) mod 2. On a x7 − 1 = i=1 (x − β i ) = (x3 + x + 1)(x3 + x2 + 1)(x + 1). Notons P1 le polynôme
x3 + x + 1 et P2 son réciproque et choisissons comme générateur β une racine de P1 . Cela veut dire que
P1 (β) = 0 et β 3 = β + 1. Tout élément du corps peut être représenté par un triplet (s’il est vu comme un
espace vectoriel de dimension 3 sur F2 ) ou un polynôme de degré (au plus) 2 avec β 3 = β + 1.
En choisissant β racine de P2 , on aurait obtenu un corps isomorphe. Rappelons que deux corps sont dits
isomorphes si il existe une application bijective φ de E dans F qui preserve l’arithmétique du corps (c.a.d.
φ(a + b) = φ(a) + φ(b) et φ(ab) = φ(a)φ(b), a, b ∈ E).
10
2.5 Logarithme de Zech
Lorsque l’on fait des calculs dans les corps finis, il est facile de calculer αi αj . Il suffit d’additionner les
puissances. Par contre, αi + αj est plus difficile à déterminer. On peut alors utiliser le logarithme de Zech.
Supposons que i < j. Alors
αi + αj = αi (1 + αj−i ).
Posons r = j − i. On veut calculer (1 + αr ) = αs .
L’entier s est appelé le logarithme de Zech de r, noté Zech(r) :
αZech(r) = αr + 1.
Il existe bien sur des tables de logarithmes pour les corps finis les plus utilisés.
Par cette méthode, il suffit de stocker les pm − 2 logarithmes de Zech pour pouvoir effectuer toutes les
additions nécessaires.
Exemple 2.46 On considère le corps F16 avec p = 2, m = 4 et β admettant pour polynôme minimal
β 4 + β + 1. Alors
β est un zéro de x4 + x + 1
β2
idem
4 4 racines distinctes
β idem
β8
idem
β 16 = β
Trouver l’ensemble des conjugués de toutes les racines revient à partitionner l’ensemble des puissances de
m
β. Le corps F s’écrit F = {0} ∪ {1, β, β 2 , . . . , β p −2 } et l’ensemble des puissances de β est tout simplement
Zpm −1 .
11
Définition 2.47 Soit a, b ∈ Zpm −1 . a et b sont dits equivalents (notés a ≡ b) si b = pi a mod (pm − 1).
La relation d’equivalence est reflexive, symétrique et transitive. Cs représente une classe cyclotomique où s
est le plus petit entier de la classe :
{s, sp, sp2 , . . . , spms −1 },
où ms est l’entier le plus petit tel que pms = s (mod pm − 1). L’entier s est quelquefois appelé le chef de
classe ou en anglais coset leader.
C0 = {0}
C1 = {1, 2, 4, 8}
C3 = {3, 6, 12, 9}
C5 = {5, 10}
C7 = {7, 14, 13, 11}.
3 Codes cycliques
Les codes cycliques représentent la famille de codes la plus importante. D’un point de vue pratique ce sont
les codes les plus utilisés car leur mise en œuvre est facile et ils admettent souvent de bons algorithmes de
décodage. D’un point de vue théorique, ils possèdent une structure algébrique (et quelquefois combinatoire)
intéressante. Les codes cycliques les plus connus sont les codes de Hamming, BCH, Reed-Solomon, Résidus
quadratiques, Kerdock, etc.).
Définition 3.1 Un code linéaire en bloc C de longueur n sur F [x] est dit cyclique si l’ensemble de ses mots
est invariant par décalage circulaire :
Exemple 3.2
ii) Le code binaire C = {0000, 1001, 0110, 1111} n’est pas cyclique. Il est cependant équivalent à un code
cyclique (il faut échanger les troisième et quatrième coordonnées).
Tout mot c = (c0 , c1 , · · · , , cn−1 ) d’un code C sur F peut être identifié à un polynôme c(x) = c0 + c1 x + · · · +
cn−1 xn−1 de F [x]. Pour pouvoir construire des codes cycliques, l’anneau à considérer est Rn = F [x]/(xn −1).
En effet, dans cet anneau, on peut réduire tout polynôme modulo xn − 1 en remplaçant simplement xn par
12
1, xn+1 par x et ainsi de suite. Le code C est alors un sous ensemble de Rn . Observons ce qu’il se passe
lorsque l’on multiplie c(x) par x dans Rn :
x . c(x) = c0 x + c1 x2 + · · · + cn−1 xn
= cn−1 + c0 x + c1 x2 + · · · + cn−2 xn−1 .
Preuve Supposons que g1 et g2 soient deux polynôme générateurs. Alors g1 −g2 est un polynôme générateur
(le code est linéaire) de degré strictement inférieur au degré des gi . Contradiction.
Proposition 3.5 Tout mot d’un code cyclique est un multiple du polynôme générateur. On note C = hgi.
Preuve Soit c(x) ∈ C on effectue la division euclidienne de c par g: c = ag + r avec deg(r) < deg(g). Or,
le reste r qui est la différence de deux mots du code appartient au code. Si r 6= 0, on contredit l’hypothese
sur le degré minimum de g.
Preuve On a xn − 1 = ag + r avec deg(r) < deg(g) et on conclut comme précédemment que r doit être nul
(après réduction modulo xn − 1).
c = aG
où c = (c0 , . . . , cn−1 ), a = (a0 , . . . , an−r ) et G est une matrice circulante (n − r) × n dont la ième ligne ligne
contient le mot xi−1 g
g0 g1 g2 · · · gr 0
g0 g1 · · · gr−1 gr
G= .
··· ···
0 g0 · · · · · · gr
Son rang est n − r. G est une matrice génératrice du code qui a dim(C) lignes. Ainsi deg(g) = n − dim(C).
13
3.3 Procédure de codage systématique
On veut coder la séquence de longueur k u1 , u2 , . . . , uk avec ui ∈ F :
u 1 u 2 . . . uk
L’idée est de rajouter n − k symboles de manière à obtenir un mot de longueur n qui appartienne au code
cyclique C engendré par le polynôme générateur g.
1. On forme le polynôme
u(x) = u1 xn−k + u2 xn−k+1 + · · · + uk xn−1
La séquence est ainsi décalée de k positions vers la droite :
0...0 u 1 u 2 . . . uk
3. le polynôme c(x) = u(x) − r(x) est un multiple de g(x). Le mot c appartient donc au code. C’est
le mot construit à partir de u(x). Si le code est binaire, on ne prend pas en compte les signes et on
obtient :
r1 . . . rn−k u 1 u 2 . . . uk
Il s’agit d’un codage systématique car les symboles de parité (coefficients de r(x)) sont séparés des symboles
d’information.
r u
redondance information
Lors d’un codage systématique, on peut aussi mettre les bits d’information avant ceux de redondance.
Exemple 3.7 On veut construire un code de longueur 7 sur F2 . Le poynôme générateur du code doit diviser
x7 − 1. On a x7 − 1 = x3 + x + 1 x3 + x2 + 1 (x + 1). Considérons le code C de polynôme générateur
g(x) = x3 + x + 1 avec matrice génératrice
1 1 0 1 0 0 0
0 1 1 0 1 0 0
G=
0 0 1 1 0 1 0
0 0 0 1 1 0 1
u(x) = x6 + x5 + x3
(on décale la séquence de trois positions vers la droite) que l’on divise par g
x6 + x5 + x3 = g(x3 + x2 + x + 1) + 1
14
le mot
c = x6 + x5 + x3 + 1
appartient au code C.
Matriciellement, on écrit c = uGs avec
1 1 0 1 0 0 0
0 1 1 0 1 0 0
Gs = .
1 1 1 0 0 1 0
1 0 1 0 0 0 1
Preuve Soit c ∈ C et c0 ∈ hhi. On peut écrire c = ag et c0 = a0 h. Ce qui implique que cc0 = aa0 gh = 0
puisque gh = 0. donc hhi ⊂ C ⊥ . Il reste à montrer que dim(C ⊥ ) = n − k si dim(C) = k. On sait que
deg(h) = n − deg(g) = k donc dim(h) = n − deg(h) = n − k.
On remarque que les colonnes de la matrice correspondent à tous les 3-uplets binaires non nuls. Le code C
est donc le code de Hamming.
En l’absence d’un logiciel (maple, magma,...), on peut déterminer les classes cyclotomiques modulo n. Le
nombre de classes donne le nombre de facteurs irréductibles. La donnée d’un polynôme irréductible diviseur
de xn − 1 permet alors de connaître tous les autres facteurs. Le polynôme générateur du code est un produit
d’un certain nombre de facteurs trouvés.
Exemple 3.10 Combien peut-on construire de codes cycliques [31, 21] sur F2 ?
Il suffit de déterminer les classes cyclotomiques modulo 31. Il existe 7 classes cyclotomiques, chacune con-
15
tenant 5 éléments.
C0 = {0}
C1 = {1, 2, 4, 8, 16}
C3 = {3, 6, 12, 24, 17}
C5 = {5, 10, 20, 9, 18}
C7 = {7, 14, 28, 25, 19}
C11 = {11, 22, 13, 26, 21}
C23 = {23, 15, 30, 29, 27}
Il existe 6 facteurs de degré 5 et un facteur de degré 1 : (x − 1). Le polynôme générateur d’un code [31, 21]
doit être de degré 10. Il y a 62 = 15 possibilités. Pour pouvoir factoriser effectivement x31 − 1 il faut
connaître un polynôme irréductible de degré 5 (en effet 31 = 25 − 1). Il existe des tables qui donnent des
polynômes irréductibles ou primitifs de degré donné sur F2 .
où α ∈ F23 satisfait α3 + α + 1 = 0.
Soit c = (1, 1, 0, 1, 0, 0, 0), que vaut HcT ?
On a
c = (c0 , c1 , . . . , cn−1 ) ∈ Hm
⇔
T
Hc = 0
⇔
Pn−1 i
i=0 ci α = 0
⇔
c(α) = 0 où c(x) = c0 + c1 x + · · · + cn−1 xn−1 .
Donc c ∈ Hm ⇔ M (1) (x) | c(x) et Hm consiste en tous les multiples de M (1) (x).
On vient de montrer que Hm est un code cyclique de polynôme générateur g(x) = M (1) (x).
16
Exemple 4.2 La matrice génératrice de H3 peut s’écrire
1 1 0 1 0 0 0
0 1 1 0 1 0 0
,
0 0 1 1 0 1 0
0 0 0 1 1 0 1
si le polynôme générateur est 1 + x + x3 . Les racines du polynôme générateur sont appelées des zéros du
code.
Exercice 4.3 Soit H la matrice de contrôle d’un code Ccyclique binaire avec
" m
#
1 α α2 . . . α2 −2
H= m
1 α3 α6 . . . α3(2 −2)
Réponse :
c = (c0 , c1 , . . . , cn−1 ) ∈ C
⇔
T
Hc = 0
⇔
Pn−1 i
Pn−1 3i
i=0 ci α = 0 et i=0 ci α = 0
⇔
c(α) = 0 et c(α3 ) = 0
⇔
M (1) (x) | c(x) et M (3) (x) | c(x)
⇔
ppcm(M (1) M (3) ) | c(x).
Les polynômes M (1) et M (3) sont distincts et irréductibles donc c ∈ C ⇔ M (1) M (3) | c(x).
Définition 5.1 Un code BCH sur Fq de longueur n et distance construite δ est le plus grand code possible
ayant comme zéros
β b , β b+1 , . . . , β b+δ−2 ,
où β ∈ Fqm est une racine primitive de l’unité, b un entier positif et m l’ordre multiplicatif de q modulo n.
17
2. Si n = q m − 1 on parle de code BCH primitif.
Proposition 5.2 La distance construite δ est une borne inférieure de la distance minimale d.
Preuve Le mot c(x) appartient à hgi si c(β j ) = 0 pour b ≤ j ≤ b + δ − 2. Matriciellement cela signifie que
cH T = 0 avec
1 βb β 2b ... β (n−1)b
1 β b+1 β 2(b+1) ... β (n−1)(b+1)
H= . .
..
1 β b+δ−2 β 2(b+δ−2) ... β (n−1)(b+δ−2)
Il faut remarquer que les lignes de la matrice ne sont pas forcément linéairement indépendantes. De plus,
on pourrait remplacer les β j par des vecteurs colonne à m composantes sur Fq .
Il faut montrer que si cH T = 0 et c 6= 0 alors le poids de c est strictement supérieur à δ. D’une manière
equivalente, cela signifie que n’importe quelles δ − 1 colonnes de H sont linéairement indépendantes sur Fq .
Soient β j1 b , β j2 b , . . . , β jδ−1 b les termes du haut de ces colonnes. Le determinant
β j1 b β j2 b ... β jδ−1 b
β j1 (b+1) β j2 (b+1) ... β (jδ−1 )(b+1)
∆= ..
.
β j1 (b+δ−2) β j2 (b+δ−2) ... β (jδ−1 )(b+δ−2)
Le determinant est non nul car β est une racine primitive nième de l’unité.
δ est appelée distance BCH, notée dBCH .
Exercice 5.3 Montrer que le code de Hamming Hm est un code BCH pouvant corriger 1 erreur.
Considérons le code C BCH de paramètres [15, 7, 5]. Choisissons comme racine primitive, la racine de
x4 + x + 1
g(x) = g1 (x)g3 (x)
= (x4 + x + 1)(x4 + x3 + x2 + x + 1) .
= x8 + x7 + x6 + x4 + 1
18
2. Construire la matrice de contrôle
" #
1 β β2 . . . β 14
H= .
1 β3 β6 . . . β 12
3. Décodage
Supposons que l’on reçoive y = (010001100010111). Soit c le mot effectivement envoyé et e l’erreur, on
a y = c + e . La première chose à faire est de calculer son syndrome S(y) = Hy = (01001001). Il faut
ensuite l’étudier de la manière suivante
Exercice 5.4 Avec le code précédent, décoder y = (101010010001011) puis écrire un programme qui corrige
jusqu’à deux erreurs tout mot recu.
Exercice 5.5 Construire une matrice génératrice d’un code BCH de longueur 13 sur F3 et de distance
construite 3.
19
6 Les codes de Reed-Solomon
Les codes de Reed-Solomon (RS) sont des codes BCH sur Fq de longueur q − 1 (q 6= 2). Leur utilisation
dans les lecteurs de CD et DVD à permis d’obtenir une qualité de son et d’image excellente.
Puisque l’alphabet est Fq , les polynômes sont totalement réductibles. xq−1 − 1 = β∈F?q (x − β) et le
Q
polynôme minimal de αi est M (i) (x) = x − αi . Ainsi un code RS de longueur q − 1 et distance construite δ
a pour polynôme générateur
Généralement b = 1.
1. Enumérer le code
Exercice 6.3 Reprenons l’exercice précédent concernant le code RS sur F4 de longueur 3. On utilise
l’application φ de F4 dans (F2 )2 définie par φ(0) = 00, φ(1) = 01, φ(α) = 10, φ(β) = 11. On obtient
un code de paramètres [6, 4, 2].
Enumérer le code et vérifier les paramètres. Le code est-il cyclique?
Définition 6.4 Un paquet d’erreur de longueur b est un vecteur dont les seuls éléments non nuls vivent
parmi b composantes consécutives et dont la première et la dernière composante sont non nulles.
L’image binaire des codes de RS est intéressante pour corriger des paquets d’erreurs. En effet, un paquet de
longueur b peut affecter au plus r symboles adjacents de Fq , avec
(r − 2)m ≤ b ≤ (r − 1)m + 1.
Ces paquets peuvent être corrigés si d est bien plus grand que r.
20