Vous êtes sur la page 1sur 131

Théorie

de l’information et du
Codage
Objectifs du Cours

Etude de la mesure de l’Information


selon les théories de Claude Shannon et
ses applications dans deux domaines :
- Détection et correction d’erreurs
- Compression de données
Sommaire
• Introduction, historique et principe de la THI (1)
• Principes des systèmes de communications (1)
• Mesures de la quantité d’information et Entropie (3)
• Codage de la source (discrète sans mémoire ) (5)
– Codes et Codage (codage optimale,prefixe , Huffman, 1ier
Théorème de Shanon)
– Redondance et compression (Lampel Ziv, Shannon,…)
• Codage du canal (Discret symétrique ) (5)
– Codage du canal
– Capacité d’un canal (2ième Théorème de Shanon)
– Correction et codes correcteurs (Représentation,
Hamming, Linéaire, Polynomiaux,…)
Ce dont on va parler dans ce cours . . .
• Notions mathématiques : entropie, information mutuelle
• Codage et décodage : codes, déchiffrabilité, efficacité
d'un code
• Transmission de l'information : comment transmettre
correctement une information en présence d'erreurs de
transmission
• Compression des données : essentiellement, compression
sans pertes (conservative)
• Le langage mathématique est celui de la théorie des
probabilités : variables aléatoires et processus discrets
(élémentaires)
Chapitre 1: Introduction, historique et
principes de la THI
Introduction

• La théorie de l’information donne des bases


formelles et quantitatives à la notion
d’information, de façon à ce que celle-ci
devienne techniquement utilisable dans un
certain nombre de disciplines qui traitent de
l’information.
• La théorie de l’information fournit
essentiellement des outils de modélisation et
d’analyse dans le domaine du traitement de
l’information.
• C’est une théorie probabiliste permettant de
quantifier le contenu moyen en information d'un
ensemble de messages, dont le codage
informatique satisfait une distribution statistique
précise.
• Elle fournit une mesure quantitative de la notion
d'information apportée par un message (ou une
observation).
• Dans un sens plus général, une théorie de
l'information est une théorie visant à
quantifier et qualifier la notion de contenu en
information présent dans un ensemble de
donnée.
Objectifs
Parmi les objectifs importantes de la THI, on peut citer :
• le codage de l'information,
• la mesure quantitative de redondance d'un texte,
• Evaluation et minimisation des coûts de
– Transmission
– Stockage (Compression)
• Contrôle des erreurs de transmission
– Détection
– Correction
• Cryptologie
– Cryptographie
– Cryptanalyse
Applications
• Informatique
– Compression, codage, cryptologie
– Reconnaissance des formes (I.A.)
• Physique
– Modèles quantiques
– Théorie des trous noirs et du « big bang »
• Biologie moléculaire
– A.D.N.
• Sociologie
– Communication
Applications
• Compression
- Code MORSE, - Huffman, - Lampel-Ziv, -RLE....

• Contrôle des erreurs de transmission


- Codes de parité, - Codes à répétition,-
Hamming, -Reed Solomon....

