théorie de l'information cours 9

113
Théorie de l’Information Cours 9 Julien Lavauzelle Université Paris 8 Master 1 ACC et CSSD – Théorie de l’Information 25/11/2021

Upload: others

Post on 22-Jun-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Théorie de l'Information Cours 9

Théorie de l’InformationCours 9

Julien LavauzelleUniversité Paris 8

Master 1 ACC et CSSD – Théorie de l’Information

25/11/2021

Page 2: Théorie de l'Information Cours 9

1. Processus (fin)

2. Algorithme de Lempel–Ziv

3. Compression de données

Page 3: Théorie de l'Information Cours 9

Quelques remarques

Sujet et corrigé disponibles sur la page web :

https://www.math.univ-paris13.fr/∼lavauzelle/teaching/2021-22/theorie-information.html

1/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 4: Théorie de l'Information Cours 9

Plan

1. Processus (fin)

2. Algorithme de Lempel–Ziv

3. Compression de données

1/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 5: Théorie de l'Information Cours 9

Rappels

Le taux d’entropie d’une source stationnaire X est

H(X) := limn→∞

1n + 1

H(X0, X1, . . . , Xn) ,

où H(X0, X1, . . . , Xn) est l’entropie de la loi conjointe des variables X0, . . . , Xn.

2/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 6: Théorie de l'Information Cours 9

Le cas des processus markoviens

Soit X une source markovienne à m états (= les Xi peuvent prendre m valeurs distinctes).

Un processus markovien X est homogène si sa probabilité de transition ne dépend pasde l’instant :

P(Xn+1 = a | Xn = b) = P(Xn = a | Xn−1 = b) = · · · = P(X1 = a | X0 = b) .

On peut alors définir sa matrice de transition :

P =

Pi,j = P(X1 = xi | X0 = xj)

Proposition. Soit X une source markovienne et homogène. Alors, la source X est sta-tionnaire si et seulement si sa loi initiale X0 a comme distribution un vecteur v =(v1, . . . , vm) ∈ Rn tel que

Pv = v .

3/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 7: Théorie de l'Information Cours 9

Plan

1. Processus (fin)

2. Algorithme de Lempel–Ziv

3. Compression de données

3/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 8: Théorie de l'Information Cours 9

Code universel

Soit C = (Cn)n≥1 une famille de codes telles que pour tout n ≥ 1, le code Cn encode desséquences de n symboles. Alors, la famille C est dite universelle si

limn→∞

EX

