La Compression de Données

48
La Compression de Données Par Sébastien Vaie M2 ISV Paris V René Descartes

description

La Compression de Données. Par Sébastien Vaie M2 ISV Paris V René Descartes. Introduction. Cela consiste en la réduction des données pour permettre le transit via les réseaux d’informations Le coût et les limites de stockage ont forcé l’utilisation de la compression de données. - PowerPoint PPT Presentation

Transcript of La Compression de Données

Page 1: La Compression de Données

La Compression de Données

Par Sébastien Vaie M2 ISV Paris V René Descartes

Page 2: La Compression de Données

IntroductionIntroduction

Cela consiste en la réduction des données pour Cela consiste en la réduction des données pour permettre le transit via les réseaux permettre le transit via les réseaux d’informationsd’informations

Le coût et les limites de stockage ont forcé Le coût et les limites de stockage ont forcé l’utilisation de la compression de données.l’utilisation de la compression de données.

Et donc pour compresser il faut coder Et donc pour compresser il faut coder l’information pour qu’elle prenne moins de place.l’information pour qu’elle prenne moins de place.

Page 3: La Compression de Données

Introduction(2)Introduction(2)

On distingue 2 types de compressionOn distingue 2 types de compression

La compression sans perteLa compression sans perte Où les données ne doivent pas être altérées (texte, Où les données ne doivent pas être altérées (texte,

programme informatique,…).programme informatique,…).

La compression avec perteLa compression avec perte Où la qualité des données est limitée par la perception Où la qualité des données est limitée par la perception

humaine (Vidéo,Son,Image,….).humaine (Vidéo,Son,Image,….).

Page 4: La Compression de Données

Introduction(3)Introduction(3)

Dans cet exposé nous allons traiter Dans cet exposé nous allons traiter uniquement la compression sans perte.uniquement la compression sans perte.

Pour cela nous allons étudier les 3 Pour cela nous allons étudier les 3 algorithmes les plus utilisés. algorithmes les plus utilisés.

RLERLE LZWLZW Huffman Huffman

Page 5: La Compression de Données

RLE introductionRLE introduction

RLE ou RLE ou run lenght encodingrun lenght encoding

C’est un type d’algorithme relativement simple. Qui C’est un type d’algorithme relativement simple. Qui est utilisé pour compresser tout type de données est utilisé pour compresser tout type de données sans tenir compte du type de données, même si le sans tenir compte du type de données, même si le contenu des données conditionne l’efficacité de cet contenu des données conditionne l’efficacité de cet algorithme.algorithme.

En effet, il est basé sur la répétition de caractère et En effet, il est basé sur la répétition de caractère et donc si les données à compresser sont peu ou pas donc si les données à compresser sont peu ou pas répétées le taux de compression sera faible.répétées le taux de compression sera faible.

Page 6: La Compression de Données

RLERLE

PrincipePrincipe

Recherche de caractère répété.Recherche de caractère répété.

Remplacement de ces caractères.Remplacement de ces caractères.Par un caractère spécifique marquant la compression. Par un caractère spécifique marquant la compression. Nombres de répétitions.Nombres de répétitions.Et le caractère qui est répété.Et le caractère qui est répété.

Sortie du fichier compressé.Sortie du fichier compressé.

Remarque : imposer un seuil de répétition de minimum 3 si < 3 = augmentation de Remarque : imposer un seuil de répétition de minimum 3 si < 3 = augmentation de la taillela taille

Page 7: La Compression de Données

RLERLE

Exemple de principeExemple de principe

ex:ex: AAAARRRRRROLLLLBBBBBUUTTTTTTAAAARRRRRROLLLLBBBBBUUTTTTTT

On choisit comme caractère spécial : On choisit comme caractère spécial : @ @ et comme et comme seuil de répétition : 3seuil de répétition : 3

Après compression : Après compression : @5A@6RO@4L@5BUU@6T @5A@6RO@4L@5BUU@6T gain : 11 caractères soit 38%gain : 11 caractères soit 38%

Ce qui fait un gain relativement faible.Ce qui fait un gain relativement faible.

Page 8: La Compression de Données

AlgorithmeAlgorithmeENTREE: fichier à compresserENTREE: fichier à compresserSORTIE: fichier compresséSORTIE: fichier compressé

