Académique Documents
Professionnel Documents
Culture Documents
TD corrigé de Codage
Rhouma Rhouma
Exercice 1
Soit une source décrite par la variable aléatoire X qui peut prendre 6 valeurs {A, B, C, D, E,
1 2 3 4 5 6
F} avec les probabilités , , , , ,
21 21 21 21 21 21
1°) Construire un code de Huffman binaire pour X. (le dessin de construction de codes)
2°) Tracer l’arbre du code finale (verticalement).
3°) Donner finalement les codes de chaque symbole de X.
4°) Calculer l’entropie H(X) de ce code.
5°) Calculer la longueur moyenne de ce code.
6°) Calculer l’efficacité de ce code.
7°) Calculer le rapport de compression entre le code de Huffman et le code ASCII (version 8
bits) pour cette exemple.
8°) Refaire le codage en appliquant le code de Fano-Shannon.
9°) Comparer les 2 codes (Huffman et Fano-Shannon) en terme d‘efficacité. En déduire le
code le plus performant des deux pour cet exemple.
Exercice 2
Soit une source décrite par la variable aléatoire X qui peut prendre 7 valeurs
1 2 3 4 5 6 7
X= {A, B, C, D, E, F, G} avec les probabilités , , , , , ,
28 28 28 28 28 28 28
1°) Construire un code de Huffman binaire pour X. (le dessin de construction de codes)
2°) Tracer l’arbre du code finale (verticalement).
3°) Donner finalement les codes de chaque symbole de X.
4°) Calculer l’entropie H(X) de ce code.
5°) Calculer la longueur moyenne de ce code.
6°) Calculer l’efficacité de ce code.
7°) Calculer le rapport de compression entre le code de Huffman et le code ASCII (version 8
bits) pour cette exemple.
8°) Refaire le codage en appliquant le code de Fano-Shannon.
9°) Comparer les 2 codes (Huffman et Fano-Shannon) en terme d‘efficacité. En déduire le
code le plus performant des deux pour cet exemple.
Exercice 3
Exercice 4
Soit le code cyclique de longueur 7 généré par le polynôme g(x) :
g(x) = 1 + x2 + x3
Exercice 5
Exercice 6
1°) Rappeler les propriétés d’un code cyclique systématique. Pour un tel code de type
(n,k) préciser le nombre de bits du message, le nombre de bits de contrôle et le nombre de bits
du mot de code généré. En appelant {ci} les bits du mot de code, {mj} les bits du message et
{bm} les bits de contrôle, indiquer clairement sur l’exemple d’un code (6,2) comment sont
générés les bits {ci}à partir des bits {mj} et {bm}. On précisera la place de ces bits dans le mot
de code ainsi que la position des poids faibles et des poids forts. Cette convention sera celle
que vous devrez utiliser dans toute la suite de l’exercice.
Exercice 7
1°) Un code de convolution est généré avec les trois polynômes :
• g1(X)= 1+X2
• g2(X)= 1+X
• g3(X)= 1+X+X2
l’entrelacement étant effectué dans l’ordre 1,2,3.
1.c Avec la convention [poids faible……poids fort] quel sera le mot de code
généré par cet encodeur pour un message [1011] ?
2.b Tracer l’arbre du code. Quel est le nombre d’états différents intervenant ?
3°) Décodage
3.b On reçoit le mot de code [111 110 110 010 011 101] ([premier bit
transmis………...dernier bit transmis]). Quel était le message émis ? Est-ce le mot de
code qu’on aurait dû réceptionner pour ce message ?
Exercice 8
On considère le code de Hamming (n,k) avec n=7 et k=4. La matrice de contrôle de parité
correspondante est :
1 0 0 1 0 1 1
H=0 1 0 1 1 1 0
0 0 1 0 1 1 1
Corrigé Exercice 1
1)
F 6 6 6 9 12 21
E 5 5 6 6 9
D 4 4 5 6
C 3 3 4
B 2 3
A 1
2)
F
D
E
C
B
A
3)
Longueur probabilité
Symbole Codage
nk pk
F 00 2 6 21
E 10 2 5 21
D 11 2 4 21
C 010 3 3 21
B 0110 4 2 21
A 0111 4 1 21
4) Entropie de la source:
1
H( X ) = ∑ p k log 2 ( ) = 2.3983 bits/ symbol
k pk
5) Longueur moyenne du code
R = ∑ n k p k = 2,4286 bits/ symbol
k
H(X )
6) Efficacité : η huffman = × 100 = 98.75%
R
R
7) Rapport de compression : × 100 = 30%
8
8)
F 6 0 0
E 5 0 1
D 4 1 0
C 3 1 1 0
B 2 1 1 1 0
A 1 1 1 1 1
MSB LSB
9) Les deux codes ont même taux d’efficacité puisqu’ils partagent les meme longeurs nk et les
H(X )
mêmes probabilités. η fano − shanon = × 100 = 98.75% = η huffman
R
Longueur probabilité
Symbole Codage
nk pk
F 00 2 6 21
E 01 2 5 21
D 10 2 4 21
C 110 3 3 21
B 1110 4 2 21
A 1111 4 1 21
Corrigé Exercice 2
1)
G 7 7 7 9 12 16 28
F 6 6 6 7 9 12
E 5 5 6 6 7
D 4 4 5 6
C 3 3 4
B 2 3
A 1
2)
G F
E D C
B A
3) probabilité
Longueur
Symbole Codage
nk pk
G 01 2 7 28
F 10 2 6 28
E 000 3 5 28
D 001 3 4 28
C 110 3 3 28
B 1110 4 2 28
A 1111 4 1 28
4) Entropie de la source:
1
H( X ) = ∑ p k log 2 ( ) = 2.61 bits/ symbol
k pk
5) Longueur moyenne du code
R = ∑ n k p k = 2,64 bits/ symbol
k
H(X )
6) Efficacité : η huffman = × 100 = 98.76%
R
R
7) Rapport de compression : × 100 = 33%
8
8)
G 7 0 0
F 6 0 1
E 5 1 0 0
D 4 1 0 1
C 3 1 1 0
B 2 1 1 1 0
A 1 1 1 1 1
MSB LSB
Longueur probabilité
Symbole Codage
nk pk
G 00 2 7 28
F 01 2 6 28
E 100 3 5 28
D 101 3 4 28
C 110 3 3 28
B 1110 4 2 28
A 1111 4 1 28
9) Les deux codes ont même taux d’efficacité puisqu’ils partagent les meme longeurs nk et les
H(X )
mêmes probabilités. η fano − shanon = × 100 = 98.75% = η huffman
R
Corrigé Exercice 3
1 0 0 1 0
H = 0 1 0 1 1
0 0 1 0 1
1) n =5 et k=2
2)
1 0 0
0 1 0
- m1 H = (11101) 0
T
0 1 ≠ (0 0 0) ⇒ donc m1 n’est pas un mot de code
1 1 0
0 1 1
1 0 0
0 1 0
- m 2 H T = (11010) 0 0 1 = (0 0 0) ⇒ donc m2 est un mot de code
1 1 0
0 1 1
1 1 0 1 0
3) G = (P I 2 ) =
0 1 1 0 1
4) Tous les mots de codes
mi Ci wi
00 00000 0
01 01101 3
10 11010 3
11 10111 4
Distance entre
C i et C j Valeur
d12 3
d 13 3
d14 4
d 23 4
d 24 3
d 34 3
Corrigé Exercice 4
g(x) = 1 + x2 + x3
1 0 1 1 0 0 0 ← L1
0 1 0 1 1 0 0 ← L2
2) G* =
0 0 1 0 1 1 0 ← L3
0 0 0 1 0 1 1 ← L4
L1 ← L1
L2 ← L1 + L2
L3 ← L3 + L2 + L1
L4 ← L4 + L3 + L2
On trouve la matrice systématique G :
1 0 1 1 0 0 0
1 1 1 0 1 0 0
G =
1 1 0 0 0 1 0
0 1 1 0 0 0 1
1 0 0 1 1 1 0
4) H = 0 1 0 0 1 1 1
0 0 1 1 1 0 1
1 0 0
0 1 0
0 0 1
5) C m ⋅ H T = (1 0 1 1 1 0 0 ) ⋅ 1 0 1 ≠ (0 0 0 )
1 1 1
1 1 0
0 1 1
On voit bien que g(x) divise x 7 + 1 , donc g(x) qui est de degré 3 peut être un polynôme
générateur d’un code (7,4)
7) Soit m=(1101)
m( x ) = 1 + x + x 3
m( x ) ⋅ x 3 = x 3 + x 4 + x 6
m( x) ⋅ x 3 / g ( x) donne :
x6 + x4 + x3 x3 + x 2 + 1
x6 + x5 + x3
x5 + x4 x3 + x2
x5 + x4 + x2
x 2 = r ( x)
D’où
C m ( x ) = m( x ) ⋅ x 3 + r ( x )
= x6 + x 4 + x3 + x 2
Finalement C m = (0011101)
8) Ym ( x) = x 5 + x 3
S m ( x) = Ym ( x) mod g ( x) ⇒
x5 + x3 x3 + x 2 + 1
x5 + x4 + x2 x2 + x
x4 + x3 + x2
x4 + x3 + x
x 2 + x = S m ( x)
Table de décodage :
Finalement m* = (1011)
Corrigé Exercice 5
1)
x6 +1 x2 + x +1
x6 + x5 + x4 x4 + x3 + x + 1
x5 + x4 + 1
x5 + x4 + x3
x3 + 1
x3 + x2 + x
x2 + x +1
0
On vérifie bien que x 2 + x + 1 divise x 6 + 1
2)
3)
1 1 1 0 0 0 ← L1
0 1 1 1 0 0 ← L2
G* =
0 0 1 1 1 0 ← L3
0 0 0 1 1 1 ← L4
4)
En effectuant les opérations suivantes sur les lignes de G*, on trouve une matrice
systématique G.
L1 ← L1 1 1 1 0 0 0
L2 ← L1 + L2 1 0 0 1 0 0
⇒ G =
L3 ← L3 + L2 0 1 0 0 1 0
L4 ← L4 + L3 + L1 1 1 0 0 0 1
5)
1 0 1 1 0 1
H =
0 1 1 0 1 1
6) d min = 2
Corrigé exercice 6
1) Question de cours.
2)
2.a) Pour un code (6,2), les messages possibles sont :
m1 ( x) = 0
m2 ( x) = 1
m3 ( x ) = x
m4 ( x) = 1 + x
2.b) on a la formule suivante :
X6+1 = (1+X2) (1+X+X2) (1+X+X2)
Deux polynômes générateurs sont des possibles candidats pour un code (6,2). Les polynômes
générateurs doivent être de degré 6 – 2=4.
g1 ( x) = (1 + x 2 ) ⋅ (1 + x + x 2 ) = 1 + x + x 3 + x 4
g 2 ( x) = (1 + x + x 2 ) ⋅ (1 + x + x 2 ) = 1 + x 2 + x 4
2.c)
Message m(x) Bits de contrôle r(x) Mot de code C m (x)
0 0 0
1 x +1
2
x + x2 + 1
4
x x3 + x x5 + x3 + x
1+x x3 + x2 + x + 1 x5 + x4 + x3 + x2 + x + 1
3)
3.a)
Le syndrome est la quantité avec laquelle le récepteur vérifie s’il y a eu des erreurs de
transmissions.
Le récepteur calcule le syndrome S m (x) à partir du mot de code reçu selon deux méthodes :
- Méthode 1 : S m ( x) = Ym ( x) mod g ( x)
Si le récepteur travaille avec la méthode 1 alors la table de décodage doit être remplie selon la
formule suivante : S m ( x) = E m ( x) mod g ( x)
Dans cet exercice, le code est (6,2) c'est-à-dire que le nombre des bits du syndrome est
6 – 2 = 4 bits.
3.b)
Si on reçoit le mot de code Ym = 010111 qui correspond au polynôme
Ym ( x) = x + x 3 + x 4 + x 5
⇒ Le syndrome se calcule par : S m ( x) = Ym ( x) mod g ( x) comme suit :
x5 + x4 + x3 + x x4 + x2 +1
x5 + x3 + x x +1
x4
x4 + x2 +1
x 2 + 1 = S m ( x)
3.c)
Ym1 = 111000 et Ym 2 = 010010
⇒ On constate qu’il ya un seul syndrome pour deux erreurs différentes. Ceci veut dire qu’il y
a des erreurs détectables et non-corrigeables.
Corrigé Exercice 7
1.a)
n=3
mi mi-1 mi-2 C(t)
m(t) q-1 q-1
1.b)
K= 3
Si le message est de longueur L alors la longueur du mot de code est : n*(L+K-1) =3 * (L + 2)
1.c)
m= [1011] ⇒ m( x) = 1 + x 2 + x 3
et on a : g1(x)= 1+x2
g2(x)= 1+x
g3(x)= 1+x+x2
C(1)(x) = g(1)(x).m(x) = 1 + x 3 + x 4 + x 5
C(2)(x) = g(2)(x).m(x) = 1 + x + x 2 + x 4
C(3)(x) = g(3)(x).m(x) = 1 + x + x 5
2)
2.a)
Combinaisons d'entrée [ g0(1) g1(1) g2(1) ] = [ 1 0 1 ] [ g0(2) g1(2) g2(2) ] = [ 1 1 0 ] [ g0(3) g1(3) g2(3) ] = [ 1 1 1]
[ mj mj-1 mj-2 ] Cj(1) Cj(2) Cj(3)
0 0 0 0 0 0
0 0 1 1 0 1
0 1 0 0 1 1
0 1 1 1 1 0
1 0 0 1 1 1
1 0 1 0 1 0
1 1 0 1 0 0
1 1 1 0 0 1
2.b)
K=3 ⇒ 2K-1 = 4 états internes. Les états sont repérés par des lettres : a → (00), b → (01), c → (10), d →
(11). L'état présent est constitué par les deux bits de droite de la combinaison d'entrée active et l'état suivant sera
caractérisé par les deux bits de gauche. La "sortie" correspondant au passage de l'un à l'autre est constituée de
l'indication des colonnes Cj(1) Cj(2) Cj(3).
a b c d
c c d d
1 111 010 100 001
2.c) Treillis
- Phase initiale
000 000
a a
111 111
b
011
100
101
111
b b
010
011
c c
110
100
001
d d
- phase finale
000 000
a a
101 101
011
c
110
d
2.d)
000
111
101
011
b
c
010
110
100
001
Codage : Corrigé TD - 13 - Dr R. Rhouma
ENIG 2010/2011 Université de Gabés
2.e)
3°) Décodage
3.a) Algorithme de viterbi. Voir cours
3.b)
Mot de code reçu est : code [111 110 110 010 011 101]
2
b
0
4
c
1
d
Phase centrale :
Phase finale
a 5
4
2
1
Survivants b
1 4
0
c
3 1
1
d
a 1
101
Survivants
b 111
1 010 011 1
0 110
c 100
1
1
d
Le mot de correct est donc 111 100 110 010 011 101
Le message correspondant est 1 1 0 1
Corrigé Exercice 8
1 0 0 1 0 1 1
H = 0 1 0 1 1 1 0
0 0 1 0 1 1 1
1)
1 1 0 1 0 0 0
0 1 1 0 1 0 0
G=
1 1 1 0 0 1 0
1 0 1 0 0 0 1
2)
{{wi } = 3
D’après le tableau ci-dessus, d min = min
wi ≠ 0
d − 1
⇒ eC = E min =1
2
Le nombre des erreurs corrigeables est 1.
3)
CH T = 0
4) les erreurs doubles et triples et plus vont passer inaperçues parce que le pouvoir
détecteur ne dépasse pas les erreurs simples.
Preuve :
Le syndrome est codé sur 3 bits donc il ya 2 3 possibilités qu’on peut dédier aux différents
type d’erreurs.
On a le cas de « pas d’erreur’ S m = 000
Et avec Les 7 cas d’erreurs simples, les codes des syndromes ont été totalement exploités
et ne reste aucune possibilité pour coder les erreurs doubles ou plus. Donc ils devront
passer inaperçues pour le récepteur.