[1n`(Cn(X1, . . . , Xn))

]= H(X)

pour toutes les sources stationnaires X.

En termes informels : C est une famille de code universels si, asymptotiquement, salongueur moyenne par symbole est égale à l’entropie de la source.

C’est le mieux qu’on puisse espérer.

4/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 9: Théorie de l'Information Cours 9

Présentation

Objectif : construire un code qui soit (presque) universel

=⇒ algorithmes LZ77, LZ78 de Lempel et Ziv, utilisés comme brique de base dansbeaucoup de logiciels de compression actuels.

Idée :

1. On parcourt la chaîne de caractères, que l’on découpe en mots distincts de tailleminimale.

2. Lors de ce parcours, on tient à jour un dictionnaire des mots trouvés, et une listeordonnée de références vers ce dictionnaire (pointeurs).

Exemple typique : on considère la séquence sur l’alphabet {a, b} :

aababbabbaabbababbabaabbabaaabbabaaa

On peut la découper en :

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa

Puis on la transforme en :0a|1b|2b|3a|4b|5a|6a|7a

où le nombre i fait référence au i-ème mot de la liste.

5/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 10: Théorie de l'Information Cours 9

Présentation

Objectif : construire un code qui soit (presque) universel

=⇒ algorithmes LZ77, LZ78 de Lempel et Ziv, utilisés comme brique de base dansbeaucoup de logiciels de compression actuels.

Idée :

1. On parcourt la chaîne de caractères, que l’on découpe en mots distincts de tailleminimale.

2. Lors de ce parcours, on tient à jour un dictionnaire des mots trouvés, et une listeordonnée de références vers ce dictionnaire (pointeurs).

Exemple typique : on considère la séquence sur l’alphabet {a, b} :

aababbabbaabbababbabaabbabaaabbabaaa

On peut la découper en :

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa

Puis on la transforme en :0a|1b|2b|3a|4b|5a|6a|7a

où le nombre i fait référence au i-ème mot de la liste.

5/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 11: Théorie de l'Information Cours 9

Présentation

Objectif : construire un code qui soit (presque) universel

=⇒ algorithmes LZ77, LZ78 de Lempel et Ziv, utilisés comme brique de base dansbeaucoup de logiciels de compression actuels.

Idée :

1. On parcourt la chaîne de caractères, que l’on découpe en mots distincts de tailleminimale.

2. Lors de ce parcours, on tient à jour un dictionnaire des mots trouvés, et une listeordonnée de références vers ce dictionnaire (pointeurs).

Exemple typique : on considère la séquence sur l’alphabet {a, b} :

aababbabbaabbababbabaabbabaaabbabaaa

On peut la découper en :

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa

Puis on la transforme en :0a|1b|2b|3a|4b|5a|6a|7a

où le nombre i fait référence au i-ème mot de la liste.

5/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 12: Théorie de l'Information Cours 9

Présentation

Objectif : construire un code qui soit (presque) universel

=⇒ algorithmes LZ77, LZ78 de Lempel et Ziv, utilisés comme brique de base dansbeaucoup de logiciels de compression actuels.

Idée :

1. On parcourt la chaîne de caractères, que l’on découpe en mots distincts de tailleminimale.

2. Lors de ce parcours, on tient à jour un dictionnaire des mots trouvés, et une listeordonnée de références vers ce dictionnaire (pointeurs).

Exemple typique : on considère la séquence sur l’alphabet {a, b} :

aababbabbaabbababbabaabbabaaabbabaaa

On peut la découper en :

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa

Puis on la transforme en :0a|1b|2b|3a|4b|5a|6a|7a

où le nombre i fait référence au i-ème mot de la liste.

5/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 13: Théorie de l'Information Cours 9

Présentation

Objectif : construire un code qui soit (presque) universel

=⇒ algorithmes LZ77, LZ78 de Lempel et Ziv, utilisés comme brique de base dansbeaucoup de logiciels de compression actuels.

Idée :

1. On parcourt la chaîne de caractères, que l’on découpe en mots distincts de tailleminimale.

2. Lors de ce parcours, on tient à jour un dictionnaire des mots trouvés, et une listeordonnée de références vers ce dictionnaire (pointeurs).

Exemple typique : on considère la séquence sur l’alphabet {a, b} :

aababbabbaabbababbabaabbabaaabbabaaa

On peut la découper en :

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa

Puis on la transforme en :0a|1b|2b|3a|4b|5a|6a|7a

où le nombre i fait référence au i-ème mot de la liste.

5/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 14: Théorie de l'Information Cours 9

Présentation

Objectif : construire un code qui soit (presque) universel

=⇒ algorithmes LZ77, LZ78 de Lempel et Ziv, utilisés comme brique de base dansbeaucoup de logiciels de compression actuels.

Idée :

1. On parcourt la chaîne de caractères, que l’on découpe en mots distincts de tailleminimale.

2. Lors de ce parcours, on tient à jour un dictionnaire des mots trouvés, et une listeordonnée de références vers ce dictionnaire (pointeurs).

Exemple typique : on considère la séquence sur l’alphabet {a, b} :

aababbabbaabbababbabaabbabaaabbabaaa

On peut la découper en :

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa

Puis on la transforme en :0a|1b|2b|3a|4b|5a|6a|7a

où le nombre i fait référence au i-ème mot de la liste.

5/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 15: Théorie de l'Information Cours 9

Algorithme

On présente ici l’algorithme LZW (pour Lempel-Ziv-Welch), une variante de LZ78.

Algorithme de Lempel-Ziv-Welch (LZW)

Entrée : une chaîne de caractères x ∈ Xm

Sortie : une séquences de couples ((ij, aj))j≥1 où ij ∈N et aj ∈ X

res = []dict = [””]buffer = ””i = 0Pour j allant de 1 à m :

Ajouter xj à la fin de bufferSi : il existe k tel que buffer = dict[k]Alors :

i = kSinon :

Ajouter buffer à dictAjouter (i, xj) à resRéinitialiser buffer à ””Réinitialiser i à 0

Retourner : res

6/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 16: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = []dict = []buffer =

x = |bbaabbabaaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 17: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = []dict = []buffer = b

x = |b|baabbabaaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 18: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b)]dict = [b]buffer = b

x = |b|b|aabbabaaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 19: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b)]dict = [b]buffer = ba

x = |b|ba|abbabaaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 20: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a)]dict = [b, ba]buffer = a

x = |b|ba|a|bbabaaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 21: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a)]dict = [b, ba, a]buffer = b

x = |b|ba|a|b|babaaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 22: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a)]dict = [b, ba, a]buffer = bb

x = |b|ba|a|bb|abaaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 23: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b)]dict = [b, ba, a, bb]buffer = a

x = |b|ba|a|bb|a|baaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 24: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b)]dict = [b, ba, a, bb]buffer = ab

x = |b|ba|a|bb|ab|aaaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 25: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b)]dict = [b, ba, a, bb, ab]buffer = a

x = |b|ba|a|bb|ab|a|aaaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 26: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b)]dict = [b, ba, a, bb, ab]buffer = aa

x = |b|ba|a|bb|ab|aa|aaababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 27: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a)]dict = [b, ba, a, bb, ab, aa]buffer = a

x = |b|ba|a|bb|ab|aa|a|aababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 28: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a)]dict = [b, ba, a, bb, ab, aa]buffer = aa

x = |b|ba|a|bb|ab|aa|aa|ababbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 29: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a)]dict = [b, ba, a, bb, ab, aa]buffer = aaa

x = |b|ba|a|bb|ab|aa|aaa|babbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 30: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a)]dict = [b, ba, a, bb, ab, aa, aaa]buffer = b

x = |b|ba|a|bb|ab|aa|aaa|b|abbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 31: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a)]dict = [b, ba, a, bb, ab, aa, aaa]buffer = ba

x = |b|ba|a|bb|ab|aa|aaa|ba|bbbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 32: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a)]dict = [b, ba, a, bb, ab, aa, aaa]buffer = bab

x = |b|ba|a|bb|ab|aa|aaa|bab|bbbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 33: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b)]dict = [b, ba, a, bb, ab, aa, aaa, bab]buffer = b

x = |b|ba|a|bb|ab|aa|aaa|bab|b|bbaaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 34: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b)]dict = [b, ba, a, bb, ab, aa, aaa, bab]buffer = bb

x = |b|ba|a|bb|ab|aa|aaa|bab|bb|baaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 35: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b)]dict = [b, ba, a, bb, ab, aa, aaa, bab]buffer = bbb

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aaabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 36: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb]buffer = a

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|a|aabbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 37: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb]buffer = aa

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aa|abbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 38: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb]buffer = aaa

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aaa|bbabb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 39: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb]buffer = aaab

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aaab|babb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 40: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b), (7, a)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb, aaab]buffer = b

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aaab|b|abb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 41: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b), (7, a)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb, aaab]buffer = ba

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aaab|ba|bb

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 42: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b), (7, a)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb, aaab]buffer = bab

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aaab|bab|b

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 43: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b), (7, a)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb, aaab]buffer = babb

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aaab|babb|

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 44: Théorie de l'Information Cours 9

Mise en application

Algorithme de Lempel-Ziv-Welch (LZW)

La chaîne en entrée est :x = bbaabbabaaaaababbbbaaabbabb

res = [(0, b), (1, a), (0, a), (1, b), (3, b), (3, a), (6, a), (2, b), (4, b), (7, a), (8, b)]dict = [b, ba, a, bb, ab, aa, aaa, bab, bbb, aaab, babb]buffer =

x = |b|ba|a|bb|ab|aa|aaa|bab|bbb|aaab|babb|

7/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 45: Théorie de l'Information Cours 9

Analyse de LZW

Question :

Ce codage est-il « bon »?

Deux analyses :

– en pire cas : existe-t-il des chaînes de caractères dont la taille augmentegrossièrement?

– en cas moyen : pour un processus stochasique donné, quelle est la longueurmoyenne du codage LZW?

8/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 46: Théorie de l'Information Cours 9

Analyse de LZW

Question :

Ce codage est-il « bon »?

Deux analyses :

– en pire cas : existe-t-il des chaînes de caractères dont la taille augmentegrossièrement?

– en cas moyen : pour un processus stochasique donné, quelle est la longueurmoyenne du codage LZW?

8/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 47: Théorie de l'Information Cours 9

Analyse : pire cas

Objectif : trouver une chaîne de caractères x pour laquelle le codage LZW estasymptotiquement le plus long.

=⇒ Faut-il que x soit divisée en mots petits ? en mots ressemblants et longs?

Rappel : l’exemple typique donne un codage assez court

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa 7→ 0a|1b|2b|3a|4b|5a|6a|7a

car le n-ième mot, de longueur n, est codé avec ' log2 n bits.

Pour avoir un cas défavorable, il faut faire le contraire. Pour k ≥ 1, la chaîne

x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

donne le mot

c(k) = 0a | 0b | 1a | 1b | 2a | 2b | 3a | · · · · · · | ((k− 2)2k − 2)b

Question : quelle est la longueur de c(k) par rapport à celle de x(k) ?

9/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 48: Théorie de l'Information Cours 9

Analyse : pire cas

Objectif : trouver une chaîne de caractères x pour laquelle le codage LZW estasymptotiquement le plus long.

=⇒ Faut-il que x soit divisée en mots petits ? en mots ressemblants et longs?

Rappel : l’exemple typique donne un codage assez court

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa 7→ 0a|1b|2b|3a|4b|5a|6a|7a

car le n-ième mot, de longueur n, est codé avec ' log2 n bits.

Pour avoir un cas défavorable, il faut faire le contraire. Pour k ≥ 1, la chaîne

x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

donne le mot

c(k) = 0a | 0b | 1a | 1b | 2a | 2b | 3a | · · · · · · | ((k− 2)2k − 2)b

Question : quelle est la longueur de c(k) par rapport à celle de x(k) ?

9/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 49: Théorie de l'Information Cours 9

Analyse : pire cas

Objectif : trouver une chaîne de caractères x pour laquelle le codage LZW estasymptotiquement le plus long.

=⇒ Faut-il que x soit divisée en mots petits ? en mots ressemblants et longs?

Rappel : l’exemple typique donne un codage assez court

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa 7→ 0a|1b|2b|3a|4b|5a|6a|7a

car le n-ième mot, de longueur n, est codé avec ' log2 n bits.

Pour avoir un cas défavorable, il faut faire le contraire. Pour k ≥ 1, la chaîne

x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

donne le mot

c(k) = 0a | 0b | 1a | 1b | 2a | 2b | 3a | · · · · · · | ((k− 2)2k − 2)b

Question : quelle est la longueur de c(k) par rapport à celle de x(k) ?

9/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 50: Théorie de l'Information Cours 9

Analyse : pire cas

Objectif : trouver une chaîne de caractères x pour laquelle le codage LZW estasymptotiquement le plus long.

=⇒ Faut-il que x soit divisée en mots petits ? en mots ressemblants et longs?

Rappel : l’exemple typique donne un codage assez court

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa 7→ 0a|1b|2b|3a|4b|5a|6a|7a

car le n-ième mot, de longueur n, est codé avec ' log2 n bits.

Pour avoir un cas défavorable, il faut faire le contraire. Pour k ≥ 1, la chaîne

x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

donne le mot

c(k) = 0a | 0b | 1a | 1b | 2a | 2b | 3a | · · · · · · | ((k− 2)2k − 2)b

Question : quelle est la longueur de c(k) par rapport à celle de x(k) ?

9/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 51: Théorie de l'Information Cours 9

Analyse : pire cas

Objectif : trouver une chaîne de caractères x pour laquelle le codage LZW estasymptotiquement le plus long.

=⇒ Faut-il que x soit divisée en mots petits ? en mots ressemblants et longs?

Rappel : l’exemple typique donne un codage assez court

a|ab|abb|abba|abbab|abbaba|abbabaa|abbabaaa 7→ 0a|1b|2b|3a|4b|5a|6a|7a

car le n-ième mot, de longueur n, est codé avec ' log2 n bits.

Pour avoir un cas défavorable, il faut faire le contraire. Pour k ≥ 1, la chaîne

x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

donne le mot

c(k) = 0a | 0b | 1a | 1b | 2a | 2b | 3a | · · · · · · | ((k− 2)2k − 2)b

Question : quelle est la longueur de c(k) par rapport à celle de x(k) ?

9/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 52: Théorie de l'Information Cours 9

Analyse : pire cas

Soit x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

le mot à coder.

On montre que `(x(k)) = (k− 1)2k+1 + 2 — preuve : exercice.

On note w(x(k)) le nombre de mots dans la division de la chaîne x(k). On a :

w(x(k)) =k

∑i=1

2i = 2k+1 − 2 .

Enfin, chaque indice de préfixe est codé sur dlog w(x(k))e = k + 1 bits, donc

`(c(k)) = w(x(k))× (k + 1) =k + 1k− 1

(`(x(k)) + 2)− 2 .