pour tous les bytes{pour tous les bytes{Tant que les bytes sont égaux{Tant que les bytes sont égaux{

compteur++;compteur++;}}

Si compteur >n (seuil de redondance){Si compteur >n (seuil de redondance){Remet le pointeur au début de la chaîne identiqueRemet le pointeur au début de la chaîne identiqueRemplace le premier byte par le marqueur de compression Remplace le premier byte par le marqueur de compression

le 2ieme par Compteur passe un byte et efface jusqu’à n-3 Bytesle 2ieme par Compteur passe un byte et efface jusqu’à n-3 Bytes}}

Else {Else {passe au byte suivant et relance la bouclepasse au byte suivant et relance la boucle

}}}}

Page 9: La Compression de Données

DécompressionDécompression

Pour la décompression c’est aussi simple Pour la décompression c’est aussi simple que la compression l’algorithme a juste à que la compression l’algorithme a juste à lire le fichier dès qu’il rencontre la marque lire le fichier dès qu’il rencontre la marque de compression il regarde le second et de compression il regarde le second et tant que le nombre est inférieur à celui-ci il tant que le nombre est inférieur à celui-ci il met le troisième caractère et il passe au met le troisième caractère et il passe au caractère suivant.caractère suivant.

Page 10: La Compression de Données

VariantesVariantes

En effet, il existe plusieurs variantes du RLE et En effet, il existe plusieurs variantes du RLE et qui ont toutes leurs variations sur la méthode de qui ont toutes leurs variations sur la méthode de recherche des répétitions sur le RLE de base la recherche des répétitions sur le RLE de base la recherche de répétitions se fait ligne par ligne. recherche de répétitions se fait ligne par ligne.

Mais il est possible de modifier cela pour faire:Mais il est possible de modifier cela pour faire:

En verticale colonne par colonne.En verticale colonne par colonne.En ligne mais 4 bytes par 4 bytes.En ligne mais 4 bytes par 4 bytes.Ou encore en Zig-Zag.Ou encore en Zig-Zag.

Ce qui va permettre de mieux traiter certains types de donnéesCe qui va permettre de mieux traiter certains types de donnéesExemple RLE-Colonne sur texte. Exemple RLE-Colonne sur texte.

Page 11: La Compression de Données

Variantes(2)Variantes(2)

Page 12: La Compression de Données

ConclusionConclusion

Performances Performances Donc ce type d’algorithme va être très performant sur les Donc ce type d’algorithme va être très performant sur les types de données où il y a des redondances comme les types de données où il y a des redondances comme les images synthétiques ou encore certains programmes.images synthétiques ou encore certains programmes.

Il n’a pas besoin de fichier annexe (dictionnaire) .Il n’a pas besoin de fichier annexe (dictionnaire) .

Limitations Limitations Cette méthode est très peu applicable sur la compression de Cette méthode est très peu applicable sur la compression de données type « texte » due à la faible présence de données type « texte » due à la faible présence de redondance.redondance.

Si le texte ne compte pas de redondance l’espace pris sera Si le texte ne compte pas de redondance l’espace pris sera le double donc la compression sera sous performante.le double donc la compression sera sous performante.

Page 13: La Compression de Données

LZW introductionLZW introduction

LZW ou LZW ou Lempel-Ziv-Welch

Cet algorithme fonctionne sur le même principe que le Cet algorithme fonctionne sur le même principe que le RLE à savoir supprimer les redondances.RLE à savoir supprimer les redondances.

Il ne lit pas byte par byte mais plutôt « mot » par Il ne lit pas byte par byte mais plutôt « mot » par « mot ».« mot ».

Et donc pour cela il doit utiliser une bibliothèque de Et donc pour cela il doit utiliser une bibliothèque de mot.mot.

Page 14: La Compression de Données

PrincipePrincipe

Le LZW est une amélioration du code LZ78 et c’est une méthode Le LZW est une amélioration du code LZ78 et c’est une méthode adaptative.adaptative.

Il a pour principe de ne plus coder des bytes mais des groupes de Il a pour principe de ne plus coder des bytes mais des groupes de bytes grâce à l’utilisation d’un dictionnaire qui permet au cours de la bytes grâce à l’utilisation d’un dictionnaire qui permet au cours de la compression de ne plus stocker les mots mais juste leurs compression de ne plus stocker les mots mais juste leurs références vers le dictionnaire.références vers le dictionnaire.

