Codage de Shannon-Fano

Codage de Shannon-Fano

Le codage de Shannon-Fano est un algorithme de compression de données sans perte élaboré par Robert Fano à partir d'une idée de Claude Shannon.

Il s'agit d'un codage entropique produisant un code préfixe très similaire à un code de Huffman, bien que non-optimal, contrairement à ce dernier.

Sommaire

Principe

La probabilité de chaque symbole à compresser doit être connue. Dans la plupart des cas, des probabilités fixes calculées à partir des données à compresser sont utilisées ; on parle alors de codage de Shannon-Fano semi-adaptatif (qui nécessite deux passes successives sur les données à compresser : la première pour calculer les probabilités, la seconde pour compresser à proprement parler). Il est également possible d'utiliser des probabilités fixes non dépendantes des données à compresser (codage statique) ou des probabilités variant au fur et à mesure de la compression (codage adaptatif).

Tous les symboles à compresser sont triés selon leur probabilité, et l'ensemble trié des symboles est coupé en deux parties de telle façon que les probabilités des deux parties soient le plus proche possible de l'égalité (la probabilité d'une partie étant égale à la somme des probabilités des différents symboles de cette partie). Tous les symboles de la première partie sont codés par un 0 suivi de leur code de Shannon-Fano en ne prenant en compte que les symboles de la première partie, et tous les symboles de la seconde partie sont codés par un 1 suivi de leur code de Shannon-Fano en ne prenant en compte que les symboles de la seconde partie, récursivement. Lorsqu'une partie ne contient qu'un seul symbole, celui-ci est représenté par un code vide (de longueur nulle).

Comparaison avec le codage de Huffman

L'approche du codage de Shannon-Fano est descendante : l'algorithme part de l'ensemble des symboles et divise cet ensemble récursivement jusqu'à arriver à des parties ne contenant qu'un seul symbole. L'inconvénient de cette approche est que, lorsqu'il n'est pas possible de séparer un ensemble de symboles et deux sous-ensembles de probabilités à peu près égales (c'est-à-dire lorsque l'un des sous-ensembles est beaucoup plus probable que l'autre), les codes produits ne sont pas optimaux.

Le codage de Huffman a une approche ascendante : l'algorithme part des symboles et regroupe ceux ayant la probabilités la plus faible, jusqu'à avoir regroupé tous les symboles. Cette approche permet d'obtenir systématiquement un code optimal au niveau du symbole, dans le pire cas de la même longueur que le code de Shannon-Fano équivalent, dans tous les autres cas plus court.

Les codages de Shannon-Fano et de Huffman souffrent cependant tous les deux du même inconvénient : ils codent les symboles sur un nombre de bits entier. Un codage arithmétique, optimal au niveau du bit, permet de coder des symboles sur un nombre de bits arbitraire (y compris 0), et d'atteindre l'entropie de Shannon.

Utilisations

Comme le codage de Huffman est très similaire au codage de Shannon-Fano et donne de meilleurs résultats, ce dernier n'est pratiquement plus utilisé aujourd'hui.

Le codage de Shannon-Fano est utilisé après une compression par LZ77, pour le codage entropique de l'algorithme implode, utilisé historiquement dans le format ZIP[1]. L'algorithme implode a été détroné par l'algorithme deflate, remplaçant le codage de Shannon-Fano par un codage de Huffman.

Voir aussi

Articles connexes

Bibliographie

  • Claude Elwood Shannon, « A Mathematical Theory of Communication », Bell System Technical Journal, vol. 27, pp. 379-423, juillet 1948.
  • Robert Mario Fano, « The transmission of information », Technical Report No. 65, 1949. Research Laboratory of Electronics, M.I.T., Cambridge, USA.

Références


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Codage de Shannon-Fano de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Codage De Huffman — Le codage de Huffman est un algorithme de compression qui fut mis au point en 1952 par David Albert Huffman. C est une compression de type statistique qui grâce à une méthode d arbre que nous allons détailler plus loin permet de coder les octets… …   Wikipédia en Français

  • Codage de huffman — Le codage de Huffman est un algorithme de compression qui fut mis au point en 1952 par David Albert Huffman. C est une compression de type statistique qui grâce à une méthode d arbre que nous allons détailler plus loin permet de coder les octets… …   Wikipédia en Français

  • Codage arithmetique — Codage arithmétique Le codage arithmétique est une technique de compression sans perte. Normalement une chaîne de caractères comme hello world est représentable en utilisant un nombre fixe de bits par caractère, comme dans le code ASCII. Comme le …   Wikipédia en Français

  • Codage entropique — Le codage entropique (ou codage statistique à longueur variable) est une méthode de codage de source sans pertes, dont le but est de transformer la représentation d une source de données pour sa compression et/ou sa transmission sur un canal de… …   Wikipédia en Français

  • Codage de Huffman — Le codage de Huffman est un algorithme de compression de données sans perte élaboré par David Albert Huffman, lors de sa thèse de doctorat au MIT. L algorithme a été publié en 1952 dans l article A Method for the Construction of Minimum… …   Wikipédia en Français

  • Fano (homonymie) — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Patronymes Gino Fano (1871 1952), mathématicien italien Robert Fano (1917 ), informaticien américain fils de Gino Fano Ugo Fano (en) (1912 – 2001) …   Wikipédia en Français

  • Codage unaire — Le codage unaire est un codage entropique utilisé essentiellement en compression de données et s appuyant sur la base 1. Sommaire 1 Principe 2 Longueur du code 3 Optimalité 4 …   Wikipédia en Français

  • Codage delta — Pour les articles homonymes, voir Code Delta (émission de télévision). Le codage delta ou codage delta d Elias est un codage entropique inventé par Peter Elias et utilisé essentiellement en compression de données. Le code delta produit est un… …   Wikipédia en Français

  • Codage gamma — Le codage gamma ou codage gamma d Elias est un codage entropique inventé par Peter Elias et utilisé essentiellement en compression de données. Le code gamma produit est un code préfixe et universel. Sommaire 1 Principe 2 Codage des entiers… …   Wikipédia en Français

  • Codage omega — Le codage omega ou codage omega d Elias est un codage entropique inventé par Peter Elias et utilisé essentiellement en compression de données. Le code omega produit est un code préfixe et universel. Sommaire 1 Principe 1.1 Codage 1.2 Décodage …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”