Unité d Enseignement M3103 : Algorithmique avancée. Cours 3 Algorithme de Huffman pour la compression de données

Documents pareils
Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

1 Introduction au codage

Jeux de caracte res et encodage (par Michel Michaud 2014)

Formats d images. 1 Introduction

TD : Codage des images

Codage d information. Codage d information : -Définition-

Compression Compression par dictionnaires

Représentation des Nombres

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

CH.6 Propriétés des langages non contextuels

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Théorie et codage de l information

ISO/CEI NORME INTERNATIONALE

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UE Programmation Impérative Licence 2ème Année

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Le codage informatique

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Transmission d informations sur le réseau électrique

Les structures de données. Rajae El Ouazzani

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Licence Sciences et Technologies Examen janvier 2010

Le signal GPS. Les horloges atomiques à bord des satellites GPS produisent une fréquence fondamentale f o = Mhz

1.1 L EXPLORATEUR WINDOWS

I- Définitions des signaux.

Algorithmes de recherche

L utilisation d un réseau de neurones pour optimiser la gestion d un firewall

UE 503 L3 MIAGE. Initiation Réseau et Programmation Web La couche physique. A. Belaïd

Transmission de données. A) Principaux éléments intervenant dans la transmission

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

L exclusion mutuelle distribuée

Conception de circuits numériques et architecture des ordinateurs

Guide de l Administrateur

Activité 1. Compter les points Écriture binaire des nombres. Résumé. Liens pédagogiques. Compétences. Âge. Matériel

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

chapitre 4 Nombres de Catalan

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Logique : ENSIIE 1A - contrôle final

Cours Informatique 1. Monsieur SADOUNI Salheddine

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

Pourquoi l apprentissage?

Continuité et dérivabilité d une fonction

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Initiation. àl algorithmique et à la programmation. en C

Représentation d un entier en base b

Compression de Données - Algorithme de Huffman Document de Conception

Conversion d un entier. Méthode par soustraction

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Bases de données documentaires et distribuées Cours NFE04

1/6. L icône Ordinateur

ARBRES BINAIRES DE RECHERCHE

0x700. Cryptologie Pearson France Techniques de hacking, 2e éd. Jon Erickson

EP A1 (19) (11) EP A1 (12) DEMANDE DE BREVET EUROPEEN. (43) Date de publication: Bulletin 2011/26

La mémoire. Un ordinateur. L'octet. Le bit

Ebauche Rapport finale

Logiciel de Base. I. Représentation des nombres

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

LE RESEAU GLOBAL INTERNET

Numérisation Traitement formel Ordinateur ET logiciel

Université de La Rochelle. Réseaux TD n 6

Les arbres binaires de recherche

Licence Sciences, Technologies, Santé Mention Informatique Codage de l'information

Algorithme. Table des matières

COMMUNICATION ENTRE DEUX ORDINATEURS PAR LASER MODULE EN CODE MORSE OU BINAIRE.

Algorithmes d'apprentissage

Cryptographie Quantique

Le format OpenPGP. Traduit par : Sébastien Person. personseb@yahoo.fr. Matthieu Hautreux. matthieu.hautreux@insa-rouen.fr.

Téléinformatique. Chapitre V : La couche liaison de données dans Internet. ESEN Université De La Manouba

CORRECTION EXERCICES ALGORITHME 1

CONFIGURATION DE L AUTOMATE SIEMENS

Python - introduction à la programmation et calcul scientifique

Université de Bangui. Modélisons en UML

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Le multiplexage. Sommaire

Quelques Algorithmes simples

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Bases de programmation. Cours 5. Structurer les données

Cisco Certified Network Associate

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

MATHÉMATIQUES DISCRÈTES (4) CRYPTOGRAPHIE CLASSIQUE

Note de cours. Introduction à Excel 2007

Traitement numérique de l'image. Raphaël Isdant

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Chapitre 10 Arithmétique réelle

Formation tableur niveau 1 (Excel 2013)

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Correction TD algorithmique

Utilisation des tableaux sémantiques dans les logiques de description

Expérience 3 Formats de signalisation binaire

Transcription:

Unité d Enseignement M313 : Algorithmique avancée Cours 3 Algorithme de Huffman pour la compression de données Conservatoire National des Arts et Métiers D. Porumbel et E. Soutil

2 UE M313 Algorithmique avancée Plan du cours 1. Récursivité 2. Tris 3. Algorithme de Huffman (compression de données) 4. Preuves d'algorithmes 5. Complexité des algorithmes 6. Recherche de chaînes de caractères 7. Une heuristique de recherche locale

