F - Ensiwiki

Transcription

F - Ensiwiki
Plan du cours
• 
• 
• 
• 
Introduction : Notion de code
Définition, distance, effacements et erreurs
Code de Hamming
Codes détecteurs d erreur
–  LFSR et polynômes.
Corps de Galois.
–  Codes CRC
–  Propriétés. Applications
•  Codes correcteurs : Code linéaire, Reed Solomon
–  Codes cycliques et Reed-Solomon
•  Autres codes et applications
–  Rafales d erreurs. Code CIRC.
55
Exemple: contrôle de parité dans TCP
7
Application
(HTTP,FTP, DNS)
4
Transport
(TCP, UDP)
3
Network
(IP)
2
1
TCP Packet Format
Data Link
(Ethernet, 802.11b)
Physical
•  TCP Checksum :bits de contrôle, calculés par l’émetteur à
partir de l’en-tête et des données, et vérifiés lors de la réception.
Exemple: Ethernet CRC-32
56
Linear Feedback Shift Registers (LFSRs)
•  LFSR : circuit élémentaire à base de registres à décalage et quelques xor.
•  Exemple 4-bit LFSR :
Q4
Q D
Q3
Q D
Q2
Q D
Q1
Q D
CLK
•  Avantages:
–  Hardware très simple => opération rapide
–  Rapide (débit élevé) : en général, nombre faible de xors ( 2 !)
•  Applications:
–  chiffrement (pas seuls ! avec des NLFSRs, des Sbox etc )
–  générateurs pseudo-aléatoires (non cryptographique), compteurs, arithmétique corps fini
–  détection et correction d’erreurs
57
4-bit LFSR binaire
Q4
Q D
Q3
Q D
Q2
CLK
•  Etat = valeur des registres [Q4,Q3,Q2,Q1]
•  Etat à t+1 = “Left-shift circulaire” état à t
suivi de xor avec bit le plus à gauche
•  Exemple:
Q D
Q1
0
xor 0
0
xor
–  Q4(t+1) = Q3(t)
Q3(t+1) = Q2(t)
Q2(t+1) = Q1(t) + Q4(t)
Q1(t+1) = Q4(t)
0
0
0
0
0
xor
0
0
0
0
0
0
0
xor
•  En général, avec n bascules, cycle sur 2n-1 valeurs
Q4 Q3 Q2 Q1
différentes non nulles :
–  Exemple: 15 valeurs (NB 0000 est absorbant)
–  générateur pseudo-aléatoire avec une longue période.
1
0
1
0
1
0
1
1
0
xor
0
0
0
0
0
0
0
0
0
0
0
xor
Q D
0
0
0
0
0
0
0
0
0
0
0
xor
0
0
0
1
1
0
1
0
1
1
0
0
1
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0 0
1 1
1 1
0001
0010
0100
1000
0011
0110
1100
1011
0101
1010
0111
1110
1111
1101
1001
0001
58
4 bit LFSR binaire
•  Exercice: quel est le polynôme de rétroaction ?
Q4
Q D
Q3
Q D
Q2
Q D
Q1
Q D
CLK
59
Généralisation: LFSR (dans un corps)
g0
g1
R0
gr-1
R1
Rr-1
•  Valeurs des registres du LFSR :
•  à t
: [Rr-1, Rr-2, … R0]
•  à t+1 : [R r-1, R r-2, … R 0] avec R i = Ri-1 + gi.Rr-1
•  Polynôme générateur: g(X) = Xr – gr-1Xr-1 - … - g0X0.
•  Notation: K[X] = ensemble des polynômes à coefficients dans K
60
Généralisation: LFSR avec opérations dans K.
Lien avec polynôme dans K[X]
g0
g1
R0
vin
gr-1
R1
Rr-1
•  Valeurs des registres du LFSR :
•  à t : [R0, R1, … Rr-1]
•  à t+1 : [R 0, R 1,…R r-1]
avec R i = Ri-1 + gi.Rr-1
•  Polynôme caractéristique :
•  g(X) = Xr – gr-1Xr-1 - … - g0X0.
•  Valeurs des registres du LFSR, vues comme un polynôme :
•  à t : [R0, R1, … Rr-1] : Pt(X) = Rr-1.Xr-1+ Rr-2.Xr-2 + …+ R0.X0
•  à t+1: [R 0, R 1,… R r-1] :
Pt+1(X) = R r-1.Xr-1+ R r-2.Xr-2 + …+ R 0.X0
= (Rr-2 + gr-1.Rn-1)Xr-1+…+ (Ri-1 + gi.Rn-1)Xi+…+(vin+ g0.Rn-1)X0
= X.Pt(X) - Rn-1.g(X) + vin.X0
= [ X.Pt(X) mod g(X) ] + vin.X0
•  Si K=corps : Reste division euclidienne polynômiale par g(X) dans K[X] 61
Plan du cours
• 
• 
• 
• 
Introduction : Notion de code
Définition, distance, effacements et erreurs
Code de Hamming
Codes détecteurs d erreur
– 
– 
– 
– 
LFSR et polynômes.
Corps de Galois.
Codes CRC
Propriétés. Applications
•  Codes correcteurs : Code linéaire, Reed Solomon
–  Codes cycliques et Reed-Solomon
•  Autres codes et applications
–  Rafales d erreurs. Code CIRC.
62
Corps de Galois et Opérations + et . d’un LFSR
•  Un corps (K, +, x, “0”, “1”) est défini par:
–  deux opérations internes :
•  + “addition” et x “multiplication”
–  associatives et distributivité
–  Éléments neutres: “0” pour +, “1” pour x.
–  Chaque élément u a un opposé pour + : -u
u-u=“0”
–  Chaque élément u non nul a un inverse pour x : u-1
u x u-1=“1”
•  Les corps finis sont appelés “corps de Galois”.
•  Exemple de corps:
– 
– 
– 
– 
Q = ensemble des rationnels
R = ensemble des réels
Z/pZ avec p premier
C = R[i]/i2+1
•  Exemples de corps finis:
–  GF(p) = Z/pZ (p premier)
–  GF(2) = ({F,T}, xor, and, F, T )
–  GF(256) = corps des “octets”
•  Il existe un unique corps fini avec q éléments ssi
q = pm avec p premier et m≥1,
noté GF(q) ou Fq.
•  GF( pm ) est isomorphe à GF(p)/g(X) avec g(x) polynôme primitif de GF(p)[X]
•  Addition = vectorielle coef à coef
•  Multiplication = LFSR(g)
•  Exemple GF(256) : + = xor bit à bit ; x = LFSR(X8 + X4 + X3 + X1 + X0)
63
Corps finis
•  Propriétés élémentaires
64
Corps finis – Propriétés élémentaires (1/3)
•  Notation: F[X] = anneau des polynômes à 1 variable et à coefficients dans
le corps F.
Un polynome est dit unitaire ssi son coefficient de tête est 1.
•  Définition: Soit Q(X) F[X];
Q est irréductible ssi Q(X)=A(X).B(X) avec A(X) et B(X) dans F[X]
implique degré(A)=0 ou degré(B)=0.
•  Théorème: F[X] est factoriel (i.e. tout polynôme unitaire de F[X] s’écrit de manière
unique comme produit de polynômes unitaires irréductibles)
•  Théorème (fondamental de l’algèbre): soit Q(X)
alors Q(X) admet au plus d racines dans F.
F[X] de degré d;
65
Corps finis – Propriétés élémentaires (2/3)
•  Pour tout entier premier p, l’ensemble des entiers mod p est un corps noté
Fp :
Fp = ( {0, 1, …, p-1}, +mod p , *mod p , 0, 1)
•  Théorème: Soit h(X) un polynôme irrédictible de degré m :
l’anneau quotient F[X]/(h(X)) est un corps fini avec |F|p éléments.
F[X]/(h(X)) = ( { Σi=0m-1 aiXi ; ai F }, +mod h(X), *mod h(X), 0.X0, 1.X0)
Remarque: similaire à Fp = Z/(p)
•  Le corps F[X]/(h(X)) est une extension du corps F de degré m.
C’est aussi un espace vectoriel de dimension m sur F.
66
Corps finis – Propriétés élémentaires (3/3)
•  Théorème: Tout corps fini est de cardinal q=pm et est isomorphe à
Fp si m=1; Fp[X]/(h(X)) sinon, avec h F[X] irrédcutible de degré m.
Réciproquement: Pour tout q=pm, il existe (à un isomorphisme près) un
unique corps de cardinal q, noté Fq.
•  Théorème: Fq* = ( {x Fq; x≠0}, * ) est un groupe cyclique.
Un générateur γ de Fq* est appelé élément primitif :
Fq* = { 1, γ, γ2, …, γq-2 }.
•  Théorème: Il y a ϕ(q-1) éléments primitifs.
  ϕ(q-1) = Card{ i entier; 1≤i< q-1 et i premier avec q-1} [indicatrice d’Euler].