Le ratio qui nous intéresse est le rapport entre la longueur du mot encodé et celle du motinitial. Si l’on note n = `(x(k)), on a alors :

`(c(k))`(x(k))

=

(1 +

2k− 1

)(1 +

2`(x(k))

)− 2

`(x(k))=

n→∞1 + o

(1

log2 n

).

Autrement dit, en pire cas l’algorithme LZW est asymptotiquement optimal.

10/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 53: Théorie de l'Information Cours 9

Analyse : pire cas

Soit x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

le mot à coder.

On montre que `(x(k)) = (k− 1)2k+1 + 2 — preuve : exercice.

On note w(x(k)) le nombre de mots dans la division de la chaîne x(k). On a :

w(x(k)) =k

∑i=1

2i = 2k+1 − 2 .

Enfin, chaque indice de préfixe est codé sur dlog w(x(k))e = k + 1 bits, donc

`(c(k)) = w(x(k))× (k + 1) =k + 1k− 1

(`(x(k)) + 2)− 2 .

Le ratio qui nous intéresse est le rapport entre la longueur du mot encodé et celle du motinitial. Si l’on note n = `(x(k)), on a alors :

`(c(k))`(x(k))

=

(1 +

2k− 1

)(1 +

2`(x(k))

)− 2

`(x(k))=

n→∞1 + o

(1

log2 n

).

Autrement dit, en pire cas l’algorithme LZW est asymptotiquement optimal.

10/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 54: Théorie de l'Information Cours 9

Analyse : pire cas

Soit x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

le mot à coder.

On montre que `(x(k)) = (k− 1)2k+1 + 2 — preuve : exercice.