Ce dictionnaire est créé de manière dynamique qui en fonction des Ce dictionnaire est créé de manière dynamique qui en fonction des mots qu’il rencontre. S’il ne sont pas encore apparus, il créé une mots qu’il rencontre. S’il ne sont pas encore apparus, il créé une nouvelle entrée dans le dictionnaire et contient préalablement les nouvelle entrée dans le dictionnaire et contient préalablement les 256 caractères du code ASCII pour des données de type texte.256 caractères du code ASCII pour des données de type texte.

Page 15: La Compression de Données

Principe (2)Principe (2)

Le système va lire chaque caractère du fichier et s’il est dans Le système va lire chaque caractère du fichier et s’il est dans le dictionnaire il sort le code correspondant sinon il créé une le dictionnaire il sort le code correspondant sinon il créé une nouvelle entrée dans le dictionnaire avec un nouveau code.nouvelle entrée dans le dictionnaire avec un nouveau code.

En passant au caractère suivant il va regarder si cette En passant au caractère suivant il va regarder si cette chaîne de caractères est présente dans le dictionnaire si oui chaîne de caractères est présente dans le dictionnaire si oui elle ressort le code de cette chaîne sinon elle créée un elle ressort le code de cette chaîne sinon elle créée un nouvelle entrée avec la plus petite chaîne déjà connue nouvelle entrée avec la plus petite chaîne déjà connue contenue dans la chaîne analyser .contenue dans la chaîne analyser .

donc il va former des nouvelles chaînes avec des chaînes donc il va former des nouvelles chaînes avec des chaînes déjà connues du dictionnaire en ajoutant à la fin le caractère déjà connues du dictionnaire en ajoutant à la fin le caractère non connu et cette nouvelle chaîne est à son tour entrée non connu et cette nouvelle chaîne est à son tour entrée dans le dictionnaire avec une référence spécifique et pour dans le dictionnaire avec une référence spécifique et pour être utilisée de la même manière.être utilisée de la même manière.

Page 16: La Compression de Données

Principe (3)Principe (3)

ExempleExempleChaîne à encoder:Chaîne à encoder:

/WED/WE/WEE/WEB/WET/WED/WE/WEE/WEB/WET

Caractère luCaractère lu Code ressortiCode ressorti Nouveau codeNouveau code Nouvelle entréeNouvelle entrée

Chaîne compressé ou encodé: /WED 256 257 256 260 261 257 B 260 T

Page 17: La Compression de Données

Principe(4)Principe(4)

Exemple 2Exemple 2

Division:

index

Codage

aaababbbaaabaaaaaaabaabbaaababbbaaabaaaaaaabaabb

|a|aa|b|ab|bb|aaa|ba|aaaa|aab|aabb|a|aa|b|ab|bb|aaa|ba|aaaa|aab|aabb

0 1 2 3 4 5 6 7 8 9 100 1 2 3 4 5 6 7 8 9 10

0a|1a|0b|1b|3b|2a|3a| 6a | 2b | 9b0a|1a|0b|1b|3b|2a|3a| 6a | 2b | 9b

Page 18: La Compression de Données

AlgorithmeAlgorithme

STRING = get input character STRING = get input character

WHILE there are still input characters DO WHILE there are still input characters DO

CHARACTER = get input characterCHARACTER = get input character

IF STRING+CHARACTER is in the string table thenIF STRING+CHARACTER is in the string table then

STRING = STRING+character STRING = STRING+character

ELSE output the code for STRING add ELSE output the code for STRING add STRING+CHARACTER STRING+CHARACTER to the string tableto the string table

STRING = CHARACTERSTRING = CHARACTER

END of IF END of IF

END of WHILEEND of WHILE

output the code for STRING output the code for STRING

Page 19: La Compression de Données

ExplicationExplication

L’algorithme prend le premier caractère et tant qu’il y a des L’algorithme prend le premier caractère et tant qu’il y a des caractères dans le fichier il va concaténer le premier et caractères dans le fichier il va concaténer le premier et celui d’après et là il fait une vérification si le premier plus celui d’après et là il fait une vérification si le premier plus le second sont dans le dictionnaire, il la concatène avec le second sont dans le dictionnaire, il la concatène avec le troisième et ainsi de suite.le troisième et ainsi de suite.

Et si cette chaîne n’est pas dans le dictionnaire il créé une Et si cette chaîne n’est pas dans le dictionnaire il créé une nouvelle entrée dans celui si et lui donne un code. nouvelle entrée dans celui si et lui donne un code.

