Codage de Fibonacci

Codage de Fibonacci

Le codage de Fibonacci est un codage entropique utilisé essentiellement en compression de données. Il utilise les nombres de la suite de Fibonacci, dont les termes ont la particularité d'être composés de la somme des deux termes consécutifs précédents, ce qui lui confère une robustesse aux erreurs.

Le code de Fibonacci produit est un code préfixe et universel (en). Dans ce code, la séquence « 11 » apparaît uniquement en fin de chaque nombre encodé, et sert ainsi de délimiteur.

Sommaire

Principe

Codage

Pour encoder un entier X :

  1. Créer un tableau avec 2 lignes.
  2. Dans la 1re, mettre les chiffres de la suite de Fibonacci (1, 2, 3, 5, 8...) inférieurs ou égaux à X.
  3. Décomposer l'entier X en une somme d'entiers correspondant aux éléments de la 1re ligne du tableau, en employant les plus grands possibles.
  4. Dans la 2e ligne du tableau, mettre des « 1 » en dessous des éléments qui ont permis de décomposer X, « 0 » sinon.
  5. Ecrire la 2e ligne du tableau en rajoutant un « 1 » pour terminer.
Exemple 
décomposition de 50.

Les éléments de la 1re ligne du tableau sont : 1 2 3 5 8 13 21 34

50 = 34 + 13 + 3 (50 = 34 + 8 + 5 + 3 est incorrect car le 13 n'a pas été utilisé)

D'où le tableau :

Suite de Fibonacci 1 2 3 5 8 13 21 34
Présence dans la décomposition 0 0 1 0 0 1 0 1

Il reste à écrire le codage du nombre 50 : 001001011

Décodage

Pour effectuer l'opération inverse, il suffit de supprimer le "1" de fin, puis de reporter les "0" et les "1" au fur et à mesure qu'on les rencontre dans la 2ème ligne du tableau, et enfin d'effectuer la somme des éléments de la 1ère ligne comportant des "1".

Premier exemple 
Décoder le nombre 10001010011

On enlève le dernier "1" puis on reporte les "0" et les "1" restants dans le tableau suivant :

Suite de Fibonacci 1 2 3 5 8 13 21 34 55 89
Présence dans la décomposition 1 0 0 0 1 0 1 0 0 1

On effectue la somme : 1 + 8 + 21 + 89 = 119

Le code 10001010011 désigne donc l'entier 119 selon le codage de Fibonacci.

Deuxième exemple 
Décoder le nombre 1011001111

Si on enlève le dernier "1" puis que l'on reporte les "0" et les "1" restants dans le tableau de décodage, on obtient :

Suite de Fibonacci 1 2 3 5 8 13 21 34 55
Présence dans la décomposition 1 0 1 1 0 0 1 1 1

On effectue la somme : 1 + 3 + 5 + 21 + 34 + 55 = 119

Or, le codage de Fibonacci est unique, le code 1011001111 contient en réalité trois séquences codées, celles-ci sont caractérisées par la suite de deux « 1 » successifs : « 11 »

On décompose:

1 0 1 1
0 0 1 1
1 1

On enlève les '1' de la fin,

1 0 1
0 0 1
1

On les place dans le tableau et on fait les sommes :

Suite de Fibonacci 1 2 3 5 Somme
Présence dans la décomposition 1 0 1 1 + 3 = 4
Présence dans la décomposition 0 0 1 3 = 3
Présence dans la décomposition 1 1 = 1

Le code 1011001111 représente les nombres 4, 3 et 1 selon le codage de Fibonacci.

On remarquera que tous les nombres de la suite de Fibonacci sont codés selon le modèle "0[n-1 fois]11" où n est le rang du nombre dans la suite de Fibonacci.

Codage des entiers relatifs

Comme pour les codages d'Elias (en), il est possible de coder des entiers relatifs avec le codage de Fibonacci en utilisant une bijection pour transformer les nombres négatifs ou nul en nombres strictement positifs avant le codage à proprement parler. Après le décodage, l'opération inverse doit être effectuée pour retrouver les entiers relatifs d'origine.

Longueur du code

Robustesse

Exemples

Représentation des premiers entiers naturels strictement positifs avec un codage de Fibonacci
Décimal Décomposition de Fibonacci Code de Fibonacci
1 1 f(1) 1 1
2 2 f(2) 01 1
3 3 f(3) 001 1
4 1 + 3 f(1) + f(3) 1 01 1
5 5 f(4) 0001 1
6 1 + 5 f(1) + f(4) 1 001 1
7 2 + 5 f(2) + f(4) 01 01 1
8 8 f(5) 00001 1
9 1 + 8 f(1) + f(5) 1 0001 1
10 2 + 8 f(2) + f(5) 01 001 1
11 3 + 8 f(3) + f(5) 001 01 1
12 1 + 3 + 8 f(1) + f(3) + f(5) 1 01 01 1

Articles connexes


Wikimedia Foundation. 2010.

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

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • Codage De Fibonacci — Le code de Fibonacci est un code universel qui encode les nombres entiers en mots de code binaire. La séquence « 11 » apparaît uniquement en fin de chaque nombre encodé, et délimite ainsi les nombres. Le code commence comme ci… …   Wikipédia en Français

  • Codage de fibonacci — Le code de Fibonacci est un code universel qui encode les nombres entiers en mots de code binaire. La séquence « 11 » apparaît uniquement en fin de chaque nombre encodé, et délimite ainsi les nombres. Le code commence comme ci… …   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 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

  • 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

  • Codage binaire tronqué — Le codage binaire tronqué est un codage entropique utilisé essentiellement en compression de données et s appuyant sur la base 2. Il est plus généralement utilisé pour coder de façon efficace en termes de longueur, un alphabet dont la taille n… …   Wikipédia en Français

  • Codage de Rice — Le codage de Rice, codage de Golomb Rice ou GPO2 (pour Golomb power of 2) est un codage entropique inventé par Robert F. Rice et James R. Plaunt en 1971 et utilisé essentiellement en compression de données. Le code produit est un code préfixe.… …   Wikipédia en Français

  • Codage zeta — Le codage zeta ou codage de Boldi Vigna est un codage entropique inventé par Paolo Boldi et Sebastiano Vigna en 2003 et utilisé essentiellement en compression de graphes. Le code zeta produit est un code préfixe et universel. Sommaire 1 Principe… …   Wikipédia en Français

Share the article and excerpts

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