On note w(x(k)) le nombre de mots dans la division de la chaîne x(k). On a :

w(x(k)) =k

∑i=1

2i = 2k+1 − 2 .

Enfin, chaque indice de préfixe est codé sur dlog w(x(k))e = k + 1 bits, donc

`(c(k)) = w(x(k))× (k + 1) =k + 1k− 1

(`(x(k)) + 2)− 2 .

Le ratio qui nous intéresse est le rapport entre la longueur du mot encodé et celle du motinitial. Si l’on note n = `(x(k)), on a alors :

`(c(k))`(x(k))

=

(1 +

2k− 1

)(1 +

2`(x(k))

)− 2

`(x(k))=

n→∞1 + o

(1

log2 n

).

Autrement dit, en pire cas l’algorithme LZW est asymptotiquement optimal.

10/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 55: Théorie de l'Information Cours 9

Analyse : pire cas

Soit x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

le mot à coder.

On montre que `(x(k)) = (k− 1)2k+1 + 2 — preuve : exercice.

On note w(x(k)) le nombre de mots dans la division de la chaîne x(k). On a :

w(x(k)) =k

∑i=1

2i = 2k+1 − 2 .

Enfin, chaque indice de préfixe est codé sur dlog w(x(k))e = k + 1 bits, donc

`(c(k)) = w(x(k))× (k + 1) =k + 1k− 1

(`(x(k)) + 2)− 2 .

Le ratio qui nous intéresse est le rapport entre la longueur du mot encodé et celle du motinitial. Si l’on note n = `(x(k)), on a alors :

`(c(k))`(x(k))

=

(1 +

2k− 1

)(1 +

2`(x(k))

)− 2

`(x(k))=

n→∞1 + o

(1

log2 n

).

Autrement dit, en pire cas l’algorithme LZW est asymptotiquement optimal.

10/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 56: Théorie de l'Information Cours 9

Analyse : pire cas

Soit x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

le mot à coder.

On montre que `(x(k)) = (k− 1)2k+1 + 2 — preuve : exercice.

On note w(x(k)) le nombre de mots dans la division de la chaîne x(k). On a :

w(x(k)) =k

∑i=1

2i = 2k+1 − 2 .

Enfin, chaque indice de préfixe est codé sur dlog w(x(k))e = k + 1 bits, donc

`(c(k)) = w(x(k))× (k + 1) =k + 1k− 1

(`(x(k)) + 2)− 2 .

Le ratio qui nous intéresse est le rapport entre la longueur du mot encodé et celle du motinitial. Si l’on note n = `(x(k)), on a alors :

`(c(k))`(x(k))

=

(1 +

2k− 1

)(1 +

2`(x(k))

)− 2

`(x(k))=

n→∞1 + o

(1

log2 n

).

Autrement dit, en pire cas l’algorithme LZW est asymptotiquement optimal.

10/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 57: Théorie de l'Information Cours 9

Analyse : pire cas

Soit x(k) = a|b|aa|ab|ba|bb|aaa| · · · · · · | bbb . . . bb︸ ︷︷ ︸k fois

le mot à coder.

On montre que `(x(k)) = (k− 1)2k+1 + 2 — preuve : exercice.

On note w(x(k)) le nombre de mots dans la division de la chaîne x(k). On a :

w(x(k)) =k

∑i=1

2i = 2k+1 − 2 .

Enfin, chaque indice de préfixe est codé sur dlog w(x(k))e = k + 1 bits, donc

`(c(k)) = w(x(k))× (k + 1) =k + 1k− 1

(`(x(k)) + 2)− 2 .

Le ratio qui nous intéresse est le rapport entre la longueur du mot encodé et celle du motinitial. Si l’on note n = `(x(k)), on a alors :

`(c(k))`(x(k))

=

(1 +

2k− 1

)(1 +

2`(x(k))

)− 2

`(x(k))=

n→∞1 + o

(1

log2 n

).

Autrement dit, en pire cas l’algorithme LZW est asymptotiquement optimal.

10/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 58: Théorie de l'Information Cours 9

Analyse : cas moyen

Pour le cas moyen, on doit faire une hypothèse supplémentaire sur la source.

Processus ergodique : les statistiques de la source (par exemple, son entropie) peuventêtre approchées à partir d’une réalisation suffisamment longue.

Proposition. Soit C(xn) le codage LZW d’un message xn de longueur n, issu d’un pro-cessus stochastique X stationnaire et ergodique. Alors on a

limn→+∞

1n`(C(xn)) = H(X) .

L’hypothèse supplémentaire d’ergodicité de la source ne permet pas de dire que le codagede Lempel-Ziv-Welch est universel. On le qualifie néanmoins de ponctuellementuniversel.

11/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 59: Théorie de l'Information Cours 9

Analyse : cas moyen

Pour le cas moyen, on doit faire une hypothèse supplémentaire sur la source.

Processus ergodique : les statistiques de la source (par exemple, son entropie) peuventêtre approchées à partir d’une réalisation suffisamment longue.

Proposition. Soit C(xn) le codage LZW d’un message xn de longueur n, issu d’un pro-cessus stochastique X stationnaire et ergodique. Alors on a