Et il ressort le code correspondant à la chaîne.Et il ressort le code correspondant à la chaîne.

Page 20: La Compression de Données

DécompressionDécompression

Le RLE a juste besoin de lire le fichier Le RLE a juste besoin de lire le fichier compressé pour la décompression.compressé pour la décompression.

Alors que le LZW devrait avoir le dictionnaire Alors que le LZW devrait avoir le dictionnaire pour la décompression. pour la décompression.

Mais ceci a été résolu grâce à l’incorporation de phrase Mais ceci a été résolu grâce à l’incorporation de phrase minimale d’office dans le dictionnaire.minimale d’office dans le dictionnaire.

Comme les entrées sont séquentielles à la décompression Comme les entrées sont séquentielles à la décompression possibilité de reconstruire le dictionnaire.possibilité de reconstruire le dictionnaire.

Page 21: La Compression de Données

PerformancesPerformances

Il arrive à des taux de compression au plus bas Il arrive à des taux de compression au plus bas de l’ordre du RLE (38%).de l’ordre du RLE (38%).

Et en moyenne a presque 50% lus performent Et en moyenne a presque 50% lus performent sur les fichiers de grande taille mais avec les sur les fichiers de grande taille mais avec les modifications LMZW permet de traiter les modifications LMZW permet de traiter les fichiers plus petits avec la même performance.fichiers plus petits avec la même performance.

A le gros avantage de ne pas avoir besoin du A le gros avantage de ne pas avoir besoin du dictionnaire pour la décompression.dictionnaire pour la décompression.

Page 22: La Compression de Données

LimitationsLimitations Le problème de ce type d’algorithme est qu’il est peu Le problème de ce type d’algorithme est qu’il est peu

performant sur les données de type image car il y a performant sur les données de type image car il y a peu, dans les images, de répétitions de longue suite peu, dans les images, de répétitions de longue suite de pixels.de pixels.

Ce qui fait la force de ces algorithmes.Ce qui fait la force de ces algorithmes.

Le deuxième problème est plus technique dû à la Le deuxième problème est plus technique dû à la complexité au niveau programmation surtout au complexité au niveau programmation surtout au niveau des déplacements de pointeur sur les fichiers niveau des déplacements de pointeur sur les fichiers à compresser.à compresser.

Et dernière limitation est d’ordre légal puisque ces Et dernière limitation est d’ordre légal puisque ces algorithmes sont l’objet de 2 brevets.algorithmes sont l’objet de 2 brevets.

Page 23: La Compression de Données

VariantesVariantes

Les variantes du LSW s’intéressent principalement sur les points Les variantes du LSW s’intéressent principalement sur les points faibles de ce dernier.faibles de ce dernier.

PKZIPPKZIPÉvite le problème de fichier de petite taille en permettant un Évite le problème de fichier de petite taille en permettant un redimensionnement dynamique de la taille de l’identifiant redimensionnement dynamique de la taille de l’identifiant ressorti par le dictionnaire .ressorti par le dictionnaire .Car si le fichier est petit des identifiants de plus petites tailles Car si le fichier est petit des identifiants de plus petites tailles donnent un meilleur taux de compression. donnent un meilleur taux de compression.

LMZWLMZWIl modifie la méthode d’entrée dans le dictionnaire. En effet, il Il modifie la méthode d’entrée dans le dictionnaire. En effet, il ne créé pas de nouvelle phrase en concaténant une déjà ne créé pas de nouvelle phrase en concaténant une déjà existante avec un autre caractère mis avec une autre existante avec un autre caractère mis avec une autre phrase.phrase.Cela complique le dictionnaire mais permet de gagner en Cela complique le dictionnaire mais permet de gagner en performance,même sur les fichiers de petite taille.performance,même sur les fichiers de petite taille.

Page 24: La Compression de Données

ConclusionConclusion

On peut dire que les algorithmes de LZ et de LZW sont de très bons On peut dire que les algorithmes de LZ et de LZW sont de très bons algorithmes de compression pour les données de type texte ou algorithmes de compression pour les données de type texte ou encore binaires car il partent d’un taux de compression initiale encore binaires car il partent d’un taux de compression initiale proche de celui du RLE (38%) pour arriver à près de 50% de proche de celui du RLE (38%) pour arriver à près de 50% de compression.compression.

