Fibonaccijev brojevni sustav

 
Ljerka Jukić
asistentica Odjela za matematiku
Sveučilišta u Osijeku
ljukic@mathos.hr
Helena Velić
studentica Odjela za matematiku
Sveučilišta u Osijeku
hvelic@mathos.hr

 

Sažetak
U ovom članku prikazujemo kako pomoću Fibonaccijevih brojeva izgraditi brojevni sustav.

1Uvod

Najveći matematičar srednjeg vijeka, Leonardo iz Pise, poznatiji kao Fibonacci, otkrio je neobičan matematički niz koji danas nosi njegovo ime. Fibonaccijev niz čine brojevi 1,\, 1,\, 2,\, 3,\, 5,\, 8,\, 13,\, 21,\ldots pri čemu se svaki sljedeći broj računa kao zbroj prethodnih dvaju u nizu. Elementi Fibonaccijeva niza nazivaju se i Fibonaccijevi brojevi. Fibonacci je do tog otkrića došao promatrajući razmnožavanje zečeva u prirodi, te pokušavajući predvidjeti koliko će parova zečića podignuti jedan par zečjih roditelja u jednoj godini. Očito, navedeni niz možemo definirati i rekurzivnom relacijom F_{n}=F_{n-1}+F_{n-2},\,\, F_{1}=1,\, F_{2}=1.
Zanimljivu primjenu Fibonaccijevih brojeva nalazimo pri njihovu korištenju kao baze za prikazivanje prirodnih brojeva. U toj se bazi prirodni brojevi prikazuju kao sume nekoliko Fibonaccijevih brojeva, no postoje određene prepreke koje najprije valja ukloniti kako bi prikaz bio jedinstven.

Fibonaccijev brojevni sustav povezuje razne grane matematike, kao što su kombinatorika i teorija brojeva, s određenim dijelovima teorijskog računarstva poput kriptografije i algoritama za pretraživanje podataka. U računarstvu se osobito pokazao korisnim za sustave u kojima se podaci serijski pohranjuju i traže [1]. Također, prilikom kompresija digitalnih fotografija pokazuje znatne prednosti nad klasičnom LBS metodom koja koristi se binarnim brojevnim sustavom [6]. Osim toga, prikazivanje prirodnih brojeva u Fibonaccijevoj bazi omogućilo je jednostavno kodiranje podataka stvaranjem nizova u kojima se brzo može utvrditi gdje jedan podatak završava, a drugi počinje. Prirodnim proširivanjem Fibonaccijeva brojevnog sustava dobiveni su novi sustavi koji svoju ulogu također pronalaze u računarstvu, jer uz određene uvjete ponovno imaju značajne prednosti kod izvođenja osnovnih aritmetičkih operacija u odnosu na klasični binarni brojevni sustav.

2Fibonaccijev brojevni sustav

U matematici se za prikaz prirodnih brojeva koriste različiti brojevni sustavi. Najpoznatiji su binarni i dekadski. U binarnom sustavu prirodne brojeve prikazujemo kao sumu potencija broja 2 koje množimo znamenkama 0 i 1, dok u dekadskom brojeve prikazujemo kao sumu potencija broja 10 koje množimo znamenkama 0, 1, 2, 3, 4, 5, 6, 7, 8 i 9.

Fibonaccijev brojevni sustav je onaj u kojem brojeve prikazujemo kao sumu Fibonaccijevih brojeva. Dakle, neki prirodni broj N možemo prikazati kao
N=a_{n-1}F_{n+1}+\ldots+a_{2}F_{4}+a_{1}F_{3}+a_{0}F_{2},
gdje je su F_{i} brojevi Fibonaccijeva niza koji zadovoljavaju relaciju F_{i}=F_{i-1}+F_{i-2},\,\, F_{2}=1=F_{2}, te je a_{i}\in \lbrace 0,1\rbrace. Ovaj sustav sličan je binarnom brojevnom sustavu, jer se koristi samo znamenkama 0 i 1, ali za razliku od binarnog brojevnog sustava, čija je baza broj 2, u ovom sustavu baza su Fibonaccijevi brojevi.

