Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Codage de Fibonacci — Wikipédia
Codage de Fibonacci — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur l’homonymie

Pour les articles homonymes, voir 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 chaque terme est 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. Dans ce code, on utilise la représentation de Zeckendorf, de telle façon que la séquence « 11 », interdite dans le nombre, apparaisse uniquement en fin de codage, et serve ainsi de délimiteur.

Principe

[modifier | modifier le code]

Codage

[modifier | modifier le code]

Pour coder un entier X :

  1. Créer un tableau avec 2 lignes.
  2. Dans la 1re, mettre les éléments de la suite de Fibonacci à partir du terme F 2 {\displaystyle F_{2}} {\displaystyle F_{2}} (1, 2, 3, 5, 8...) et 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. Écrire 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 (ou poids) 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 en ajoutant le terminateur : 001001011

normalisation d'une décomposition exacte non conforme

la décomposition 50 = 21+13+8+5+3, donnerait une représentation brute 00111110 qu'on peut normaliser en considérant que, tout poids étant la somme des deux précédents, 110 = 001 au sein de la représentation. Donc 001'111'10 = 001'110'01 = 001'001'01, représentation correcte au sens de Zeckendorf. En ajoutant maintenant le "1" terminateur, on obtient encore 001001011

Décodage

[modifier | modifier le code]

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 2e ligne du tableau, et enfin d'effectuer la somme des éléments de la 1re 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 ont pour code "0[n-1 fois]11" où n est le rang du nombre dans la suite de Fibonacci.

Codage des entiers relatifs

[modifier | modifier le code]
Article détaillé : Codage gamma#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

[modifier | modifier le code]

Le code est un code binaire dont les poids croissent en gros comme les puissances de 1,618 (nombre d'or). Il demande environ 5 bits par chiffre décimal.

Robustesse

[modifier | modifier le code]

Ce codage ne résiste pas à une analyse fréquentielle (une lettre est toujours représentée par la même suite binaire).

Exemples

[modifier | modifier le code]
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 2 {\displaystyle F_{2}} {\displaystyle F_{2}} 1 1
2 2 F 3 {\displaystyle F_{3}} {\displaystyle F_{3}} 01 1
3 3 F 4 {\displaystyle F_{4}} {\displaystyle F_{4}} 001 1
4 1 + 3 F 2 + F 4 {\displaystyle F_{2}+F_{4}} {\displaystyle F_{2}+F_{4}} 1 01 1
5 5 F 5 {\displaystyle F_{5}} {\displaystyle F_{5}} 0001 1
6 1 + 5 F 2 + F 5 {\displaystyle F_{2}+F_{5}} {\displaystyle F_{2}+F_{5}} 1 001 1
7 2 + 5 F 3 + F 5 {\displaystyle F_{3}+F_{5}} {\displaystyle F_{3}+F_{5}} 01 01 1
8 8 F 6 {\displaystyle F_{6}} {\displaystyle F_{6}} 00001 1
9 1 + 8 F 2 + F 6 {\displaystyle F_{2}+F_{6}} {\displaystyle F_{2}+F_{6}} 1 0001 1
10 2 + 8 F 3 + F 6 {\displaystyle F_{3}+F_{6}} {\displaystyle F_{3}+F_{6}} 01 001 1
11 3 + 8 F 4 + F 6 {\displaystyle F_{4}+F_{6}} {\displaystyle F_{4}+F_{6}} 001 01 1
12 1 + 3 + 8 F 2 + F 4 + F 6 {\displaystyle F_{2}+F_{4}+F_{6}} {\displaystyle F_{2}+F_{4}+F_{6}} 1 01 01 1

Articles connexes

[modifier | modifier le code]
  • Suite de Fibonacci
  • Base d'or
  • Codage entropique
  • Compression de données
  • Théorème de Zeckendorf
v · m
Techniques de compression de données
Sans perte
Codage entropique
  • Unaire
  • Binaire tronqué
  • Gamma
  • Delta
  • Omega
  • Zeta
  • Fibonacci
  • Levenshtein
  • Even-Rodeh
  • Stout
  • Golomb
  • Rice
  • Exp-Golomb
  • Shannon-Fano
  • Huffman
  • Shannon-Fano-Elias (en)
  • Arithmétique
  • Par intervalle
Dictionnaire
  • LZ77 et LZ78
  • LZSS
  • Lempel-Ziv-Welch
  • Lempel-Ziv-Oberhumer
Modélisation de contextes
  • Modélisation de Markov dynamique (DMC)
  • Prédiction par reconnaissance partielle (PPM)
  • Pondération de contextes (CM)
  • Pondération de contextes arborescents (en) (CTW)
Techniques hybrides
  • Implode
  • Deflate
  • LZP
  • LZMA
  • ROLZ
Autres Codage par plages
Transformations
  • Codage différentiel (Delta)
  • Transformée en étoile
  • Move-to-front (MTF)
  • Transformée de Burrows-Wheeler (BWT)
  • Transformée par substitution de mots (WRT)
  • BCJ2
Formats de fichiers
  • 7z
  • ACE
  • ARC
  • ARJ
  • B1 (en)
  • bzip2
  • CAB
  • gzip
  • LHA / LZH
  • RAR
  • UHA
  • XZ
  • Z
  • Zip
Avec pertes
Codage par transformation Compression par ondelettes
Autres
  • Modulation par impulsions et codage différentiel adaptatif (ADPCM)
  • Compression fractale
Transformations
  • Transformée de Karhunen-Loève (KLT)
  • Transformée en cosinus discrète (DCT)
  • Transformation de Fourier discrète (DFT)
  • Transformée en ondelettes discrète (DWT)
  • icône décorative Portail de l’informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Codage_de_Fibonacci&oldid=228014470 ».
Catégories :
  • Numération
  • Algorithme de compression sans perte
  • Code préfixe
  • Suite de Fibonacci
Catégories cachées :
  • Article contenant un appel à traduction en anglais
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id