Ils sont utilisés dans beaucoup d’outils de compression tels que Ils sont utilisés dans beaucoup d’outils de compression tels que PKzip ARJ etc…PKzip ARJ etc…

Ils sont également beaucoup plus performants sur des fichiers de Ils sont également beaucoup plus performants sur des fichiers de grandes tailles. En effet, ils ont besoin d’un certain nombre de grandes tailles. En effet, ils ont besoin d’un certain nombre de caractères pour bien remplir leurs dictionnaires.caractères pour bien remplir leurs dictionnaires.

Cet algorithme est symétrique ce qui veut dire qu’il met autant de Cet algorithme est symétrique ce qui veut dire qu’il met autant de temps en compression qu’en décompression.temps en compression qu’en décompression.

Page 25: La Compression de Données

Huffman introductionHuffman introduction

Il a pour but de transformer les caractères en Il a pour but de transformer les caractères en identifiant binaire ( suite de 0 et de 1).identifiant binaire ( suite de 0 et de 1).

De manière à ce qu’aucun code ne soit le préfix De manière à ce qu’aucun code ne soit le préfix d’un autre.d’un autre.

Ex : 110 et 1101 ne peuvent pas être présents car problème Ex : 110 et 1101 ne peuvent pas être présents car problème de compréhension lors de la décompression.de compréhension lors de la décompression.

Pour se faire il va donc utiliser des arbres de Pour se faire il va donc utiliser des arbres de Huffman pour créer les identifiants.Huffman pour créer les identifiants.

Page 26: La Compression de Données

PrincipePrincipe

Cet algorithme se base sur les fréquences Cet algorithme se base sur les fréquences d’apparition des caractères.d’apparition des caractères.

Il va les stocker dans une table et construire Il va les stocker dans une table et construire l’arbre de codage à partir de cette table.l’arbre de codage à partir de cette table.

Donc il va réduire le nombre de bytes occupés Donc il va réduire le nombre de bytes occupés par les caractères dont la fréquence est élevée par les caractères dont la fréquence est élevée et augmenter celui dont elle est faible.et augmenter celui dont elle est faible.

Page 27: La Compression de Données

Principe(2)Principe(2)

Pour la création de l’arbre Pour la création de l’arbre

Pour chaque caractère il créé un arbre (feuille) où est stocké Pour chaque caractère il créé un arbre (feuille) où est stocké sa fréquence d’apparition.sa fréquence d’apparition.

Tant que le nombre d’arbres est supérieur à 1, il fusionne les Tant que le nombre d’arbres est supérieur à 1, il fusionne les deux arbres ayant la fréquence d’apparition la plus faible.deux arbres ayant la fréquence d’apparition la plus faible.

Une fois l’arbre construit il associe aux branches de chaque Une fois l’arbre construit il associe aux branches de chaque nœud 1 si c’est une branche droite 0 sinon.nœud 1 si c’est une branche droite 0 sinon.

Page 28: La Compression de Données

Principe(3)Principe(3)

En partant de la racine on peut obtenir le code de En partant de la racine on peut obtenir le code de chaque caractère. chaque caractère.

On a également l’assurance de l’unicité de chaque code On a également l’assurance de l’unicité de chaque code grâce à cette méthode de construction.grâce à cette méthode de construction.

Le fait que ce soit un arbre binaire. on sait que chaque Le fait que ce soit un arbre binaire. on sait que chaque feuille a un chemin unique pour aller jusqu’à la racine.feuille a un chemin unique pour aller jusqu’à la racine.

Don unicité du code de chaque caractère.Don unicité du code de chaque caractère.

Page 29: La Compression de Données

Principe(4)Principe(4)

ExempleExemple

Table de fréquence et construction de l’arbre.

Page 30: La Compression de Données

Principe(5)Principe(5)

Résultat de la constructionRésultat de la construction

a = 0

z = 100

c = 1010

t = 1011

x = 110

b = 111

Texte à compresser : axabataaxbcbtaabxxaazazaa (24 caractères)

011001110101100110111101011110110011111011000100010000 (54 bits)01100111-01011001-10111101-01111011-00111110-11000100-010000 (7octets)

Page 31: La Compression de Données

AlgorithmeAlgorithme{T est le texte}{F est une file de priorité}C caractère de Acalculer l'alphabet A et les fréquences f F =Null ; pour chaque c є A faire F = F + CreerArbreFeuille(c; f(c))g),

