cours n° 7 - efreidoc.frefreidoc.fr/l2 - pl2/entropie/cours/2012-13.cours... · codage avec mots...
TRANSCRIPT
Caractérisation d’un codage
Efficacité d’un codage Codage par blocs et extension de la source
1er Théorème de Shannon Codage par plages
Codage de Shannon-Fano Codage de Huffman
1
Cours n° 7
Problème pratique: les limites théoriques de systèmes de communication
Transformation des symboles émis par la source en éléments transmissibles par le canal de la façon la plus appropriée
Source
𝑆1, 𝑆2…𝑆𝑁
Canal idéal
𝐶 = 𝑐1, 𝑐2…𝑐𝑀
Codeur Source
𝑆 → 𝐶
Résoudre le problème avec des techniques de codage
Le codeur de source traduit chaque symbole de la source en une séquence de codes
transmissibles par le canal
2
Le but du codeur est de faire correspondre à chaque élément de 𝑆 (symboles émis par la source) en un séquence d’éléments de 𝐶 appelés mots-codes
Exemple :
Probabilités Code A Code B Code C Code D Code E Code F
𝒔𝟏 0,4 0 00 0 0 0 0
𝒔𝟐 0,3 1 01 10 01 10 10
𝒔𝟑 0,2 1 10 11 011 110 110
𝒔𝟒 0,1 0 11 110 0111 1110 111
𝑯 = 𝟏, 𝟖𝟒 𝑳 = 𝟏 𝑳 = 𝟐 𝑳 = 𝟏, 𝟕 𝑳 = 𝟐 𝑳 = 𝟐 𝑳 = 𝟏, 𝟗
Différents exemple de codes pour une source de 4 symboles (𝑁 = 4) et un canal binaire (𝑀 = 2)
3
Code irréversible ou singulier :
Comme exemple on prendra le Code A (tous les autres sont réversibles ou non singuliers)
Code A
0
1
1
0
Code C
0
10
11
110
Le code A ne permet pas de déchiffrer sans ambiguïté le message émis puisque deux symboles par exemple, 𝑠2, 𝑠3 partagent le même code 1
Son utilisation peut être envisagé si la distorsion qui en résulte minimise un critère de fidélité défini par l’utilisateur.
Ce type de codage est appelé codage avec perte ou codage intelligent (signaux de
parole, séquences vidéo avec un faible débit) 4
Code de longueur fixe :
Comme exemple on prendra le Code B (tous les suivants sont de longueur variable)
Code B
00
01
10
11
Code D
0
01
011
0111
Avec le code B tous les mot-codes sont de même longueur. On notera 𝐿 la longueur moyenne des mots-codes : le nombre moyen d’éléments de 𝐶 utilisés pour transmettre un symbole de 𝑆
𝐿 = 𝐸 𝑙𝑘 = 𝑝𝑘 𝑙𝑘
𝑁
𝑘=1
𝑙𝑘 = longueur du mot code du symbole 𝑠𝑘 émis avec probabilité 𝑝𝑘
Ce code manque d’efficacité car il attribue
aux symboles très fréquents et aux symboles
très rares de codes de même logeur
5
Code à décodage unique:
Le code C ne permet pas un décodage sans ambiguïté, puisque la séquence 𝑠3, 𝑠1 conduit
au même code que le symbole 𝑠4.
Code D Code E Code F
0 0 0
01 10 10
011 110 110
0111 1110 111
Code C
0
10
11
110
Ces codes sont dits à décodage unique, c’est-à-dire toute extension de ces codes
est réversible (sans ambiguïté)
mot-code symbole unique
6
Code instantané:
Code E Code F
0 0
10 10
110 110
1110 111
Code D
0
01
011
0111
Codes instantanés: Le décodage d’un mot est possible de la fin de sa réception, sans
devoir attendre la répétition du code suivant (pour lequel aucun mot−code n’est préfixé
d’un autre mot−code)
On détermine alors les mots-codes à mesure que l'on reçoit les lettres de l'alphabet du code
De cette façon, on évite qu’un mot du code soit identique au début
d’un autre mot 7
Code avec séparateurs :
Code D Code E
0 0
01 10
011 110
0111 1110
On consacre un symbole de l’alphabet de destination comme séparateur de mot
Le symbole « 0 » permet la distinction de mots-codes de la
même façon qu’un espace sépare le mots d’un texte
8
Conclusions :
o Parmi tous les codes réversibles à décodage unique, ceux qui sont également instantanées sont les plus recherchés
o Si on pouvait disposer d’un système d’écriture ayant cette propriété les espaces seraient alors inutiles pour séparer le mots.
o Une condition nécessaire et suffisante pour qu’un code soit instantané est
qu’aucune mot-code ne soit le préfixe d’autre mot-code
Code à décodage
unique
Code instantané
Tous codes confondus
Codes réversibles
9
Un codage binaire peut être représenté de manière graphique par un arbre. Les arbres sont aussi des représentations commodes pour écrire les algorithmes de
codage et de décodage.
Règles:
o Un déplacement à gauche correspond à un "0"
o Un déplacement à droite correspond à un "1"
o Chaque déplacement crée un nœud de l'arbre
o Chaque nœud à un père (vers le haut) et peut avoir deux fils (vers le bas)
o Le lien entre deux nœuds est une branche
o Un nœud qui n'a pas de fils est une feuille et la feuille doit être le code.
10
Exemple:
Codage n°1 Codage n°2 Codage n°3
11
o Elle cherche à répondre à la question de la condition d'existence d'un code préfixé.
o Un code préfixé se fabrique à partir d'un arbre de codage et sa condition d'obtention est que les codes soient des feuilles de l'arbre.
o On se propose de construire des codes déchiffrables, et plus particulièrement instantanés, aussi économiques que possible. L’inégalité de Kraft fournit une condition nécessaire et suffisante d’existence de codes instantanés.
L’arbre des codes peut illustrer le raisonnement conduisant à l'inégalité de Kraft :
2𝑙−𝑙𝑘
𝑙𝑘
𝑙 𝐶𝑘
12
Nous construisons un arbre binaire de hauteur 𝑙 • le nombre de codes possibles (nombre de
feuilles finales possibles) est de 𝟐𝒍
A la hauteur 𝑙𝑘, nous décidons d'attribuer ce nœud à un code 𝐶𝑘 ⇒ Ce nœud devient une feuille de l'arbre du code et, pour obtenir un code préfixe, cela interdit tous les
nœuds qui peuvent s'en déduire. Le nombre de nœuds interdits est de 𝟐𝒍−𝒍𝒌
Si l'alphabet à coder contient 𝐾 symboles auxquels sont attribués des codes de longueur variable {𝑙𝑘}, le nombre total de feuilles interdites sera :
2𝑙−𝑙𝑘
𝐾
𝑖=1
2𝑙−𝑙𝑘
𝑙𝑘
𝑙 𝐶𝑘
13
Le nombre de feuilles interdites est inférieur ou égal au nombre de feuilles finales
En divisant chaque membre de la relation par 2𝑙, nous obtenons l'inégalité de Kraft :
2−𝑙𝑘
𝐾
𝑖=1
≤ 1
2−𝑙𝑘
𝐾
𝑖=1
≤ 2𝑙
𝑙𝑘 = 𝑙𝑜𝑛𝑔𝑢𝑒𝑢𝑟 mots-codes
2𝑙−𝑙𝑘
𝑙𝑘
𝑙 𝐶𝑘
14
L’inégalité de Kraft peut se généraliser au cas non binaire c'est-à-dire un codage avec 𝑴 symboles (en binaire 𝑀 = 2) :
Cas non binaire
𝑀−𝑙𝑘
𝐾
𝑖=1
≤ 1
Condition nécessaire et suffisante de l’existence d’un code instantané de 𝐾 symboles , utilisant de mot-codes de longueur 𝑙1, 𝑙2… . 𝑙𝐾 avec un code de 𝑀 éléments
15
Débit moyen d'information : Si 𝐾 est la taille de l'alphabet d'une source discrète 𝑋, celle-ci contient une quantité moyenne d'information par symbole qui est l'entropie 𝐻( 𝑋 ). Cette entropie admet une limite maximale:
𝐻( 𝑋 ) ≤ log ( 𝐾 )
Limite étant atteinte lorsqu'il y a équiprobabilité entre tous les symboles de l'alphabet de la source.
o Si la source émet ses symboles à une cadence régulière d'un symbole toute les 𝜏𝑠
secondes, 1
𝜏𝑠 est la vitesse d'émission de la source exprimée en symboles/seconde.
o Le débit moyen d'information sera naturellement caractérisé par:
𝑄 =𝐻 𝑋
𝜏𝑠
Exprimé en 𝑏𝑖𝑡𝑠/𝑠 (ou 𝑠ℎ𝑎𝑛𝑛𝑜𝑛/𝑠, 𝑑𝑖𝑡𝑠/𝑠, …..) 16
Codage avec mots de longueur fixe, efficacité : Exemple pour le cas d'un codage binaire
o Une manière simple de coder en binaire l'alphabet d'une source est d'attribuer à chaque symbole 𝐿 bits.
o Il y a donc 𝟐𝑳 codes possibles
o Nous avons la condition pour le nombre de codes possibles 2𝐿 ≥ 𝐾 , l'égalité étant possible lorsque le nombre 𝐾 de symboles de la source est une puissance de 2.
o Dans le cas contraire nous aurons : 2𝐿−1 < 𝐾 < 2𝐿
Cette dernière relation permet de déterminer le nombre 𝑳 de bits nécessaires au codage de l'alphabet d'une source de 𝑲 symboles:
𝐿 = 𝐼𝑛𝑡 log2(𝐾) + 1 17
Nous savons que :
𝐻( 𝑋 ) ≤ log2 ( 𝐾 )
𝐿 ≥ log2 ( 𝐾 )
𝐿 ≥ 𝐻( 𝑋 )
L'égalité a lieu lorsque tous les symboles de la source sont équiprobables et lorsque 𝐾 est une puissance de 2
𝐿 = 𝑛° 𝑑𝑒 𝑏𝑖𝑡𝑠 limite maximale de l’entropie
pour l’alphabet de 𝐾 symboles
o Un codage est dit d'autant plus efficace que le nombre de codes possibles inutilisés est faible.
o L'efficacité dépend aussi de la quantité d'information moyenne de la source.
o L'efficacité d'un codage sera ainsi définie par :
=𝐻 𝑋
𝐿
Exprimée en % 18
Exemple :
𝐾 = 24
log2(𝐾) = 4,585 𝐿 = 𝐼𝑛𝑡 log2(𝐾) + 1 = 5 2𝐿 = 25 = 32 → 2𝐿−1 < 𝐾 < 2𝐿
16 < 𝐾 < 32
Si tous les symboles sont équiprobables : 𝑝𝑖 =1
𝐾
𝐻 𝑋 = − 𝑝𝑖 log2 𝑝𝑖 =
𝐾=24
𝑖=1
log2 𝐾 𝑝𝑖
𝐾=24
𝑖=1
= 4,585
=𝐻 𝑋
𝐿=4,585
5= 91,7 %
→ 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑠𝑦𝑚𝑏𝑜𝑙𝑒𝑠 𝑑𝑒 𝑙′𝑎𝑙𝑝ℎ𝑎𝑏𝑒𝑡 𝑑𝑒 𝑙𝑎 𝑠𝑜𝑢𝑟𝑐𝑒
19
Pour améliorer l'efficacité du codage, on peut transmettre et donc coder les symboles non pas individuellement mais par blocs de 𝐽 symboles cette technique est appelée l'extension de la source
Avec { A , B } on peut faire avec 𝐽 = 2 les blocs { AA , AB , BA , BB }
Exemple :
À partir d'une source dite primaire nous fabriquons une source secondaire
Source primaire de 𝐾 symboles → extension → source secondaire de 𝐾𝐽 symboles
Si nous utilisons 𝐿𝑏𝑙𝑜𝑐 bits de codage par bloc:
𝐿𝑏𝑙𝑜𝑐 ≥ log2(𝐾𝐽) 𝐿𝑏𝑙𝑜𝑐 = 𝐼𝑛𝑡 𝐽 log2 𝐾 + 1
Le nombre de bits par symbole de la source primaire est :
𝐿 =𝐿𝑏𝑙𝑜𝑐
𝐽= 𝐼𝑛𝑡 log2 𝐾 +
1
𝐽
et
Remarque : 𝐿 n'est plus un entier ! 20
L'efficacité de codage de la source primaire est égale à :
𝑒𝑥𝑡𝑒𝑛𝑠𝑖𝑜𝑛 =𝐻 𝑋
𝐿=
𝐻 𝑋
𝐼𝑛𝑡 log2 𝐾 +1𝐽
Résultat à comparer à celui obtenue sans extension de source :
=𝐻 𝑋
𝐼𝑛𝑡 log2 𝐾 + 1
Que, à cause du terme 1
𝐽 en dénominateur vous avons 𝑒𝑥𝑡𝑒𝑛𝑠𝑖𝑜𝑛 >
o La technique d’extension de source peut ainsi améliorer l’efficacité du codage pour des mots de codes de longueur fixe.
o Du point de vue de la source étendue 𝐿 est le nombre de bits attribués à un des symboles
et l’efficacité du codage est égale (avec 𝐿 =𝐿𝑏𝑙𝑜𝑐
𝐽 ) :
𝑒𝑥𝑡𝑒𝑛𝑠𝑖𝑜𝑛 =𝐻 𝑋
𝐿=𝐽 𝐻 𝑋
𝐿𝑏𝑙𝑜𝑐 → 𝐻𝑒𝑥𝑡𝑒𝑛𝑠𝑖𝑜𝑛 = 𝐽 𝐻 𝑋
21
Exemple : 𝐾 = 24 𝑒𝑡 𝐽 = 3
Si tous les symboles sont équiprobables : 𝑝𝑖 =1
𝐾
𝐻 𝑋 = − 𝑝𝑖 log2 𝑝𝑖 =
𝐾=24
𝑖=1
log2 𝐾 𝑝𝑖
𝐾=24
𝑖=1
= 4,585
=𝐻 𝑋
𝐿=𝐽 𝐻 𝑋
𝐿𝑏𝑙𝑜𝑐=4,585
4,66= 98,25 %
𝐾𝐽 = 243 = 13824 → 𝑛° 𝑑𝑒 𝑠𝑦𝑚𝑏𝑜𝑙𝑒𝑠
𝐿𝑏𝑙𝑜𝑐 = 𝐼𝑛𝑡 𝐽 log2 𝐾 + 1 = 𝐼𝑛𝑡 log2(13824) + 1 = 13 + 1 = 14
𝐿 =𝐿𝑏𝑙𝑜𝑐𝐽= 4,666
22
→ 𝑛° 𝑠𝑦𝑚𝑏𝑜𝑙𝑒𝑠 𝑑𝑒 𝑙′𝑎𝑙𝑝ℎ𝑎𝑏𝑒𝑡 𝑑𝑒 𝑙𝑎 𝑠𝑜𝑢𝑟𝑐𝑒
→ 𝑛° 𝑑𝑒 𝑏𝑙𝑜𝑐𝑠 𝑒𝑥𝑡𝑒𝑛𝑠𝑖𝑜𝑛 𝐽 = 3
𝑎𝑚é𝑙𝑖𝑜𝑟𝑎𝑡𝑖𝑜𝑛 𝑑𝑒 𝑙′é𝑓𝑓𝑖𝑐𝑎𝑐𝑖𝑡é !
Le code optimal pour la source 𝑋, sur un alphabet de 𝐾 lettres, est de longueur moyenne 𝐿𝑋 tel que vérifie :
𝐻(𝑋) ≤ 𝐿𝑋 < 1 + 𝐻(𝑋)
En d’autres termes, l’obligation d’utiliser des longueurs entières nous fait perdre au plus une lettre en moyenne, par rapport à la borne absolue.
On est parfois contraint à cette perte. Par exemple, pour transmettre une variable 𝑋 il faut un bit par valeur, quelle que soit l’entropie de 𝑋. Peut-on faire mieux ? Oui, en regroupant les valeurs à émettre (ie., extension de la source)
Supposons que l’on transmet 𝑋1, . . . , 𝑋𝐾 , . . . à partir d’un code pour 𝑘 valeurs consécutives,
il vient :
𝐻 𝑋1, . . . , 𝑋𝑘 ≤ 𝐿𝑋𝑘 < 1 + 𝐻(𝑋1, . . . , 𝑋𝑘) 23
Comme 𝐻 𝑋1, . . . , 𝑋𝑘 = 𝑘 𝐻(𝑋)
𝐻 𝑋 ≤ 1
𝑘 𝐿𝑋𝑘<
1
𝑘 + 𝐻(𝑋)
Avec ce procédé, on a reparti la lettre perdue sur 𝑘 valeurs consécutives. On ne perd donc plus que 1/𝑘 lettre par valeur de 𝑋 émise.
Commentaires: • Le premier théorème de Shannon contient en fait deux résultats : 1) 𝐿𝑋 = 𝐻(𝑋) → 𝑙𝑖𝑚𝑖𝑡𝑒 𝑑𝑒 𝑙𝑎 𝑐𝑜𝑚𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛 𝑠𝑎𝑛𝑠 𝑝𝑒𝑟𝑡𝑒
2) 1
𝑘𝐿𝑋𝑘 = 𝐻(𝑋) + 1/𝑘 → 𝑜𝑛 𝑝𝑒𝑢𝑡 𝑎𝑡𝑡𝑒𝑖𝑛𝑑𝑟𝑒 𝑐𝑒𝑡𝑡𝑒 𝑙𝑖𝑚𝑖𝑡𝑒 (𝑘 = 𝑒𝑥𝑡𝑒𝑛𝑠𝑖𝑜𝑛)
24
La longueur moyenne d’un code réversible, instantané est bornée inférieurement par l’entropie de la source et peut s’en approcher d’aussi près que l’on veut.
Pour avoir un codage sans erreur, une source 𝑋 doit être codée en moyenne avec au moins 𝐻( 𝑋 ) bits et la redondance 𝑅 ne peut pas être inferieure a l’entropie :
𝑅 ≥ 𝐻( 𝑋 ) 𝑏𝑖𝑡𝑠
Conséquences :
La mesure de la redondance d’un codage est définie par :
ℛ𝑐𝑜𝑑𝑎𝑔𝑒 = 1 − = 1 −𝐻 𝑋
𝐿= 1 −
𝐽 𝐻 𝑋
𝐿𝑏𝑙𝑜𝑐
→ ℛ𝑐𝑜𝑑𝑎𝑔𝑒 permet d’apprécier quantitativement l’efficacité d’un code
Il est possible donc de réduire à une valeur arbitraire la redondance d’un code, mais il ne donne aucune indication sur la construction de ces codes, ni sur la complexité des algorithmes de codage/décodage
Pour une source secondaire de 𝐾𝐽 symboles
25
La théorie du codage s’aborde de deux manières différentes : o Purement combinatoire : on a des mots qu'on réécrit en d'autres mots, et on
s'intéresse à des propriétés combinatoires du code. Par exemple, la possibilité de retrouver le mot à partir de son codage (notion de déchiffrabilité)
o Probabiliste : on suppose que la source est un objet probabiliste qui émet des suites de symboles aléatoires, ce qui permet de s'intéresser à des propriétés ou à des grandeurs en moyenne ; c'est là qu'intervient fructueusement la notion d'entropie.
Notion de déchiffrabilité
Un code C est dit déchiffrable (ou uniquement déchiffrable, ou non ambigu) si :
∀ 𝑠 ∈ 𝑋, ∀ 𝑠′ ∈ 𝑋, 𝐶 𝑠 = 𝐶 𝑠′ 𝑠 = 𝑠′
Si un code est uniquement déchiffrable, il existe donc une fonction de décodage (fonction réciproque)
26
Notion de décodage
𝐷: 𝐶 𝑋 → 𝑋 𝑡𝑒𝑙𝑙𝑒 𝑞𝑢𝑒 𝐷 𝐶 𝑠 = 𝑠 ∀ 𝑠
En toute généralité, il n'est pas toujours facile de décider si un code est uniquement déchiffrable, ni, s'il l'est, de calculer la fonction de décodage.
Prouver qu'un code est ambigu est conceptuellement simple : il suffit d'exhiber deux mots distincts qui ont le même codage.
Pour prouver qu'un code est uniquement déchiffrable, c'est a priori plus compliqué: il faut exhiber la fonction de décodage et prouver qu'elle est correcte.
27
Exemples codages :
28
Exemples de décodages :
0
1 2
1 2
2
2
0
0
29
1
o Codage par plage o Code de Shannon−Fano o Code de Huffman o Codage de Lempel−Ziv
Compression de l’information
Codage de source sans distorsion :
30
Principe : Rassembler en paquets les signes 𝑠𝑖 (émis par une source 𝑆) qui se suivent et sont identiques Au lieu de coder chaque signe 𝑠𝑖 , coder des paires de nombres : (𝑝𝑙𝑎𝑔𝑒𝑖, 𝑣𝑎𝑙𝑒𝑢𝑟𝑖) où la plage représente le nombre de signes à valeur identique rassemblés
Ce type de codage n’est proprement une méthode de codage de source, mais plutôt une transformation préalable des symboles de la source
Il consiste à créer de nouveaux symboles pour désigner des séquences de symboles qui apparaissent fréquemment
31
Exemples :
010011000110100011001101010001011011
Il peut être intéressant de les transformer avant leur transmission en créant un nouveau symbole pour désigner 3 symboles « 0 » successifs et une autre pour désigner 2 symboles « 1 » successifs, en notant 𝑠1 = 0, 𝑠2 = 1, 𝑠3 = 000, 𝑠4 = 11, la séquence devient :
𝑠1𝑠2𝑠1𝑠1𝑠4𝑠3𝑠4𝑠1𝑠2𝑠3𝑠4𝑠1𝑠1𝑠4𝑠1𝑠2𝑠1𝑠2𝑠3𝑠2𝑠1𝑠4𝑠1𝑠4
Image a peu de niveaux de gris ou de couleurs :
10 10 10 17 18 18 31 31 31 31
3,10 1,17 2,18 4,31
32
o Ces groupements doivent être choisis arbitrairement, car il n’existe pas de méthode optimale de construction d’un codage par plages. o Ces transformation sont utilisées en particulier pour la transmission et le stockage
d’images
o Codage efficace seulement si les plages de signes sont suffisamment grandes
Exemple :
010000111000000001111110000011
La ligne d’une image noir et blanc de 30 colonnes :
Est efficacement transformée en :
𝑏1𝑛1𝑏4𝑛3𝑏8𝑛6𝑏5𝑛2
𝑏𝑖 = 𝑖 𝑝𝑖𝑥𝑒𝑙 𝑏𝑙𝑎𝑛𝑐𝑠 𝑠𝑢𝑐𝑐𝑒𝑠𝑠𝑖𝑓𝑠 𝑛𝑗 = 𝑗 𝑝𝑖𝑥𝑒𝑙 𝑛𝑜𝑖𝑟𝑠 𝑠𝑢𝑐𝑐𝑒𝑠𝑠𝑖𝑓𝑠 33
Cette méthode repose sur la maximisation de l’entropie à la sortie du codeur
Algorithme: 1) Ordonner les symboles de la source en probabilités décroissantes
2) Séparer les symboles en deux groupes de probabilités les plus proches possibles. 3) Le symbole du groupe supérieur sera "0" et celui du groupe inférieur "1"
4) Répéter cette opération à chaque sous-ensemble jusqu’à ce que chaque signe possède
un code distinct
Exemple : Transmission dans un canal binaire de l’extension de l’ordre 2 d’une source binaire dont les probabilités des symboles sont les suivantes :
0
1 0
1 0
1
1
1 1
𝑐1 = 0
𝑐2 = 1 0
𝑐3 = 1 1 0
𝑐4 = 1 1 1
𝑝1 = 0,49
𝑝2 = 0,21
𝑝4 = 0,09
𝑝3 = 0,21
Remarque : Cette procédure ne garantit pas qu’il n’existe pas une autre procédure conduisant à une valeur 𝐿 < 𝐿𝑆ℎ−𝐹𝑎𝑛𝑜
34
Symbole Probabilité 1- Ordonner les symboles de la source en probabilités décroissantes
2- Séparer les symboles en deux groupes de probabilités les plus proches possibles
0
1 0
1 0
1 0
1 0
1
1
1
1
1
1
1 1
1 1 1
𝑐1 = 0
𝑐2 = 1 0
𝑐3 = 1 1 0
𝑐4 = 1 1 1 0
𝑐5 = 1 1 1 10
𝑐6 = 1 1 1 1 1
3- Répéter cette opération à chaque sous-ensemble jusqu’à ce que chaque signe possède un code distinct
35
o Ordonner les symboles de la source dans l’ordre décroissante des probabilités.
Algorithme
o Attribuer aux M derniers pair de symboles les codes 𝑐1, 𝑐2… 𝑐𝑀 (ici binaire 0 ou 1)
o Remplacer ces M symboles par un nouveau symbole dont la probabilité est la somme des probabilités des M symboles remplacés et recommencer au premier point.
0,3
𝑝1 = 0,49
𝑝2 = 0,21
𝑝4 = 0,09
𝑝3 = 0,21
0,49
0,21 𝟏
𝟎
0,51
0,49 𝟏
𝟎 𝑐1 = 1
𝑐2 = 01
𝑐3 = 000
𝑐4 = 001
Exemple :
𝟏
𝟎
𝟎
𝟏
𝟎
𝟏
𝟎
𝟎
𝟏
𝟎
𝟎
𝟎
Codage instantané, réversible et compact (dont la longueur moyenne est la plus petite possible)
36
Code à décodage instantané compact : − répandu en raison de son gratuité et son efficacité − préconisé dans de normes de compression d’image (JPEG,MPEG) − efficacité meilleure si l’encodage est par blocs de signes avec la possibilité d’obtention
de 𝐿𝑚
𝑚
𝑏𝑖𝑡𝑠
𝑠𝑦𝑚𝑏𝑜𝑙𝑒< 1
− comparé au Code de Shannon−Fano, le gain en compression est parfois mineur devant l’augmentation de la complexité des algorithmes de codage/décodage .
37
Conclusions :
Exemple :
𝐶𝑜𝑑𝑎𝑔𝑒 0,1 →
𝐶𝑜𝑑𝑎𝑔𝑒 1,0 →
𝟎 1 𝟎
1
1
𝟎 0
𝟎 1
1
𝟎 0
1
𝟎
𝟎 0
𝟏 𝟎
𝟏 𝟎
𝟎
𝟏
𝟏
𝟎
𝟏 𝟎
𝟎
𝟏
𝟏
𝟏
𝟏
𝟏
38
Exemple :
𝟎 𝟏 𝟎
𝟏
𝟏 𝟎 𝟎
𝟎 𝟏
𝟏 𝟎 𝟎
1 0 0 0 𝟎
𝟏
𝟏 𝟎 𝟎
1 0 0 0
1 0 0 0 0 𝟎
𝟏
𝟏 𝟎 𝟎
1 0 0 0
1 0 0 0 0
1 0 0 0 0 0
= 1
= 01
= 001
= 0001
= 00000
= 00001
Code :
𝐻 𝑋 = 𝑝𝑘 log21
𝑝𝑘
𝑁=6
𝑘=1
= 0,50 + 0,47 + 0,36 + 0,29 + 0,24 + 0,21 = 2,10 𝑏𝑖𝑡𝑠/𝑠𝑦𝑚𝑏
𝐿 = 𝑙𝑘 𝑝𝑘
𝑁=6
𝑘=1
= 0,48 + 0,42 + 0,36 + 0,32 + 0,3 + 0,25 = 2,13 𝑏𝑖𝑡𝑠/𝑠𝑦𝑚𝑏𝑜𝑙𝑒
=𝐻 𝑋
𝐿=2,10
2,13= 98,5 %
39
Remarques : o L'efficacité peut être améliorée si on effectue au préalable une extension de source
c'est à dire une transmission par blocs.
o Si 𝑝𝑘 = 2−2𝑙𝑘 , on obtient une efficacité = 100%.
o Ce type de technique amélioré est aussi utilisé pour la compression de données
comme pour les algorithmes Lempel Ziv utilisés pour le compactage sur disque dur (Zip).
40