Information, Calcul, Communication Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne fait partie de son cours d’introduction à l’information, à la communication, et au calcul. Il s’inscrit dans le 2e module de ce cours qui porte sur les notions d’échantillonnage et de reconstruction de signaux puis introduit les notions d’entropie et de compression de l’information. Information, Calcul, Communication 2. Information & Communication – Leçon 3: Entropie Clip 4: Compression sans perte O. Lévêque, commentaire: P. Janson
Plan de la leçon Introduction à la compression Notion d’entropie Calcul d’entropie Compression sans perte Algorithme de Shannon-Fano Le 4e clip de cette leçon sur l’entropie va maintenant s’attacher à la compression de messages sans perte d’information.
Compression sans perte La compression de données permet: Réduction de l’espace-mémoire requis pour le stockage de données Limitation du temps requis pour la transmission de données et de la congestion potentielle causée par cette transmission Principe de base de la compression de données = suppression de redondance dans les données => abréviation des éléments les plus fréquents dans un signal / message Compression sans perte Version comprimée permet de reconstruire version originale On a vu précédemment que la compression de données permet: 1 … d’une part la réduction de l’espace-mémoire requis pour le stockage de données 2 … et d’autre part la limitation du temps requis pour la transmission de ces données … et de la congestion que cette transmission peut rencontrer et aggraver sur un canal surchargé. 3 Le principe de base de la compression de données consiste à supprimer de ces données tout ce qui est superflu, c.à.d. redondant, inutile à la bonne compréhension dedites données. Concrètement cela consiste à utiliser des abréviations pour les éléments les plus fréquemment rencontrés dans ces données. On parlera alors de compression sans perte quand une version comprimée des données permet de reconstruire parfaitement et intégralement la version originale des données non-comprimées.
Exemples de codes comprimés sans perte Le langage SMS « slt », « pcq », « mdr », etc. Les mots fréquents sont réduits à de courtes séquences de lettres mais on sait toujours avec certitude de quels mots il s’agit Le code Morse => Le concept d’entropie permet de comprimer des données de manière systématique et optimale A titre d’illustration voyons 2 exemples de codes permettant de comprimer des données sans perte. 1 Un 1er exemple est le genre d’abréviations utilisées par les gens, surtout les jeunes, qui correspondent tout le temps par SMS. Des codes tels que « slt », « pcq », « mdr », etc. vous sont tous familiers. De courtes séquences de lettres, surtout des consonnes, sont utilisées pour représenter des mots fréquents mais on sait toujours avec certitude de quel mot il s’agit. Dans plusieurs langages écrits les voyelles sont d’ailleurs aussi implicites. 2 Un 2e exemple est le code Morse dans lequel les lettres les plus fréquentes sont représentées par des codes brefs, alors que les lettres les moins fréquentes correspondent à des codes plus longs. Ainsi les lettres e, t, a, o, i, n, qui apparaissent toutes dans la langue anglaise avec des probabilités > 6% sont pour la plupart codées par 1 à 2 signaux Morse, alors que les lettres v, k, j, x, q, z, qui apparaissent toutes dans la langue anglaise avec des probabilités < 1% sont pour la plupart codées par 4 signaux Morse. 3 Le concept d’entropie permet donc de comprimer des données de manière systématique et optimale. Lettres plus fréquentes (EN) Lettres moins fréquentes (EN) e 12.70% ∙ v 0.98% ∙ ∙ ∙ ─ t 9.06% ─ k 0.77% ─ ∙ ─ a 8.17% ∙ ─ j 0.15% ∙ ─ ─ ─ o 7.51% ─ ─ ─ x ─ ∙ ∙ ─ i 6.97% ∙ ∙ q 0.10% ─ ─ ∙ ─ n 6.75% ─ ∙ z 0.07% ─ ─ ∙ ∙
Comment arriver à une compression sans perte ? Supposons que vous vouliez envoyer à un ami le message I L F A I T B E A U A I B I Z A => Une compression sans perte consiste à minimiser le nombre de bits NB - La personne qui reçoit votre message doit le comprendre ! - L’expéditeur et le destinataire peuvent (et même doivent) se mettre d’accord au préalable sur un code commun Exemple : A=’01’, B=’10’, etc. En pratique toute la question consiste à trouver la meilleure façon de comprimer une information sans perte. 1 Supposons que nous voulions exprimer le message I L F A I T B E A U A I B I Z A 2 Comment faire cela en minimisant le nombre de bits mais sans perdre une seule lettre … 3 … de telle façon qu’une personne lisant le message comprimé le comprenne parfaitement? 4 On fait l’hypothèse essentielle que la personne qui rédige le message et celle qui va le déchiffrer se sont évidemment mises d’accord sur un code de communication commun. Si vous êtes perdu dans la jungle amazonienne et demandez votre chemin à des indigènes il y a peu de chance qu’on vous comprenne même en anglais ou en portugais.
Recettes pour une compression sans perte I L F A I T B E A U A I B I Z A Solution n°1 = Utiliser le code ASCII (voir le clip antérieur à ce sujet) Chaque lettre est représentée par 8bits 16×8 = 128 bits sont nécessaires pour représenter ce message Solution n°2 Remarquer que le message n’est composé que de 16 lettres On n’a donc besoin que de 4 bits par lettre (24=16) et donc 16×4 = 64 bits au total Solution n°3 Remarquer que certaines lettres se répètent Il n’y a en fait que 9 lettres différentes et certaines sont plus fréquentes que d’autres => Comment procéder dans ce cas?... Utiliser l’algorithme de Shannon-Fano (voir clip suivant) Pour arriver à une telle compression sans perte on peut envisager plusieurs solutions. 1 Une première façon de procéder pourrait être d’utiliser le code ASCII vu dans un des clips de la dernière leçon du 1er module de ce cours. Chaque lettre y est représentée par 7 ou 8 bits. 128 bits seraient donc nécessaires à la transmission des 16 lettres du message I L F A I T B E A U A I B I Z A 2 On peut cependant faire mieux si on observe que le message ne comporte que 16 lettres. En effet pour encoder 16 caractères différents ils suffirait de 4 bits par caractère, soit 64 bits pour tout le message. 3 Si en plus on observe que certaines des 16 lettres se répètent on peut faire encore mieux. Il n’y a en effet que 9 lettres différentes et certaines sont plus fréquentes que d’autres. 4 Comment utiliser cette redondance pour comprimer le message en moins de 64 bits? C’est le sujet du videolip suivant sur l’algorithme de Shannon-Fano.