Primjer 1.Prikažimo broj 8 u Fibonaccijevu brojevnom sustavu.
8=F_{6}=F_{5}+F_{4}=F_{5}+F_{3}+F_{2}=F_{5}+F_{3}+F_{1}
Kao što vidimo, broj 8 možemo prikazati na nekoliko načina s pomoću Fibonaccijevih brojeva. Bolji pregled daje nam sljedeća tablica.



F_{i} F_{6} F_{5} F_{4} F_{3} F_{2} F_{1}
Vrijednost  8 5 4 3 2 1
a_{i} 1 0 0 0 0 0
  0 1 1 0 0 0
  0 1 0 1 1 0
  0 1 0 1 0 1

Za prikaz broja 8 u Fibonaccijevoj bazi uzeli smo četiri Fibonaccijeva broja, a pojavilo se nekoliko prikaza. To nam govori da za prirodne brojeve u Fibonaccijevoj bazi nećemo dobiti jedinstven prikaz broja jer postoji više od jednog načina kako bismo prikazali taj broj. Kako možemo urediti novi brojevni sustav u kojem će prikazi prirodnih brojeva biti jedinstveni?



Do nejedinstvenosti dolazi zbog dva razloga:
(1) F_{2}=F_{1}=1
Ovaj problem rješavamo tako da odlučimo koji ćemo od ta dva broja upotrijebiti u prikazu.
(2) F_{i}=F_{i-1}+F_{i-2}

U prikazu možemo izabrati F_{i} ili F_{i-1}+F_{i-2}. Na ovaj način dobivamo najkraći ili najdulji mogući prikaz. Prirodno je odabrati najkraći prikaz.
Sljedeća dva teorema pokazuju nam kako zaista dobivamo brojevni sustav s jedinstvenim prikazom brojeva ako napravimo ova dva izbora [3].

Teorem 2. (Zeckendorf)Svaki prirodan broj N može se prikazati kao zbroj različitih Fibonaccijevih brojeva
N=F_{i_{1}}+F_{i_{2}}+\ldots+F_{i_{r}}
tako da je pritom i_{k+1}\leq i_{k}-2 za k=1, 2, \ldots,r-1 te je i_{r}\geq 2.

Dokaz.Dokaz teorema provodimo matematičkom indukcijom. Za N=1 tvrdnja je točna jer je F_{2}=1. Pretpostavimo da je N\geq 2 prirodan broj te da je tvrdnja točna za sve brojeve manje od N. Sada preostaje dokazati korak indukcije. Odaberimo n \in \mathbb{N} tako da je F_{n}\leq N\lt F_{n+1}. Ako je N=F_{n}, tada je tvrdnja točna. Pretpostavimo da je N\gt F_{n}. Očito je N-F_{n}\lt N, pa na broj N-F_{n} možemo primijeniti pretpostavku indukcije te dobivamo N-F_{n}=F_{i_{1}}+\ldots+F_{i_{r}}. Odatle je N=F_{n}+(N-F_{n})=F_{n}+F_{i_{1}}+\ldots+F_{i_{r}} te još treba provjeriti da je i_{1}\leq n-2.
Ova tvrdnja slijedi direktno iz F_{i_{1}}\leq N-F_{n}\lt F_{n+1}-F_{n}=F_{n-1}.
\ \blacksquare

Edouard Zeckendorf, belgijski zaljubljenik u matematiku, izveo je svoj teorem 1939. Otprilike 20 godina poslije, David E. Daykin pokazao je u vrlo netrivijalnom radu [2] da je Fibonaccijev niz jedini koji zadovoljava prethodni teorem, odnosno da je Zeckendorfovim teoremom dano definirajuće svojstvo Fibonaccijeva niza. Prikaz prirodnog broja kojim smo se koristili u Zeckendorfovu teoremu nazivamo kanonski prikaz. Idući rezultat pokazuje kako kanonski prikaz prirodnog broja u Fibonaccijevu brojevnom sustavu doista ima traženo svojstvo.

Teorem 3. (Lekkerkerker)Kanonski prikaz je jedinstven.

