De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Fibonacci & Friends Met dank aan Gerard Tel.

Verwante presentaties


Presentatie over: "Fibonacci & Friends Met dank aan Gerard Tel."— Transcript van de presentatie:

1 Fibonacci & Friends Met dank aan Gerard Tel

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 > 2 dan 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 Fibonacci Italiaans wiskundige (1170-1250), Pisa
Leerboeken (o.a. decimaal getallenstelsel voor handelaars) Getaltheorie Eerste Europeaan met Fibonaccirij (al eerder in Indiase wiskunde bekend)

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 Euclides EuclidesGGD(x, y) Rest bij deling Vb: 60, 36
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

14 Soms gaat ‘t snel, soms niet
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?

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 Bewijs (1): definitie a-reeks
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

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 ak mod 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: 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 aan g(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 = ongeveer 1.618 j’ = ongeveer 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 rij f(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 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 dan f(k+1) £ a £ 2r 1/ sqrt(5) jk £ 2r jk £ 2r * sqrt(5) k £ r/log(j) +O(1) log(j) is ongeveer (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 jn en 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 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 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?


Download ppt "Fibonacci & Friends Met dank aan Gerard Tel."

Verwante presentaties


Ads door Google