1 Codage Arithmétique
1 Codage Arithmétique
1 Codage Arithmétique
Compression de données
IFT-4003/IFT-7023
Notes de cours
Codage arithmétique
Édition Hiver 2012
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Rappel sur les codes de Huffman
Longueur du code de Huffman
Le code de Huffman peut garantir un taux de codage
(nombre moyen de bits par symbole) proche de l’entropie
de 1 bit. H (S ) l H (S ) 1 moy
Entropie=0.335 bit/symb
Pour une efficacité acceptable
lmoy=1.222/2=0.611 il faut regrouper les symboles
bit/symb 8 par 8 Alphabet de taille
Redondance=0.276 38=6561 Capacité de
Efficacité: ξ=54.828% stockage du code élevée.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Code de Huffman étendu (3)
Inefficacité des codes de Huffman étendu
La moindre perturbation des statistiques entrainant un
changement des probabilité affecte grandement les
performances.
Pour déterminer un mot-code pour une séquence de
longueur m, on doit générer des mot-codes pour toutes
autres séquences de même longueur possibles.
Croissance exponentielle de la taille de l’alphabet.
Il faut un moyen pour générer un mot-code à une
séquence donnée sans avoir à générer des mot-codes
pour les autres séquences de même longueur.
Codes arithmétiques
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Idée principale des codes
arithmétiques
Fonctionnement
Dans le codage arithmétique un identificateur ou une
étiquette unique est générée pour la séquence à
encoder.
Cette étiquette correspond à une fraction binaire à partir
de la quelle on obtient le code binaire de la séquence.
En pratique la génération de l’étiquette et du code
binaire suivent la même procédure.
Mais pour mieux comprendre les codes arithmétiques on
présente ces deux phases distinctement.
Phase 1: Génération d’étiquette (tag) pour la séquence
Phase 2: assignation d’un code binaire a ce tag
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Codage d’une séquence
Distinction entre les séquences de symboles
A chaque séquence de symboles un tag unique doit être
fourni.
L’intervalle unité [0, 1) est un ensemble possible pour
tout les tags.
En effet le nombre de réel dans cet intervalle sont infini
on peut générer autant de tags que l’on veut.
Il faut alors une fonction f: séquence x Є [0, 1).
Une parmi ces fonctions on cite la fonction de distribution
cumulative (cdf) de variable aléatoire.
La fonction cdf est utilisé dans le développement des
code arithmétique.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Les fonctions de distribution de
probabilités
Définition de la fonction cumulative
Soit X une variable aléatoire résultant d’une expérience
donnée.
La fonction de distribution cumulative (cdf) dénotée par
FX(x) est définie par: FX(x) =Pr(X≤x).
Quelques Propriétés
0≤ FX(x) ≤1: une probabilité est toujours entre 0 et 1.
La cdf est une fonction croissante: x1≤x2 FX(x1)≤FX(x2)
En effet FX(x2)=Pr(X ≤ x2)= Pr(X ≤ x1 ou x1<X ≤ x2)
= Pr(X ≤ x1)+Pr(x1<X ≤ x2)
= FX(x1) +Pr(x1<X ≤ x2) x1 x2
≥ FX(x1)
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Quelques notations
Fonction cumulative
Soit l’alphabet d’éléments discrets: A={ a1, a2, …, am}.
Soit une expérience qui résulte en un des éléments de A.
Soit la variable aléatoire X prenant des valeurs dans
l’ensemble {1,…,m}.
La fonction de densité de probabilité pour cette variable
aléatoire: P(X=i)=P(ai).
La fonction de densité cumulative:
i
FX i Pr( X i) Pr( X 1 ou ou X i ) Pr( X 1) Pr( X i) P( X k)
k 1
Exemple
Soit un alphabet formé de trois lettre A= {a1, a2, a3}
avec P(a1)=0.7, P(a2)=0.1 et P(a3)=0.2.
FX(1)=0.7, FX(2)=0.8 et FX(3)=1.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple de partitionnement des sous-
intervalles (1)
0.0
a1
0.7
a2
0.8
a3
1.0
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple de partitionnement des sous-
intervalles (2)
0.0 0.00
a1 a1
0.7 0.49
a2 a2
0.8 0.56
a3 a3
1.0 0.70
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple de partitionnement des sous-
intervalles (3)
0.0 0.00 0.490
a1 a1 a1
a3 a3 a3
1.0 0.70 0.560
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple de partitionnement des sous-
intervalles (4)
0.0 0.00 0.490 0.5460
a1 a1 a1 a1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Partitionnement en sous-intervalles
Remarques importantes suite à l’exemple
L’apparition de chaque nouveau symbole donne
naissance à un sous-intervalle disjoint [disjoint: Π = ø]
avec tout autre sous-intervalle qui aurait pu être généré
par une autre séquence.
Ainsi tout entier appartement à l’intervalle obtenu, peut
être associé comme tag à la séquence de symboles.
i.e. la limite inférieure de l’intervalle ou encore le point
central de l’intervalle.
Dans ce qui suit on va considérer le point centrale
comme tag de la séquence.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération d’un tag pour symbole
unique
Procédure mathématique
Pour comprendre la procédure mathématique de la
génération d’un tag on commence par une séquence de
longueur un.
Un tag est associé à chaque symbole de l’alphabet.
Soit une source qui génère une séquence à partir d’un
alphabet A={a1, a2, …, am}. On définit pour un symbole
ai le tag suivant: i 1
1
TX (ai ) P( x k) P( x i)
k 1 2
1
FX (i 1) P( x i)
2
Donc pour chaque symbole ai, on va avoir un tag unique.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple de génération d’un tag pour
un symbole unique
Exemple
Considérons l’expérience de lancement d’un dé juste.
Le résultat de cette expérience peut être associé à
l’ensemble {1, 2, 3, 4, 5, 6}.
Pour un dé juste on a: P(X=k)=1/6 pour k=1,…,6
1 1 1
TX (1) FX (0) P( x 1) 0 0.0833
2 2 6
1 1 1 1
TX (2) FX (1) P( x 2) 0.25
2 6 2 6
TX (3) 0.4166; TX (4) 0.5833
TX (5) 0.75; TX (4) 0.9166
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération d’un pour une séquence de
symboles
Procédure mathématique
L’approche d’assignation de tag pour une séquence de
longueur un d’une source prenant des valeur de alphabet
A={a1, a2, …, am}, peut s’étendre pour traiter des
séquences plus longueur n>1.
Il faut établir un ordre pour différencier entre les mn
combinaisons possibles des n symboles.
La séquence numéro i parmi les mn combinaisons
possibles est dénoté xi, à laquelle on associe le tag
suivant: (m)
i 1
1
TX (x i ) P (X xk ) P(X xi )
k 1 2
X est une variable aléatoire de longueur m.
xi={xi1, xi2, …, xim},
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple de génération d’un pour une
séquence de symboles
Procédure mathématique
Considérons l’expérience de 2 lancements d’un dé juste.
Il y a 62=36 combinaisons possibles qu’on ordonne
comme suit: 11,12,…,16, 21,22,…,26, …, …,51,52,…,56,
61,62,…,66.
Calculons par exemple le tag de la séquence 13:
(2) 1
TX (13) P(X xk ) P (X 13)
k 13 2
k 11,12,...,66
1
P(X 11) P(X 12) P (X 13)
2
1 1 1 1 5
36 36 2 36 72
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération d’un pour une séquence de
symboles
Remarques suite à l’exemple:
Pour générer le tag de la séquence numéro 13, on n’a
pas besoin de générer le tag des autres séquences de me
même longueur n=2.
Il faut par contre calculer les probabilités de toutes les
séquences dont l’ordre est inférieur a 13: 11 et 12.
Le calcul des probabilité des séquences précédentes peut
entraîner une complexité de même ordre que la
génération de mot-codes pour les autres séquences de
même longueur.
Nous allons voir par la suite qu’on a besoin juste de la
probabilité des symboles individuels pour le calcul d’un
tag d’une séquence de symboles.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Délimitation de l’intervalle du tag
Calcul des bornes inférieure et supérieure de l’intervalle du
tag:
Lors de la génération du tag on constate que l’intervalle
obtenu est disjoint des autres intervalles contenant les
tags des autres séquences.
Ainsi la détermination d’un tag pour une séquence
donnée revient à délimiter l’intervalle en question et ce
par le calcul des bornes inférieure et supérieure.
Ces deux bornes peuvent être calculées récursivement.
Exemple:
Reprenons l’exemple de lancement du dé non truqué.
Déterminons l’intervalle du tag de la séquence 322.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: bornes de l’intervalle du tag
par récursion (1)
Tag de la séquence 322
Observation séquentielle de 3 ensuite 2 et enfin 2.
Après chaque observation on calcule les bornes de
l’intervalle du tag à ce stade là.
Notation: limite supérieure u(n) [upper limit]
limite inférieure l(n) [lower limit]
n le nombre d’observations à ce moment là.
Observation 1: 3 u (1) FX (3) Pr( X 3) Pr( X 1 ou X 2 ou X 3)
3
6
2
l (1) FX (2) Pr( X 3)
6
1 2 3 4 5 6
0.0 1/6 2/6 3/6 4/6 5/6 1.0
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: bornes de l’intervalle du tag
par récursion (2)
Observation 2: 3 2
u (2) FX 2 (32) Pr( X 32)
Pr( X 11) Pr( X 12) Pr( X 16)
Pr( X 21) Pr( X 22) Pr( X 26)
Pr( X 31) Pr( X 32)
[Rappel] Théorème de Bayes: loi de la probabilité totale
6 6
Pr( X ki ) Pr( X k, X i ) Pr( X k)
i 1 i 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: bornes de l’intervalle du tag
par récursion (4)
Observation 2: 3 2
(1) 3
u FX (3)
6
2
l (1) FX (2)
6
u (2) l (1) (u (1) l (1) ) FX (2)
l (2) l (1) (u (1) l (1) ) FX (1)
Observation 3: 3 2 2
(1) 3 2
u FX (3) , l (1) FX (2)
6 6
1 2 3 4 5 6
0.0 1/6 2/6 3/6 4/6 5/6 1.0
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: bornes de l’intervalle du tag
par récursion (6)
Observation 1: 3
(1) 3 2
u FX (3) , l (1) FX (2)
6 6
1 2 3 4 5 6
l(1) u(1)
Mise à l’échelle:
× (u(1)-l(1))
1 2 3 4 5 6
0.0 1/6 2/6 3/6 4/6 5/6 1.0
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: bornes de l’intervalle du tag
par récursion (7)
Observation 2: 3 2
u (2) l (1) (u (1) l (1) ) FX (2), l (2) l (1) (u (1) l (1) ) FX (1)
1 2 3 4 5 6
l(1) l(2) u(2) u(1)
Mise à l’échelle:
× (u(1)-l(1))
1 2 3 4 5 6
0.0 1/6 2/6 3/6 4/6 5/6 1.0
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: bornes de l’intervalle du tag
par récursion (8)
Observation 2: 3 2
u (2) l (1) (u (1) l (1) ) FX (2), l (2) l (1) (u (1) l (1) ) FX (1)
1 2 3 4 5 6
l(2) u(2)
Mise à l’échelle:
× (u(2)-l(2))
1 2 3 4 5 6
l(1) l(2) u(2) u(1)
Mise à l’échelle:
× (u(1)-l(1))
1 2 3 4 5 6
0.0 1/6 2/6 3/6 4/6 5/6 1.0
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: bornes de l’intervalle du tag
par récursion (9)
Observation 3: 3 2 2
u (3) l (2) (u (2) l (2) ) FX (2), l (3) l (2) (u (2) l (2) ) FX (1)
1 2 3 4 5 6
l(2) l(3) u(3) u(2)
Mise à l’échelle:
× (u(2)-l(2))
1 2 3 4 5 6
l(1) l(2) u(2) u(1)
Mise à l’échelle:
× (u(1)-l(1))
1 2 3 4 5 6
0.0 1/6 2/6 3/6 4/6 5/6 1.0
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Intervalle du tag par récursion
Règle générale
Pour une séquence de symbole x on a:
x ( x1 x2 ...xn )
u (n) l (n 1)
(u ( n 1)
l ( n 1) ) FX ( xn )
l (n) l (n 1)
(u ( n 1)
l ( n 1) ) FX ( xn 1)
Lettres a b c
Probabilité 0.8 0.02 0.18
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple génération du tag par
récursion (2)
Observation 1: 1 [ Rappel ]
(1) (0) (0) (0) u (n) l (n 1)
(u ( n 1)
l ( n 1) ) FX ( xn )
u l (u l ) FX ( x1 ) 0 1 FX (1) 0.8
(1) (0) (0) (0)
l (n) l (n 1)
(u ( n 1)
l ( n 1) ) FX ( xn 1)
l l (u l ) FX ( x1 1) 0 1 FX (0) 0
Observation 1: 1 3
u (2) l (1) (u (1) l (1) ) FX ( x3 ) 0 0.8 FX (3) 0.8 1 0.8
l (2) l (1) (u (1) l (1) ) FX ( x3 1) 0 0.8 FX (3 1) 0.8 0.82 0.656
Observation 1: 1 3 2
u (3) l (2) (u (2) l (2) ) FX ( x2 ) 0.656 0.144 0.82 0.77408
l (3) l (2) (u (2) l (2) ) FX ( x2 1) 0.656 0.144 0.8 0.7712
Observation 1: 1 3 2 1
u (4) l (3) (u (3) l (3) ) FX ( x1 ) 0.7712 0.00288 0.8 0.773504
l (4) l (3) (u (3) l (3) ) FX ( x1 1) 0.7712 0.00288 0 0.7712
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple génération du tag par
récursion (3)
Séquence: 1 3 2 1
u (4) l (3) (u (3) l (3) ) FX ( x1 ) 0.7712 0.00288 0.8 0.773504
l (4) l (3) (u (3) l (3) ) FX ( x1 1) 0.7712 0.00288 0 0.7712
Génération du tag:
0.7712 0.773504
TX (1321)= 0.772352
2
Remarques:
L’intervalle suivant est toujours contenu dans l’intervalle
précédent.
Cette propriété va servir pour le déchiffrage du tag.
L’intervalle du Tag devient de plus en plus petit.
Pour remédier à ça on va utiliser une approche de
remise à l’échelle.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Déchiffrage du tag
Déchiffrage:
La procédure de génération du tag est relativement
simple.
Il faut aussi pouvoir déchiffrer le tag avec un coût de
calcul minimal.
Effectivement lé déchiffrage du tag est aussi simple que
sa génération.
Exemple de déchiffrage du tag: TX 0.772352
On reconsidère l’exemple précédent et on va essayer de
déchiffrer le tag obtenu, et ce, par imiter l’encodeur.
L’intervalle contenant ce tag est un sous-intervalle de
tout les intervalles rencontrés dans le processus
d’encodage.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag (1)
Exemple de déchiffrage du tag: TX 0.772352
La stratégie consiste à décoder les éléments de la
séquence en s’assurant que l(k) et u(k) contiennent
toujours le tag.
Étape 0:
l(0) =0 et u(0) =1 contiennent bien le tag 0.772352.
Étape 1:
Après le décodage du premier élément de la séquence x1
les limites inférieures et supérieures deviennent.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag (2)
Suite étape 1: u (1) FX ( x1 ), l (1) FX ( x1 1) TX 0.772352
Le tag suite à l’observation du premier élément se
trouve dans l’intervalle [FX(x1-1), FX(x1))=[0,0.8).
0.00
3
1.0
Séquence décodée: 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag (3)
Remise à l’échelle: TX 0.772352
Préparation des nouveaux intervalles pour le second
élément.
0.00
0.00
3 3
1.0 0.8
Séquence décodée: 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag (4)
Étape 2: TX 0.772352
Le tag suite à l’observation du premier élément se
trouve dans l’intervalle [FX(x2-1), FX(x2))=[0.656,0.8).
0.00
0.00
3 TX 3
1.0 0.8
Séquence décodée: 1 3
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag (5)
Remise à l’échelle: TX 0.772352
Le tag suite à l’observation du premier élément se
trouve dans l’intervalle [FX(x2-1), FX(x2))=[0.656,0.8).
0.00
0.00 0.656
3 TX 3 3
1.0 0.8
0.8
Séquence décodée: 1 3
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag (6)
Étape 3: TX 0.772352 [0.656,0.7712 ) TX 0.772352
TX 0.772352 [0.7712, 0.77408) x3 2
TX 0.772352 [0.77408, 0.8)
0.00
0.00 0.656
1 1 1
3 3 3
1.0 0.8
0.8
Séquence décodée: 1 3 2
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag (7)
Étape 3: Remise en échelle des intervalles TX 0.772352
l (3) (u (3) l (3) )0.8 0.7712 0.0288 0.8 0.773504
l (3) (u (3) l (3) )0.8 0.7712 0.0288 0.82 0.7735616
0.00
0.00 0.656 0.7712
1 1 1 1
3 3 3 3
1.0 0.8
0.8 0.77408
Séquence décodée: 1 3 2
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag (8)
Étape 3: TX 0.772352 [0.7712,0.773504 ) TX 0.772352
TX 0.772352 [0.773504, 0.7735616) x4 1
Fin:1321
TX 0.772352 [0.7735616, 0.77408)
Peut on
0.00
0.00 0.656 0.7712 simplifier
plus ?
1 1 1 1
TX
3 3 3 3
1.0 0.8
0.8 0.77408
Séquence décodée: 1 3 2 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag
(Simplification)[1]
On ramène l’intervalle [0.656, 0.8) à [0,1) TX 0.772352
0.656 0.656 / 0.144 0, 0.7712 0.656 / 0.144 0.8 (T 0.652) / 0.144 0.808
X
1 1 1
3 TX 3 3
1.0 0.8
0.8 1.0
Séquence décodée: 1 3
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag
(Simplification)[2]
Remise à l’échelle TX 0.808
l (3) (u (3) l (3) )0.8 0.8 0.02 0.8 0.816
l (3) (u (3) l (3) )0.8 0.8 0.02 0.82 0.8164
0.00
0.00 0.00 0.8
1 1 1 1
3 3 3 3
1.0 0.8
1.0 0.82
Séquence décodée: 1 3 2
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple déchiffrage du tag
(Simplification)[2]
Remise à l’échelle TX 0.808
l (3) (u (3) l (3) )0.8 0.8 0.02 0.8 0.816
l (3) (u (3) l (3) )0.8 0.8 0.02 0.82 0.8164
0.00
0.00 0.00 0.8
1 1 1 1
TX
3 3 3 3
1.0 0.8
1.0 0.82
Séquence décodée: 1 3 2 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération du code binaire
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique