Académique Documents
Professionnel Documents
Culture Documents
de l’information et du
Codage
Objectifs du Cours
• 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".
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 ?
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 ⎠
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 »
⎛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.
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})
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:
77
• Rappel :
Un code C est à décodage unique (déchiffrable) si
son codage associe est non ambigu
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.
• « 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)
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:
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:
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
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();
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