67
Exemple : GF(16) avec LFSR (X4+X+1)
α0 =
1
1
α =
x
2
2
α =
x
α3 = x3
α4 =
x +1
5
2
α =
x +x
6
3
α = x + x2
α7 = x3
+x +1
8
2
α =
x
+1
9
3
α =x
+x
10
2
α =
x +x +1
α11 = x3 + x2 + x
α12 = x3 + x2 + x + 1
α13 = x3 + x2
+1
14
3
α =x
+1
α15 =
1
•  X4 + X + 1 est un polynôme primitif.
.
α4 = x4 mod x4 + x + 1
= x4 xor x4 + x + 1
=x+1
Q4
Q D
Q3
Q D
Q2
Q D
Q1
Q D
CLK
68
Table de polynômes primitifs
x12 + x6 + x4 + x +1
x22 + x +1
13
4
3
x + x + x + x +1
x23 + x5 +1
x14 + x10 + x6 + x +1
x24 + x7 + x2 + x +1
15
x + x +1
x25 + x3 +1
16
12
3
x + x + x + x +1
x26 + x6 + x2 + x +1
x17 + x3 + 1
x27 + x5 + x2 + x +1
18
7
x +x +1
x28 + x3 + 1
19
5
2
x + x + x + x+ 1
x29 + x +1
x20 + x3 + 1
x30 + x6 + x4 + x +1
21
2
x +x +1
x31 + x3 + 1
Galois Field
Hardware
x32 + x7 + x6 + x2 +1
Multiplication by x
⇔ shift left
Taking the result mod p(x) ⇔
XOR-ing with the coefficients of p(x)
when the most significant coefficient is 1.
n
Obtaining all 2 -1 non-zero ⇔
Shifting and XOR-ing 2n-1 times.
elements by evaluating xk
for k = 1, …, 2n-1
x2 + x +1
x3 + x +1
x4 + x +1
x5 + x2 +1
x6 + x +1
x7 + x3 +1
x8 + x4 + x3 + x2 +1
x9 + x4 +1
x10 + x3 +1
x11 + x2 +1
69
Construction LFSR en configuration Galois à
partir d’un polynôme primitif
• 
• 
• 
• 
Pour un LFSR à k-bit, numéroter les registres-bascules avec Q1 à droite.
Le feedback vient du registre le plus à gauche (Qk).
Choisir un polynôme primitif de la forme xk + … + 1.
Chaque monôme de la forme 1.xi correspond à un xor entre Qi et Qi+1.
•  Exemple 4-bit: utiliser x4 + x + 1
– 
– 
– 
x4 ⇔ sortie de Q4
x ⇔ xor entre Q1 et Q2
1 ⇔ entrée de Q1
Q4
Q D
Q3
Q D
Q2
Q D
Q1
Q D
CLK
•  Pour un LFSR 8-bit, utiliser le polynôme primitif x8 + x4 + x3 + x2 + 1
and mettre des xors entre Q2 et Q3, Q3 et Q4, Q4 et Q5
Q8
Q D
Q7
Q D
Q6
Q D
Q5
Q D
Q4
Q D
Q3
Q D
Q2
Q D
Q1
Q D
CLK
70
Plan du cours
• 
• 
• 
• 
Introduction : Notion de code
Définition, distance, effacements et erreurs
Code de Hamming
Codes détecteurs d erreur
– 
– 
– 
– 
LFSR et polynômes.
Corps de Galois.
Codes CRC
Propriétés. Applications
•  Codes correcteurs : Code linéaire, Reed Solomon
–  Codes cycliques et Reed-Solomon
•  Autres codes et applications
–  Rafales d erreurs. Code CIRC.
71
Exemple: contrôle de parité dans TCP
7
Application
(HTTP,FTP, DNS)
4
Transport
(TCP, UDP)
3
Network
(IP)
2
1
TCP Packet Format
Data Link
(Ethernet, 802.11b)
Physical
•  TCP Checksum :bits de contrôle, calculés par l’émetteur à
partir de l’en-tête et des données, et vérifiés lors de la réception.
Exemple: Ethernet CRC-32
72
Codes réseaux informatiques : codes CRC (1)
•  CRC : cyclic redundancy check avec r bits de redondance
Polynome générateur g(X) = xr + Σi=0..r-1 gi.xi de degré r sur F2
•  Mots de code : les multiples de g(X)
–  Source: m=k bits ! m(x) polynome de degré k-1
•  Exemple: m=01101 m(x) = x+x2+x4
–  Codage: c = m.xr - (m.xr mod g) = m.xr + (m.xr mod g)
•  On a c multiple de g
•  Redondance r bits
(gr= 1)
-m.xr mod g
m
r bits
m= Bloc message source (k bits)
•  Décodage : détection d erreurs
–  Réception de y et vérification que y(x) mod g(x) = 0 !
73
Codeur et décodeur CRC par LFSR
Codeur
CRC
f0
mk-1… m1 m0
Décodeur
CRC
f1
R0
f0
fr-1
R1
f1
Rr-1
fr-1
mk-1… m1 m0
R0
R1
Rr-1
A0
A1
Ar-1
erreur détectée
bits source
74
Exemple: Ethernet CRC-32
•  CRC-32: G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 +
x10 + x8 + x7 + x5 + x4 + x2 + x + 1
–  Utilisé dans ethernet
–  Initialisation des registres du LFSR à 1 (Il y a 32 bits à 1 ajouté
en tête de message)
•  Exercice:
–  Expliciter le circuit (ou l’algorithme) de codage et de décodage
75
Exemples de CRC standards
Exercice: construire le circuit de codage et décodage pour CRC-16 X25-CCITT
76
Construction de codes CRC :
propriétés pour le choix du polynôme.
•  Propriétés: un code CRC binaire détecte :
–  si g0 = 1, détecte les erreurs de poids 1
–  si g(x) a un facteur avec au moins 3 termes: détecte les erreurs de poids 2.
–  si g a (x+1) comme facteur: détecte un nombre impair d erreurs
–  Si g(X)=p(x).q(x) avec p polynome primitif de degré d
•  Détecte toute erreur sur 2 bits distants d au plus 2d-1 bits consécutifs
•  Souvent, on choisit g(x)=(X+1).p(X) avec p primitif : détecte
–  tout paquet de taille inférieure à deg(g)
–  1, 2 ou 3 erreurs isolées (si n < 2r pour détecter 2 erreurs)
•  Question: quelles propriétés sont vraies si V = GF(q) ?
77
Exercice
•  CRC-16: G(x) = x16 + x12 + x5 + 1 = (X+1)(X15 + … )
•  Donner le circuit de codage et décodage
•  Caractériser des erreurs détectées.
78
Plan du cours
• 
• 
• 
• 
Introduction : Notion de code
Définition, distance, effacements et erreurs
Code de Hamming
Codes détecteurs d erreur
–  LFRS, Codes CRC
–  Propriétés. Applications
•  Codes correcteurs
–  Codes linéaires, Hamming
–  Codes cycliques et Reed-Solomon (interpolation)
•  Autres codes et applications
–  Rafales d erreurs. Code CIRC.
79
Codes par blocs
×
×
×
×
×
×
×
80
Codes par blocs
×
×
×
Mot reçu *
×
×
×
×
81
Parité longitudinale et transversale
a00
a01
a02
a03
a04
a05
a06
P0
a10
a11
a12
a13
a14
a15
a16
P1
a20
a21
a22
a23
a24
a25
a26
P3
C0
C1
C2
C3
C4
C5
C6
N
1. 
2. 
3. 
4. 
Mots sur 3*7 = 21 bits
Parité par ligne : Pi
Parité par colonne : Cj
Parité globale : N
•  Détecte 2 ou tout nombre impair d erreurs
•  Corrige 1 erreur
–  Un des aij est faux : le recalcul de Pi et Cj donne l emplacement ij
–  Pi, Cj et N sont recalculés
•  Détecte si il y a 2 erreurs, mais ne permet pas de corriger
Rendement
•  Nombre de bits de message / Nombre de bits transmis
–  Parité : Rendement = 7/8 = 87.5 %
–  Parité long. & transv. : Rendement = 21/32 ≈ 65 %
82
III. Codes linéaires
•  Hypothèse sur V = vocabulaire source : corps
•  Code linéaire - caractérisation
•  Codage et décodage d un code linéaire
83
Généralisation : Code linéaire
•  Code correcteur (n,k): [x0,…,xk-1] " f([x0,…,xk-1])=[y0,…,yn-1]
•  f : fonction d un ensemble Vk vers un ensemble Vn
# Idée : si f est linéaire, alors les opérations de codage/décodage se font
en temps linéaire/taille de message
⇒ Rapide (proportionnel à la taille du message)
⇒ Il faut : Vk, Vn espaces vectoriels donc V un corps
$ Opérations modulo 2 (ex: parité) : V = Z/2Z est un corps !
$ On travaille en général avec V à 2, 28 ou 2256 éléments
⇒ Alors f linéaire correspond à une matrice G (génératrice) et f(m)=m G :
!%y0
y1  yn-1 "& = !%x 0
! g0;0
#
 xk-1 "& # 
