Fibonacci-code

Uit testwiki
Versie door imported>Wikiwernerbot op 8 jul 2023 om 20:55 (Botverzoeken: toevoegen archieflinks en vervangen http:// door https://)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

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:

d0d1d2dk,

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

dk1=dk=1

en

n=i=0k1difi+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.

getal Zeckendorf-representatie Fibonacci-code
1 f2=1 11
2 f3=2 011
3 f4=3 0011
4 f2+f4=1+3 1011
5 f5=5 00011
6 f2+f5=1+5 10011
7 f3+f5=2+5 01011
8 f6=8 000011
9 f2+f6=1+8 100011
10 f3+f6=2+8 010011
11 f4+f6=3+8 001011
12 f2+f4+f6=1+3+8 101011
13 f7 0000011
14 f2+f7=1+13 1000011

Zie ook

Referenties