limn→+∞

1n`(C(xn)) = H(X) .

L’hypothèse supplémentaire d’ergodicité de la source ne permet pas de dire que le codagede Lempel-Ziv-Welch est universel. On le qualifie néanmoins de ponctuellementuniversel.

11/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 60: Théorie de l'Information Cours 9

Analyse : cas moyen

Pour le cas moyen, on doit faire une hypothèse supplémentaire sur la source.

Processus ergodique : les statistiques de la source (par exemple, son entropie) peuventêtre approchées à partir d’une réalisation suffisamment longue.

Proposition. Soit C(xn) le codage LZW d’un message xn de longueur n, issu d’un pro-cessus stochastique X stationnaire et ergodique. Alors on a

limn→+∞

1n`(C(xn)) = H(X) .

L’hypothèse supplémentaire d’ergodicité de la source ne permet pas de dire que le codagede Lempel-Ziv-Welch est universel. On le qualifie néanmoins de ponctuellementuniversel.

11/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 61: Théorie de l'Information Cours 9

Plan

1. Processus (fin)

2. Algorithme de Lempel–Ziv

3. Compression de données

11/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 62: Théorie de l'Information Cours 9

Motivation

Dans la vie courante, les fichiers et messages sont structurés.

But : réduire leur taille, pour les stocker/envoyer de manière efficace.

Exemple : en français, certaines suites de lettres sont plus fréquentes que d’autres, mêmesi elles contiennent les mêmes lettres.

ES SE LE EL DE ED QU UQ3,05% 1,32% 2,22% 1,42% 2,17% 1,01 % 1,11 % 0,02%

Question : comment utiliser cette dépendance à notre profit?

12/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 63: Théorie de l'Information Cours 9

Motivation

Dans la vie courante, les fichiers et messages sont structurés.

But : réduire leur taille, pour les stocker/envoyer de manière efficace.

Exemple : en français, certaines suites de lettres sont plus fréquentes que d’autres, mêmesi elles contiennent les mêmes lettres.

ES SE LE EL DE ED QU UQ3,05% 1,32% 2,22% 1,42% 2,17% 1,01 % 1,11 % 0,02%

Question : comment utiliser cette dépendance à notre profit?

12/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 64: Théorie de l'Information Cours 9

Motivation

Dans la vie courante, les fichiers et messages sont structurés.

But : réduire leur taille, pour les stocker/envoyer de manière efficace.

Exemple : en français, certaines suites de lettres sont plus fréquentes que d’autres, mêmesi elles contiennent les mêmes lettres.

ES SE LE EL DE ED QU UQ3,05% 1,32% 2,22% 1,42% 2,17% 1,01 % 1,11 % 0,02%

Question : comment utiliser cette dépendance à notre profit?

12/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 65: Théorie de l'Information Cours 9

Motivation

Dans la vie courante, les fichiers et messages sont structurés.

But : réduire leur taille, pour les stocker/envoyer de manière efficace.

Exemple : en français, certaines suites de lettres sont plus fréquentes que d’autres, mêmesi elles contiennent les mêmes lettres.

ES SE LE EL DE ED QU UQ3,05% 1,32% 2,22% 1,42% 2,17% 1,01 % 1,11 % 0,02%

Question : comment utiliser cette dépendance à notre profit?

12/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 66: Théorie de l'Information Cours 9

Exemples

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb

C(x) = 29a7b

y = abababababababababababababab

C(y) = 14(ab)

z = abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop

C(z) = 3(abcdefghijklmnop)

Question : Comment automatiser ces procédures?

13/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 67: Théorie de l'Information Cours 9

Exemples

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb

C(x) = 29a7b

y = abababababababababababababab

C(y) = 14(ab)

z = abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop

C(z) = 3(abcdefghijklmnop)

Question : Comment automatiser ces procédures?

13/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 68: Théorie de l'Information Cours 9

Exemples

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb

C(x) = 29a7b

y = abababababababababababababab

C(y) = 14(ab)

z = abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop

C(z) = 3(abcdefghijklmnop)

Question : Comment automatiser ces procédures?

13/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 69: Théorie de l'Information Cours 9

Exemples

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb

C(x) = 29a7b

y = abababababababababababababab

C(y) = 14(ab)

z = abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop

C(z) = 3(abcdefghijklmnop)

Question : Comment automatiser ces procédures?

13/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 70: Théorie de l'Information Cours 9

Exemples

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb

C(x) = 29a7b

y = abababababababababababababab

C(y) = 14(ab)

z = abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop

C(z) = 3(abcdefghijklmnop)

Question : Comment automatiser ces procédures?

13/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 71: Théorie de l'Information Cours 9

Exemples

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb

C(x) = 29a7b

y = abababababababababababababab

C(y) = 14(ab)

z = abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop

C(z) = 3(abcdefghijklmnop)

Question : Comment automatiser ces procédures?

13/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 72: Théorie de l'Information Cours 9

Exemples

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb

C(x) = 29a7b

y = abababababababababababababab

C(y) = 14(ab)

z = abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop

C(z) = 3(abcdefghijklmnop)

Question : Comment automatiser ces procédures?

13/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 73: Théorie de l'Information Cours 9

RLE

Algorithme RLE : run-length encoding, codage par plages

On découpe le texte en plages de caractères identiques. Chaque plage est ensuite encodéepar un nombre suivi du caractère répété.

C’est le premier exemple :

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb 7→ C(x) = 29a7b .

Sur y = abababababababababababababab, on obtient

C(y) = 1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b .

14/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 74: Théorie de l'Information Cours 9

RLE

Algorithme RLE : run-length encoding, codage par plages

On découpe le texte en plages de caractères identiques. Chaque plage est ensuite encodéepar un nombre suivi du caractère répété.

C’est le premier exemple :

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb 7→ C(x) = 29a7b .

Sur y = abababababababababababababab, on obtient

C(y) = 1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b .

14/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 75: Théorie de l'Information Cours 9

RLE

Algorithme RLE : run-length encoding, codage par plages

