Gestion de Fichiers GF-7: Compression des Donnees (Base sur la section 6.1 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with.

Slides:



Advertisements
Présentations similaires
La recherche de chemin optimal
Advertisements

La Méthode de Simplexe Standardisation
Module Systèmes d’exploitation
Portée des variables VBA & Excel
Regroupement (clustering)
Regroupement (clustering)
1. Les caractéristiques de dispersion. 11. Utilité.
Chap. 1 Structures séquentielles : listes linéaires
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
OCaml – Les arbres L3 MI.
Les structures de données arborescentes
Les algorithmes: complexité et notation asymptotique
2-1 CIRCUITS ÉLECTRIQUES SIMPLES
Le codage des nombres en informatique
Gestion de Fichiers GF-15: Addressage Disperse (Hashcoding) (Base sur le Chapitre 11 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented.
Bases de données lexicales
Gestion de Fichiers Arbres B.
Sections sélectionnées du Chapitre 11
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
Algorithme de Bellman-Ford
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Structures de données IFT-2000
Expressions régulières et hash tables
Compression des Données
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
Algorithmes d ’approximation
Les arbres et tas binomiaux
Institut Supérieur des Etudes Technologiques de Djerba Exposé du Traitement de Données Réalisé par: Khalifa Marwa Magroun Amira Jawadi Souad L2MDW.
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: I. Indexes Bases sur les Structures dArbres Binaires.
Gestion de Fichiers GF-5: Storage Secondaire: Bandes Magnetiques (Base sur Chapitres 3 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Atelier de formation : MAT optimisation II (les graphes).
Structures de données IFT-2000
Programmation linéaire en nombres entiers : les méthodes de troncature
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Mise en forme en Mathématiques
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
SUJET D’ENTRAINEMENT n°1
Gestion de Fichiers GF-3: Structures d’Enregistrements, Acces Sequentiel et Direct, Manipulation de classes en C++ (Base sur des segments des Chapitres.
Expressions régulières et hash tables
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Paradigmes des Langages de Programmation
Gestion de Fichiers GF-14: Acces Sequentiel et Indexe aux Fichiers et Arbres B+ Prefixes (Base sur le Chapitre 10 de Folk, Zoellick & Riccardi, File Structures,
Le chiffrement asymétrique
Gestion de Fichiers GF-16: Addressage Disperse Extensible (Extendible Hashcoding) (Base sur le Chapitre 12 de Folk, Zoellick & Riccardi, File Structures,
Programmation dynamique
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: II. Arbres B (Base sur les Sections de.
Algorithmes sur les images dans Excel
La Compression de Données
ITI1520 Lab #8: Récursivité Gilbert Arbez, Mohamad Eid, Daniel Amyot, Sylvia Boyd, Diana Inkpen et Alan Williams.
XPath XML Path UP Web Année universitaire
Tutorat 7 - Introduction au Routage et OSPF
Gestion de Fichiers GF-9: Construction d’Indexes (Base sur le Chapitre 7 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with.
Programmation linéaire en nombres entiers
Gestion de Fichiers GF-8: Organisation des Fichiers pour l’Amelioration de la Performance (Base sur la section de Folk, Zoellick & Riccardi, File.
Arbres binaires et tables de hachage
GF-11: Tri Interne Efficace et Tri Externe
Algorithme de Huffman Mis au point en 1952 par David Huffman
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
1. Tri rapide ou Quicksort Principe : La méthode du Quicksort due au C.A. Hoare (1962) utilise les principes généraux de division et équilibrage. 2.
La compression de données
Transcription de la présentation:

Gestion de Fichiers GF-7: Compression des Donnees (Base sur la section 6.1 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with C++; ainsi que sur les notes du cours de McGill, donne en 1997)

2 Resume du Cours de cette Semaine Une vue generale sur la compression des donnees Compression des redondances: Utilisation d’une notation differente Suppression de repetition de sequences Affectation de codes a longueur variable Encodage Huffman (pack et unpack en Unix) Encodage Lempel-Ziv (compress et uncompress en Unix) Techniques de compression irreversible

3 Vue Generale sur la Compression des Donnees La compression des donnees consiste a coder les informations d’un fichier de facon a reduire leur taille. Question: Pourquoi reduire la taille de fichiers? Reponse: Afin d’utiliser moins de storage, c.a.d., reduire le cout, Afin de rendre la transmission plus efficace: ou bien en diminuant le temps d’acces ou en utilisant le meme temps d’acces mais avec un bandwith plus petit et moins cher. Afin de traiter le fichier de facon sequentielle plus rapidement.

4 Compression des Redondances I: Utilisation d’une notation differente Dans notre discussion sur les enregistrements de personnes, on a cree un champ specifiant l’etat dans lequel la personne reside. Les etats (aux US) sont specifies en utilisant 2 lettres de l’alphabet. E.g., OK pour Oklahoma. On a donc reserve 2 octets pour ce champs. Question: Cela etait-il vraiement necessaire? Reponse: Non: Puisqu’il n’y a que 50 etats, on peut tous les encoder avec 6 bits, et sauvegarder, ainsi, un octet par champ specifiant l’etat. Quels sont les desavantages de cette solution?

5 Compression des Redondances I: Utilisation d’une notation differente Desavantages: Les codes ne sont pas comprehensible Il y a un cout associe a l’encodage et au decodage (le traitement des fichiers prend plus de temps) La complexite du Logiciel est accrue car il est desormais necessaire d’avoir un module d’encodage et de decodage.

6 Compression des Redondances II: Suppression de repetition de Sequences Lorsque les donnees sont representees dans un tableau tres epars, on peut utiliser un mode de compression appele: run-length encoding. Procedure: Lire le tableau sequentiellement. Si une valeur apparait plus d’une fois en succession, remplacer la repetition par: Un indicateur de repetition special, La valeur repetee, et Le nombre de fois qu’elle est repetee. Il n’est pas garantit que de l’espace sera effectivement gagne!

7 Codage Huffman Veuillez supposer que tous les messages envoyes d’une source a une destination contiennent les lettres a, b, c, d et e representees par les probabilites.05,.2,.4,.17 et.18, respectivement. Notre but est d’encoder chaque caractere en une sequence de 1s et 0s de maniere a ce qu’aucun code representant un caractere ne represente le prefix d’un autre. Example: on ne peut pas avoir les codes “110” et “1101” car “110” est un prefix de “1101”. Pourquoi?

8 Solution: Arbre Huffman suivi du Codage a d e b c Code a= 100 b= 111 c= 0 d=101 e=110

9 Definitions et Proprietes des Arbres Huffmans Definition: Un arbre Huffman est un arbre binaire qui minimise la somme des f(i)D(i) de toutes les feuilles i, ou f(i) est la probabilite de la feuille i et D(i) est la longueur du chemin allant de la racine de l’arbre a la feuille i. Proprietes: chaque node interne a deux enfants Les elements ayant les probabilite les plus petites sont les elements places le plus loin de la racine, Les elements ayant les 2 probabilites les plus petites sont frere et soeur.

10 Algorithme Hu-Tucker pour construire un arbre Huffman I Soit un heap compose d’elements,elem, du type suivant: lettre probabilite Gauche Droite

11 Revisions sur les (min) Heaps (voir livre pp ) Revisions: Un heap est un arbre binaire aux 3 proprietes suivantes: Chaque noeud a une seule cle, et cette cle est plus large ou egale a la cle de son parent. L’arbre est complet, ce qui veut dire que toutes ses feuilles se trouvent sur deux niveaux au plus et que toutes les cles du niveau inferieur sont sur la gauche. Le heap peut etre mis en storage dans un tableau de facon a ce que la racine soit sauvegarde a la position 1 et que les enfants du noeud a la position i soient sauvegardes aux positions 2i et 2i+1. Inversement, l’index du parent du noeud j est floor(j/2).

12 Revisions sur les (min) Heaps: Insert (voir livre pp ) A B C E K I D G F A B C E K I D G F H H

13 Revisions sur les (min) Heaps: Remove (voir livre pp ) A B C E H I D G F A B C E H I D G F DeleteMin

14 Algorithme Hu-Tucker pour construire un arbre Huffman II Former un Heap a partir des lettres de l’alphabet et de leures probabilites (a, f a ), (b, f b ),…. For i = n+1 to 2n –1 do New(Elem(i)) Elem(i). left  Remove(Heap) Elem(i). right  Remove(Heap) f i  f left + f right Insert ( Elem(i, f i ), Heap ) Return

15 Autres Proprietes des Codes Huffman Les Codes Huffmans donnent des nombres de bits (moyens) par caractere optimaux par rapport a toutes les autres codes “prefix” (les codes dans lesquels aucun codage est le prefixe d’un autre codage). Neanmoins, il existe d’autres methodes de codage plus efficaces. Example: codage Lempel-Ziv. L’algorithme Hu-Tucker est l’example d’un algorithme gourmand (greedy). Il est execute en temps O(n log n). La longueur moyenne du code d’une lettre est:  i f i * longueur(code pour caractere i)

16 Encodage Lempel-Ziv Idee: la compression d’un nombre arbitraire de caracteres peut etre obtenue en formant systematiquement une nouvelle chaine de caraceteres basee sur une chaine de caracteres deja rencontree plus un nouveau caractere. Cette nouvelle chaine peut etre utilisee de la meme facon par la suite. Si le message original est court, cet encodage peut prendre plus d’espace que le message original. Neanmoins, pour des documents longs, il est proche de l’encodage parfait (a longueur optimale).

17 Example d’encodage Lempel-Ziv aaababbbaaabaaaaaaabaabb  |a|aa|b|ab|bb|aaa|ba|aaaa|aab|aabb a|1a|0b|1b|3b|2a|3a| 6a | 2b | 9b Division: index Codage

18 Comment construire des Codes Lempel-Ziv? Etape 1: Traverser le texte a coder et le diviser en segments qui representent des chaines representables par une chaine precedente (un prefix) + 1 caractere. Etape 2: Indexer chacuns des segments obtenus. Les encoder en utilisant une representation binaire minimale. Il faut commencer avec le segment vide(  ). Etape 3: traduire le texte segment par segment en utilisant: 1) le code pour le segment prefixe et le nouveau caractere necessaire a la creation du nouveau segment.

19 Nombre de Bits necessaire pour Coder un Texte I Chaque segment de texte est represente par un entier + une lettre de l’alphabet. Au pire, le nombre de bits necessaire pour representer chaque entier contenu a la position n est egal au nombre de bits necessaire pour representer la position n-1. Par example, le nombre de bits necessaire pour representer l’entier 6 de la position 8 est egal a 3 car il faut 3 bits pour exprimer l’entier 7 en notation binaire. Chaque caractere occuppe 8 bits car il est represente en format ASCII.

20 Nombre de Bits necessaire pour Coder un Texte II Dans notre example (diapo 17), on a donc besoin de ((0+8)+(1+8)+2*(2+8)+4*(3+8)+2*(4+8)) = 105 Etant donne que le texte original etait compose de 24 caracteres, prenant chacun 8 bits, l’encodage Lempel-Ziv ne nous offre pas de reduction car 24 * 8 – 105 = 87, une reduction de 45%!!! Theoretiquement: dans des fichiers contenant des symboles independents et tires au hasard avec les probabilites p1, p2, p3, etc… le nombre anticipe de bits necessaire par symbole tend vers l’entropie:  p i log 2 (1/p i )  L’encodage Huffman atteint ce resultat, mais il doit connaitre les probabilites de chaque caractere. Lempel-Ziv l’atteint egalement mais sans connaitre les probabilites.

21 Comment Decoder les textes encodes? Une maniere efficace de reconstituer un texte code est de construire un arbre de recherche digital qui nous permet de decoder le texte en un seul passage. Example d’un arbre de recherche digital partiel: a a a b b b

22 Techniques de Compression Irreversible La compression irreversible est basee sur la supposition qu’un certain montant d’information peut etre sacrifie [la compression irreversible s’appelle egalement la reduction d’entropie.]. Example: on peut reduire une image d’un format 400 x 400 pixels a 100 x 100 pixels. La nouvelle image contient 1 pixel pour chacun des 16 pixels de l’image originale. Il est, d’habitude, impossible de determiner les 16 pixels originaux du nouveau pixel obtenu. Bien entendu, dans les fichiers de donnees, la compression irreversible n’est pas tres utile. Par contre, elle sert beaucoup dans le traitement des images et de la parole.