#g
% k-1;0
g0;1




gk-1;1
g0;n-1 "
$
 $
gk-1;n-1 $&
84
Exemple : la parité
!%x 0
x1
x 2 (x 0 + x 1 + x 2mod2 )"& = !%x 0
x1
!1 0 0 1 "
x 2 "& ##0 1 0 1 $$
#%0 0 1 1 $&
Temps de calcul
$  Pour tout code linéaire C(n,k), il existe une matrice normalisée G
= [ Ik | T ] qui engendre le même code
⇒ 
1. 
2. 
3. 
4. 
[y0,y1,…,yn-1] = [x0,x1,…,xk-1,bk,…,bn-1]
Codage : y = x G (temps quadratique)
Décodage : x = premiers bits de y (immédiat)
Détection : Si H=[Tt|-In-k], alors z erroné ssi Hz ≠ 0 !!! (quadratique)
Correction : table précalculée des e de poids min. tels que He=Hz≠0 % y=z-e
est le mot correct le plus proche de z (temps constant)
85
Hypothèse sur le vocabulaire V du canal
•  V est muni d une structure de corps fini :
soient a,b ∈ V : e0, e1, a+b, -a, a*b, a/b ∈ V
•  Possible ssi |V| = pm avec p premier
Soit q = pm : V est alors isomorphe à GFq
–  Exemple: V= {0,1} ; V={mots de 32 bits}
•  Implantation
–  GFq isomorphe à (Z/pZ[x])/Q(x) avec Q polynôme irréductible de degré
m à coefficients dans Z/pZ
–  NB avec p= 2: facile à implanter avec des registres à décalage !
86
Code linéaire
•  V corps => Vn est un espace vectoriel
•  Définition : code linéaire ! sev de Vn de dim k
–  Si x=[x0, …, x n-1] ∈C, y=[y0, …, y n-1] ∈C
=> x+y =[x0+y0,…, x n-1+y n-1] ∈C
•  C est engendré par une matrice génératrice G
k lignes
•  C=Im(G)
G=
n colonnes
87
Exemple 1
•  V = {a=00, b=01, c=10, d=11}
•  Code (6,4) engendré par G
G=
01 10 11 10 11 00
10 11 10 00 01 10
10 01 11 10 11 10
01 10 11 11 10 01
88
Exemple 2: code de Hamming (7,4)
•  C est aussi un code linéaire sur V = {0,1}
1 1 1 0 0 0 0
engendré par G =
1 0 0 1 1 0 0
0 1 0 1 0 1 0
1 1 0 1 0 0 1
•  Remarque: il est équivalent aux codes de matrices génératrices
G =L.G.P avec L inversible et P permutation. Par exemple:
G’=
1
0
0
0
1
1
0
0
1
0
0
1
0
1
0
0
1
0
0
1
1
0
0
0
1
1
1
1
G’’=
1
0
1
0
1
0
0
0
1
0
0
1
0
1
0
0
1
0
0
1
1
0
0
0
1
1
1
1
89
Distance d un code linéaire
•  d = Min { dH( x , y) ; ∀ x,y ∈ C }
= Min { wH(x - y) ; ∀ x,y ∈ C }
= Min { wH( z ) ; ∀ z ∈ C }
•  Borne de Singleton : d ≤ n-k+1 = r+1
•  On peut donc corriger :
–  jusqu à (d-1)/2 erreurs quelconques
–  Jusqu à (d-1) erreurs localisées (effacements)
•  Code MDS:
–  distance maximale: atteint la borne de Singleton: d = r+1
90
Décodage d un code linéaire
•  Un code linéaire est équivalent à un code de matrice
génératrice G = [Idk | A ]
•  code( [s0, …, sk-1] ) = s.G =[c0,…, ck-1 , ck…, cn-1] où:
[c0…, ck-1] = [s0, …, sk-1]
et
[ck…, cn-1] = [s0, …, sk-1].A = [c0, …, ck-1].A
Intérêt: coût de codage : calcul de c=s.G => O(k.r) opérations
•  De plus: [ck…, cn-1].Idn-k - [c0, …, ck-1].A = [0]n-k
•  Soit (en transposant)
[-At | Idn-k ] . ct = 0, i.e. H .ct = 0
On a aussi: H.Gt = 0
•  Rem: d = nbre minimal de cols indép. de H
H = Matrice de contrôle de
dimension (n-k, n)
91
Détection d erreurs
•  On émet x et on reçoit y;
y est un mot de code !H.yt = 0
•  Syndrome d erreur : s = H .yt
s ≠ 0 => il y eu erreur de transmission
•  Exemple: matrice de contrôle du code de Hamming.
92
Correction d erreurs
• 
x = [x1 .. xn] émis ; y = [y1.. yn] reçu
•  Corriger y !trouver x tq x=y- e appartient au code avec e = vecteur de
correction (=erreur) de poids minimum
•  Or: s = H .yt = H.xt + H.et = H.et
Le syndrome donne toute l information pour corriger :
e = vecteur d erreur de poids minimal tel que H.et = s
•  Deux méthodes possibles :
–  Localisation des erreurs puis résolution du système linéaire H.et = s
–  Par tabulation de la correction e associé à chaque syndrome possible
•  on stocke dans un tableau Cor[s] := e pour chaque syndrome s
•  Ex: V= {0,1}, n=64 k=52 :
On peut recevoir un mot parmi 264 mots possibles, dont 264 - 252 mots erronés
mais seulement 212=4096 syndromes possibles !
donc table des corrections de taille 4096
93
Bons codes
•  Facile et efficace à implémenter
–  Codage et décodage (détection/correction) peu coûteux
–  logiciel et/ou matériel
•  Etant donné un taux de correction « t/n » donné,
pouvoir facilement construire un code (n,k,d) qui permet ce
taux de correction
•  Exemples:
–  codes de Hamming
–  Codes de Reed-Solomon (cas particulier de codes cycliques)
–  beaucoup utilisés (applications, turbo-codes, décodage en liste, …)
94
Code de Hamming
•  Définition / Théorème de caractérisation :
–  Les codes de Hamming sont 1-correcteurs et 1-parfaits
–  Tout code binaire linéaire 1-correcteur parfait est un code de Hamming.
95
Exemple: Code de Hamming
96
Code binaire 1-correcteur
•  Code binaire de longueur n:
–  Si il y a 0 ou 1 erreur de bits => n+1 possibilités
•  Au moins r = log2 (n+1) bits pour coder une erreur possible
•  Code de Hamming: code (2r-1, k=2r-r-1, d=3)
c1… cn défini par :
–  Si i ≠ 2j alors ci est un bit de source
–  Si i = 2j alors ci est un bit de contrôle de parité = somme des ck tel que k
écrit en binaire a un 1 en position j
–  Exemple code de Hamming (7,4)
•  Détection: si au moins un des bits de parité est erroné
•  Correction: on change le bit d’indice la somme des indices des bits
de parité erronés
97
Code de Hamming
•  Code 1-correcteur à nombre de bits ajoutés minimal, δ = 3
# Idée : ajouter un contrôle de parité pour chaque puissance de 2
% b1, b2, b4, b8, b16, etc.
⇒ Cela suffit pour localiser l erreur !
⇒ C(n, n--log2(n).-1 ) " rendement ≈ 1-log2(n)/n
b1 b2
!%x 0
x1
x2
!1
#1
x 3 "& #
#0
#
%1
1
0
1
1
b4
1
0
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0"
0 $$
0$
$
1&
⇒  rendements :
&  4/7 ≈ 57 %
& 11/15 ≈ 73 %
& 26/31 ≈ 84 %
98
…
Code de Hamming
•  Théorème:
–  Les codes de Hamming C(n, n--log2(n).-1 ) sont de distance 3 :
•  1-correcteurs
•  Tout mot reçu est corrigé avec 0 ou 1 erreur (code 1-parfait)
–  Tout code binaire linéaire 1-correcteur parfait est un code de Hamming.
•  Code de Hamming étendu C (n+1, n--log2(n).-1 )
–  Ajout d’un bit de parité = xor des n bits
–  Distance 4 (exercice) donc corrige 1 erreur et 1 effacement.
•  Rem.: code binaire étendu : obtenu par ajout d’un bit de parité:
C’ = {c1… cn cn+1 tq c1… cn ∈ C et c1+ …+ cn+1 =0 }
Propriété: Si d est impaire, alors C’ est de distance d’=d+1.
99
• 
Application: Code du minitel
•  Faible taux d erreur, mais paquets longs :
–  Code de Hamming + detection paquets
•  Source = suite de paquets de 15 octets = 120 bits
•  Auquel on ajoute 2 octets de redondance :
–  7 bits de redondance du code de Hamming (127,120,3)
–  1 bit de parité pour les 7 bits de contrôle (code étendu)
–  1 octet nul (ie 0x00)
•  Si erreur détectée ARQ (Automatic Repeat ReQuest)
•  Questions:
– 
– 
– 
– 
Quelles
Quelles
Quelles
Donner
sont les caractéristiques de ce codage et le rendement?
erreurs le code détecte-t-il ?
erreurs le code corrige-t-il ?
l’algorithme de codage et de décodage (envoyant le signal ARQ si nécessaire)
100
Exercice
•  Expliciter le code de Hamming de longueur 15,
le codage et le décodage.
101