1 / 40

Fibonacci & Friends

Fibonacci & Friends. Inhoud. Fibonaccigetallen Toepassing voor AVL-bomen …. Konijnen. (Voorbeeld uit De Telduivel ) Elk paar konijnen van twee maanden of ouder krijgt elke maand twee kinderen Hoeveel konijnen zijn er in maand i ? Fibonacci-getal!. De maanden. Maand 1: 1 Maand 2: 1

nonnie
Download Presentation

Fibonacci & Friends

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fibonacci & Friends

  2. Inhoud • Fibonaccigetallen • Toepassing voor AVL-bomen • …

  3. Konijnen • (Voorbeeld uit De Telduivel) • Elk paar konijnen van twee maanden of ouder krijgt elke maand twee kinderen • Hoeveel konijnen zijn er in maand i? • Fibonacci-getal!

  4. De maanden • Maand 1: 1 • Maand 2: 1 • Maand 3: 2 (beginpaar krijgt kinderen) • Maand 4: 3 (beginpaar krijgt kinderen) • Maand 5: 5 (alle paren die er in maand 3 waren krijgen kinderen) • Maand 6: 8 (alle paren die er in maand 4 waren krijgen kinderen)

  5. Recurrente betrekking • A(1)=1 • A(2)=1 • Als i > 2dan A(i) = A(i – 1) + A(i – 2) • Reeks getallen: 1,1,2,3,5,8,13,21,34,55, … • Heet de reeks Fibonaccigetallen

  6. Notatie • f(k) = k-de Fibonaccigetal • f(0) = 0 • Dus f(0)=0; f(1)=1; f(k) = f(k-1)+f(k-2) als k>1 • 0, 1, 1, 2, 3, 5, …

  7. Italiaans wiskundige (1170-1250), Pisa Leerboeken (o.a. decimaal getallenstelsel voor handelaars) Getaltheorie Eerste Europeaan met Fibonaccirij (al eerder in Indiase wiskunde bekend) Fibonacci

  8. Toepassingen van Fibonaccirij • In de natuur: o.a. schelpen, zonnebloemen • In de wiskunde • In de informatica • Hier: analyse van AVL-bomen • In de kunst en architectuur (verband met gulden snede) • Mooi voorbeeld van recurrente betrekking

  9. Euclides • Grootste gemene deler • Bijv.: • ggd(30,20) = 10 • ggd(75,33) = 3 • Toepassing o.a. in cryptografie (bijv. Public key cryptografie gebaseerd op priemfactoren…) • Hoe vind je de ggd van twee gegeven positieve integers snel?

  10. Simpele methode • Gegeven positieve integers x, y • Gevraagd: bereken ggd(x,y) • Methode 1: ontbind x en y in priemfactoren • Kijk welke priemfactoren overeenkomen

  11. Voorbeeld • 60 = 2 * 2 * 3 * 5 • 72 = 2 * 2 * 2 * 3 * 3 • 2, 2, 3 gemeen, dus ggd(60,72) = 2 * 2 * 3 = 12

  12. Methode 2:Algoritme van Euclides • ... maak een rij getallen, beginnend met x en y, en elk volgend getal is: • het laatste getal modulus het een-na-laatste getal • ...

  13. EuclidesGGD(x, y) while (y != 0) do z = x mod y x = y; y = z; return x Rest bij deling Vb: 60, 36 36, 24 24, 12 12, 0 Dus antwoord 12 Euclides

  14. 240, 147 147, 93 93, 54 54, 39 39, 15 15, 9 9, 6 6, 3 3, 0 Acht stappen Antwoord 3 Hoeveel stappen zijn er nodig? Soms gaat ‘t snel, soms niet

  15. Lemma • Als we k delingen nodig hebben om de ggd van twee getallen a en b te berekenen met a>b, dan is a ³ f(k+1). • (k+1)e Fibonaccigetal

  16. Noem de resten die we krijgen van achteraf a0 a1 … ak-1 en zet ak= b en ak+1 = a Vb. a0 = 0; a1 = 3; a2 = 6; a3 = 9; a4 = 15; a5=39; a6 = 54; a7 = 93; a8 = 147; a9 = 240 240, 147 147, 93 93, 54 54, 39 39, 15 15, 9 9, 6 6, 3 3, 0 Bewijs (1): definitie a-reeks

  17. Bewijs (2): eigenschappen a-reeks • a0 = 0; a1 > 0 (vanwege Euclides-algoritme) • a2 > 1, want delen door 1 geeft rest 0 dus a2 = 1 geeft a1 = 0 • k> 2: ak³ak-1 + ak-2 • Omdat akmod ak-1 = ak-2 en ak> ak-1 • Zie algoritme en manier waarop we de a-reeks maakten • Met inductie naar k volgt nu: • ak³ f(k) QED

  18. Eigenschappen van Fibonacci getallen (1)

  19. Eigenschappen van Fibonacci getallen (2) • f(-1) = f(1) – f(0) = 1 • Bewijzen met inductie meestal met twee basisgevallen • Stelling: f(n+k) = f(k)*f(n+1)+f(k-1)*f(n) • Dit heet de Fibonacci Increment Stelling • Bewijs • Basisgeval k=0: f(0)*f(n+1)+f(-1)*f(n)= 0*f(n+1)+1*f(n)=f(n) = f(n+0) • Basisgeval k=1: f(1)*f(n+1) + f(0)*f(n+1)=1*f(n+1)+0*f(n)= f(n+1) • Inductiestap: ..

  20. Inductiestap van f(n+k) = f(k)*f(n+1)+f(k-1)*f(n) • We nemen aan dat dit geldt voor alle kleinere waarden van k: in het bijzonder voor k-1 en k-2: • f(n+k-1) = f(k-1)*f(n+1)+f(k-2)*f(n) • f(n+k-2) = f(k-2)*f(n+1)+f(k-3)*f(n) • Nu: f(n+k) = f(n+k-1)+f(n-k-2) =f(k-1)*f(n+1)+f(k-2)*f(n) + f(k-2)*f(n+1) + f(k-3)*f(n) =(f(k-1)+f(k-2))f(n+1) + (f(k+2)+f(k+3)*f(n) =f(k)*f(n+1) + f(k-1)*f(n) • We gebruikten de Inductiehypothese en we gebruiken de definitie van de Fibonaccirij

  21. Oneven • Fibonaccigetallen op oneven posities sommeren tot volgende Fibonaccigetal: • 0 1 1 2 3 5 8 13 21 34 • 1 2 5 13 hebben samen som 34

  22. Kwadraten • f(2n+1) = f(n+n+1) = f(n+1)*f(n+1) + f(n)*f(n) = f(n+1)2 + f(n)2

  23. Waarde van f(n) • Hoe groot is eigenlijk f(n) • Soort exponentieel gedrag • Simpel: f(n) £ 2n • Met inductie • Ook simpel: f(n) ³ 2n/2 = (wortel van 2)n • Kunnen we preciezer zijn?

  24. Exponentieel gedrag preciezer • Stel eens dat g(n) = qn • Voor een functie g die voldoet aang(n)=g(n-1)+g(n-2) voor alle n • Dan dus: qn= qn-1+qn-2 • Deel door qn-2 geeft: q2 = q + 1 • Oplossen met abc-formule geeft of

  25. Exponentieel gedrag • Schrijf j = (1 + sqrt(5))/2 en • j’= (1 - sqrt(5))/2 • j = ongeveer 1.618 • j’= ongeveer -0.618 • De rij f(n)=jn voldoet aan f(n)=f(n-1)+f(n-2) • Maar de beginwaarden kloppen niet…

  26. Combinatiestelling • Voor elk paar getallen A en B voldoet de rijf(n) = A jn + B j’ n aan de eigenschap f(n)=f(n-1)+f(n-2) • Eenvoudig uitschrijven na wat we weten… • Fibonaccirij is ook van deze vorm • Reken uit A en B: • n= 0: f(0)=0 = A j0 + B j’0 = A+B • n= 1: f(1)=1 = A j1 + B j’1 = A j + B j’ • Door oplossen krijg je A = 1/sqrt(5); B= -1/sqrt(5)

  27. Conclusie Deze waarden zijn voor elke integer n een geheel getal!

  28. Conclusie vervolg • j’n gaat snel naar 0 en is altijd kleiner dan 1 want j’is ongeveer -0.618 • De term j’n kan dus alleen de afronding beinvloeden van de formule voor f(n) en f(n) is dus ongeveer

  29. Euclides • Hoe lang duurt het algoritme van Euclides? • Als we ons grootste getal a bestaat uit r bits, en we doen k delingen danf(k+1) £ a £ 2r • 1/ sqrt(5) jk£ 2r • jk£ 2r * sqrt(5) • k£ r/log(j) +O(1) • log(j) is ongeveer 0.694 (als ik ‘t goed heb uitgerekend)

  30. AVL-bomen • Het minimaal aantal knopen in een AVL-boom met hoogte h voldoet zo ongeveer aan de eigenschappen van een Fibonaccirij • Stel A(h) is minimum aantal knopen van een AVL-boom met diepte h • Kijk naar wortel. Linker en rechterdeelboom hebben hoogte h-1 of h-2 en minstens eentje heeft hoogte h-1 • Dus A(h) = A(h-1)+A(h-2)+1 • (eentje voor de wortel zelf) • Wat moeten we doen met de +1? Een simpel trucje…

  31. AVL en Fibonacci • We weten A(h)=A(h-1)+A(h-2)+1 • Schrijf nu B(h) = A(h) + 1 • Nu geldt: B(h) = A(h-1)+1 + A(h-2)+1 = B(h-1)+B(h-2) • Dus B is een soort Fibonacci-rij, met misschien andere beginwaarden • En is dus te schrijven als lineaire combinatie van jnen j’n, en de laatste term gaat naar 0 voor grote n. • Dus A(h) = Q(jn) • Afgerond: A(h) = O(1.6181h) en A(h)=W(1.6180h)

  32. Scherpere grens op hoogte AVL-boom • A(h) = O(1.6181h) en A(h)=W(1.6180h) • A(h) = Q(jn) • A(h) was minimum aantal knopen in AVL-boom met hoogte h • Voor elke AVL-boom met n knopen en hoogte h geldt dat n³ A(h) = W(1.6180h) • Dus log n³ log (Q(jh))= h * log(j) + Q(1) • h £ log n / log(j) + Q(1) • En dus h £ 1.44 log n (ongeveer)

  33. De gulden snede • Het getal j speelt een rol in de kunst en architectuur • Aangenomen wordt dat afstanden die zich als 1: j verhouden er mooi uit zien.

  34. Andere recurrenties • Voor ‘t oplossen van andere “exponentiele” recurrente betrekkingen zijn er allerlei methoden • Voorbeeldje • Onafhankelijke deelverzameling in graaf • Stel knopen die allemaal geen kant onderling hebben

  35. Onafhankelijke deelverzameling • Deelverzameling knopen die onderling allemaal geen kant gemeen hebben • Probleem: zoek een zo groot mogelijke voor gegeven graaf

  36. Algoritme • if er is een knoop v met geen buren of maar 1 buur then • Recursief zoek de beste oplossing S als we v weglaten • Return S + {v} • else kies een knoop v • Recursief zoek de beste oplossing S als we v weglaten • Recursief zoek de beste oplossing T als we v en alle buren van v weglaten • Return de beste: S of T+{v}

  37. Exponentiele algoritmen • Dit soort algoritmen is exponentieel • Tijd is iets van O(cn) voor een getal c tussen 1 en 2 • Hoe lager c hoe beter • Hoe vinden we een grens?

  38. Analyse • Schrijf: Aantal vertakkende recursieve aanroepen is T(n) • T(n) £ T(n-1)+T(n-3)+1 • Want in 1 geval laten we 1 knoop weg, in andere geval laten we minstens 3 knopen weg • Schrijven we Q(n)=T(n)+1 dan • Q(n) £ Q(n-1)+Q(n-3) • We willen e • Stel Q(n) £ a*cn • Dan a* cn £ a* cn-1 + a* cn-3

  39. Vervolg • Dan a* cn £ a* cn-1 + a* cn-3 • Deel a eruit: cn £ cn-1 + cn-3 • Deel door cn: • 1 £ c-1 + c-3 • Los de vergelijking 1 = c-1 + c-3 op, bijvoorbeeld met Mathematica, Maple, Excel Solver. Of natuurlijk analytisch… • Excel geeft mij 1.4656 • Dus algoritme gebruikt tijd O(1.4656n) • Veel betere algoritmen bestaan (eerste stap is wegwerken van knopen met twee buren); heel veel van de analyse is op dit principe gebaseerd…

  40. Conclusie • Fibonaccigetallen • Hoe bepaal je het soort exponentieel gedrag van dit soort reeksen en dit soort recurrente betrekkingen?

More Related