Dokaz. Dokaz se ponovno provodi matematičkom indukcijom. Kao i u prethodnom teoremu, neka je N\geq 2 te pretpostavimo da svi brojevi manji od N imaju jedinstven prikaz. Dokažimo sad korak indukcije. Odaberimo n \in \mathbb{N} tako da je F_{n}\leq N\lt F_{n+1}. Dokazat ćemo da se u kanonskom prikazu broja N mora pojaviti broj F_{n}.

Kada se F_{n} ne bi pojavio kanonskom prikazu, imali bismo F_{i_{1}}\leq F_{n-1}, F_{i_{2}}\leq F_{n-3},\ldots Ako je n paran, zapišimo ga u obliku n=2i, te dobivamo N\leq F_{2i-1}+F_{2i-3}+\ldots+F_{3}=F_{2i}-F_{2}=F_{n}-1. Slično, ako je n neparan, možemo ga zapisati u obliku n=2i+1, te dobivamo
N\leq F_{2i}+F_{2i-2}+\ldots+F_{2}=F_{2i+1}-F_{1}=F_{n}-1.
U oba slučaja dobili smo kontradikciju, pa slijedi da F_{n} mora biti dio kanonskog prikaza prirodnog broja N.

Dakle, broj N prikazali smo kao N=F_{n}+m. Zašto nam pojavljivanje broja F_{n} garantira jedinstvenost prikaza? Pretpostavimo da postoje dva različita prikaza broja N. Tada bi postojala i dva različita prikaza od m, što je u kontradikciji s pretpostavkom indukcije, jer je m\lt N.
\ \blacksquare

Dakle, broj 8 iz našeg primjera na jedinstven način u Fibonaccijevu sustavu prikazujemo kao
8=F_{6}=1F_{6}+0F_{5}+0F_{4}+0F_{3}+0F_{2}=1000_{Fib}.

Algoritam
Iz prethodnih dvaju teorema proizlazi jednostavan algoritam za pronalaženje kanonskog prikaza broja prirodnog broja N:
i_{1}=\max\lbrace i\in \mathbb{N}: F_{i}\leq N\rbrace,
i_{2}=\max\lbrace i\in \mathbb{N}: F_{i}\leq N-F_{i_{1}}\rbrace,
i_{3}=\max\lbrace i\in \mathbb{N}: F_{i}\leq N-F_{i_{1}}-F_{i_{2}}\rbrace,
\vdots

Zadatak 4.Koristeći se gornjim algoritamom prikažite prirodne brojeve 16, 33 i 57 u kanonskom prikazu Fibonaccijeva sustava.



3Fibonaccijevi kodovi

Fibonaccijev brojevni sustav od velike je važnosti za kriptografiju jer prirodne brojeve prikazane u Fibonaccijevu sustavu možemo na jednostavan način pretvoriti u kodove. Fibonaccijevi kodovi atraktivniji su u odnosu na ostale univerzalne kodove, jer omogućuju lako određivanje polaznih podataka i jednostavnu, zahvalnu manipulaciju. Zbog tog zanimljivog svojstva, Fibonaccijevi kodovi često nalaze svoju primjenu u programiranju i analizi tržišta kapitala.

U binarnom sustavu svaki niz znamenki 0 i 1 predstavlja neki broj. Pogreška bilo koje vrste, poput nedostatka neke znamenke, opet daje valjani prikaz nekog drugog broja, stoga lako može proći neopaženo. Fibonaccijev sustav pretvara brojeve u nizove znamenki nula i jedinica, u kojem se nikada dvije jednice ne mogu pojaviti zajedno u slijedu. Kada je god 0 koja slijedi ili prethodi 1, slučajno zamijenjena s 1, takva se pogreška lako uočava. Ovo svojstvo Fibonaccijeva sustava daje Fibonaccijevu kodu veliku prednost u odnosu na druge postojeće kodove. Oštećeni niz podataka ne postaje beskoristan, nego se tijekom procesa dekodiranja gube najviše tri znamenke.

Pogledajmo kako na jednostavan način možemo dobiti Fibonaccijeve kodove:

Prikažimo broj 18 u Fibonaccijevoj bazi:
\begin{align*} 18&=13+5=F_{7}+F_{5}\\ &=1 F_{7}+0 F_{6}+1 F_{5}+0F_{4}+0F_{3}+0F_{2}=101000_{Fib}. \end{align*}
Fibonaccijev kod za prirodan broj N definira se kao Fib(N)=a_{0}a_{1}a_{2}\ldots {a_{n-1}} gdje su a_{0},a_{1},\ldots,a_{n-1} znamenke u prikazu prirodnog broja N=a_{n-1}F_{n+1}+\ldots+a_{2}F_{4}+a_{1}F_{3}+a_{0}F_{2} u Fibonaccijevoj bazi. Fibonaccijev kod je obratan od uobičajenog zapisa brojeva u bazi, u kojem je krajnja lijeva znamenka ona koja u prikazu broja stoji uz najveću potenciju baze. U našem slučaju, uz najveći Fibonaccijev broj. Dakle, ako je 101000_{Fib} prikaz broja 18 u Fibonaccijevoj bazi, tada je Fibonaccijev kod tog broja Fib(18)=000101.
Na isti način prikažimo brojeve 33 i 6:
\begin{align*} 33&=21+8+3+1=1F_{8}+0F_{7} +1F_{6}+0 F_{5}+1 F_{4}+0 F_{3}+1F_{2}\\ &=1010101_{Fib}\\ 6&=5+1=1 F_{5}+0 F_{4}+0F_{3}+1 F_{2}=1001_{Fib} \end{align*}
Dobivamo Fib(33)=1010101 i Fib(6)=1001.

Kada bismo dane brojeve zapisali u binarnoj bazi, dobili bismo također niz nula i jedinica koje predstavljaju binarnu inačicu broja. Pogledajmo kako tada zapis glasi:

33= {10001}_{2}
18=01001_{2}
6=011_{2}.

Napravimo li redom konkatenaciju brojeva 33, 18 i 6 zapisanih u binarnom sustavu (tj. zapišemo li odgovarajuće binarne prikaze jednog za drugim), dobivamo niz nula i jedinica 1000101001011. Budući da smo unaprijed zadali brojeve, znamo od kojih je brojeva ovaj niz sastavljen. Međutim, ako bismo pred sobom imali isti niz nula i jedinica 1000101001011 bez prethodnog saznanja od kojih brojeva je on sastavljen, ne bismo ga znali dešifrirati, jer ne bismo znali gdje jedan broj počinje ili završava.

Na isti problem naišli bismo kada bismo napravili konkatenaciju Fibonaccijevih kodova za prirodne brojeve 33, 18 i 6, odnosno Fib(33)Fib(18)Fib(6). Dobili bismo niz nula i jedinica 10101010001011001. Međutim, kod brojeva u Fibonaccijevu brojevnom sustavu taj problem možemo lako riješiti. U zapisu svakog koda, iza zadnje znamenke stavimo dodatnu jedinicu:

Fib(33)=1010101\quad 1
Fib(18)=000101\quad 1
Fib(6)=1001 \quad 1

Sada lako možemo odrediti gdje neki broj počinje, a drugi završava. Kad god naiđemo na dvije susjedne jedinice, znamo da smo došli na kraj niza koji prikazuje određeni broj. Moramo voditi računa o tome da imamo jednu jedinicu viška koja nam služi isključivo za odvajanje i ne koristi se pri pretvorbi u polazni broj. Zeckendorfov teorem osigurava nam nepostojanje susjednih jedinica u zapisu prirodnog broja u Fibonaccijevoj bazi te je ovo dodavanje jedinice moguće.
Napravimo sada konkatenaciju brojeva u Fibonaccijevoj bazi čijem smo zapisu dodali jedinicu
Fib(33)Fib(18)Fib(6)=10101011000101110011.
Jednostavnim rastavom možemo pronaći brojeve koji izgrađuju dani niz nula i jedinica
\overbrace{101010\underline{1}}^{33}\underline{1}\overbrace{00010\underline{1}}^{18}\underline{1}\overbrace{100\underline{1}}^{6}\underline{1}


Zadatak 5.Odredite prirodne brojeve čiji se Fibonaccijev kod nalazi u nizu 1001010011100011101011.



