Académique Documents
Professionnel Documents
Culture Documents
théorie d’information
Codage de source
Rappel, entropies et schéma général de
communication
Notations et exemples
Codes préfixes – inégalité de Kraft
Codes optimaux
Théorème de Shannon
Codes de Fano et de Huffman
Codage arithmétique
Schéma général de communication
Exemple de sources :
Constante c1 : p1=1 et pi=0
Aléatoire : pi=1/n
Biaisée (exemple) : p1=1/2 et pi=1/(2(n-1))
Entropie et mesure de l’information
1
log 2
pi
1
H S pilog 2 pilog 2 pi
i pi k
Codage de source
Rappel, entropies et schéma général de
communication
Notations et exemples
Codes préfixes – inégalité de Kraft
Codes optimaux
Théorème de Shannon
Codes de Fano et de Huffman
Codage arithmétique
Notations
Un code de source C pour une V.A X est une fonction
C: X D*
n p rouge 2 p bleu 3
xX
Exemple 2:
– X = { 1,2,3,4 } , alphabet binaire (q=2) : { 0,1 }
– P(x=1) = ½, C(1) = 0
– P(x=2) = ¼, C(2) = 10
– P(x=3) = ? , C(3) = 110
– P(x=4) = ? , C(4) = 111
0.8 1 0.2 1 1
Une suite typique de 30 symboles de la source est codé ainsi :
L’encodeur produit 0,78 x 80 = 62,4 symboles par minute, encore trop haut
pour le canal
Exemple (suite)
On peut grouper les symboles de la source 3 par 3 pour arriver au
code suivant :
La longueur moyenne des mots code est 2,184 symboles par 3 lettres
de la source, donc 0,728 par lettre
L’encodeur produit donc 0,728 x 80 = 58,24 symboles par minute,
suffisant pour le canal
Exemple (suite)
Une suite typique de 30 symboles de la source est codée ainsi :
Cet encodeur doit disposer d’une mémoire et introduire un retard. Trois lettres
de la source doivent être mémorisées avant qu’un mot code soit émis.
Un mot code à 5 symboles est transmis plus lentement qu’un mot à un seul
symbole et aussi plus lentement que l’arrivée d’un groupe de 3 symboles de la
source primaire.
Codage de source
Rappel, entropies et schéma général de
communication
Notations et exemples
Codes préfixes – inégalité de Kraft
Codes optimaux
Théorème de Shannon
Codes de Fano et de Huffman
Codage arithmétique
Propriétés souhaitées des codes
non singulier (régulier): xi x j C xi C x j
– permet de décoder un symbole unique, mais pas une suite de
symboles
– pour décoder une suite, il faut introduire un symbole de ponctuation.
instantanément décodable:
– Chaque symbole C peut être décodé sans référence aux symboles
suivants
– Condition préfixe: aucun mot code n’est le préfixe d’un autre mot code
Condition de préfixe
C(xk), de longueur nk, peut s’écrire C(xk ) = (ck,1, ck,2 …, ck,nk), où ck,i
représente une lettre aj de l’alphabet q-aire du code (j {1,…,q} ).
K
nmax nk nmax
q
k 1
q
nmax
Et en divisant par q , on obtient bien l’inégalité de Kraft
K
nk
q k 1
1
Inégalité de Kraft
L’inégalité de Kraft constitue un résultat fondamental en
théorie des codes. Elle fournie en effet une condition
nécessaire et suffisante d’existence de codes déchiffrables et
instantanés, exprimée en fonction de la longueur des mots du
codes
1
En négligeant la contrainte de longueurs
entières et en assumant l’ égalité pour la logq
contrainte, on applique la méthode de p x q nx
Lagrange:
nx log q p x
Codes optimaux
Pour les codes optimaux, la longueur moyenne est
égale à l’entropie de la source:
nx log q p x
H X
n p x .nx p x log q p x H q X
x x logq
Exemple 2 (rappel) :
– X = { 1,2,3,4 } , alphabet binaire: { 0,1 }
– P(x=1) = ½, n1 = -log2(½) = 1 C(1) = 0
– P(x=2) = ¼, n2 = -log2(¼) = 2 C(2) = 10
– P(x=3) = ? , n3 = -log2(? ) = 3 C(3) = 110
– P(x=4) = ? , n4 = -log2(? ) = 3 C(4) = 111
n p x .n x 1.75 H X
x
Codage de source
Rappel, entropies et schéma général de
communication
Notations et exemples
Codes préfixes – inégalité de Kraft
Codes optimaux
Théorème de Shannon
Codes de Fano et de Huffman
Codage arithmétique
Théorème de Shannon
En pratique, on ne peut négliger la contrainte nx entier, et
il est donc souvent impossible d’atteindre l’optimum.
Cependant, on peut prouver qu’il est possible de s’en
approcher:
1
nx log q
p x
Ces longueurs permettent de construire un code préfixe, vu qu’elles
1 1
log q log q
px px
satisfont l’inégalité de Kraft q
x
q
x
Par ailleurs, on a
1 1
log q n x log q 1
p x p x
H q n H q 1
Preuve (suite)
Si cette borne supérieure n’est pas satisfaisante, on peut
l’améliorer en groupant les symboles L par L. On définit un nouveau
code C* pour coder les séquences (X1,X2…XL) avec des mots code
de longueur n*x qui satisfont
H q X 1 , X 2 , , X L n * H q X 1 , X 2 , , X L 1
L.H q X L.n L.H q X 1
1
H q X n H q X
L
Exemple 3 (rappel):
– X = { A,B } , p(A)=0.2 , p(B)=0.8 , H(X)=0.72
– 1 symbole à la fois: H(X) = 0.72 ; n = 1 < 1.72 = H(X) + 1
– 2 symboles à la fois: H(X) = 0.72 ; n = 0.78 < 1.22 = H(X) + 1/2
– 3 symboles à la fois: H(X) = 0.72 ; n = 0.728 < 1.05 = H(X) + 1/3
Codage à longueur variable
Associer à chaque symbole Si(i=1,…,Q) de la source un mot de
code q-aire, c’est-à-dire une suite mi de ni symboles de
l’alphabet de destination q-aire.
Exemple :
– source avec 8 symboles A, B, …, H
– P(A) = 0,1, P(B) = 0,18, P(C) = 0,4, P(D) = 0,05, P(E) = 0,06,
P(F) = 0,1,P(G) = 0,07 et P(H) = 0,04.
– L’entropie de cette source sans mémoire est H= 2,55 bits par
symbole
Exemple :
Code plus efficace que le code de Fano, décrit ici pour le cas
binaire mais généralisable à d’autres alphabets
Algorithme :
– Ordonner les symboles de la source dans l’ordre des probabilités
– Isoler les deux symboles les moins probables et les distinguer avec
0 et 1
– Regrouper ces deux symboles en un seul nouveau en additionnant
leurs probabilités
– Recommencer jusqu’à ce que touts les symboles soient regroupés
p x
D p q p x .log
x q x
Problèmes restants
Que reste-t-il à faire ?
Points positifs
– Bornes théoriques
– Algorithmes pratiques
– Code “optimaux”
Points négatifs
– Influence entre symboles successifs ignorée
– Inefficace si p(x) est fort différente de q-nx avec nx entier
– Complexe si on doit grouper les symboles par grands
groupes de taille L
– Inefficace si p(x) est mal estimée
Ordre d’une source
En réalité, on a en général
p x1 x2 xL p x1 . p x2 x1 p xL x1 x2 xL 1
H X 1 X 2 X L H X 1 H X 2 X 1 H X L X 1 , X 2 , , X L 1
Source de Markov
En pratique, on considère des processus avec une mémoire limitée. Un
processus de Markov d’ordre 1 se définit par
p xn xn 1 xn 2 x1 pxn xn 1
Et donc,
p x1 x2 xL p x1 . p x2 x1 . p x3 x2 p xL xL 1
De plus, ce processus est dit invariant si ces probabilités conditionnelles
ne dépendent pas de n
Si {Xi} est une chaîne de Markov, Xn est appelé l’état au temps n.
Une chaîne de Markov invariante est entièrement caractérisée par son état
initial et par sa matrice de probabilités de transition
pij pxn 1 j xn i
Source de Markov
On peut calculer la distribution de probabilité à un instant à partir de
celle à l’instant précédent via
p xn 1 p xn
Exemple :
p0
1-
P
1
p1
Source de Markov
H X p xn p xn 1 xn log 2 p xn 1 xn
xn xn1
Exemple
Si la chaine est donnée par une matrice de transitions P
P 1/ 4 3/ 4
3/ 4 1/ 4
La distribution stationnaire est [1/2 1/2] et
1 1 1 3 3 1 3 3 1 1
H X n1 / X n log 2 log 2 log 2 log 2
2 4 4 4 4 2 4 4 4 4
3 3
Taux d' entropie H X n 1 / X n log4 log
2 4
Exercice 1
1
nx log
px
On choisit 1
nx log 1
px
1 px
F x F x nx n x
2 2
Ce code a une longueur moyenne de
1
n p x nx p x log
1 H X 2
x x p x
Exemple
Source X = {1,2,3,4}, probabilités ¼,½,? ,?
x L x1 x2 xL x L 1 xL
On code F(xL) avec une précision
1
nx L log L
1
px
Pour cela, il faut être capable de calculer efficacement p(xL) et F(xL).
On le fait de manière itérative. Pour p(xL), on a
p x L p x L 1 p xL symboles indépendants
p x p x p x
L L 1
L xL 1 Markov de mémoire 1
Codage arithmétique
Pour le calcul de F(xL), on suppose connu p(xL-1), p(xL), et
1
F x L 1
p b p x L 1
2
b x L 1
1
Dès lors,
Fx L
pa p x L
2
a x L
1
pb p x c 2 px
L 1 L
b x L1 c xL
1 1
F x L 1
2
p x L 1 p x L 1c p x L
2
c xL
1
F x px
L 1 L 1 pc x L 1 1 p x L
2 c x 2
L
Où la dernière ligne est valable que pour les processus Markoviens. On
note que l’on est passé d’une somme sur a<xL qui peut avoir jusqu’à qL-1
termes, à une somme sur c<xL qui a au plus q-1 termes.
Codage arithmétique
Le résultat du codage arithmétique est un très long nombre réel. Mais
en pratique, tous les calculs peuvent se faire avec des nombres entiers.
C’est le schéma de transmission incrémental
p
i 0
i 1
Lc Lc taille Lk et H c Lc taille H k
Exemple de codage arithmétique
Exemple : Soit la source discrète sur l'alphabet -2, -1, 0, 1, 2 qui définit une série
de 5 symboles. La probabilité de production de la source est p= (0.1; 0.2; 0.4;
0.2; 0.1). Coder la séquence de symboles (0, -1, 0, 2)
Pour coder 0, -1, 0, 2, on divise l'intervalle [0, 1[ en 5 partitions initiales, puis
on se place sur le sous-intervalle correspondant au premier symbole (de
valeur 0), c.a.d. [0.3, 0.7[. taille(1)=0.4
Pour le prochain symbole de la séquence, le symbole1, on subdivise la
partition initiale du premier symbole 0 en autant d'intervalles qu'il y'a de
symboles possibles.
On procede recursivement pour tous les symboles de la
0.3945 = 0 x2-1 + 2-2 + 2-3 + 0x2-4 + 0x2-5 + 2-6 + 0x 2-7 + 2-8 (01100101). Nous
utilisons donc 8/5 = 1,6 bits/symbole
Subdivision Codage Arithmétique
X={2, -1, 0, 1, 2} , p= (0.1; 0.2; 0.4; 0.2; 0.1). Séquence à coder (0, -1, 0, 2)