On découpe le texte en plages de caractères identiques. Chaque plage est ensuite encodéepar un nombre suivi du caractère répété.

C’est le premier exemple :

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb 7→ C(x) = 29a7b .

Sur y = abababababababababababababab, on obtient

C(y) = 1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b .

14/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 76: Théorie de l'Information Cours 9

RLE

Algorithme RLE : run-length encoding, codage par plages

On découpe le texte en plages de caractères identiques. Chaque plage est ensuite encodéepar un nombre suivi du caractère répété.

C’est le premier exemple :

x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbb 7→ C(x) = 29a7b .

Sur y = abababababababababababababab, on obtient

C(y) = 1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b1a1b .

14/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 77: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 78: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 79: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message :

n× sI Longueur (en bits) du message compressé :

dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 80: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message : n× s

I Longueur (en bits) du message compressé :

dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 81: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé :

dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 82: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé : dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 83: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé : dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message :

n× s

I Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 84: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé : dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message :

n× sI Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 85: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé : dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message : n× s

I Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 86: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé : dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé :

n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 87: Théorie de l'Information Cours 9

RLE : cas limites

Pour un alphabet X , on note s = dlog2 |X |e.

Meilleur cas : un message avec n fois la même lettre x ∈ X .

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé : dlog2 ne+ s

Pire cas : un message avec une succession de n symboles différents.

I Longueur (en bits) du message : n× sI Longueur (en bits) du message compressé : n(1 + s)

15/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 88: Théorie de l'Information Cours 9

RLE : cas moyen

Pour des symboles tirés uniformément et indépendamment, la probabilité d’avoir nsymboles identiques consécutifs décroît exponentiellement avec n.

On peut montrer que pour un processus dont les symboles sont tirés uniformément etindépendamment, en moyenne le codage RLE ne raccourcit pas le message.

En français? Les successions de lettres identiques sont rares, surtout pour ≥ 3 lettresidentiques.

Mais... il existe des motifs qui se répètent.

Il faut donc transformer le texte pour obtenir des plages de symboles consécutifsidentiques.

16/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 89: Théorie de l'Information Cours 9

RLE : cas moyen

Pour des symboles tirés uniformément et indépendamment, la probabilité d’avoir nsymboles identiques consécutifs décroît exponentiellement avec n.

On peut montrer que pour un processus dont les symboles sont tirés uniformément etindépendamment, en moyenne le codage RLE ne raccourcit pas le message.

En français? Les successions de lettres identiques sont rares, surtout pour ≥ 3 lettresidentiques.

Mais... il existe des motifs qui se répètent.

Il faut donc transformer le texte pour obtenir des plages de symboles consécutifsidentiques.

16/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 90: Théorie de l'Information Cours 9

RLE : cas moyen

Pour des symboles tirés uniformément et indépendamment, la probabilité d’avoir nsymboles identiques consécutifs décroît exponentiellement avec n.

On peut montrer que pour un processus dont les symboles sont tirés uniformément etindépendamment, en moyenne le codage RLE ne raccourcit pas le message.

En français? Les successions de lettres identiques sont rares, surtout pour ≥ 3 lettresidentiques.

Mais... il existe des motifs qui se répètent.

Il faut donc transformer le texte pour obtenir des plages de symboles consécutifsidentiques.

16/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 91: Théorie de l'Information Cours 9

RLE : cas moyen

Pour des symboles tirés uniformément et indépendamment, la probabilité d’avoir nsymboles identiques consécutifs décroît exponentiellement avec n.

On peut montrer que pour un processus dont les symboles sont tirés uniformément etindépendamment, en moyenne le codage RLE ne raccourcit pas le message.

En français? Les successions de lettres identiques sont rares, surtout pour ≥ 3 lettresidentiques.

Mais... il existe des motifs qui se répètent.

Il faut donc transformer le texte pour obtenir des plages de symboles consécutifsidentiques.

16/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 92: Théorie de l'Information Cours 9

RLE : cas moyen

Pour des symboles tirés uniformément et indépendamment, la probabilité d’avoir nsymboles identiques consécutifs décroît exponentiellement avec n.

On peut montrer que pour un processus dont les symboles sont tirés uniformément etindépendamment, en moyenne le codage RLE ne raccourcit pas le message.

En français? Les successions de lettres identiques sont rares, surtout pour ≥ 3 lettresidentiques.

Mais... il existe des motifs qui se répètent.

Il faut donc transformer le texte pour obtenir des plages de symboles consécutifsidentiques.

16/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 93: Théorie de l'Information Cours 9

Burrows-Wheeler : idée

Étant donné un texte x, une façon de créer un autre texte avec des symboles successifsidentiques est de trier les lettres par ordre alphabétique.

Problème : comment revenir en arrière? comment garder l’information de l’ordre initial ?

Prenons le mot : BANANE.

On remarque qu’après un A, il y a toujours un N (A→ N).

Cette propriété reste vraie après rotation des lettres :

BANANE, EBANAN, NEBANA, ANEBAN, NANEBA, ANANEB

Si on trie ces mots par ordre alphabétique :

ANANEBANEBANBANANEEBANANNANEBANEBANA

Les lettres N consécutives issues du tri correspondent à des lettres A consécutives en finde mot (car A→ N).

17/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 94: Théorie de l'Information Cours 9

Burrows-Wheeler : idée

Étant donné un texte x, une façon de créer un autre texte avec des symboles successifsidentiques est de trier les lettres par ordre alphabétique.

Problème : comment revenir en arrière? comment garder l’information de l’ordre initial ?

Prenons le mot : BANANE.

On remarque qu’après un A, il y a toujours un N (A→ N).

Cette propriété reste vraie après rotation des lettres :

BANANE, EBANAN, NEBANA, ANEBAN, NANEBA, ANANEB

Si on trie ces mots par ordre alphabétique :

ANANEBANEBANBANANEEBANANNANEBANEBANA

Les lettres N consécutives issues du tri correspondent à des lettres A consécutives en finde mot (car A→ N).

17/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 95: Théorie de l'Information Cours 9

Burrows-Wheeler : idée