tant que F contient plus d'un arbre faire a =ExtraireLeMin(F),

b =ExtraireLeMin(F), F = F + CreerArbre(a; b; freq(a) + freq(b))g), renvoyer (F),ExtraireLeMin(F) : renvoie à la structure de tas binaire

Page 32: La Compression de Données

ExplicationExplication

Calculs de fréquence.Calculs de fréquence.

Regroupement des arbres-feuilles.Regroupement des arbres-feuilles.

Si branche droite ou gauche allocation du Si branche droite ou gauche allocation du code pour chaque caractère.code pour chaque caractère.

Page 33: La Compression de Données

DécompressionDécompression

Pour la décompression il faut que le Pour la décompression il faut que le programme ait l’arbre de Huffman ou la programme ait l’arbre de Huffman ou la table de fréquence afin de pouvoir le table de fréquence afin de pouvoir le reconstruire.reconstruire.

une fois l’arbre reconstruit, il obtient les une fois l’arbre reconstruit, il obtient les codes correspondants à chaque caractère codes correspondants à chaque caractère il suffit plus que de les remplacer.il suffit plus que de les remplacer.

Page 34: La Compression de Données

PerformancesPerformances

Il a des taux de compression proches de celui Il a des taux de compression proches de celui du RLE.du RLE.

Mais a le gros avantage de traiter aussi bien les Mais a le gros avantage de traiter aussi bien les données de type texte que les images données de type texte que les images photographiques.photographiques.

Pas basé sur les répétitions.Pas basé sur les répétitions.

Pas de problème de fréquence égale, le code Pas de problème de fréquence égale, le code de sortie différent mais compressions de sortie différent mais compressions identiques.identiques.

Page 35: La Compression de Données

LimitationsLimitations

Nécessité de fournir l’arbre ou la table de Nécessité de fournir l’arbre ou la table de fréquence.fréquence.

Il peut donc arriver que la taille de table plus le Il peut donc arriver que la taille de table plus le fichier compressé soit plus imposant ou égal a fichier compressé soit plus imposant ou égal a celle du fichier non compressé donc celle du fichier non compressé donc compression inutile.compression inutile.

Peu performant sur les fichiers de petites tailles.Peu performant sur les fichiers de petites tailles.

Très sensible à la perte d’un bit.Très sensible à la perte d’un bit.

Page 36: La Compression de Données

VariantesVariantes

Variante principale se base la création Variante principale se base la création dynamique de l’arbre.dynamique de l’arbre.

Création de l’arbre au fur et à mesure de la Création de l’arbre au fur et à mesure de la lecture du fichier.lecture du fichier.

Variante adaptative.Variante adaptative.

Codage sur plus d’un caractère complexité plus Codage sur plus d’un caractère complexité plus grande et très peu utilisé en pratique. grande et très peu utilisé en pratique.

Page 37: La Compression de Données

Huffman adaptatifHuffman adaptatif

Cette variante permet de ne plus Cette variante permet de ne plus avoir besoin de parcourir les avoir besoin de parcourir les données avant.données avant.

Il créé l’arbre de Huffman à la Il créé l’arbre de Huffman à la volée.volée.

L’arbre sera donc vide à l’origine à L’arbre sera donc vide à l’origine à l’exception de 2 symboles <NEW> l’exception de 2 symboles <NEW> et <EOF> avec comme poids de et <EOF> avec comme poids de départ 1départ 1

Page 38: La Compression de Données

Huffman adaptatif(2)Huffman adaptatif(2)

Donc dès l’apparition d’un nouveau symbole il sera mis Donc dès l’apparition d’un nouveau symbole il sera mis en <NEW>.en <NEW>.

Et si le symbole est déjà présent sa fréquence sera Et si le symbole est déjà présent sa fréquence sera augmentée et il sera replacée à sa bonne place dans augmentée et il sera replacée à sa bonne place dans l’arbre.l’arbre.

Comme ce sont des arbres équilibrés ils sont régis par Comme ce sont des arbres équilibrés ils sont régis par des lois très strictes sur l’addition et la suppression de des lois très strictes sur l’addition et la suppression de feuille.feuille.

Ce qui permet de ne pas devoir reconstruire l’arbre mais Ce qui permet de ne pas devoir reconstruire l’arbre mais juste de permuter les branches mises en jeux.juste de permuter les branches mises en jeux.

Page 39: La Compression de Données