4Proširenja Fibonaccijeva sustava

Fibonaccijev brojevni sustav može se na jednostavan način proširiti do drugih brojevnih sustava, u kojima prirodne brojeve prikazujemo kao sume takozvanih proširenih Fibonaccijevih brojeva. Neki od predstavnika tih sustava su tribonaccijev brojevni sustav, zatim brojevni sustav koji je definirao S. T. Klein [5] te direktna generalizacija Fibonacccijeva sustava, koju nazivamo m-bonaccijev brojevni sustav. Ovi brojevni sustavi imaju važnu ulogu u teorijskom računarstvu, gdje se zbog mnogobrojnih zanimljivih svojstava koriste za konačne automate. Mi nećemo proučavati svojstva tih sustava, već ćemo ukratko dati opis prikaza priro- dnih brojeva u nekima od tih sustava.

4.1Tribonaccijev brojevni sustav

Proširivanjem Fibonaccijevih brojeva dobivamo tribonaccijeve brojeve koji su definirani rekurzijom
F_{i}=F_{i-1}+F_{i-2}+F_{i-3}
uz uvjet F_{3}=2, F_{2}=1, F_{1}=1. Dok se svaki sljedeći Fibonaccijev broj dobiva zbrajanjem prethodnih dvaju, svaki tribonaccijev broj dobivamo zbrajanjem prethodnih triju, pa su
1, 1, 2, 4, 7, 13, 24, 44, 81, 149 \ldots
neki od prvih članova tribonaccijeva niza.
Na prirodan način možemo proširiti Fibonaccijev brojevni sustav do tribonaccijeva brojevnog sustava. U ovom sustavu prirodan broj N može se prikazati kao
N=a_{n-1}F_{n+1}+\ldots+a_{2}F_{4}+a_{1}F_{3}+a_{0}F_{2},
gdje je
F_{i}=F_{i-1}+F_{i-2}+F_{i-3},\quad F_{4}=2^{2}, F_{3}=2^{1}, F_{2}=2^{0}.
U tribonaccijevu sustavu prirodne brojeve također možemo prikazati na više načina. A. S. Fraenkel pokazao je 1985. [4] kako će, ako u prikazu uklonimo grupe u kojima se pojavljuju tri ili više uzastopnih jedinica, prikazi brojeva u tribonaccijevu sustavu biti jedinstveni.
Pogledamo li odgovarajući zapis broja 7, imamo dvije mogućnosti:
(1)
7=F_{5}=1F_{5}+0 F_{4} +0 F_{3}+0 F_{2}
i
(2)
7=4+2+1=0 F_{5}+1F_{4}+1F_{3}+1F_{2}.
Odbacujemo onaj zapis u kojem se pojavljuje tri ili više jedinica, odnosno (2). Dobivamo prikaz 7=1000_{Trib}.

Zadatak 6.Prirodne brojeve 4, 8 i 14 zapišite u tribonaccijevu brojevnom sustavu.

4.2Brojevni sustav srodan Fibonaccijevom

Drugo proširenje Fibonaccijeva sustava je brojevni sustav koji je definirao S. T. Klein, u kojem prirodne brojeve prikazujemo u obliku
N=a_{n-1}F_{n+1}+\ldots+a_{2}F_{4}+a_{1}F_{3}+a_{0}F_{2}
gdje je
F_{i}=F_{i-1}+F_{i-m},\,\, \text{za}\,\, i\gt m+1
F_{i}=i-1,\,\, \text{za}\,\, 1\leq i\leq m+1,\,\, \text{uz uvjet}\, \,m\geq 2.
Kao i prethodni sustavi, ovaj sustav u sebi također sadržava višestruke prikaze. Jedinstvenost u prikazu prirodnog broja kao n-torke koja se sastoji od nula i jedinica možemo postići uz uvjet da se između svakog para jedinica nalazi najmanje m-1 nula [5].