Étant donné un texte x, une façon de créer un autre texte avec des symboles successifsidentiques est de trier les lettres par ordre alphabétique.

Problème : comment revenir en arrière? comment garder l’information de l’ordre initial ?

Prenons le mot : BANANE.

On remarque qu’après un A, il y a toujours un N (A→ N).

Cette propriété reste vraie après rotation des lettres :

BANANE, EBANAN, NEBANA, ANEBAN, NANEBA, ANANEB

Si on trie ces mots par ordre alphabétique :

ANANEBANEBANBANANEEBANANNANEBANEBANA

Les lettres N consécutives issues du tri correspondent à des lettres A consécutives en finde mot (car A→ N).

17/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 96: Théorie de l'Information Cours 9

Burrows-Wheeler : idée

Étant donné un texte x, une façon de créer un autre texte avec des symboles successifsidentiques est de trier les lettres par ordre alphabétique.

Problème : comment revenir en arrière? comment garder l’information de l’ordre initial ?

Prenons le mot : BANANE.

On remarque qu’après un A, il y a toujours un N (A→ N).

Cette propriété reste vraie après rotation des lettres :

BANANE, EBANAN, NEBANA, ANEBAN, NANEBA, ANANEB

Si on trie ces mots par ordre alphabétique :

ANANEBANEBANBANANEEBANANNANEBANEBANA

Les lettres N consécutives issues du tri correspondent à des lettres A consécutives en finde mot (car A→ N).

17/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 97: Théorie de l'Information Cours 9

Burrows-Wheeler : idée

Si on trie ces mots par ordre alphabétique :

ANANEBANEBANBANANEEBANANNANEBANEBANA

Les lettres N consécutives issues du tri correspondent à des lettres A consécutives en finde mot (car A→ N).

Idée : on peut donc aussi utiliser la dernière colonne du tableau comme mot transformé.

De plus, il est possible de retrouver toutes les colonnes du tableau à partir de la premièreet de la dernière.

On peut donc se rappeler de la position du mot initial dans la table triée (ici la troisièmeligne).

18/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 98: Théorie de l'Information Cours 9

Burrows-Wheeler : idée

Si on trie ces mots par ordre alphabétique :

ANANEBANEBANBANANEEBANANNANEBANEBANA

Les lettres N consécutives issues du tri correspondent à des lettres A consécutives en finde mot (car A→ N).

Idée : on peut donc aussi utiliser la dernière colonne du tableau comme mot transformé.

De plus, il est possible de retrouver toutes les colonnes du tableau à partir de la premièreet de la dernière.

On peut donc se rappeler de la position du mot initial dans la table triée (ici la troisièmeligne).

18/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 99: Théorie de l'Information Cours 9

Burrows-Wheeler : idée

Si on trie ces mots par ordre alphabétique :

ANANEBANEBANBANANEEBANANNANEBANEBANA

Les lettres N consécutives issues du tri correspondent à des lettres A consécutives en finde mot (car A→ N).

Idée : on peut donc aussi utiliser la dernière colonne du tableau comme mot transformé.

De plus, il est possible de retrouver toutes les colonnes du tableau à partir de la premièreet de la dernière.

On peut donc se rappeler de la position du mot initial dans la table triée (ici la troisièmeligne).

18/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 100: Théorie de l'Information Cours 9

Burrows-Wheeler : idée

Si on trie ces mots par ordre alphabétique :

ANANEBANEBANBANANEEBANANNANEBANEBANA

Les lettres N consécutives issues du tri correspondent à des lettres A consécutives en finde mot (car A→ N).

Idée : on peut donc aussi utiliser la dernière colonne du tableau comme mot transformé.

De plus, il est possible de retrouver toutes les colonnes du tableau à partir de la premièreet de la dernière.

On peut donc se rappeler de la position du mot initial dans la table triée (ici la troisièmeligne).

18/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 101: Théorie de l'Information Cours 9

Burrows-Wheeler : algorithme

On dispose deI une fonction de rotation des lettres rotateI une fonction de tri sort

Transformée de Burrows-Wheeler

Entrée : une chaîne de caractère x = x0 . . . xm−1 ∈ Xm.Sortie : un entier n ∈ {0, . . . , m− 1} et une chaîne de caractères y = y0 . . . ym−1 ∈ Xm.

1. Tab← [rotate(x, 0), . . . , rotate(x, m− 1)]

2. SortedTab← sort(Tab)

3. y← [SortedTab[0][m− 1], . . . , SortedTab[m− 1][m− 1]]

4. Trouver n ∈ {0, . . . , m− 1} tel que SortedTab[n] = x

5. Retourner n et y

Complexité : O(m2) opérations pour cette version de l’algorithme, améliorable enO(m log m).

19/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 102: Théorie de l'Information Cours 9

Burrows-Wheeler : exemple

x = ABRACADABRA.

On construit une table Tab constituée des rotations cycliques de x. Puis on trie Tab parordre alphabétique dans SortedTab, où

Tab =

ABRACADABRA

BRACADABRAA

RACADABRAAB

ACADABRAABR

CADABRAABRA

ADABRAABRAC

DABRAABRACA

ABRAABRACAD

BRAABRACADA

RAABRACADAB

AABRACADABR

et SortedTab =

AABRACADABR

ABRAABRACAD

ABRACADABRA

ACADABRAABR

ADABRAABRAC

BRAABRACADA

BRACADABRAA

CADABRAABRA

DABRAABRACA

RAABRACADAB

RACADABRAAB

.

L’algorithme retourne alors (n = 2, y = RDARCAAAABB).

20/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 103: Théorie de l'Information Cours 9

Burrows-Wheeler : exemple

x = ABRACADABRA.

On construit une table Tab constituée des rotations cycliques de x.

Puis on trie Tab parordre alphabétique dans SortedTab, où

Tab =

ABRACADABRA

BRACADABRAA

RACADABRAAB

ACADABRAABR

CADABRAABRA

ADABRAABRAC

DABRAABRACA

ABRAABRACAD

BRAABRACADA

RAABRACADAB

AABRACADABR

et SortedTab =

AABRACADABR