• Cryptologie
- Crypte de CÆSAR, - DES, - AES,- RSA.....
Relations…
Historique
• Cette théorie fut conçue par Claude E. Shannon
peu après la seconde guerre mondiale pour
répondre à certaines interrogations
fondamentales dans le domaine des techniques
de communication.
• Comme le suggère l’intitulé de l’article fondateur
de Shannon (The mathematical theory of
communication, 1948), cette théorie peut être
vue comme une discipline mathématique.
Historique
• L'information est un concept physique nouveau
qui a surgi dans un champ technologique.
• Le concept théorique d'information a été
introduit à partir de recherches théoriques sur
les systèmes de télécommunication.
• L'origine de ces recherches remonte aux études
entreprises dès la fin du 19e siècle, en physique
et en mathématique par Boltzmann, et Markov
sur la notion de probabilité d'un événement et
les possibilités de mesure de cette probabilité.
Historique
• Plus récemment, après la Seconde Guerre
mondiale, les contributions les plus importantes
sont dues à la collaboration des
mathématiciens (Von Numan, Turing,…) et des
ingénieurs des télécommunications (Shanon,…),
qui ont été amenés à envisager les propriétés
théoriques de tout système de signaux utilisé
par les êtres, vivants ou techniques, à des fins
de communication.
Historique
• Rudolf Clausius (1822-1888) : définit l'entropie comme
une mesure du désordre d'un système
• Ludwig Boltzmann (1844-1906) : l'entropie d'un état
macroscopique est proportionnelle au logarithme du
nombre d'états microscopiques correspondants
• Ronald Fisher (1890-1962) : utilise le mot information
dans un contexte mathématique
• Harry Nyquist (1889-1976) (bruit, fréquence
d'échantillonnage), Ralph Hartley (1888-1970)
• Claude Shannon (1916-2001), premiers théorèmes sur
l'information en théorie de la communication
Historique
• Les trois principales questions auxquelles elle
apporte une réponse sont les suivantes :
1. Quelle est la limite ultime en matière de
compression des données digitales réversible
(Codage d’une source de transmission);
2. Quel est le débit maximal de transmission fiable
de ce type d’information sur un canal bruité
(la capacité C d’un canal de transmission);
3. Sous quelles conditions un code de chiffrement
est-il sûr (Cryptologie)
• Cette théorie est née de préoccupations
technologiques pratiques.
• La société Bell cherche à transmettre les messages
de la façon à la fois la plus économique et la plus
fiable.
• Le cadre originel de la théorie est celui d'un
système de communications où un émetteur
transmet un message à un récepteur à travers un
canal donné.
• Émetteur et récepteur ont par hypothèse un
répertoire commun, un code qui contient les
catégories de signaux utilisables.
• Ainsi le message codé est transmis, de l'émetteur
au récepteur à travers le canal, sous forme de
signes ou signaux portés par de le Canal.
• Ainsi, le concept d'information a été l'objet
d'une théorie, appelée "théorie de
l'information".

• Elle a été élaborée plus spécialement par


Claude Shannon, ingénieur à la Compagnie des
Téléphones Bell et reste jusqu'à nos jours la
base du concept dit scientifique d'information.
• Dans sa conception originale, la théorie de
l'information s'est limitée à analyser les moyens
et les techniques de télécommunication pour
transmettre l'information le plus rapidement
possible et avec le maximum de sécurité.
• Elle s'est donc efforcée de développer des
méthodes susceptibles de minimiser la
probabilité d'erreur dans la reconnaissance du
message.
• Une notion fondamentale sera nécessaire pour
développer ces méthodes : la mesure de
l'information, au sens mathématique du terme.
Notion d’information
• Considérons le problème de la communication
entre une source et un récepteur : la source
émet un message que le récepteur lit.
Canal de transmission
Source Récepteur

Données Emises Données Reçus

• On voudrait quantifier l'« information » que


contient chaque message émis. Par exemple, il
est clair que si l'émetteur dit toujours la même
chose, la quantité d'information apportée par
une répétition supplémentaire est nulle.
Notion d’information
Le cas le plus simple est le suivant : le récepteur
attend une information de type oui/non, le oui et
le non étant a priori aussi vraisemblables l'un que
l'autre.
Lorsque la source transmet soit un oui soit un
non, on considère que le récepteur reçoit une
unité d'information (un bit). Autrement dit : une
unité d'information, c'est quand on a a priori un
ensemble de deux possibilités, et que l'une d'elles
se réalise.
Notion d’information :Exemple
Une information désigne, parmi un ensemble
d'événements, un ou plusieurs événements
possibles.
En théorie, l'information diminue l'incertitude. En
théorie de la décision, on considère même qu'il ne
faut appeler information que ce qui est susceptible
d'avoir un effet sur nos décisions.
En pratique, l'excès d'information, tel qu'il se
présente dans les systèmes de messagerie
électronique, peut aboutir à une saturation, et
empêcher la prise de décision.
Notion d’information :Exemple
Premier exemple
Soit une source pouvant produire des tensions
entières de 1 à 10 volts et un récepteur qui va
mesurer cette tension. Avant l'envoi du courant
électrique par la source, le récepteur n'a aucune
idée de la tension qui sera délivrée par la source. En
revanche, une fois le courant émis et réceptionné,
l'incertitude sur le courant émis diminue. La théorie
de l'information considère que le récepteur possède
une incertitude de 10 états
Notion d’information :Exemple
Second exemple
• Problème:
• Une bibliothèque possède un grand nombre:
§ d'ouvrages,
§ des revues,
§ des livres
§ et des dictionnaires.
• Nous cherchons un cours complet sur la théorie de
l'information.
Notion d’information :Exemple
• Tout d'abord, il est logique que nous ne
trouverons pas ce dossier dans des ouvrages d'arts
ou de littérature; nous venons donc d'obtenir une
information qui diminuera notre temps de
recherche.
• Il est précisé que nous voulions aussi un cours
complet, nous ne le trouverons donc ni dans une
revue, ni dans un dictionnaire.
• nous avons obtenu une information
supplémentaire (nous cherchons un livre), qui
réduira encore le temps de notre recherche.
Notion de quantité d’information
Problème
Considérons N boîtes numérotées de 1 à N.
• Un individu « A » a caché au hasard un objet dans
une de ces boîtes.
• Un individu « B » doit trouver le numéro de la boîte
où est caché l'objet.
• Pour cela, « B » a le droit de poser des questions à
l'individu « A »
• « A » doit répondre sans mentir par OUI ou NON.
• Mais chaque question posée représente un coût à
payer par l'individu « B » (par exemple un euro).
Notion de quantité d’information
• Un individu « C » sait dans quelle boîte est caché
l'objet. Il a la possibilité de vendre cette information à
l'individu « B ».
• « B » n'acceptera ce marché que si le prix de « C » est
inférieur ou égal au coût moyen que « B » devrait
dépenser pour trouver la boîte en posant des
questions à « A ».
• L'information détenue par « C » a donc un certain prix
qui représente: « la quantité d'information
représentée par la connaissance de la bonne boîte :
c'est le nombre moyen de questions à poser pour
identifier cette boîte ». Nous la noterons I.
Notion de quantité d’information
Exemple :
• Si N = 1, I = 0 : Il n'y a qu'une seule boîte. Aucune
question n'est nécessaire.
• Si N = 2, I = 1: On demande si la bonne boîte est la
boîte n°1. La réponse OUI ou NON détermine alors
sans ambiguïté quelle est la boîte cherchée.
• Si N = 4, I = 2: On demande si la boîte porte le n°1 ou
2. La réponse permet alors d'éliminer deux des boîtes
et il suffit d'une dernière question pour trouver quelle
est la bonne boîte parmi les deux restantes.
Notion de quantité d’information
• Si N = 2k, I = k : On écrit les numéros des boîtes en
base 2. Les numéros ont au plus k chiffres binaires, et
pour chacun des rangs de ces chiffres, on demande si
la boîte cherchée possède le chiffre 0 ou le chiffre 1.
• En k questions, on a déterminé tous les chiffres
binaires de la bonne boîte. Cela revient également à
poser k questions, chaque question ayant pour but de
diviser successivement le nombre de boîtes
considérées par 2 (méthode de dichotomie).
• On est donc amené à poser I = log2(N), mais cette
configuration ne se produit que dans le cas de N
événements équiprobables.
Notion de quantité d’information
• Supposons maintenant que les boîtes soient
colorées, et qu'il y ait n boîtes rouges.
• Supposons également que C sache que la boîte où
est caché l'objet est rouge. Quel est le prix de cette
information?
• Sans cette information, le prix à payer est log2(N).
Muni de cette information, le prix à payer n'est plus
que log2(n). Le prix de l'information « la boîte
cherchée est rouge » est donc :
• log2(N) − log2(n) = log2(N / n).
Notion de quantité d’information
• On définit ainsi la quantité d'information comme une
fonction croissante de N/n avec :
• N : le nombre d'évènements possibles
• n : le cardinal du sous-ensemble délimité par
l'information
• Afin de mesurer cette quantité d'information, on
pose :
I=log2(N/n)
• I est exprimé en bit (ou logon, unité introduite par
Shannon), ou bien en « Nat » si on utilise le
logarithme naturel à la place du logarithme de base 2.
Notion de quantité d’information
Supposons maintenant que les boîtes soient de diverses
couleurs :

n1 boîtes de couleur C1,


n2 boîtes de couleur C2,
...,
nk boîtes de couleurs Ck,

avec n1 + n2 + ... + nk = N.
Notion de quantité d’information
La personne « C » sait de quelle couleur est la boîte
recherchée.
Quel est le prix de cette information ?

L'information « la boîte est de couleur C1 » vaut


log (N/n1), et cette éventualité a une probabilité n1/N.
L'information « la boîte est de couleur C2 » vaut
log (N/n2), et cette éventualité a une probabilité n2/N...
……………,
……………,
L'information « la boîte est de couleur Ck » vaut
log (N/nk), et cette éventualité a une probabilité nk/N...
Notion de quantité d’information
Le prix moyen de l'information est donc:

(n1/N)log(N/n1)+ (n2/N)log(N/n2)+ ... + (nk/N)log(N/nk)

Plus généralement, si on considère k évènements


disjoints de probabilités respectives p1, p2, ..., pk avec :
p1 + p2 + ... + pk = 1, alors la quantité d'information
correspondant à cette distribution de probabilité est:
p1 log 1/p1 + ... + pk log 1/pk.

Cette quantité s'appelle « Entropie de la distribution de


probabilité »
Entropie d’information (Shanon)
L’entropie permet donc de mesurer la quantité
d'information moyenne d'un ensemble d'évènements
(en particulier de messages) et de mesurer son
incertitude. On la note H :
1
H = ∑ pi .Log 2 ( ) = -∑ pi .Log 2 (pi )
i∈I pi i∈I
ni
avec p i = la probabilité associée à l'apparition de
N
l'évènement i.
Entropie d’information (Shanon)

L'entropie de Shannon, est une fonction mathématique


qui, intuitivement, correspond à la quantité
d’information contenue ou délivrée par une source
d'information.
Cette source peut être un texte écrit dans une langue
donnée, un signal électrique ou encore un fichier
quelconque (collection d'octets).
Entropie d’information (Shanon)

Du point de vue d'un récepteur, plus la source émet


d'informations différentes, plus l'entropie (ou
incertitude sur ce que la source émet) est grande, et
vice versa.
Plus le récepteur reçoit d'information sur le message
transmis, plus l'entropie (incertitude) vis-à-vis de ce
message décroît, en lueur de ce gain d'information.
Entropie d’information (Shanon)
La définition de l'entropie d'une source selon Shannon
est telle que plus la source est redondante, moins elle
contient d'information.
En l'absence de contraintes particulières, l'entropie H
est maximale pour une source dont tous les symboles
sont équiprobables.

Dans le cas particulier d'un système de


télécommunication, l'entropie de la source
d'information (le transmetteur) indique l'incertitude du
récepteur par rapport à ce que la source va transmettre.
Entropie d’information :Exemple
Une source qui envoi toujours le même symbole, disons
la lettre « a », a une entropie nulle, c'est-à-dire
minimale (H=0).
En effet, un récepteur qui connait seulement les
statistiques de transmission de la source est assuré que
le prochain symbole sera un « a », sans jamais se
tromper.
Le récepteur n'a pas besoin de recevoir de signal pour
lever l'incertitude sur ce qui a été transmis par la source
car celle-ci n'engendre pas d'hasard.
Entropie d’information :Exemple
Par contre, si la source envoi un « a » la moitié du temps
et un « b » l'autre moitié, le récepteur est incertain de la
prochaine lettre à recevoir.
L'entropie de la source dans ce cas est donc non nulle
(positive) et représente quantitativement l'incertitude
qui règne sur l'information émanant de la source.

« Du point de vue du récepteur, l'entropie indique


la quantité d'information qu'il lui faut obtenir pour
lever complètement l'incertitude (ou le doute) sur
ce que la source a transmis »
Notion d’incertitude
• Pour Shannon, l'information présente un caractère
essentiellement aléatoire. Un événement aléatoire
est par définition incertain. Cette incertitude est prise
comme mesure de l'information.
• Une information sera donc uniquement définie par sa
probabilité (I = - log p). Donc l'information est la
mesure de l'incertitude calculée à partir de la
probabilité de l'événement.
Notion d’incertitude
• Shannon a donc confondu la notion d'information et
de mesure d'incertitude.
• Il faut remarquer que dans cette définition
l'information est bien synonyme de mesure
d'incertitude. Plus une information est incertaine, plus
elle est intéressante, et un événement certain ne
contient aucune information.
• En théorie de l'information de Shannon, il s'agit donc
de raisonner en probabilité et non en logique pure.
Notion d’incertitude : Exemple
• Considérons une urne contenant plusieurs boules de
différentes couleurs, dont on tire une boule au hasard.
• Si toutes les boules ont des couleurs différentes, alors
notre incertitude sur le résultat d'un tirage est
maximale. En particulier, si nous devions parier sur le
résultat d'un tirage, nous ne pourrions pas privilégier
un choix plutôt qu'un autre.
Notion d’incertitude : Exemple
• Par contre, si une certaine couleur est plus
représentée que les autres (par exemple si l'urne
contient davantage de boules rouges), alors notre
incertitude est légèrement réduite : la boule tirée a
plus de chances d'être rouge. Si nous devions
absolument parier sur le résultat d'un tirage, nous
miserions sur une boule rouge.
• Ainsi, révéler le résultat d'un tirage fournit en
moyenne davantage d'information dans le premier
cas que dans le second, parce que l'entropie du
"signal" (calculable à partir de la distribution
statistique) est plus élevée.
Notion d’incertitude : Exemple
• Prenons un autre exemple : considérons un texte en
français codé comme une chaîne de lettres, d'espaces
et de ponctuations (notre signal est donc une chaîne de
caractères).
• Comme la fréquence de certains caractères n'est pas
très importante (ex : 'w'), tandis que d'autres sont très
communs (ex : 'e'), la chaîne de caractères n'est pas si
aléatoire que ça.
• D'un autre côté, tant qu'on ne peut pas prédire quel est
le caractère suivant, d'une certaine manière, cette
chaîne est aléatoire, c’est ce que cherche à quantifier la
notion d'entropie de Shannon.
Incertitude <–> Quantité d’information

• L’incertitude est équivalente à la Quantité


d’information (Quantitativement)
• Soit x une source d’information alors :
I(X) : (=-log2(pxi))
-la quantité d’information de X si il’ est connue (A
posteriori)

- l’incertitude sur X si X est inconnue (A priori)


Entropie <-> Quantité d’information
• L’entropie et la valeur moyenne de la quantité
d’information observé sur la sortie d’une source
de données
• Formellement c’est l’espérance mathématique de
la quantité d’information :
H(X)=E(I(X))
Pour une source de données X (Var. Aléatoire)
Conclusion
• Théorie de l’information => Quantifier
l’information en fonction de la probabilité
d’apparition de chaque élément (levé l’incertitude)
• Calcule de l’entropie permet de connaitre la nature
de la source en vu de faire un meilleur codage
(compression)
• L’entropie permet aussi de connaitre la nature du
canal (meilleur transmission)
Maitriser la THIó Avoir une bonne maitrise de la
théorie de probabilité
Chapitre 2:
Canal de transmission
Canaux
• Pour modéliser un canal de transmission, il est
nécessaire de spécifier l’ensemble des entrées
et l’ensemble des sorties possibles.
• La cas le plus simple est celui du canal discret
sans mémoire:
L’entrée est une lettre prise dans un alphabet
fini A = {a1, . . . , an} et la sortie est une lettre
prise dans un alphabet fini B = {b1, . . . , bm} .
𝑎" ∈ 𝐴 𝑏" ∈ 𝐵
Canal de transmission

51
• Ces lettres sont émises en séquence, et, le canal
est sans mémoire si chaque lettre de la séquence
reçue ne dépend statistiquement que de la lettre
émise de même position.
• Ainsi un canal discret sans mémoire est
entièrement décrit par la donnée des probabilités
conditionnelles p(b|a) pour toutes les lettres a de
l’alphabet d’entrée et toutes les lettres b de
l’alphabet de sortie.

52
• Définition :
Un canal discret est défini par la donnée de:
– un alphabet d'entrée X = {a1,…. , an}
– Un alphabet de sortie Y={b1,…,bm}
– une loi de transition P(Y|X), i.e. une matrice
stochastique: b1, ……….………………… bm
⎛ P(b1 | a1 ) ...... P(bm | a1 ) ⎞ a.. 1
⎜ ⎟ ...
M =⎜ ! " ! ⎟ ....
⎜ P(b | a ) ...... P(b | a ) ⎟ ...an
⎝ 1 n m n ⎠

Si on a k symbole en entrée et l symbole en


sorite alors il sont liées par :
P(y1,….yl|x1,…..xk) modèle trop générale
53
• Pour simplifier, on définit le canal causal:
un canal est di causale si :
P(y1,….yl|x1,…..xk)= P(y1,….yl|x1,…..xl) avec l≤k
toute sortie est indépendante des entrées
futures

• Un canal discret causal est sans mémoire si pour


tout (x1,….xl) transmis (en entrée) et (y1,….yl) reçu,
on à : l

P(y1,….yl|x1,…..xl)=P(y1|x1)x…xP(yl|xl) = ∏ P(y i | x i )
i =1
un symbole reçu ne dépend que du symbole
transmis au même moment.
54
• Un canal est dit symétrique si sa matrice de
transitions est symétrique par rapport à sa
diagonale : P(ai|bj)=P(aj|bi) ∀ i,j.
• Dans la suit de ce cours, on étudiera plus
particulièrement les canaux discrets causales sans
mémoire symétriques définie par leurs matrice de
transitions symétriques, ayant un alphabet
d’entrée X = {a1,…. , an} et un alphabet de sortie
Y={b1,…,bm}.

55
Exemples de canal discret sans mémoire:
« le canal binaire symétrique »

• Le plus connu est le canal binaire symétrique


défini par X= Y = {0, 1} et dont les probabilités de
transition sont représentées dans la Figure.
56
• Dans ce modèle, la probabilité pour qu’un
symbole soit inchangé est 1 − p, où p est un réel
compris entre 0 et 1, et la probabilité pour qu’il
soit changé est p.
• Ce canal est entièrement décrit par sa matrice
de transitions :

⎛1 - p p ⎞
M = ⎜⎜ ⎟⎟
⎝ p 1- p ⎠

57
Exemples de canal discret sans mémoire:
« le canal à effacement »

⎛1 − p p 0 ⎞
M = ⎜⎜ ⎟⎟
⎝ 0 p 1- p ⎠
58
Exemples de canal discret sans mémoire:
« le canal en Z»

⎛1 0 ⎞
M = ⎜⎜ ⎟⎟
⎝ p 1− p⎠
59
• On peut également considérer des canaux
discrets à mémoire dans lesquels chaque lettre
de la séquence de sortie peut dépendre de
plusieurs lettres de la séquence d’entrée.

• Il existe une classe de modèles de canaux


appelés canaux continus, beaucoup plus
proches des canaux physiques.
• L’entrée et la sortie sont alors des fonctions
continues du temps. Pour les canaux de cette
classe, il est commode de séparer le codeur et
le décodeur en deux parties :
60
Schéma général d’un Canal Continu

La première partie du codeur, que nous appellerons


codeur de canal discret, transforme une séquence
binaire en une séquence de lettres d’un alphabet fini
A={a1,…,an}. La seconde partie du codeur: le modulateur
de données digitales, envoie pendant un temps τc sur le
canal une des fonctions de temps s1(t),…, sn(t). 61
• La durée τc est l’intervalle de temps séparant
l’émission de deux lettres par le codeur de canal
discret.
• L’ensemble de ces fonctions du temps mises bout à
bout est converti à la sortie du canal par le
démodulateur de données digitales en une séquence
de lettres d’un alphabet de sortie B = {b1,…, bm} au
rythme, là encore, d’une lettre toutes les τc secondes.

62
Capacité d’un canal
• Nous verrons que l’un des paramètres les plus
importants pour décrire un canal est sa capacité
que nous définirons plus tard.
• On peut montrer que l’on peut transmettre de
l’information à travers un canal à n’importe quel
taux de transmission inférieur à la capacité avec
une probabilité d’erreur arbitrairement faible.
• Le taux de transmission est le nombre de
symboles émis en entrée divisé par le nombre de
symboles reçus en sortie.
63
Conclusion
• Un système de communication est basé
principalement sur le modèle de la source et du
canal de transmission.
• La source est une variable aléatoire définie sur
un alphabet et munie d’une loi de probabilité,
notre but pour celle-ci est:
Assurée un meilleur codage de la source en terme
de représentation d’une longueur minimale
(codage de la source, compression ), on
s’intéresse d’avantage aux source discrètes sans
mémoire.

64
Conclusion
• Le canal est modéliser par une association
Entrées/Sorties définies sur deux alphabets X et Y
, et munie d’un loi de probabilité conditionnelle
spécifiée par une matrice stochastique de
transitions. Nous cherchons à assuré:
Une transmission avec le minimum d’erreurs
possibles sur un canal bruité, tout en mesurant la
capacité maximale de transmission de ce canal
qui le permet. (codes correcteurs et capacité de
canal)

65
Chapitre 3:
Codage de source
Introduction
• Une source d’information à été définie comme une
variable aléatoire A. Nous nous intéressons
maintenant à la suite des valeurs que peut émettre
cette source, que nous allons modéliser comme une
suite A1,A2, . . . ,An de variables aléatoires.
Pour simplifier, nous supposerons que les Ai sont
indépendantes (on dit alors que la source est sans
mémoire) et identiquement distribuées (i.i.d.) de loi
PA.
Les résultats de ce chapitre s’étendent néanmoins au
cas de sources avec mémoire, i.e. telles que les Ai
sont liées. 67
• L’objectif de ce chapitre est de coder efficacement
un message produit par A, c’est à dire une suite de
valeurs a1, . . . , an, afin de le transmettre sur un
canal sans bruit.
• Par « codage efficace », on entend que le train de
bits résultant du codage doit être le plus court
possible, en moyenne.
• Si le codage est destiné à de la transmission sur un
canal parfait, cela garantit une transmission rapide.
S’il est destiné à un stockage d’information, cela
garantit un encombrement mémoire minimal. On
parle alors de compression de données.
68
• Définition:
Un code (resp. codage) est dit non ambigu
(régulier) si deux lettres (resp. séquences de
lettres) distinctes sont codées par des mots
distincts.
• Un codage ambigu implique une perte
d'information. (Codage de Morse : introduction
d'un séparateur : trois blancs).
• Un code est à décodage unique (déchiffrable)
si son codage associe est non ambigu.

69
• Si un code est uniquement déchiffrable, il existe donc
une fonction de décodage (fonction réciproque)
D : C(A*)→ A*
telle que D(C(m)) = m pour tout m ∈A*.
• En toute généralité, il n'est pas toujours facile de
décider si un codage est uniquement déchiffrable, ni,
s'il l'est, de calculer la fonction de décodage.
• Prouver qu'un codage 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 plus compliqué : moralement, il faut trouver la
fonction « D » et prouver qu'elle est correcte
70
• Dans la pratique, on verra qu'il existe des conditions
suffisantes pour qu'un code soit uniquement
déchiffrable.
• Même si un code est non ambigu, il peut être difficile
de prendre une séquence codée en marche : c'est le
problème de la synchronisation, ou du formatage.
• Autre problème potentiel, le délai : nombre de
symboles de code qu'on peut avoir besoin
d'examiner au-delà de ceux qui codent une lettre,
avant de pouvoir décoder cette lettre.
• Exemple de C= {0, 01, 11} : déchiffrable, mais pour
décoder 011…..1 il faut connaître la parité du
nombre de 1 consécutifs avant d'être capable de
décoder la première lettre (délai non borné). 71
• Exemples :
Pour chaque code, donné par l'ensemble des mots
de code des symboles, dire s'il est ou non
uniquement déchiffrable.
• C1 = {0, 11, 101} déchiffrable
• C2 = {00, 01, 001} déchiffrable
• C3 = {0, 01, 10} ambigu : C(ac) = 010 = C(ba)
• C4 = {000, 001, 01, 1} déchiffrable
• C5 = {000100,100101,010101,111000} déchiffrable
et de longueur fixe,
• C6 = {0, 01, 11} déchiffrable, mais délai non borné

72
Notations : longueurs
• La longueur d'un mot m est le nombre de lettres (pas
forcément distinctes) qui le composent. On la note
ℓ(m), parfois |m|
• On note ℓa(m), ou |m|a , le nombre d'occurrences de
la lettre « a » dans le mot m.
• Pour définir un code de source pour l'alphabet A =
{a1,…,an} , on utilise la notation C = {M1,…,Mn}, ce qui
sous-entend C(ai) = Mi
• On a trivialement, pour toutn
mot m∈A*:
l (C (m)) = ∑ la (m) * l ( M i )
i
i =1
• longueur maximale d'un code : L = max(ℓ(Mi ))
• Trivialement :ℓ(C(m)) ≤ L*ℓ(m) 73
Code de longueur fixe
• Un code est dit de longueur fixe, si tout les mots
de codes associées aux symboles ont la même
longueur :
∀ai∈A: ℓ(C(ai))=L , avec L fixe
• Pour tout code non ambigu de longueur L d'une
source A de cardinal n, nous avons:
Log2(n) ≤ L
(dans le cas d’un alphabet de codage {0,1})

• L’efficacité d'un tel code est donnée par H(A)/ log2(n)


(qui vaut 1 si la loi de A est uniforme).
74
• Proposition : Pour toute source A de cardinal n, il
existe un code non ambigu de longueur L tel que
log2(n)≤ L < 1 + log2(n)
• Corollaire :
Pour tout source sans mémoire A, il existe un
codage non-ambigu C de longueur fixe, dont
l’efficacité est proche de H(A)/Log2(n).

75
• Exemple : Codage des Chiffres
Soit la source A = {0, 1,…., 9} munie de la loi de probabilité
uniforme. Le code de longueur fixe d'une telle source a
une longueur au moins 4. Par exemple:

L’efficacité de ce code est égale :H(X)/4 = log2(10)/4 = 0. 83


En les regroupant 3 par 3, on a un cardinal de 1000, qu'on
code sur 10 bits (210 = 1024).L'efficacité est donc :
log2(1000)/10= 0.9965
76
Codes de longueur Variable
Un code est dit de longueur variable si les longueurs
des mots de codes C(ai) ne sont pas tous identiques :
∃ai,aj ∈A : ℓ(C(ai)) ≠ ℓ(C(aj))
La longueur des mots varie en fonction de leur
fréquence d’apparition. Un mot sera d’autant plus long
que sa probabilité d’apparition sera petite.
La longueur moyenne d’un code à longueur variable est
donnée par :

L= ∑ P(a ).l (C(a ))


i i
a i ∈A

77
• Rappel :
Un code C est à décodage unique (déchiffrable) si
son codage associe est non ambigu

• Quel est la condition suffisante pour qu’un code C


soit déchiffrable ?

• Dans ce qui suit, on détermine les condition


d’existence d’un code déchiffrable, et ceux qui
permettent de trouver le code déchiffrable optimale
(de longue moyenne minimale )

78
Codes Préfixe
• Un mot m est un préfixe d'un mot m’, s'il existe un
mot w tel que m’ = mw.

• Pour prouvé qu’un code est déchiffrable il suffit de


vérifier qu’il est préfixe (condition suffisante mais pas
nécessaire ) : Préfixe ⇒uniquement déchiffrable
Uniquement déchiffrable ⇏ Préfixe
79
Arbres de codes Préfixe
• Pour tout code préfixe, il existe un arbre dont les mots
de codes sont les feuilles. Chaque branche représente
une lettre de l’alphabet. On choisit les mots codes tels
que leur chemin ne contienne pas celui d’un autre …

• On dira que le code est irréductible si les nœuds de


son arbre ont soit 0 soit 2 fils. On préférera les codes
irréductibles, car ils sont plus courts. 80
• Le but du codage de la source est de trouver un
codage Optimale :de longueur moyenne minimale
• En même temps, il faut que ce code soit déchiffrable
(codage non ambigu)
• Si le code est préfixe alors il est déchiffrable mais
l’inverse n’est pas toujours vrai, et pour assuré la
déchiffrabilité il est préférable que le code optimal
soit préfixe
• Donc: est ce qu’il est possible que pour une source A,
le codage déchiffrable optimale ne soit pas préfixe?
• La réponse est donnée par le théorème de Kraft et
Mac-Millan
81
Théorème de Kraft
• Soit un alphabet de source A de cardinalité n, et un
alphabet de codage C de cardinalité k.
• Théorème: (Kraft)
Il existe un code préfixe dont les « n » mots ont pour
longueur ℓ1, ℓ2, …. , ℓn si et seulement si:
n
− li
∑k
i =1
≤1
Tout code préfixe satisfait la condition de Kraft.

• Le théorème de Kraft nous caractérise les multi-ensembles


de longueurs qui sont les longueurs de codes préfixes.
82
Théorème de Mac-Millan
• Le théorème de Mac-Millan nous dit que ce sont
aussi exactement les multi-ensembles de longueurs
des codes uniquement déchiffrables qui
satisfaisants la condition de Kraft.
• Théorème: (Mac-Millan)
Il existe un code Uniquement déchiffrable dont les
« n » mots ont pour longueur ℓ1, ℓ2, …. , ℓn si et
seulement si: n
− li
∑k
i =1
≤1
Tout code uniquement déchiffrable satisfait la
condition de Kraft.
83
• La combinaison des deux théorèmes montre que
tout code uniquement déchiffrable peut se ramener
à un code préfix de même distribution de longueur.

• « C » uniquement déchiffrable
⇒ Le code « C » vérifie l’inégalité de Kraft (Mac-Millan)
⇒ il existe un code « C ’ » de même longueur de mots
codes qui est préfixe. (Kraft)

Donc pour chercher un code optimale il suffit de se


restreindre a la classe des codes préfixe.
(pour chaque code déchiffrable optimale il existe un
code préfixe de même longueur )
84
• Grace au théorème de Mac-Millan on est sûre qu’un
code préfixe optimale existe pour chaque source sans
mémoire.
• On préfère toujours les codes préfixe car il sont facile
à décodé, il suffit de suivre les sommet de l’arbre
correspondant depuis la racine (mot vide) jusqu’à la
feuille qui correspond à un symbole de l’alphabet A.
on revient à la racine chaque fois qu’un symbole est
décodé jusqu’à avoir décodé toute la séquence.

85
Rappels
Un codage va associer à chaque symbole un mot de code. Chaque
mot de code est constitué d’un ensemble de signes élémentaires,
encore appelés symboles de code, et est de longueur li
correspondant au nombre de signes élémentaires qui le décrivent.
La valence du codage est le nombre de symboles de code. La taille
d’un codage est le nombre de mots de code.
• Si tous les mots de code n’ont pas tous la même longueur, le
codage est de longueur variable.
• Le nombre de mots de code associés à un langage dont la
longueur est égale à p est alors noté Lp.
Une condition nécessaire pour qu’un codage de valence V (dont les
mots de code ont une longueur maximale n) soit complet et
intelligible est donnée par l’égalité de Kraft-McMillan :

86
Exercice:
Soit le langage (l’ensemble de ces symboles) représentant
les quatre symboles A, C, G, T. On considère le codage
suivant : A est représenté par le mot de code «0», C par
«01», G par «001», T par «101».
• Quels sont les symboles de code ? Quelle est la valence
du codage ?
• Quels sont les valeurs L1, L2, L3, L4 ? Est-ce un codage
intelligible, préfixe, vérifie t’il l’égalité de Kraft-
McMillan ?
• On considère maintenant tous les codes bivalents (de
valence 2) et de longueur maximale 3. Ecrire l’égalité de
Kraft-McMillan dans ce cas particulier.
• Résoudre cette équation (donner toutes les valeurs
possibles de L1, L2 et L3 vérifiant cette égalité).
87
Premier théorème de Shannon
• Ce théorème spécifie les bornes de la longueur
minimale d’un code déchiffrable préfixe pour une
source sans mémoire ainsi que l’efficacité
correspondante.
• Théorème : Soit A une source de cardinalité n et de
distribution P, et d’entropie H(A). Alors il existe un
code préfixe de longueur moyenne L, sur un alphabet
de cardinalité m tel que :

H(A) H(A)
≤L< +1
Log 2 (m) Log 2 (m)
88
Premier théorème de Shannon
• Dans le cas d’un alphabet de codage binaire ({0,1}),
l’inégalité devient :
H(A) ≤ L < H(A) + 1
• Le cas particulier d’égalité H(A)=L se produit quand
les probabilités des symboles sont des puissances de
deux : p(ai)=2-l(C(ai)) :distribution dyadique.
• Dans ce cas le code est appelé code complet.
• Puisque l’efficacité est donnée par H(A)/L, le
théorème indique que pour chaque source sans
mémoire il existe un code préfixe d’efficacité
arbitrairement proche de 1.
89
• Sur la base du premier théorème de Shannon,
plusieurs algorithmes de codage d’une source sans
mémoire ont été élaborés.
• Le but de chaque algorithme est de construire un
code préfixe optimale pour une source A sur la base
des probabilités des symboles.
• L’optimalité du code construit est garantie par le
premier théorème de Shannon.
• L’efficacité du codage et toujours proche de 1 (égale à
1 dans le cas idéale )
• Dans ce qui suit, on expose les algorithmes les plus
connues de codage optimale d’une source discrète
sans mémoire.
90
Codage de Shannon-Fano
• Le code de Shannon-Fano est le premier code à avoir
exploité la redondance d’une source:

1. Ranger les symboles de A par probabilités décroissantes.


2. Subdiviser les symboles en 2 groupes G0 et G1 de
probabilités voisines, sans modifier l’ordre dans lequel ils
ont été rangés en l’étape 1.
3. Chaque groupe Gi est subdivisé en 2 sous-groupes Gi0 et Gi1
de probabilités aussi voisines que possibles, une fois encore
sans modifier l’ordre des symboles.
4. La procédure s’arrête lorsque chaque sous-groupe est
constitué d’un unique élément. L’indice du groupe donne le
mot de code. 91
Codage de Shannon-Fano
• Exemple :
Soit A={a1,a2,a3,a4,a5} une source S.M avec P(a1)=0.35,
P(a2)=0.22, P(a3)=0.18, P(a4)=0.15, P(a5)=0.1:
Symbole P(ai) Étape 1 Étape 2 Étape 3 Code
a1 0.35 0 0 00
a2 0.22 0 1 01
a3 0.18 1 0 10
a4 0.15 1 1 0 110
a5 0.10 1 1 1 111
La longueur moyenne est L=2.25 à comparer avec
l’entropie H(A)=2.19.
92
Codage de Shannon-Fano
• L'approche du codage de Shannon-Fano est
descendante : l'algorithme part de l'ensemble des
symboles et divise cet ensemble récursivement
jusqu'à arriver à des parties ne contenant qu'un seul
symbole.
• L'inconvénient de cette approche est que, lorsqu'il
n'est pas possible de séparer un ensemble de
symboles en deux sous-ensembles de probabilités à
peu près égales (c'est-à-dire lorsque l'un des sous-
ensembles est beaucoup plus probable que l'autre),
les codes produits ne sont pas optimaux.
93
Codage de Huffman
• La méthode de Huffman est une méthode
ascendante pour la construction de l’arbre
d’affectation des codes (contrairement au code de
Shannon-Fao).
• L’arbre de Huffman est construit dans le sens
feuilles -> racine, chaque feuille représente un
symbole de l’alphabet de la source.
• Le code est construit ensuite à partir de l’arbre,
chaque symbole est codé par les symboles du chemin
qui le relie à la racine.
• L’élaboration de l’algorithme de Huffman est basé sur
un Lemme et un théorème. 94
Codage de Huffman
• Lemme de Huffman:
Pour toute source A, émettant les symboles a1,….,an
avec les probabilités P(a1),P(a2),….,P(an), il existe un
code binaire préfixe optimal de longueurs des mots
de codes ℓ1, ℓ2, …. , ℓn, vérifiant:
1. ℓ1≤ ℓ2 ≤ …. ≤ ℓn
2. ℓn-1 = ℓn
3. C(an-1) et C(an) ont un préfixe commun de longueur
n-1.

95
Codage de Huffman
• Théorème de Huffman
Soit A une source émettant les symboles a1,….,an avec
probabilités P(a1),…., P(an), et A’ une source émettant les
symboles a1,….,an-2,b avec probabilités P(a1),…., P(an-2),
P(b)=P(an-1)+P(an). Alors:
• Si C est un code optimal pour A, satisfaisant les
conditions du lemme de Huffman, le code C’ obtenu en
remplaçant les deux mots codant an-1 et an par leur
préfixe commun (qui code b) est optimal pour A’.
• Réciproquement, si C’ est un code optimal pour A’, le
code obtenu en remplaçant le mot C’(an-1) par ses deux
prolongements possibles, codant an-1 et an, est optimal
pour A. 96
Codage de Huffman
• En appliquant récursivement la partie directe du
théorème de Huffman (jusqu'à ne plus avoir qu'une
source à 2 symboles, codée optimalement avec
longueur 1), on construit (en partant des feuilles) un
arbre (binaire) de codes des symboles de la source.
• La partie réciproque du théorème nous assure
(encore récursivement) que, dans l'arbre obtenu, la
profondeur de chaque feuille (singleton) nous donne
la longueur de son codage dans un code optimal.
• Sur la base de ces deux principe, on construit
l’algorithme ascendant de Huffman:
97
Codage de Huffman
• La méthode de Huffman consiste à regrouper les deux
états les moins probables, puis à les traiter comme un
seul en sommant leur probabilité. Cette technique est
alors réitérée sur les états restants, jusqu’à ce qu’il n’en
reste que deux.
• On construit un arbre en partant des feuilles les plus
profondes, qui représentent les symboles de la source.
1. A chaque étape, on fusionne les feuilles les moins
probables en une seule.
2. La procédure s’arrête lorsque on aboutit à une feuille
unique constituée de tous les symboles.
3. Le parcours inverse de l’arbre fournit les mots du code.
98
Codage de Huffman
• Exemple: Soit A={a1,a2,a3,a4,a5} une source S.M avec
P(a1)=0.35,P(a2)=0.22,P(a3)=0.18,P(a4)=0.15, P(a5)=0.1:

• Finalement, le parcours inverse de l’arbre fournit le résultat


suivant : a1 → 00; a2 →10; a3 →11; a4 →010; a5 →011.
• On aboutit à L = 2.25, à comparer à H(S) = 2.19.
99
Codage de Huffman
• Exemple

100
Codage de Huffman
• Remarques
• Un code binaire de Huffman vérifie toujours l’égalité de
Kraft ; c'est également le cas de tout code optimal.
• Si, au cours de l'algorithme de Huffman, on a à un
certain moment des probabilités égales, il se peut que
la répartition des longueurs (profil de l'arbre) ne soit
pas unique.
• On appelle parfois codage de Huffman d'un texte, le
codage obtenu en prenant pour probabilités des
différentes lettres leurs fréquences relatives
d'apparition dans le texte.
101
Codage de Huffman
• Inconvénients
• Nécessité d'avoir/de faire au préalable des
statistiques sur les probabilités d'occurrence des
symboles de l'alphabet.
• On peut remédier a ce problème en utilisant un
algorithme de codage adaptatif qui calcule les
statiques a la volée et les affiné au fil du codage.
• Fonde sur un modèle de source discrète sans
mémoire ⇒ Intérêt de travailler sur des
regroupements de symboles de taille k assez
grande.
102
Codage de Huffman
• On peut montrer que le code de Huffman vérifie :
H(A) ≤ L < H(A) + 1
• Cette relation, qui montre que le codage de Huffman
s'approche effectivement de l'entropie de la source et
donc de l'optimum, peut s'avérer en fait assez peu
intéressante dans le cas où l'entropie de la source est
faible, et où un surcoût de 1 bit devient important.
• De plus le codage de Huffman impose d'utiliser un
nombre entier de bit pour un symbole source, ce qui
peut s'avérer peu efficace.

103
Codage de Huffman
• Une solution à ce problème est de travailler sur
des blocs de K symboles. On montre alors qu' on
peut s'approcher de façon plus fine de l'entropie:
1
H(A) ≤ L < H(A) +
K
mais le processus d'estimation des probabilités
devient plus complexe et coûteux.
• On peut conclure que même si le codage de
Huffman est très efficace, il n’est pas toujours le
meilleur, mais il est l’optimum des codes préfixe.
104
Codage de Huffman
• Le codage de Huffman ne se base que sur la fréquence
relative des symboles d'entrée (suites de bits) sans
distinction pour leur provenance (images, vidéos,
sons, etc.).
• C'est pourquoi il est en général utilisé au second étage de
compression, une fois la redondance propre au média
mise en évidence par d'autres algorithmes.
• On pense en particulier à la compression JPEG pour les
images, MPEG pour les vidéos et MP3 pour le son, qui
peuvent retirer les éléments superflus imperceptibles
pour les humains. On parle alors de compression avec
perte.
105
Codage de Huffman

• D'autres algorithmes de compression, dits sans


perte, tels que ceux utilisés pour la compression
de fichiers, utilisent également Huffman pour
comprimer le dictionnaire résultant. Par exemple,
LZH (Lha) et deflate (ZIP, gzip) combinent un
algorithme de compression par dictionnaire (LZ77)
et un codage entropique de Huffman

106
Codage Arithmétique
• Son principe est le codage d’une suite de symboles
par une séquence représentant une valeur
fractionnaire de l’intervalle réel [0,1], à travers une
procédure récursive encodant un signe à chaque
itération.
• Il est basé sur la réduction de la largeur de l’intervalle
réel en fonction de la probabilité du nouveau signe à
encoder ; la réduction est d’autant plus faible que le
symbole est probable.
• Nombre de bits de spécification inversement
proportionnel avec la probabilité.
107
Codage Arithmétique
• Ce qui différencie le codage arithmétique des autres
codages source est qu'il encode le message entièrement
et le représente par un seul nombre r (flottant) alors que
les autres codages séparent le message d'entrée en les
symboles qui le composent et encodent ensuite chaque
symbole par un mot code.
• Par contre à l’algorithme de Huffman, le nombre de bits
du code de chaque symbole n’est pas forcément entier !
• Le codage arithmétique est toujours meilleur que le
Codage de Huffman sauf si dans l'arbre de Huffman tous
les probabilités des symboles sont des puissances de 2.

108
Codage Arithmétique
• A chaque symbole de l’alphabet de la source on associe
un intervalle inclus dans [0,1]. La taille de l’intervalle est
proportionnelle à la probabilité du symbole .
ai∈A→[ri,ri+P(ai)[ , avec r0=0
• Un message à encoder est une chaîne de symboles, le
premier symbole détermine l’intervalle du code (la borne
inférieur est choisie).
• Cet intervalle est ensuite subdiviser en utilisent le même
principe (les probabilités) a chaque lecture d’un nouveau
symbole et on choisie le sous intervalle du symbole
suivant.
• Le code a la fin peut être n’importe quel valeur dans
l’intervalle finale. 109
Codage Arithmétique
• Après avoir associer à chaque symbole ai son
intervalle correspondant [ri,ri+P(ai)], l’algorithme
suivant permet de coder une chaîne de symboles :
Inf:=0;
Sup:=0;
Tans qu’il y’a un symbole « c » faire:
Sup:=inf+(Sup-inf)*BornSup[c];
inf:=inf+(Sup-inf)*BornInf[c];
c:=LireCarSuivant();

A la fin la valeur inf est le code du message , sa peut


aussi être n’importe quel valeur dans l’intervalle
[inf,Sup[. 110
Codage Arithmétique
Exemple:
Soit A={a, b, c, d} avec Prob. {0.2,0.5,0.2,0.1}
On associe donc les intervalles comme suite:
a→[0,0.2[
b →[0.2,0.5+0.2[=[0.2,0.7[
c →[0.7,0.7+0.2[=[0.7,0.9[
d →[0.9,0.9+0.1[=[0.9,1[
Ainsi pour coder « a » on peut utiliser 0, 0.1,0.12,0.1999.. Ou
n’importe quel valeur dans [0,0.2[.
La même chose pour b, c et d autant que symboles.
Pour coder maintenant un message on applique l’algorithme,
par exemple coder : « cbaabd » 111
Codage Arithmétique
Le premier symbole est « c » , on choisie l’intervalle [0.7,0.9[
Le symbole suivant est «b» donc le nouvel intervalle est:
[0.7+(0.9-0.7)*0.2 , 0.7+(0.9-0.7)*0.7 [=[0.74,0.84[
Le symbole suivant est « a » donc le nouvel intervalle est :
[0.74+(0.84-0.74)*0, 0.74+(0.84-0.74)*0.2 [=[0.74,0.76[
Symbole Borne Inf Borne Sup
c 0.7 0.9
b 0.74 0.84
a 0.74 0.76
a 0.74 0.744
b 0.7408 0.741
d 0.7426 O.7428

Le code de « cbaabd » est donc 0.7426 112


Codage Arithmétique

113
Codage Arithmétique
Le décodage se fait de la manière suivante :
r:=val;message:=‘’;
Répéter {si r∈[ri,ri+P(ai)[ alors message:=message+ai
r:=(r-ri)/P(ai)} Jusqu’à décodé tout le message;
En appliquant sur l’exemple on trouve :
r:= 0.7426 ∈[0.7,0.9[ →« c »
r:= (0.7426-0.7)/0.2= 0,213 ∈[0.2,0.7[ →« b »
r:= (0.213-0.2)/0.5= 0,026 ∈[0,0.2[ →« a »
r:= (0.026-0)/0.2= 0, 13 ∈[0,0.2[ →« a »
r:= (0.13-0)/0.2= 0,65 ∈[0.2,0.7[ →« b »
r:=(0.65-0.2)/0.5= 0,9 ∈[0.9,1[ →« d » →Fin
La taille du message doit être connue au préalable (sinon on peut
bouclé à l’infinie) 114
Codage Arithmétique
La valeur réelle obtenu est convertie en binaire avant le
stockage: 0.7426= 1110100000010 (13 bit=-log2(0.0002))
Ce qui donne un taux de 2.1 bit par symbole. Qui est très
proche de l’entropie du message 1.901.
La notion de longueur moyenne n’existe pas dans le codage
arithmétique, car chaque codage est dépanadant de la
taille du message à codé et de sont entropie.
Tans que la taille est grande, l’entropie du message converge
vers l’entropie de la source, le codage arithmétique est
plus performant pour les long messages, mais la précision
du calcule arithmétique pose quelque limites.

115
Codage Arithmétique
• En terme informatique on ne peut pas se permettre de
stocker des fractions non calculées, il y a donc des erreurs
au niveau des arrondis, mais ce type de codage va faire
les mêmes erreurs au décodage qu'à l'encodage et évite
donc cet écueil.
• Couvert par des brevets détenus par IBM, AT&T et
MITSUBISHI => utilisation soumise à la détention d’une
licence
• Utilisé pour la compression de données : programmes et
fichiers) et prévu pour la compression d’images (ex
:JPEG2000) à condition d’en détenir la licence.
• Ce codage et plus performant que celui de Huffman.
116
Codage de Lampel-Ziv
• A partir des années 70’s, les chercheures tendent à
remplacer l’algorithme de Huffman par des méthodes
adaptatifs plus performants.
• Une approche radicalement différente et prometteuse à
été introduite par Abraham Lempel et Jacob Ziv en 1977.
• Cette technique consiste actuellement en deux
algorithmes différents LZ77 et LZ78 , chacun avec
plusieurs variantes :
Variantes de LZ77 LZR LZSS LZB LZH
Variantes de LZ78 LZW LZC LZT LZMW LZJ LZFG

• Les Zip et le Winzip utilisent la variante LZH, tandis que


UNIX utilise LZW et LZC.
117
Codage de Lampel-Ziv
• Tout les variantes utilisent le même principe de base,
celui d’un dictionnaire dynamique.
• La différence réside dans la représentation du
dictionnaire et la sélection des préfixes.
• Un dictionnaire des mots préfixes est construit
dynamiquement à partir du texte (la source) à
compresser (coder). Chaque mot est ensuite remplacer
par sont index dans le dictionnaire.
• Lors de la décompression, le même dictionnaire est
reconstruit est les codes sont remplacer par leurs
préfixes correspondants.
• Ce principe est illustré dans ce qui suit sur la variante
LZ78 originale. 118
Lampel-Ziv: l’algorithme LZ78
• LZ78 insère des parties non chevauchées du messages
sous forme d’un symbole ou d’une chaine de caractères
dans le dictionnaire. Une partie du message est sous la
forme a1a2….an-1an, sont préfixe correspondant est
a1a2….an-1. Le dictionnaire ici est implémenter sous forme
d’une table indexé.
• LZ78 peut produire en sortie l’un des trois codes :
(0,Symbole) Si le symbole n’est pas dans le
dictionnaire
(Dictio-Préfix-index , Dernier- Si la chaîne de caractères (le
Symbole) préfixe) n’est pas dans le
dictionnaire
(Dictio-Préfix-index, ‘’) Si le dernier symbole ou la dernière
chaîne n’est pas dans le dictionnaire
119
Lampel-Ziv: l’algorithme LZ78
• L’algorithmes de compression se présente comme suite:
Dictionary ←[] ;
Prefix ←‘’ ;
Dictionary_Index ← 1;
While (Source n‘est pas vide)
{ Char ← Symbole_suivant(Source);
if (Prefix + Char existe dans le Dictionnaire) Prefix ← Prefix + Char ;
else { if (Prefix =‘’) Code_du_Prefix ← 0
else Code_du_Prefix ← Index _Dictionnaire(Prefix) ;
Output (Code_du_Prefix , Char) ;
Insérer_Dictionnaire(Dictionary_Index , Prefix + Char);
Dictionary_Index:= Dictionary_Index+1;
Prefix ← ‘’;
}
}
If (Prefix<>’’) {Code_du_Prefix ← Index _Dictionnaire(Prefix) ;
Output (Code_du_Prefix , ‘’ ) } 120
Lampel-Ziv: Exemple (1) LZ78
• Compresser la chaîne ABBCBCABABCAABCAAB :

• Le code en sortie: (0,A)(0,B)(2,C)(3,A)(2,A)(4,A)(6,B)


• Ceci n’est qu’une représentation, la manière de coder la
sortie sera discutée plus tard. 121
Lampel-Ziv: Exemple(2) LZ78
• Compresser la chaîne BABAABRRRA :

• Le code en sortie est :(0,B)(0,A)(1,A)(2,B)(0,R)(5,R)(2, )


122
Lampel-Ziv: Exemple(3) LZ78
• Compresser la chaîne AAAAAAAAA :

1. A ∉ Dictionnaire ⇒ insérer A et sortie (0,A)


2. A ∈ Dictionnaire
AA ∉ Dictionnaire ⇒ insérer AA et sortie (1,A)
3. A ∈ Dictionnaire
AA ∈ Dictionnaire
AAA ∉ Dictionnaire ⇒ insérer AAA et sortie (2,A)
4. A ∈ Dictionnaire
AA ∈ Dictionnaire
123
AAA ∈ Dictionnaire et fin de la chaîne ⇒ sortie (3,’’)
Lampel-Ziv: (bits transmises) LZ78
• Par exemple la chaîne : ABBCBCABABCAABCAAB
contient : Nombre de bites= 18*8=144 bits
• Supposez que les mots de codes sont indexé à partir de 1:
Mots de code (0, A) (0, B) (2, C) (3, A) (2, A) (4, A) (6, B)
Indexes 1 2 3 4 5 6 7
• Chaque mot de code est composé d’un symbole et d’un
nombre entier, le symbole est sur 8 bits, alors que le
nombre de bits n pour codé la partie nombre du code
d’indexe i est donnée par :
⎧1 si i = 1
n=⎨
⎩[Log2 (i)] si i > 1
• Car la valeur du nombre ne peut être que inférieur à celle
de l’index (i-1 au maximum) 124
Lampel-Ziv: (bits transmises) LZ78

Mots de code : (0, A),(0, B),(2, C),(3, A),(2, A),(4, A),(6, B)


Indexes 1 2 3 4 5 6 7
Nbr. de bits: (1+8) + (1+8) + (2+8) + (2+8) + (3+8) + (3+8) + (3+8)= 71 bit

• Le message compresser est :0A0B10C11A010A100A110B


en remplaçant chaque symbole par sa valeur 8 bits. 125
Lampel-Ziv: Décompression LZ78
• L’algorithme de décompression d’un code produits par
LZ78 est donné comme suite :
Dictionary ← [];
Dictionary_Index ← 1 ;
While (Il y’a des paires (Code, Symbole) dans le code compressé )
{ Code ← Code suivant dans le code compressé ;
Char ← Symbole correspondant à Code ;
if (Code= 0) String ← ‘’;
else String ← la chaîne d’index Code dans Dictionary;
Output (String + Char) ;
Insérer_Dictionnaire (Dictionary_Index , String + Char ) ;
Dictionary_Index:= Dictionary_Index+1;
}

• En entré : liste des couples (code, symbole); en sortie la


chaîne de caractères décompressée.
126
Lampel-Ziv:Décompression (Exemple 1)LZ78
• Décompression de: (0,A),(0,B),(2,C),(3,A),(2,A),(4,A),(6,B)

• Le résultat est : ABBCBCABABCAABCAAB


127
Lampel-Ziv:Décompression (Exemple 2)LZ78
• Décompression de: (0,B),(0,A),(1,A),(2,B),(0,R),(5,R),(2,’’)

• Le résultat est : BABAABRRRA


128
Lampel-Ziv:Décompression (Exemple 3)LZ78
• Décompression de: (0, A) (1, A) (2, A) (3,’’)

• Le résultat est : AAAAAAAAA


129
Codage de Lampel-Ziv
• Le problème majeure de l’approche Lampel-Ziv est la taille
du dictionnaire qui risque d’occuper trop de mémoire.
• Pour les gros fichiers, il ne faut pas saturer la mémoire avec
un trop gros dictionnaire. Une stratégie consiste à
recommencer à zéro quand on a lu un certain nombre de
caractères.
• Une autre consiste à recommencer à zéro quand le
dictionnaire atteint une certaine taille. Cette éventuelle
optimisation doit être prise en compte lors de la
décompression.
• L’idéal étant de maintenir l’espace mémoire utilisé par le
programme en dessous d’un certain seuil, 1 Mo par
exemple. 130
Codage de Lampel-Ziv et Entropie
• Soit X une source sans mémoire stationnaire. La valeur

Est appelée entropie par lettre de la source X.


• Théorème :
Pour toute source X stationnaire et ergodique le taux de
compression tend vers H(X) avec probabilité 1 quand la
taille de la séquence a compresser tend vers l'infini.

D’une façon informelle, nous pouvons dire qu’une source


est ergodique si sa caractérisation statistique peut être
déduite à partir de l’observation d’une de ses
réalisations.
131

Vous aimerez peut-être aussi