Compression de données : codage de Huffman 3 Compression de données : Gain de place de 2 à 9% (fichiers de texte) C = {caractères} À c i C on associe une chaîne binaire unique, de plus ou moins 8 bits Exemple : C = alphabet d : 1 f :11 m : 11... Codage de dfd = 1111 Mais : mf 1111 (= dfd!)

Codage préfixe 4 Règle à respecter pour un codage non ambigü : aucun code ne doit être préfixe d un autre code. Cette règle rend le décodage facile Exemple : face 1111 face Objectif : concevoir le codage et savoir décoder efficacement

Exemple (suite) : arbre associé 5 Arbre binaire ( sur fils gauche, 1 sur fils droit). Si l arbre est parfait, tous les codes sont de même longueur.

Exemple (suite) : arbre associé 6 Autre possibilité :

Choix d un arbre 7 On établit le tableau des fréquences d'apparition des caractères dans le fichier (c f(c)) h A (c) : hauteur de la branche c = nombre de bits pour c Nombre de bits requis pour encoder un fichier selon l arbre A : B(A) = cc f(c) h A (c)

Exemple 8 a b c d e f fréq. 45 13 12 16 9 5 code A' 1 1 11 1 11 code A'' 1 1 1 1 11 code H 11 1 111 111 11 B(A') = 3 (45+13+12+16+9+5) 3 B(A") = 328 (45 4+13 4+12 3+16 2+9 2+5 2) B(H) = 224 (45 1+13 3+12 3+16 3+9 4+5 4)

Conception des codes de Huffman 9 Idée : associer un code à chaque caractère, dont la longueur dépende de la fréquence d apparition de ce caractère dans le texte (fichier) à compresser : Plus le caractère est fréquent, plus court sera le code qu on lui associe. Une fois que le fichier entier a été encodé, on le redécoupe en séquences de 8 bits formant chacune un octet. Remarque : Il convient d associer un code à la marque de fin de fichier (CTRL-F)

Conception des codes de Huffman 1 Construction de l arbre. Pour concevoir les codes, Huffman en 1952 a l idée de construire un arbre binaire de la façon suivante : Chaque nœud de l arbre comporte deux données : la valeur d un caractère et une valeur numérique correspondant à la notion de fréquence. Initialement, on créée autant de nœuds qu il y a de caractères à encoder (= les lettres apparaissant dans le fichier). La valeur numérique associée à ces nœuds correspond à la fréquence d apparition dans le fichier. Ces nœuds initiaux constitueront les feuilles de l arbre. Puis on associe à chaque fois les deux nœuds de plus faibles valeurs pour donner un nœud père dont la valeur équivaut à la somme des valeurs de ses fils jusqu'à n'en avoir plus qu'un, la racine. On associe ensuite par exemple le code à la branche de gauche et le code 1 à la branche de droite.

11 Algorithme de construction de l arbre de Huffman Algorithme HUFFMAN (C : liste triée de caractères; f : tableau des fréquences des caractères; A: arbre de Huffman): // Utilise la procédure construire(a, z, x, y) qui ajoute à A un nœud z ayant pour fils gauche x et pour fils droit y début liste_ordonnée L ; entier n; n = card(c); L = C; tri de L selon les f(c) croissants; pour i = 1 à n-1 faire x L.min(); L.supprimer_min(); y L.min(); L.supprimer_min(); f(z) f(x) + f(y); construire (A, z,x,y); L.insérer (z); fait ; fin

Exemple d arbre de Huffman 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Un arbre d exemple avec la phrase "this is an example of a huffman tree" (Source : Wikipedia)

Remarques sur l utilisation de l arbre 13 Codage. Une fois l arbre construit, les codes s obtiennent par un parcours en profondeur du graphe Le décodage s effectue de la façon suivante. Pour obtenir le code binaire de chaque caractère, on descend l'arbre à partir de la racine jusqu'aux feuilles en rajoutant à chaque fois au code un ou un 1 selon la branche suivie ( si on emprunte la branche de gauche, 1 si c est celle de droite).

Conclusions 14 On voit que la connaissance de l arbre est nécessaire pour le décodage. Cela signifie que l arbre doit être connu au moment de décoder : Soit on l inclut dans le fichier compressé, pour que les codes soient optimaux (pour une compression par symboles), mais alors on dégrade les performances car il faut bien stocker l arbre Soit on utilise un (même) arbre donné pour chaque type de fichier, construit en utilisant une distribution de probabilité connue pour le type de fichier (texte, image, ) mais alors on perd l optimalité de la longueur des codes par rapport au fichier à compresser Il existe des algorithmes plus efficaces (Lempel et Ziv) mais plus complexes, basés sur la fréquences non pas des caractères mais des séquences de caractères (on tire alors profit d une autre redondance dans le fichiers).