Huffman adaptatif(3)Huffman adaptatif(3)

Exemple:Exemple:

Codage de Codage de BANBAN

Insertion de B

Insertion de A

Page 40: La Compression de Données

Huffman adaptatif(4)Huffman adaptatif(4)

RésultatsRésultats

Là, on obtient donc le codage désiré

Il faut remarquer que lors de la construction de l’arbre le code des caractères change.

Page 41: La Compression de Données

Hauffman adaptatif(5)Hauffman adaptatif(5)

Avec cette variante il n’est plus nécessaire Avec cette variante il n’est plus nécessaire de fournir la table de fréquence et donc le de fournir la table de fréquence et donc le gain de compression est relativement gain de compression est relativement importantimportant

Mais cet algorithme étant généralement Mais cet algorithme étant généralement récursif il est plus lent que la version récursif il est plus lent que la version statique.statique.

Page 42: La Compression de Données

ConclusionConclusion

On peut dire que ce type d’algorithme a de On peut dire que ce type d’algorithme a de bonnes performances qu’ils sont adaptés à bonnes performances qu’ils sont adaptés à quasiment tous les types de données.quasiment tous les types de données.

Ils sont très sensibles à la perte de bytes et que Ils sont très sensibles à la perte de bytes et que le fait de devoir fournir la table de fréquence fait le fait de devoir fournir la table de fréquence fait baisser énormément la performance.baisser énormément la performance.

Chose qui est plus ou moins réglée avec la Chose qui est plus ou moins réglée avec la version adaptative.version adaptative.

Page 43: La Compression de Données

Conclusion générale Conclusion générale « les conseils du chef »« les conseils du chef »

La chose primordiale à savoir est quel type de La chose primordiale à savoir est quel type de donnéeq on veut compresser donnéeq on veut compresser

AlgorithmeAlgorithme RemarqueRemarque

RLE(faible)RLE(faible) Compression moyenneCompression moyenne

Efficace pour les données a forte Efficace pour les données a forte répétitionrépétition

LZW(bon)LZW(bon) Bonne compressionBonne compression

Efficace sur texte.Efficace sur texte.

BreveterBreveter

Huffman(moyen)Huffman(moyen) Bonne compression mais nécessité de Bonne compression mais nécessité de fournir la table de fréquencefournir la table de fréquence

Efficace sur tous types de donnéesEfficace sur tous types de données

Forme adaptative très intéressante.Forme adaptative très intéressante.

Page 44: La Compression de Données

MERCI

Page 45: La Compression de Données

Rappel sur les arbres binaireRappel sur les arbres binaire

PropriétésPropriétésTel que les 2 sous arbres de tout nœud on une hauteur Tel que les 2 sous arbres de tout nœud on une hauteur différente d’au plus 1.différente d’au plus 1.

ConstructionConstructionLa construction se fait par insertion sur un arbre videLa construction se fait par insertion sur un arbre vide

InserInserL’insertion se fait toujours en feuille et est suivi d’un L’insertion se fait toujours en feuille et est suivi d’un rééquilibragerééquilibrage

Rééquilibrage (rotation)Rééquilibrage (rotation)

Pas de délétion pour le codage de hufmannPas de délétion pour le codage de hufmann

Page 46: La Compression de Données

RotationRotation

Si l’arbre reste équilibré pas de rotationSi l’arbre reste équilibré pas de rotationS’il penche a gauche rotation droiteS’il penche a gauche rotation droite

Décalage des nœud sur le chemin de l’insertion vers la Décalage des nœud sur le chemin de l’insertion vers la droite.droite.

S’il penche a droite rotation gaucheS’il penche a droite rotation gaucheDécalage des noeud sur le chemin de l’insertion vers le Décalage des noeud sur le chemin de l’insertion vers le gauche.gauche.

Si l’insertion est du même coté sue le sous arbre Si l’insertion est du même coté sue le sous arbre simple rotation.simple rotation.Sinon double rotation en fonction du Sinon double rotation en fonction du déséquilibre.déséquilibre.

Page 47: La Compression de Données

Algo de création d’arbre huffmanAlgo de création d’arbre huffman

L’algorithme Hu-Tucker est l’example d’un algorithme L’algorithme Hu-Tucker est l’example d’un algorithme gourmandgourmand (greedy). (greedy).

Il est execute en temps Il est execute en temps (n log n)(n log n). .

Page 48: La Compression de Données