Académique Documents
Professionnel Documents
Culture Documents
Master CSI 2
Année 2004-2005
Cours de codes (UE Codes/Signal)
Christine Bachoc
Bibliography
[1] J.H. van Lint, Introduction to coding theory, 3eme edition, Springer
1
Chapter 1
Introduction
2
Afin d’augmenter la fiabilité du canal, c’est-à-dire le taux d’information cor-
rectement transmise, on peut penser à introduire de la répétition dans cette in-
formation. Tous les enseignants savent bien que pour transmettre une informa-
tion à leurs élèves, et pour être sûrs que celle-ci n’a pas été dénaturée, il ne faut
pas hésiter à la répéter aussi souvent que possible. Sur ce beau principe, imagi-
nons que nous voulons envoyer le message binaire suivant : 11111111. Si nous
l’envoyons deux fois, le receveur pourra comparer les deux versions de notre mes-
sage. Si ces deux versions ne sont pas identiques, il peut conclure à l’existence
d’une erreur au moins dans la transmission. Il faut remarquer ici que cet objectif
est aussi atteint en rajoutant seulement un bit de contrôle de parité, c’est-à-dire la
valeur de la somme des bits modulo 2. Ici cela donnerait 111111110. À nouveau,
si la somme des bits n’est pas 0 modulo 2 à l’arrivée, on peut conclure à l’existence
d’une erreur au moins. Il est bon de remarquer que, dans le premier cas, le taux de
transmission du canal, qui est la proportion d’information utile transmise, est égal
à 1/2, tandis que dans le second cas, ce taux vaut 8/9. Reprenant l’exemple de
la répétition, on voit intuitivement que, si le message est répété un grand nombre
de fois, le receveur pourra “jeter” à coup sûr un plus grand nombre de messages
erronés, et avoir une confiance plus solide en les messages qui ont “l’air” corrects.
Un nouveau phénomène apparait même: si le message est répété r fois, et que ces
r copies ne sont pas toutes identiques, le receveur peut opter pour la version du
message la plus souvent reçue.
3
n
Y
prob(y | c) = prob(yi | ci ) = (1 − p)card{i|yi =ci } pcard{i|yi 6=ci }
i=1
card{i|yi 6=ci }
n p
= (1 − p)
1−p
Théorème 1 (Shannon, 1948) Soit R < C(p) et soit > 0. Pour n assez grand,
il existe des codes C ⊂ Fn2 de taux de transmission égal à R, et tels que Perr < .
Le théorème de Shannon, que nous ne démontrerons pas ici, laisse entiers deux
problèmes majeurs: D’abord il est purement existentiel, il ne répond donc pas à
la question de la construction effective de tels codes; ensuite, il ne prend pas en
compte le problème algorithmique, qui est surtout celui de réaliser un décodage
efficace.
4
Chapter 2
Dans ce chapitre, nous allons étudier les codes linéaires sur un corps fini Fq .
Même si l’on ne s’intéresse ultimement qu’aux codes binaires, il est nécessaire de
considérer dans certaines constructions des codes sur des corps finis plus généraux,
c’est pourquoi nous nous plaçons d’emblée dans ce cadre plus général (mais pas
plus difficile..).
Pour l’instant, les seules choses à savoir sur les corps finis sont les suivantes:
si p est un nombre premier, il existe un unique (à isomorphisme près) corps fini à p
éléments qui est Z/pZ muni des opérations usuelles. Pour un entier q quelconque,
il existe un corps fini à q éléments si et seulement si q est une puissance d’un
nombre premier p, soir q = pr ; dans ce cas il est unique (à isomorphisme près), il
contient un unique sous-corps isomorphe à Fp = Z/pZ, sur lequel il est un espace
vectoriel de dimension r.
5
dH (x, y) = wt(x − y) := card{i : 1 ≤ i ≤ n | xi 6= yi }.
.
le support d’un élément x ∈ Fnq est l’ensemble des indices i tels que xi 6= 0.
Le poids de x est donc le cardinal de son support.
Il faut remarquer que la distance de Hamming, est une vraie distance au sens
métrique du terme. Rappelons brièvement les propriétés d’une distance d(x, y),
faciles à vérifier sur dH .
• d(x, y) = 0 ⇔ x = y
• d(x, y) = d(y, x)
.
Supposons que l’on utilise un code C pour la transmission de mots de Fnq , de
distance minimale d. On note c un mot transmis et y le mot reçu, avec e = y − c.
Un décodeur peut opérer de la façon suivante. Si y appartient à l’une des boules
B(z, t) avec z ∈ C, il renvoi ĉ = z. Sinon, il renvoi un message d’erreur (variante:
il renvoi un des mots les plus proches mais pas unicité). On voit que ĉ 6= c dès
que y ∈/ B(c, t). Alors:
6
X
Perr = prob(c) prob(wt(e) > t)
c∈C
wt(e)
1 X
n p
= (1 − p)
|C| 1−p
e∈Fn
2 ,wt(e)>t
n w
(1 − p)n X
p n
= (q − 1)w
|C| w=t+1 1 − p w
Définition 3 Un code est dit linéaire si C est un Fq -sous espace vectoriel de Fnq .
Dans ce cas, on note k sa dimension.
7
2.3 Orthogonalité
Nous introduisons une notion d’orthogonalité
Pn sur l’espace Fnq avec la forme bilinéaire
symmétrique non dégénérée x · y = i=1 xi yi .
Lorsque Fq = F2 , on identifie souvent un mot de Fn2 avec son support. La
notation x∩y désigne donc le mot de support l’intersection des supports respectifs
de x et y. On a alors:
• x · y = wt(x ∩ y) mod 2
Parfois on considère d’autres formes que celle définie plus haut. Un cas impor-
tant est celui de Fq = F4 . Rappelons que F4 = {0, 1, w, w2 }, où w2 + w + 1 = 0.
Sur ce corps, l’application x → x2 est un automorphisme de corps, qui définit
2
Pn aussi x̄ = x . Il est usuel de
une involution encore appelée conjugaison. On note
n
considérer sur F4 la forme hermitienne x · y = i=1 xi ȳi .
• x ∈ C ⇔ Il existe u ∈ Fkq | x = uG
• x ∈ C ⇔ Hxt = 0
8
• C contient un mot de poids au plus w, ssi w colonnes de H sont linéairement
dépendantes.
xσ = xMσ .
Si C est un code linéaire de matrice génératrice G, C σ est encore un code
linéaire, de matrice génératrice GMσ . Celle-ci est obtenue à partir de G par per-
mutation, suivant σ, des colonnes de G.
9
une permutation σ telle que C2 = C1σ . Cela est équivalent à demander qu’il existe
une matrice de permutation Mσ et une matrice k × k P à coefficients dans Fq et
inversible telles que
G 2 = P G 1 Mσ .
10
Exemple: : Pour q = 2 et r = 3, on obtient pour matrice de contrôle de parité
1 0 0 1 0 1 1
H = 0 1 0 1 1 0 1 .
0 0 1 0 1 1 1
3. Son dual H(q, r)⊥ est un code simplexe, c’est-à-dire tous ses mots non nuls
sont de même poids. La valeur commune de leur poids est q r−1 .
Preuve: Le point 1. est déjà démontré. Notons que le poids 3 est bien atteint
puisque toutes les droites sont représentées. Les boules B(x, 1) sont disjointes et
n
on a vu que card(B(x, 1)) = 1 + 1 (q − 1) = 1 + n(q − 1) = q r . On a donc:
11
La procédure de décodage des codes de Hamming est très simple. Soit y ∈ Fnq ;
on garde les notations précédentes. Pour trouver le mot x ∈ H(q, r) le plus proche
de y, il suffit de:
• Calculer s := Hy t .
• Si s = 0, retourner x = y.
Preuve: : Notons i le mot dont les coordonnées sont toutes nulles sauf la i-ème
qui vaut 1. Clairement, on a Hy t = H(λi )t . Donc x := y − λi appartient à
H(q, r) et est à distance 1 de y. Remarquons qu’on trouve toujours un indice i
convenable, puisque toutes les droites de Frq sont représentées dans les colonnes.
C’est donc une autre façon de voir que ce code est parfait.
Définition 8 Soit C un code binaire. On dit que C est un code pair si tous les
mots de C ont un poids de Hamming pair.
On dit que C est un code doublement pair si tous les mots de C ont un poids
de Hamming divisible par 4.
Proposition 6 Si C est un code binaire tel que C ⊂ C ⊥ , alors C est un code pair.
Si C est un code binaire tel que C ⊂ C ⊥ , et possédant une base de mots de
poids divisibles par 4, alors C est un code doublement pair.
12
Preuve: Si C ⊂ C ⊥ , alors pour tout x ∈ C, x · x = 0. Mais wt(x) ≡ x · x
mod 2, donc wt(x) ≡ 0 mod 2. Si, en outre, C a une base de mots de poids
divisibles par 4, alors tous les mots de C sont bien divisibles par 4 à cause de la
relation wt(x + y) = wt(x) + wt(y) − 2wt(x ∩ y).
Exercice: Montrer qu’un code peut être pair sans vérifier C ⊂ C ⊥ . Par contre,
montrer que, si C est doublement pair, alors C vérifie C ⊂ C ⊥ .
Montrer que le code de Hamming étendu est un code doublement pair.
On peut se demander s’il existe une relation entre la distance minimale d’un
code, et celle de son dual. En fait, la distance du code dual dépend non seulement
de la distance minimale du code, mais aussi de toute sa distribution des poids,
comme le montre la formule de MacWilliams. Cette formule dit que la distribution
des poids de C ⊥ s’exprime linéairement en fonction de celle de C. Elle est une
conséquence de la formule de Poisson discrète que nous rappelons maintenant.
Preuve: On a
X X X
fˆ(v) = ( (v, u)f (u)) (2.1)
v∈C v∈C u∈Fn
q
X X
= f (u)( (v, u)). (2.2)
u∈Fn
q v∈C
13
X
WC (x, y) = xn−wt(u) y wt(u) .
u∈C
On a (formule de MacWilliams):
1
WC ⊥ (x, y) = WC (x + (q − 1)y, x − y).
|C|
Preuve: On applique la formule de Poisson à la fonction f (u) = xn−wt(u) y wt(u) .
Il faut calculer fˆ.
X
fˆ(v) = (v, u)xn−wt(u) y wt(u) (2.3)
u∈Fn
q
n
XY
= (vi , ui )x1−wt(ui ) y wt(ui ) (2.4)
u∈Fn
q i=1
n X
Y
= (vi , a)x1−wt(a) y wt(a) (2.5)
i=1 a∈Fq
n
Y X
= ((vi , 0)x + ( (vi , a))y) (2.6)
i=1 a6=0
P
et on utilise a6=0 (vi , a) = q − 1 si vi = 0, = −1 sinon. On obtient:
Exemple: On a vu que le code H(q, r)⊥ est un code dont tous les mots non nuls
sont de poids q r−1 . Son polynôme énumérateur des poids est donc
r−1 r−1
WH(q,r)⊥ (x, y) = xn + (q r − 1)xn−q yq .
La formule de MacWilliams nous permet donc de calculer WH (q, r):
1
WH(q,r) (x, y) = r (x+(q − 1)y)n +
q
r n−q r−1 q r−1
(q − 1)(x + (q − 1)y) (x − y) .
14
Pour q = 2, on obtient:
1 2r−1 −1
2r−1 r 2r−1
WH(2,r) (x, y) = r (x + y) (x + y) + (2 − 1)(x − y)
2
et, pour q = 2 et r = 3,
15
l’opération uG, si u = (u1 , . . . , uk ) est le mot à transmettre. On peut remar-
quer que, si G est sous forme canonique, v = uG a ses k premières coordonnées
égales à celles de u. A partir d’un mot du code il est donc très facile de revenir au
message initial.
En ce qui concerne le décodage, la situation est plus compliquée. On s’intéresse
ici au décodage par maximum de vraisemblance, qui consiste, pour un élément
w ∈ Fnq , à trouver un élément du code à plus petite distance de w.
Définition 9 Les classes d’un code C de longueur n sur Fq sont les ensembles
x + C, où x ∈ Fnq . Si k est la dimension de C, il y a q n−k classes distinctes.
Le poids, ou la distance minimale d’une classe différente de C est wt(x + C) :=
min{wt(y) : y ∈ x + C}.
Le rayon de recouvrement du code C est le maximum des poids des classes.
C’est le plus petit entier δ tel que les boules de centres les mots du code et de
rayon δ recouvrent Fnq :
Fm
q = ∪x∈C B(x, δ).
Un code est dit parfait si son rayon de recouvrement δ est égal à t := [(d −
1)/2], où d est sa distance minimale (clairement il est toujours supérieur..). Dans
ce cas, les boules forment une partition de l’espace Fnq .
16
Chapter 3
Codes cycliques
Dans ce chapitre, nous allons étudier une famille de codes particulière, les codes
cycliques. Nous allons voir qu’avec un peu d’algèbre, ils peuvent être analysés
facilement. En particulier, nous allons généraliser la construction des codes de
Hamming, faits pour corriger une erreur, en imposant de corriger un nombre
d’erreurs fixé à l’avance. Ce sont les codes BCH, qui en outre possèdent un bon
algorithme de décodage. Ces codes sont très utilisés pour la correction d’erreurs.
Fnq −→ Fqn
s : (c0 , c1 , . . . , cn−1 ) 7−→ (cn−1 , c0 , c1 , . . . , cn−2 )
Définition 10 Soit C un code linéaire sur Fnq . On dit que C est cyclique si s(C) =
C.
En tant que transformation de Fnq , s vérifie bien sûr sn = Id, et s est d’ordre n.
On vérifie facilement que, si C est cyclique, C ⊥ est aussi cyclique. Un exemple
très simple de code cyclique est le code de contrôle de parité.
La propriété d’être cyclique pour un code s’interprète très bien en termes de
polynômes. On associe à un mot c = (c0 , c1 , . . . , cn−1 ) un polynôme, noté c(x):
c(x) = c0 + c1 x + · · · + cn−1 xn−1 . On considère l’application composée φ:
17
Fnq −→ Fq [x] −→ Fq [x]/(xn − 1)Fq [x]
φ : c 7−→ c(x) 7−→ c(x) mod xn − 1
2. g(x) divise xn − 1
De plus, g(x) est le polynôme unitaire de plus petit degré de C; si deg(g) = k,
alors dim(C) = n − k et une base de C est: {g(x), xg(x), . . . , xn−k−1 g(x)}. Ce
polynôme est appelé polynôme générateur du code.
Preuve: Les idéaux de Rn sont en bijection avec les idéaux de Fq [x] qui conti-
ennent xn − 1. D’autre part, les idéaux de Fq [x] sont principaux, et g(x)Fq [x]
contient xn − 1 si et seulement si g(x) divise xn − 1.
Soit D ⊂ C le Fq -espace vectoriel engendré par {g(x), xg(x), . . . , xn−k−1 g(x)}.
Clairement, D est de dimension n − k, car ces éléments sont “triangulaires” sur
{1, x, . . . , xn−1 }. Il reste à montrer que D est égal à C, et pour cela, que les
18
xu g(x) mod xn − 1 pour u ≥ n − k sont dans D. On effectue la division eucli-
dienne de xu g(x) par xn − 1 (dans Fq [x] bien sûr). Il existe des polynômes q et r,
qvec deg(r) < n, tels que
Comme g(x) divise xn −1, g(x) divise aussi r(x). Écrivons r(x) = g(x)r1 (x);
on a deg(r1 ) < n − k et xu g(x) = g(x)r1 (x) mod xn − 1 ce qui montre bien que
xu g(x) appartient à D.
1. C1 ⊂ C2 ssi g2 divise g1
19
Remarquons que la plus petite extension de Fq qui contienne α est Fqr . où r
est le plus petit entier tel que n divise q r − 1.
Puisque g(x) appartient à Fq , le Frobenius σq , défini par σq (x) = xq opère sur
les racines de g. Il sépare l’ensemble Z(C) en orbites, correspondant au différents
polynômes minimaux sur Fq .
Il est clair qu’un polynôme générateur d’un code cyclique de longueur n est
le produit d’un certain nombre de ces polynômes minimaux. Un code cyclique de
longueur n sur Fq est donc déterminé par un ensemble de classes cyclotomiques
modulo n. On va voir que ces classes déterminent une borne inférieure pour la
distance minimale du code.
20
On peut traduire cette condition matriciellement. Soit
C contient un mot non nul de poids ≤ δ−1 ⇐⇒ P contient δ−1 colonnes liées.
21
Le déterminant de cette matrice vaut
1 1 ... 1
αj1 αj2 ... α jδ−1
b j1 b j2 b jδ−1
det(A) = (α ) (α ) . . . (α )
.. .. ..
.
δ−2 j1 . ... .
(α )j2
δ−2 δ−2 jδ−1
(α ) ... (α )
Y
= αbj1 +bj2 +···+bjδ−1 (αjk − αjl )
1≤k<l≤s
par la formule de Van der Monde. Comme ce déterminant est non nul, on peut
conclure que les δ − 1 colonnes sont linéairement indépendantes, et donc que C
ne contient pas de mot non nul de poids inférieur ou égal à δ − 1.
g(x) = ppcm(Pαb+i | 0 ≤ i ≤ δ − 2)
où Pαj est le polynôme minimal de αj sur Fq .
Si b = 1, on l’appelle code BCH au sens restreint. Le poids minimal d’un code
BCH de distance prescrite δ est au moins égal à δ.
22
e = y − c = e0 + e1 x + · · · + en−1 xn−1 .
La stratégie de l’algorithme consiste à d’abord déterminer les positions des
erreurs, c’est-à-dire l’ensemble des indices i tels que ei 6= 0, puis leurs valeurs ei .
On pose donc:
P := {i : 0 ≤ i ≤ n − 1 | ei 6= 0}
et on construit un polynôme localisateur des erreurs σ:
Y
σ(z) := (1 − αi z).
i∈P
23
2t
X X
ei αli z l−1 σ(z)
S(z)σ(z) =
l=1 i∈P
X 2t
X
αli z l−1 σ(z)
= ei
i∈P l=1
X 1 − (αi z)2t
= ei αi iz
σ(z)
i∈P
1 − α
X Y
= ei αi 1 − (αi z)2t (1 − αj z)
i∈P j6=i
X Y
i
= ei α (1 − αj z) mod z 2t
i∈P j6=i
24
• La plus basique: on a t − 1 inconnues qui sont les coefficients de σ (son
terme constant est 1); on a t − 1 conditions linéaires qui sont que les coeffi-
cients de z t , z t+1 , . . . , z 2t−1 dans le produit S(z)σ(z) sont nuls. On résoud
un système linéaire de taille t − 1, d’où une complexité en t3 .
• On applique Berlekamp-Massey pour trouver σ: complexité en t2 .
• On fait de l’algorithme d’Euclide étendu entre z 2t et S(z) et on s’arrête en
chemin.. En effet, dans l’algorithme d’Euclide étendu, on pose:
p0 = z 2t , p1 = S, p 0 = p 1 q1 + r 1
p1 = S, p2 = r1 , p1 = p 2 q2 + r 2
...
pi−1 , pi = ri−1 , pi−1 = pi qi + ri
...
z 2t p0 q1 1 p1 q1 1 qi 1 pi
= = = ... .
S p1 1 0 p2 1 0 1 0 pi+1
ou encore
2t
ai b i z pi
=
ci di S pi+1
avec ai , bi , ci , di ∈ K[z] et vérifient:
ai+1 bi+1 0 −1 ai b i
= .
ci+1 di+1 −1 qi+1 ci di
Comme pi est le reste de la division par pi−1 , on a deg(pi ) < deg(pi−1 ).
Donc, il existe i tel que deg(pi ) < t ≤ deg(pi−1 ). On a alors:
ai z 2t + bi S = pi
25
soit
bi S = p i mod z 2t .
Une fois que σ est calculé, on trouve ses racines et donc les localisations des
erreurs. Pour conclure, il faut calculer les valeurs des ei . Il suffit maintenant de
résoudre les équations en deg(σ) inconnues:
e(αl ) = y(αl ), 1 ≤ l ≤ 2t
26
Chapter 4
27
D’autre part, on peut exprimer les fonctions δy algébriquement en les xi :
m
Y
δy = (xi + yi + 1).
i=1
monômes xi1 . . . xis engendrent bien l’espace F; comme il y en a ex-
Donc les P
actement m m m
s=0 s = 2 , ils forment une base de F.
1 1 1 1 1 1 1 1 1
x1 0 0 0 0 1 1 1 1
x2 0 0 1 1 0 0 1 1
x3 0 1 0 1 0 1 0 1
Le code R(2, 3) est engendré par les lignes de :
1 1 1 1 1 1 1 1 1
x1 0 0 0 0 1 1 1 1
x2 0 0 1 1 0 0 1 1
x3 0 1 0 1 0 1 0 1
x1 x2 0 0 0 0 0 0 1 1
x1 x3 0 0 0 0 0 1 0 1
x2 x3 0 0 0 1 0 0 0 1
28
Théorème 6 Le code R(r, m) a les propriétés suivantes:
1. Sa dimension est 1 + m1 + · · · + mr .
29
Preuve: On définit un entier s par: 2s ≤ deg(P ) < 2s+1 et on procède par
récurrence sur s. Le
P cas
s
s = 0 correspond auPdegré de P égal à 1, il est clair.
Posons P1 := 2i=0−1 bi (1 + t)i et P2 := i=2
deg(P ) s
s bi (1 + t)i−2 . On a donc:
s s s
P = P1 + (1 + t)2 P2 = P1 + (1 + t2 )P2 = (P1 + P2 ) + t2 P2 .
2i . On a dans F2 [t]:
P
Lemme 3 Soit I ⊂ {1, . . . , m} et soit l := i∈I
/
n−1
X
l
(1 + t) = xI (v)tn−1−v .
v=0
Preuve: On a
i i
Y Y
(1 + t)l = (1 + t)2 = (1 + t2 ).
i∈I
/ i∈I
/
30
Q Q
tel que i∈I (1 + xi (k)) = 1, ou encore i∈I xi (n − 1 − k) = 1. Finalement, en
posant k = n − 1 − v,
n−1
X
l
(1 + t) = xI (v)tn−1−v .
v=0
où lI est l’entier associé à I comme dans le lemme précédent. D’après le Lemme
2, wt(P (t)) ≥ wt((1 + t)lI0 ), où I0 est un certain sous-ensemble de {1, . . . , m},
de cardinal au plus égal à r, plus précisément celui pour lequel lI0 est minimal.
D’autre part, pour a = xI , le polynôme P (t) associé est (1 + t)lI . Donc
wt(xI ) = wt((1 + t)lI ) = 2m−|I| . Cela montre que wt((1 + t)lI ) ≥ 2m−r dès que
|I| ≤ r. Donc on a bien, dans le cas général,
31
Notre hypothèse est que M ∈ R(r, m), donc, pour tout A sous-espace affine
de dimension dim(A) = r + 1, r + 2, . . . , m, on a
E · uA = R · u A
D’un aute côté, les espaces affines de dimension 0 étant réduits à des points, on
connaitrait complètement E si on connaissait E · uA pour les sous-espaces affines
A de dimension 0.
La stratégie de l’algorithme consiste à descendre dans les dimensions, en
déduisant de la connaissance des valeurs de E · uA pour dim(A) = r + 1, celle
des E · uA pour dim(A) = r, et ainsi de suite, jusqu’à arriver à r = 0.
Supposons donc avoir obtenu les valeurs de E · uA pour tous les sous-espaces
affines A de dimension s + 1, pour un s ≤ r. Fixons maintenant un sous-espace
affine B de dimension s. On va se concentrer sur l’ensemble EB des espaces de
dimension s + 1 contenant B. Notons que EB est de cardinal 2m−s − 1. Si A ∈ EB ,
on peut écrire
A = B ∪ (A \ B)
et A \ B a même cardinal que B; pour deux espaces A distincts, les complémen-
taires A \ B sont deux à deux distincts car deux espaces de dimension s + 1 ne
peuvent pas avoir en commun un sous-espace de dimension s et un autre point
sans être égaux. On calcule les 2m−s − 1 valeurs prises par E · uA lorsque A
parcourt EB , et on regarde lequel de 0 ou 1 apparait le plus souvent. Comme
E · uA = E · uB + E · uA\B ,
si E · uA = 0 un nombre t ≥ 2m−s−1 de fois, c’est que:
(
E · uA\B = 0 pour t sous-espaces A ∈ EB
• soit E·uB = 0, et
E · uA\B = 1 pour 2m−s − 1 − t sous-espaces A ∈ EB
(
E · uA\B = 1 pour t sous-espaces A ∈ EB
• soit E·uB = 1, et
E · uA\B = 0 pour 2m−s − 1 − t sous-espaces A ∈ EB
32
Si E · uA = 1 un nombre t ≥ 2m−s−1 de fois, on conclu de façon analogue
que E · uB = 1. Ayant déterminé tous les E · uB pour B de dimension s, on passe
à la dimension s − 1, et ainsi de suite jusqu’à la dimension 0.
C’est aussi le plus petit rayon tel que les boules de centre les mots du code et
de rayon ρ recouvrent l’espace Fnq .
Définition 17 Soit g : Fm
2 → R. On note ĝ et on appelle transformée de Fourier
m
de g la fonction ĝ : F2 → R définie par
X
ĝ(w) = (−1)x·w g(x).
x∈Fm
2
33
Preuve:
X X X
ĝ(w)2 = ( (−1)(x+y)·w g(x)g(y))
w∈Fm
2 w∈Fm m
2 x,y∈F2
X X
= g(x)g(y) (−1)(x+y)·w
x,y∈Fm
2 w∈Fm
2
mais on a:
(
X 0 si x + y 6= 0
(−1)(x+y)·w =
w∈Fm
2m si x + y = 0
2
d’où la formule.
Si f : Fm m
2 → F2 est une fonction booléenne, on lui associe χf : F2 → R
définie par:
Corollaire 1 X
χ̂f (w)2 = 22m .
w∈Fm
2
2. On a équivalence de:
34
(c) Pour tout s 6= 0, x 7→ f (x + s) − f (x) est équilibrée c’est-à-dire prend
aussi souvent la valeur 1 que la valeur 0.
Preuve: Pour a ∈ Fm 0
2 , notons `a la fonction linéaire
`0a (x) := a · x = a1 x1 + · · · + am xm
et `1a la fonction affine `1a (x) = a · x + 1. Lorsque a varie, ces fonctions parcourent
R(1, m).
Remarquons, que, pour un x fixé, si f (x) 6= `0a (x), c’est que f (x) = `1a (x), et
réciproquement. D’autre part,
En particulier, on a donc
X
χ̂f (a) = (−1)f (x)+a·x
x∈Fm
2
donc
ρm ≤ 2m−1 − 2m/2−1 .
Il reste à montrer l’existence de fonctions f vérifiant |χ̂f (a)| = 2m/2 pour tout
a ∈ Fm 2 . L’exemple le plus simple est le suivant: posons x = x
(1)
| x(2) où x(1)
(2)
(respectivement x ) est le m/2-uplet correspondant aux m/2 premiers bits de x
(respectivement derniers bits de x). Soit f (x) = x(1) · x(2) . On a, en écrivant
également w = w(1) | w(2) ,
35
(1) ·x(2) +x·w
X
χ̂f (w) = (−1)x
m/2
x(1) ,x(2) ∈F2
(1) ·x(2) +x(1) ·w (1) +x(2) ·w (2)
X
= (−1)x
m/2
x(1) ,x(2) ∈F2
(1) ·w (1) (1) +w (2) )·x(2)
X X
= (−1)x ( (−1)(x )
m/2 m/2
x(1) ∈F2 x(2) ∈F2
(2) ·w (1)
= (−1)w (2m/2 )
X
χ̂f (w)2 = (−1)f (x)+f (y)+(x+y)·w
x,y∈Fm
2
X
= (−1)f (x)+f (x+s)+s·w
x,s∈Fm
2
X X
= (−1)s·w ( (−1)f (x)+f (x+s) ).
s∈Fm
2 x∈Fm
2
X X X
0= (−1)s·w χ̂f (w)2 = (−1)s·w ( (−1)f (x)+f (y)+(x+y)·w )
w∈Fm
2 w∈Fm
2 x,y∈Fm
2
X X
= (−1)f (x)+f (y) ( (−1)(s+x+y)·w ).
x,y∈Fm
2 w∈Fm
2
(−1)(s+x+y)·w
P
La somme w∈Fm vaut 0 sauf si s + x + y = 0. Il reste donc:
2
X
0 = 2m (−1)f (x+s)+f (x)
x∈Fm
2
36
Remarquer qu’une fonction courbe ne peut pas, elle, être équilibrée, puisque
χ̂f (0) = ±2m/2 . Cela limite leur utilisation en crypto..
Il est important de remarquer que le groupe affine AGL(2, m) opère sur les
fonctions courbes. On étudie donc ces fonctions à équivalence affine près, et on
ne sait pas grand chose.. à part:
• m = 6,
• m = 8, deg(f ) = 3.
37