Du Dobble aux codes correcteurs d’erreurs
Bruno Grenet
Equipe ECO (Exact Computing) – LIRMM´
24 novembre 2016
Equipe ECO ´
I A l’interface entre maths et info : calcul exact`
I Th´ematiques :
I Calcul formel (polynˆomes, alg`ebre lin´eaire, etc.)
I Cryptographie
I Codes correcteurs
I Membres permanents :
I Pascal Giorgi (MCf UM)
I Bruno Grenet (MCf UM)
I Eleonora Guerrini (MCf UM)
I Laurent Imbert (DR CNRS)
I Romain Lebreton (MCf UM)
I D´etails :
http://www.lirmm.fr/eco/
Dobble : Qu’es aqu` o ?
I Chaque joueur a une carte avec 8 symboles
I Chaque couple de cartes aexactementun symbole en commun
I Plusieurs jeux `a partir de ce principe
Dobble : Qu’es aqu` o ?
I Chaque joueur a une carte avec 8 symboles
I Chaque couple de cartes aexactementun symbole en commun
I Plusieurs jeux `a partir de ce principe
Dobble : Qu’es aqu` o ?
I Chaque joueur a une carte avec 8 symboles
I Chaque couple de cartes aexactementun symbole en commun
I Plusieurs jeux `a partir de ce principe
Dobble : Qu’es aqu` o ?
I Chaque joueur a une carte avec 8 symboles
I Chaque couple de cartes aexactementun symbole en commun
I Plusieurs jeux `a partir de ce principe
Dobble : Qu’es aqu` o ?
I Chaque joueur a une carte avec 8 symboles
I Chaque couple de cartes aexactementun symbole en commun
I Plusieurs jeux `a partir de ce principe
Dobble : Qu’es aqu` o ?
I Chaque joueur a une carte avec 8 symboles
I Chaque couple de cartes aexactementun symbole en commun
I Plusieurs jeux `a partir de ce principe
Dobble : Qu’es aqu` o ?
I Chaque joueur a une carte avec 8 symboles
I Chaque couple de cartes aexactementun symbole en commun
I Plusieurs jeux `a partir de ce principe
Dobble : Qu’es aqu` o ?
I Chaque joueur a une carte avec 8 symboles
I Chaque couple de cartes aexactementun symbole en commun
I Plusieurs jeux `a partir de ce principe
Dobble et plan de Fano
I 7 symboles, 7 cartes
I carte = point
I symbole = droite
I loi de groupe
∀ , + =∅
+ + =∅
Dobble et plan de Fano
I 7 symboles, 7 cartes
I carte = point
I symbole = droite
I loi de groupe
∀ , + =∅
+ + =∅
Dobble et plan de Fano
I 7 symboles, 7 cartes
I carte = point
I symbole = droite
I loi de groupe
∀ , + =∅
+ + =∅
Dobble et plan de Fano
I 7 symboles, 7 cartes
I carte = point
I symbole = droite
I loi de groupe
∀ , + =∅
+ + =∅
Dobble et plan de Fano
I 7 symboles, 7 cartes
I carte = point
I symbole = droite
I loi de groupe
∀ , + =∅
+ + =∅
Codes correcteurs : Qu’es aqu` o ?
C¸ a va toi ?
canal bruit´e
Pa vytou?
But : ajouter de la redondance pour rep´erer et corriger les erreurs
Codes correcteurs : Qu’es aqu` o ?
C¸ a va toi ?
canal bruit´e
Pa vytou?
But : ajouter de la redondance pour rep´erer et corriger les erreurs
Codes correcteurs : Qu’es aqu` o ?
C¸ a va toi ?
canal bruit´e
Pa vytou?
But : ajouter de la redondance pour rep´erer et corriger les erreurs
Param` etres des codes correcteurs
Σk −→Γn m7−→c
But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3
2k(n+ 1)≤2n
3 1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Param` etres des codes correcteurs
{0,1}k −→ {0,1}n m7−→c
But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3
2k(n+ 1)≤2n
3 1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Param` etres des codes correcteurs
{0,1}k −→ {0,1}n m7−→c But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3
2k(n+ 1)≤2n
3 1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Param` etres des codes correcteurs
{0,1}k −→ {0,1}n m7−→c
But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3
2k(n+ 1)≤2n
3 1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Param` etres des codes correcteurs
{0,1}k −→ {0,1}n m7−→c
But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3
2k(n+ 1)≤2n
3
1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Param` etres des codes correcteurs
{0,1}k −→ {0,1}n m7−→c
But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3
2k(n+ 1)≤2n
3 1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Param` etres des codes correcteurs
{0,1}k −→ {0,1}n m7−→c
But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3 2k(n+ 1)≤2n
3 1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Param` etres des codes correcteurs
{0,1}k −→ {0,1}n m7−→c
But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3 2k(n+ 1)≤2n
3 1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Param` etres des codes correcteurs
{0,1}k −→ {0,1}n m7−→c
But : corriger une erreur, o`u qu’elle soit
I Tripler chaque bit :
I 07→000, 17→111
I k = 1,n= 3 (ratio 1/3)
I Distance entre deux mots de code ≥3 2k(n+ 1)≤2n
3 1
k 1 2 3 4 5 6 7 8 9 10 11 12
n 3 5 6 7 9 10 11 12 13 14 15 17
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points
Mots de code = somme nulle
0000000
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points
Mots de code = somme nulle
1001010
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points
Mots de code = somme nulle
1011011
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
1001010
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
1011011
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
0011011
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
0011011
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites
(1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
0011011
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
0011011
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
0011011
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Plan de Fano et code de Hamming
1
2 3
4
5 6 7
Mots = ensembles de points Mots de code = somme nulle
0011011
16 = 24 mots de code Distance 3
Passage d’un mot `a un autre : inversion d’une (ou +) droites (1,0,0,0) (0,1,0,0) (0,0,1,0) (0,0,0,1)
↓ ↓ ↓ ↓
1100100 1010001 0000111 1001101
Dobble comme code de Hamming
Dobble comme code de Hamming
Dobble comme code de Hamming
Et si on veut corriger plus d’une erreur ?
Code de Reed-Solomon :fixons α1, . . .,αn∈Fq
Fq[X]<k −→Fqn
f 7−→(f(α1), . . . ,f(αn))
I Distance : d =n−k+ 1
I Erreurs corrigeables : e =
d−1 2
=
n−k 2
Comment corriger autant d’erreurs ?
Et si on veut corriger plus d’une erreur ?
Code de Reed-Solomon :fixons α1, . . .,αn∈Fq
Fq[X]<k −→Fqn
f 7−→(f(α1), . . . ,f(αn))
I Distance :d =n−k+ 1
I Erreurs corrigeables : e =
d−1 2
=
n−k 2
Comment corriger autant d’erreurs ?
Et si on veut corriger plus d’une erreur ?
Code de Reed-Solomon :fixons α1, . . .,αn∈Fq
Fq[X]<k −→Fqn
f 7−→(f(α1), . . . ,f(αn))
I Distance :d =n−k+ 1
I Erreurs corrigeables : e =
d−1 2
=
n−k 2
Comment corriger autant d’erreurs ?
Et si on veut corriger plus d’une erreur ?
Code de Reed-Solomon :fixons α1, . . .,αn∈Fq
Fq[X]<k −→Fqn
f 7−→(f(α1), . . . ,f(αn))
I Distance :d =n−k+ 1
I Erreurs corrigeables : e =
d−1 2
=
n−k 2
Comment corriger autant d’erreurs ?
D´ ecodage des codes de Reed-Solomon I
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I Interpolation de Lagrange : k =n et e = 0
I Pour certains n-uplets, aucune solution !
I Si on connaˆıt les bons indices : il suffit de k points (e =n−k)
I Si f existe, on peut le retrouver d`es que e ≤ bn−k2 c
D´ ecodage des codes de Reed-Solomon I
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I Interpolation de Lagrange : k =n et e = 0
I Pour certains n-uplets, aucune solution !
I Si on connaˆıt les bons indices : il suffit de k points (e =n−k)
I Si f existe, on peut le retrouver d`es que e ≤ bn−k2 c
D´ ecodage des codes de Reed-Solomon I
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I Interpolation de Lagrange : k =n et e = 0
I Pour certains n-uplets, aucune solution !
I Si on connaˆıt les bons indices : il suffit de k points (e =n−k)
I Si f existe, on peut le retrouver d`es que e ≤ bn−k2 c
D´ ecodage des codes de Reed-Solomon I
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I Interpolation de Lagrange : k =n et e = 0
I Pour certains n-uplets, aucune solution !
I Si on connaˆıt les bons indices : il suffit de k points (e =n−k)
I Si f existe, on peut le retrouver d`es que e ≤ bn−k2 c
D´ ecodage des codes de Reed-Solomon I
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I Interpolation de Lagrange : k =n et e = 0
I Pour certains n-uplets, aucune solution !
I Si on connaˆıt les bons indices : il suffit de k points (e =n−k)
I Si f existe, on peut le retrouver d`es que e≤ bn−k2 c
D´ ecodage des codes de Reed-Solomon II
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I On poseE(X) = Y
i:f(αi)6=yi
(X −αi) et N(X) =f(X)E(X)
I Alors pour tout i, yiE(αi) =N(αi) (?)
I Toute solution (E?,N?) de (?) satisfaitN?/E? =f
I R´esolution par alg`ebre lin´eaire d`es que 2e+k <n :
I e+ (e+k) inconnues
I n´equations
D´ ecodage des codes de Reed-Solomon II
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I On poseE(X) = Y
i:f(αi)6=yi
(X −αi) et N(X) =f(X)E(X)
I Alors pour tout i, yiE(αi) =N(αi) (?)
I Toute solution (E?,N?) de (?) satisfaitN?/E? =f
I R´esolution par alg`ebre lin´eaire d`es que 2e+k <n :
I e+ (e+k) inconnues
I n´equations
D´ ecodage des codes de Reed-Solomon II
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I On poseE(X) = Y
i:f(αi)6=yi
(X −αi) et N(X) =f(X)E(X)
I Alors pour tout i, yiE(αi) =N(αi) (?)
I Toute solution (E?,N?) de (?) satisfaitN?/E? =f
I R´esolution par alg`ebre lin´eaire d`es que 2e+k <n :
I e+ (e+k) inconnues
I n´equations
D´ ecodage des codes de Reed-Solomon II
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I On poseE(X) = Y
i:f(αi)6=yi
(X −αi) et N(X) =f(X)E(X)
I Alors pour tout i, yiE(αi) =N(αi) (?)
I Toute solution (E?,N?) de (?) satisfaitN?/E? =f
I R´esolution par alg`ebre lin´eaire d`es que 2e+k <n :
I e+ (e+k) inconnues
I n´equations
D´ ecodage des codes de Reed-Solomon II
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I On poseE(X) = Y
i:f(αi)6=yi
(X −αi) et N(X) =f(X)E(X)
I Alors pour tout i, yiE(αi) =N(αi) (?)
I Toute solution (E?,N?) de (?) satisfaitN?/E? =f
I R´esolution par alg`ebre lin´eaire d`es que 2e+k<n :
I e+ (e+k) inconnues
I n´equations
D´ ecodage des codes de Reed-Solomon II
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I On poseE(X) = Y
i:f(αi)6=yi
(X −αi) et N(X) =f(X)E(X)
I Alors pour tout i, yiE(αi) =N(αi) (?)
I Toute solution (E?,N?) de (?) satisfaitN?/E? =f
I R´esolution par alg`ebre lin´eaire d`es que 2e+k<n :
I e+ (e+k) inconnues
I n´equations
D´ ecodage des codes de Reed-Solomon II
Probl`eme
Entr´ee :(y1, . . . ,yn)∈Fqn
Sortie :f ∈Fq[X]<k tel quef(αi) =yi pour ≥n−e indices
I On poseE(X) = Y
i:f(αi)6=yi
(X −αi) et N(X) =f(X)E(X)
I Alors pour tout i, yiE(αi) =N(αi) (?)
I Toute solution (E?,N?) de (?) satisfaitN?/E? =f
I R´esolution par alg`ebre lin´eaire d`es que 2e+k<n :
I e+ (e+k) inconnues
I n´equations
Aller plus loin : o` u va la recherche ?
I Calcul efficace : alg`ebre lin´eaire rapide, interpolation avec erreurs, etc.
I Plus d’erreurs :d´ecodage en liste
I Plus petits alphabets, meilleurs ratios k/n nouveaux codes Dans l’´equipe ECO:
I Etude th´´ eorique des param`etres admissibles
I Alg`ebre lin´eaire rapide
I Algorithmique des polynˆomes
Aller plus loin : o` u va la recherche ?
I Calcul efficace : alg`ebre lin´eaire rapide, interpolation avec erreurs, etc.
I Plus d’erreurs :d´ecodage en liste
I Plus petits alphabets, meilleurs ratios k/n nouveaux codes Dans l’´equipe ECO:
I Etude th´´ eorique des param`etres admissibles
I Alg`ebre lin´eaire rapide
I Algorithmique des polynˆomes
Aller plus loin : o` u va la recherche ?
I Calcul efficace : alg`ebre lin´eaire rapide, interpolation avec erreurs, etc.
I Plus d’erreurs :d´ecodage en liste
I Plus petits alphabets, meilleurs ratios k/n nouveaux codes
Dans l’´equipe ECO:
I Etude th´´ eorique des param`etres admissibles
I Alg`ebre lin´eaire rapide
I Algorithmique des polynˆomes
Aller plus loin : o` u va la recherche ?
I Calcul efficace : alg`ebre lin´eaire rapide, interpolation avec erreurs, etc.
I Plus d’erreurs :d´ecodage en liste
I Plus petits alphabets, meilleurs ratios k/n nouveaux codes Dans l’´equipe ECO:
I Etude th´´ eorique des param`etres admissibles
I Alg`ebre lin´eaire rapide
I Algorithmique des polynˆomes
Aller plus loin : o` u va la recherche ?
I Calcul efficace : alg`ebre lin´eaire rapide, interpolation avec erreurs, etc.
I Plus d’erreurs :d´ecodage en liste
I Plus petits alphabets, meilleurs ratios k/n nouveaux codes Dans l’´equipe ECO:
I Etude th´´ eorique des param`etres admissibles
I Alg`ebre lin´eaire rapide
I Algorithmique des polynˆomes
Aller plus loin : o` u va la recherche ?
I Calcul efficace : alg`ebre lin´eaire rapide, interpolation avec erreurs, etc.
I Plus d’erreurs :d´ecodage en liste
I Plus petits alphabets, meilleurs ratios k/n nouveaux codes Dans l’´equipe ECO:
I Etude th´´ eorique des param`etres admissibles
I Alg`ebre lin´eaire rapide
I Algorithmique des polynˆomes
Aller plus loin : o` u va la recherche ?
I Calcul efficace : alg`ebre lin´eaire rapide, interpolation avec erreurs, etc.
I Plus d’erreurs :d´ecodage en liste
I Plus petits alphabets, meilleurs ratios k/n nouveaux codes Dans l’´equipe ECO:
I Etude th´´ eorique des param`etres admissibles
I Alg`ebre lin´eaire rapide
I Algorithmique des polynˆomes