ABRAABRACAD

ABRACADABRA

ACADABRAABR

ADABRAABRAC

BRAABRACADA

BRACADABRAA

CADABRAABRA

DABRAABRACA

RAABRACADAB

RACADABRAAB

.

L’algorithme retourne alors (n = 2, y = RDARCAAAABB).

20/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 104: Théorie de l'Information Cours 9

Burrows-Wheeler : exemple

x = ABRACADABRA.

On construit une table Tab constituée des rotations cycliques de x. Puis on trie Tab parordre alphabétique dans SortedTab, où

Tab =

ABRACADABRA

BRACADABRAA

RACADABRAAB

ACADABRAABR

CADABRAABRA

ADABRAABRAC

DABRAABRACA

ABRAABRACAD

BRAABRACADA

RAABRACADAB

AABRACADABR

et SortedTab =

AABRACADABR

ABRAABRACAD

ABRACADABRA

ACADABRAABR

ADABRAABRAC

BRAABRACADA

BRACADABRAA

CADABRAABRA

DABRAABRACA

RAABRACADAB

RACADABRAAB

.

L’algorithme retourne alors (n = 2, y = RDARCAAAABB).

20/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 105: Théorie de l'Information Cours 9

Burrows-Wheeler : exemple

x = ABRACADABRA.

On construit une table Tab constituée des rotations cycliques de x. Puis on trie Tab parordre alphabétique dans SortedTab, où

Tab =

ABRACADABRA

BRACADABRAA

RACADABRAAB

ACADABRAABR

CADABRAABRA

ADABRAABRAC

DABRAABRACA

ABRAABRACAD

BRAABRACADA

RAABRACADAB

AABRACADABR

et SortedTab =

AABRACADABR

ABRAABRACAD

ABRACADABRA

ACADABRAABR

ADABRAABRAC

BRAABRACADA

BRACADABRAA

CADABRAABRA

DABRAABRACA

RAABRACADAB

RACADABRAAB

.

L’algorithme retourne alors (n = 2, y = RDARCAAAABB).

20/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 106: Théorie de l'Information Cours 9

Burrows-Wheeler : et l’inverse?

Inversion de la transformée de Burrows-Wheeler

Entrée :un entier n ∈ {0, . . . , m− 1} et une chaîne de caractères y = y0 . . . ym−1 ∈ Xm.Sortie : une chaîne de caractère x = x0 . . . xm−1 ∈ Xm.

1. Tab← [y0, y1, . . . , ym−1]

2. Tab← sort(Tab)

3. Pour tout i ∈ {1, . . . , m− 1}Pour tout j ∈ {0, . . . , m− 1}

Ajouter yj au début de la chaîne Tab[j]Tab← sort(Tab)

4. x← Tab[n]

5. Retourner x

Complexité : O(m2 log m) opérations pour cette version de l’algorithme, améliorable enO(m log m).

21/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 107: Théorie de l'Information Cours 9

move-to-front : motivation

En sortie d’une transformée de Burrows-Wheeler, on espère observer des motifs de lettressemblables et fréquents.

On pourrait procéder directement à un codage par plage sur la sortie.

Avant, une idée est de transformer ces motifs en « petits nombres » grâce à uneprocédure nommée move-to-front.

Avantage : les petits nombres sont plus courts à stocker (et contiennent plus de 0) que lescodes des lettres.

22/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 108: Théorie de l'Information Cours 9

move-to-front : motivation

En sortie d’une transformée de Burrows-Wheeler, on espère observer des motifs de lettressemblables et fréquents.

On pourrait procéder directement à un codage par plage sur la sortie.

Avant, une idée est de transformer ces motifs en « petits nombres » grâce à uneprocédure nommée move-to-front.

Avantage : les petits nombres sont plus courts à stocker (et contiennent plus de 0) que lescodes des lettres.

22/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 109: Théorie de l'Information Cours 9

move-to-front : motivation

En sortie d’une transformée de Burrows-Wheeler, on espère observer des motifs de lettressemblables et fréquents.

On pourrait procéder directement à un codage par plage sur la sortie.

Avant, une idée est de transformer ces motifs en « petits nombres » grâce à uneprocédure nommée move-to-front.

Avantage : les petits nombres sont plus courts à stocker (et contiennent plus de 0) que lescodes des lettres.

22/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 110: Théorie de l'Information Cours 9

move-to-front : motivation

En sortie d’une transformée de Burrows-Wheeler, on espère observer des motifs de lettressemblables et fréquents.

On pourrait procéder directement à un codage par plage sur la sortie.

Avant, une idée est de transformer ces motifs en « petits nombres » grâce à uneprocédure nommée move-to-front.

Avantage : les petits nombres sont plus courts à stocker (et contiennent plus de 0) que lescodes des lettres.

22/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 111: Théorie de l'Information Cours 9

move-to-front : algorithme

Algorithme move-to-front

Entrée : une chaîne de caractère x = x0 . . . xm−1 ∈ Xm.Sortie : une suite d’entiers a0, . . . , am−1 ∈ {0, . . . , N− 1}m où N = |X |

1. Tab← [x0, . . . , xm−1]

2. res← []

3. Pour tout i ∈ {0, . . . , m− 1}Trouver j ∈ {0, . . . , m− 1} tel que Tab[j] = xires← res+ [j]Tab← movefirst(Tab, i)

4. Retourner res

23/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 112: Théorie de l'Information Cours 9

Conclusion

Le logiciel de compression bzip2, très courant sous Linux, utilise notamment la séquenced’algorithmes :

BurrowsWheeler → movetofront → RLE

On y ajoute un code de Huffman pour raccourcir le codage des nombres les plus fréquentsissus de RLE.

24/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –

Page 113: Théorie de l'Information Cours 9

Conclusion

Le logiciel de compression bzip2, très courant sous Linux, utilise notamment la séquenced’algorithmes :

BurrowsWheeler → movetofront → RLE

On y ajoute un code de Huffman pour raccourcir le codage des nombres les plus fréquentsissus de RLE.

24/24 J. Lavauzelle M1 – Théorie de l’Information– TI-9 –