Fibonacci-code

In de wiskunde en speciaal in de informatica is de Fibonacci-code een universele code, gebaseerd op de Fibonacci-getallen (de getallen in de rij van Fibonacci), die de positieve gehele getallen codeert tot binaire woorden. De code wordt gebruikt in datacompressie, daarom eindigt elk woord met "11" en komt de combinatie "11" verder niet in een woord voor.

Volgens de Stelling van Zeckendorf heeft elk positief geheel getal een Zeckendorf-representatie, een voorstelling als som van niet-opeenvolgende Fibonacci-getallen. Voor het getal 100 is dit:

100=3+8+89

De rij van Fibonacci begint met:

0,1,1,2,3,5,8,13,21,34,55,89,...

Voor 100 kan daarom in een soort positiestelsel geschreven worden:

100=0010100001Z,

waarin geteld wordt vanaf de tweede 1 in de rij.(Normaal gesproken zou dit andersom genoteerd worden met de hoogste positie voorop, dus als 1000010100.)

De rij 0'en en 1'en eindigt voor elk getal met een 1. Voor de herkenbaarheid van het eind van de code voegt de Fibonacci-codering er nog een 1 aan toe. Omdat in de representatie nooit twee opeenvolgende Fibonacci-getallen voorkomen, staat alleen aan het eind van een code "11". De Fibonacci-code voor 100 is dus:

100=00101000011F


Definitie

De Fibonacci-code voor het positieve gehele getal n is het binaire woord:

d0d1d2…dk,

dus met di∈{0,1}, waarvoor geldt:

dk−1=dk=1

en

n=∑i=0k−1difi+2.

Daarin is fi het i-de getal in de rij van Fibonacci, dus, met weglating van de eerste twee, ongebruikte, elementen, de rij:

f2=1,f3=2,f4=3,f5=5,f6=8,f7=13,…

In deze codering is de voorlaatste bit de meest significante bit en de eerste bit d0 de minst significante.

In de onderstaande tabel staan de Fibonacci-codes van de getallen 1 tot en met 14.

getalZeckendorf-representatieFibonacci-code
1f2=111
2f3=2011
3f4=30011
4f2+f4=1+31011
5f5=500011
6f2+f5=1+510011
7f3+f5=2+501011
8f6=8000011
9f2+f6=1+8100011
10f3+f6=2+8010011
11f4+f6=3+8001011
12f2+f4+f6=1+3+8101011
13f70000011
14f2+f7=1+131000011

Zie ook

Referenties