Za m=2, ovaj sustav odgovara Fibonaccijevu sustavu. Promotrimo slučaj m=3. Baza je tada definirana s F_{i}=F_{i-1}+F_{i-3} te F_{4}=3, F_{3}=2 i F_{2}=1. Primjerice, prvih pet prirodnih brojeva u novoj bazi možemo prikazati kao N=a_{3}F_{5}+a_{2}F_{4}+a_{1}F_{3}+a_{0}F_{2}, tj. N=a_{3}4+a_{2}3+a_{1}2+a_{0}. Zbog gore navedenog uvjeta, odbacujemo one prikaze u kojima se između jedinica pojavljuje manje od m-1 nula. U sljedećoj tablici označili smo prikaze koje odbacujemo jer ne zadovoljavaju traženo svojstvo.



a_{3} a_{2} a_{1} a_{0} N
 
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3 \leftarrow odbacujemo
0 1 0 0 3
0 1 0 1 4 \leftarrow odbacujemo
1 0 0 0 4
0 1 1 0 5 \leftarrow odbacujemo
1 0 0 1 5

4.3m-naccijev brojevni sustav

Pogledajmo ukratko i treće proširenje Fibonaccijeva brojevnog sustava, poznato pod nazivom m-naccijev brojevni sustav. Prirodan broj u ovom sustavu možemo prikazati kao
N=a_{n-1}F_{n+1}+\ldots+a_{2}F_{4}+a_{1}F_{3}+a_{0}F_{2},

gdje je baza dana s
F_{i}=mF_{i-1}-F_{i-2},\,\,\text{za}\,\, i\gt 3\,\, \text{i}\,\, F_{3}=m, F_{2}=1,
a znamenke a_{i} s 0, 1, 2, \ldots, m-1 za m\geq 3. Prethodna tri sustava imala su samo dvije znamenke, 0 i 1, dok m–naccijev sustav ima onoliko znamenki koliki m odaberemo, uz uvjet da je m barem 3. Odaberemo li m=3, dobivamo m–naccijev brojevni sustav s tri znamenke 0,1,2. Broj 5 u takvom sustavu možemo prikazati u obliku   5=3+2=F_{3}+2F_{2} tj. 5=12_{m_{3}}.

Budući da i u ovom brojevnom sustavu postoji više mogućnosti za prikaz prirodnih brojeva, jedinstvenost možemo postići uz neke restrikcije. U radu [5] je S. T. Klein pokazao kako jedinstvenost prikaza brojeva u m-naccijevom sustavu dobivamo ako se između svakih dvaju pojavljivanja broja m-1 nalazi najmanje jedan i takav da i\in\lbrace 0,1,\ldots,m-3\rbrace .

Zapišemo li u m-naccijevu sustavu s tri znamenke broj 8, dobit ćemo dva prikaza
(3)
8=2+6=0F_{4}+2F_{3}+2F_{2}
i
(4)
8=F_{4}+0F_{3}+0F_{2}.
Prema gornjem uvjetu, odbacujemo prikaz (3) i prihvaćamo (4) kao jedinstveni prikaz broja 8= 100_{m_{3}} u ovoj bazi.

Zadatak 7. Prirodne brojeve 9, 11 i 17 zapišite u m-naccijevu brojevnom sustavu, gdje je m=3.


Bibliografija
[1] J. T. Butler \& T. Sasao, Redundant Multiple-Valued Number Systems, The Proc. of the Japan Research Group on Multiple-Valued Logic, 20, 1997, pp. 141–148.
[2] D. E. Daykin, Representation of natural numbers as sums of generalised Fibonacci numbers, J. London Math. Soc., 35 (1960), pp. 143–160.
[3] A. Dujella, Fibonaccijevi brojevi, HMD, Zagreb, 2000.
[4] A. S. Fraenkel, Systems of numeration, Amer. Math. Monthly, 92 (1985), pp. 105–114.
[5] S. T. Klein, Combinatorial representation of generalized Fibonacci numbers, Fibonacci Quart. 29 (1991), pp. 124–131. 2008, pp. 534–550.
[6] D. De Luca Picione, F. Battisti, M. Carli, J. Astola \& K. Egiazarian, A Fibonacci LSB Data Hiding Techique, 14th European Signal Processing Conference (EUSIPCO 2006), Florence, Italy, 2006.
Share this