Liczby Fibonacciego w przyrodzie
Transkrypt
Liczby Fibonacciego w przyrodzie
MATEMATYKA DYSKRETNA (2014/2015) dr hab. inż. Małgorzata Sterna [email protected] www.cs.put.poznan.pl/msterna/ REKURENCJA Matematyka Dyskretna © Małgorzata Sterna DEFINICJA REKURENCYJNA CIĄGU Ciąg jest zdefiniowany rekurencyjnie, jeśli: określony jest pewien skończony zbiór wyrazów ciągu (pierwszy lub kilka pierwszych wyrazów) – warunek początkowy (P), pozostałe wyrazy ciągu zdefiniowane są za pomocą poprzednich wyrazów ciągu (wzór, równanie, zależność rekurencyjna) – warunek rekurencyjny (R). Poprawność definicji rekurencyjnych dowodzi się w oparciu o zasadę indukcji matematycznej (pierwszą lub drugą w zależności od postaci definicji). 2 © Małgorzata Sterna Matematyka Dyskretna DEFINICJA REKURENCYJNA CIĄGU - PRZYKŁAD definicja rekurencyjna ciągu wartości n 1 suma(n) dla n N k 0 k! warunek początkowy (P): suma(0)=1 warunek rekurencyjny (R): suma(n 1) suma(n) 1 dla n N (n 1)! definicja rekurencyjna ciągu wartości o wzorze jawnym xn=2na+(2n-1)b, dla nN warunek początkowy (P): x0=a warunek rekurencyjny (R): xn=2xn-1+b dla nZ+ 3 Matematyka Dyskretna © Małgorzata Sterna CIĄGI DEFINIOWANE REKURENCYJNIE Wyrazy ciągu xn zdefiniowanego rekurencyjnie można wyznaczyć stosując: obliczenia iteracyjne: czyli wyznaczając x0, x1, x2, ..., xn, obliczenia rekurencyjne: wyznaczające wartość wyrazu ciągu w oparciu o wartości pewnego podzbioru jego poprzedników. 4 © Małgorzata Sterna Matematyka Dyskretna PRZYKŁAD P: x0=0 x1=1 R: x n x n x n , dla n 2, n N 2 5 Należy wyznaczyć x72. w obliczeniach iteracyjnych wyznaczamy 73 wyrazy: x0, ..., x72 w obliczeniach rekurencyjnych tylko 10 wyrazów: x0, x1, x2, x3, x4, x7, x9, x14, x18 i x36 5 © Małgorzata Sterna Matematyka Dyskretna PRZYKŁAD x72 x 72 x 72 x36 x14 2 5 (x36 x36 ) (x14 x14 ) x18 x7 x7 x2 x18 2x7 x2 2 5 2 5 2 5 2 5 (x18 x18 ) 2(x 7 x 7 ) (x2 x 2 ) 2 5 x9 x3 2x3 2x1 x1 x0 x9 3x3 3x1 x0 (x 9 x 9 ) 3(x3 x 3 ) 3x1 3x0 2 5 2 5 x4 x1 3x1 3x0 3x1 x0 x4 7x1 4x0 x 4 x 4 7 x1 4x0 2 5 x2 x0 7x1 4x0 x2 7x1 5x0 x2 x 2 7 x1 5x0 2 x n x n x n , dla n 2,n N 2 5 x 0 0, x1 1 5 x1 x0 7x1 5x0 8x1 6x0 8 6 © Małgorzata Sterna Matematyka Dyskretna DEFINICJA REKURENCYJNA ZBIORU Definicja rekurencyjna zbioru S składa się z dwóch części: warunku początkowego (P): XS, gdzie X jest pewnym konkretnym zbiorem, warunku rekurencyjnego (R): jeśli element s powstaje z elementów zbioru S w wyniku zastosowania pewnych reguł, to sS. przykład: zbiór nieparzystych liczb całkowitych dodatnich S = {1, 3, 5, 7, 9, …} S = {2n+1: nN} warunek początkowy: warunek rekurencyjny: 1 S (a 2) S aS 7 Matematyka Dyskretna © Małgorzata Sterna DEFINICJA REKURENCYJNA ZBIORU W oparciu o definicję rekurencyjną zbiór S konstruowany jest ze zbioru X stopniowo, tzn. X=S0 S1 S2 ... Sn ..., w taki sposób, że: S0 = X Sn+1= suma zbioru Sn i zbioru elementów skonstruowanych z elementów Sn za pomocą reguły rekurencyjnej (zbiór tych elementów S, które mogą zostać skonstruowane z elementów X w wyniku co najwyżej (n+1)-krotnego zastosowania reguły rekurencyjnej) S Sn n 0 8 © Małgorzata Sterna Matematyka Dyskretna UOGÓLNIONA ZASADA INDUKCJI MATEMATYCZNEJ DLA ZBIORÓW DEFINIOWANYCH REKURENCYJNIE Załóżmy, że S jest zbiorem zdefiniowanym rekurencyjnie i z każdym sS związane jest zdanie p(s). Jeśli (1) dla każdego sX zdanie p(s) jest prawdziwe i (2) zdanie p(s) jest prawdziwe dla każdego elementu s, utworzonego z takich elementów tS, dla których p(t) jest prawdziwe to zdanie p(s) jest prawdziwe dla każdego sS. [ p(s) [ sX sS sR( t ):tS p(t) p(s)]] p(s) sS gdzie s=R(t) oznacza, że element s powstaje przez zastosowanie reguły rekurencyjnej R do elementu t. 9 © Małgorzata Sterna Matematyka Dyskretna UOGÓLNIONA ZASADA INDUKCJI MATEMATYCZNEJ DLA ZBIORÓW DEFINIOWANYCH REKURENCYJNIE [ p(s) [ sX sS sR( t ):tS p(t) p(s)]] p(s) Dla zbioru liczb naturalnych, N, zdefiniowanego rekurencyjnie jako: sS P : 0 N R : (n 1) N nN uogólniona zasada indukcji matematycznej brzmi następująco: jeśli (1) p(0) jest prawdziwe i (2) dla dowolnego nN, p(n+1) jest prawdziwe, jeśli p(n) jest prawdziwe, to p(n) jest prawdziwe dla wszystkich nN i jest równoważna pierwszej zasadzie indukcji matematycznej. 10 Matematyka Dyskretna © Małgorzata Sterna ZALEŻNOŚCI REKURENCYJNE Z uwagi na fakt, iż wiele zależności występujących w przyrodzie, matematyce, fizyce itd. ma charakter rekurencyjny opracowano techniki uzyskiwania wzorów jawnych dla zależności rekurencyjnych określonych typów. Metody ogólne rozwiązywania zależności rekurencyjnych podane zostaną dla : liniowych jednorodnych zależności rekurencyjnych 1-szego rzędu, liniowych jednorodnych zależności rekurencyjnych 2-giego rzędu, liniowych jednorodnych zależności rekurencyjnych k-tego rzędu. Nie są znane metody ogólne rozwiązywania zależności rekurencyjnych niejednorodnych. 11 © Małgorzata Sterna Matematyka Dyskretna LINIOWA ZALEŻNOŚĆ REKURENCYJNA PIERWSZEGO RZĘDU ZE STAŁYMI WSPÓŁCZYNNIKAMI an+1 + can = f(n) gdzie: n - liczba naturalna (nN), c - pewna stała, f(n) - pewna funkcja określona na zbiorze liczb naturalnych. Gdy f(n)=0 dla wszystkich nN, to zależność nazywamy jednorodną (an+1=dan). Dla pozostałych funkcji jest to zależność niejednorodna. 12 Matematyka Dyskretna © Małgorzata Sterna PRZYKŁAD Liniowa jednorodna zależność rekurencyjna 1-szego rzędu postaci: an+1 = 3an a0=5, n0 definiuje ciąg 5, 15, 45, 135, ... . Liniowa niejednorodna zależność rekurencyjna 1-szego rzędu postaci: an = an-1+(n-1) a1=0, n2 definiuje ciąg 0, 1, 3, 6, 10, ... . 13 Matematyka Dyskretna © Małgorzata Sterna TWIERDZENIE Istnieje jednoznaczne rozwiązanie zależności rekurencyjnej an+1 = dan, dla n0, stałych d i a0 postaci an = a0dn, dla n0. Przykład Dla liniowej jednorodnej zależności rekurencyjnej 1-szego rzędu an+1 = 3an, gdzie a0=5, n0 wzór jawny na n-ty element ciągu ma postać (d=3): an= a0dn =5(3)n. a0=5 a0 = 5(3)0 =5 a1=3a0 = 15 a1 = 5(3)1 =15 a2=3a1 = 45 a2 = 5(3)2 =45 a3=3a2 = 135 a3 = 5(3)3 =135 ... ... a15=? a15=5(3)15 =71 744 535 14 © Małgorzata Sterna Matematyka Dyskretna LINIOWA ZALEŻNOŚĆ REKURENCYJNA DRUGIEGO RZĘDU ZE STAŁYMI WSPÓŁCZYNNIKAMI cnan + cn-1an-1+cn-2an-2 = f(n) gdzie: n cn, cn-1, cn-2 f(n) - liczba naturalna (nN), n2, - pewne stałe rzeczywiste (cn, cn-1, cn-2R), cn 0, cn-20 - pewna funkcja określona na zbiorze liczb naturalnych. Gdy f(n)=0 dla wszystkich nN, to zależność nazywamy jednorodną. Dla pozostałych funkcji jest to zależność niejednorodna. Metoda ogólna rozwiązywania liniowej jednorodnej zależności rekurencyjnej drugiego rzędu opiera się na rozwiązaniu równania charakterystycznego. 15 © Małgorzata Sterna Matematyka Dyskretna RÓWNANIE CHARAKTERYSTYCZNE Przewidywane rozwiązanie zależności cnan + cn-1an-1+cn-2an-2 = 0, dla n2, cn 0, cn-20 ma postać an=crn, gdzie c0, r0. Po podstawieniu do zależności rekurencyjnej otrzymujemy równanie cncrn + cn-1crn-1 + cn-2crn-2 = 0, które upraszcza się (c,r0) do równania charakterystycznego postaci: cnr2 + cn-1r + cn-2 = 0 Jeśli równanie charakterystyczne ma: dwa różne pierwiastki r1, r2 to, jeden pierwiastek podwójny r to, an=ĉ1r1n+ ĉ2r2n an=ĉ1rn+ ĉ2nrn dla pewnych stałych ĉ1, ĉ2, których wartości można wyznaczyć w oparciu o wartości początkowe ciągu a0 i a1. 16 © Małgorzata Sterna Matematyka Dyskretna PRZYKŁAD Liczby Fibonacciego definiuje jednorodna zależność rekurencyjna 2giego rzędu ze stałymi współczynnikami postaci: Fn+2 = Fn+1 + Fn dla n0, F0 =0, F1=1 czyli Fn+2 - Fn+1 – Fn = 0. Zakładamy, że rozwiązanie ma postać Fn=crn. Po podstawieniu do zależności rekurencyjnej otrzymujemy równanie crn+2 – crn+1 - crn = 0, które upraszcza się do równania charakterystycznego postaci: r2 - r - 1 = 0 1 5 o 2 różnych pierwiastkach: czyli ciąg ma wzór jawny: r1 2 1 5 r2 2 n n 1 5 1 5 c2 Fn c1 2 2 17 © Małgorzata Sterna Matematyka Dyskretna PRZYKŁAD n Ponieważ to n 1 5 1 5 c2 Fn c1 2 2 F0 c1 c 2 0 1 ĉ1 5 1 1 1 5 1 5 c2 1 1 F1 c1 ĉ 2 2 2 5 Rozwiązując zależność rekurencyjną otrzymano wzór jawny na n-ty wyraz ciągu Fibonacciego: n n 1 1 5 1 5 , Fn 5 2 2 F0 = 0 F1 = 1 F2 = F1+F0 = 0 + 1 = 1 F3 = F2+F1 = 1 + 1 = 2 F4 = F3+F2 = 2 + 1 = 3 ... F13=? dla n 0 13 13 1 1 5 1 5 233 F13 2 5 2 18 © Małgorzata Sterna Matematyka Dyskretna LINIOWA ZALEŻNOŚĆ REKURENCYJNA K-TEGO RZĘDU ZE STAŁYMI WSPÓŁCZYNNIKAMI cnan + cn-1an-1+... + cn-kan-k = f(n) gdzie: n - liczba naturalna (nN), k - liczba całkowita dodatnia (kZ+), nk, cn, cn-1, ..., cn-k - pewne stałe rzeczywiste (cn,cn-1, ..., cn-kR), cn 0, cn-k0 f(n) - pewna funkcja określona na zbiorze liczb naturalnych. Gdy f(n)=0 dla wszystkich nN, to zależność nazywamy jednorodną. Dla pozostałych funkcji jest to zależność niejednorodna. Metoda ogólna rozwiązywania liniowej jednorodnej zależności rekurencyjnej k-tego rzędu ze stałymi współczynnikami jest uogólnieniem metody rozwiązującej zależność rekurencyjną rzędu drugiego. 19 Matematyka Dyskretna © Małgorzata Sterna Dla zależności rekurencyjnej rzędów wyższych niż 2 postaci: cnan + cn-1an-1+... + cn-kan-k = 0 równanie charakterystyczne powstałe przez podstawienie przewidywanego rozwiązania an=crn (c0, r0) jest również równaniem rzędu wyższego niż 2. Każdy z pierwiastków równania charakterystycznego wprowadza do rozwiązania an pewien czynnik: pierwiastek m-krotny r (2mk): (ĉ1 + ĉ2n + ĉ3n2 + ... +ĉmnm-1)rn pierwiastek pojedynczy r: ĉ 1r n gdzie ĉ1, ĉ2, ..., ĉm są pewnym stałymi, których wartości można wyznaczyć w oparciu o wartości początkowe ciągu. 20 Matematyka Dyskretna © Małgorzata Sterna PROBLEMY REKURENCYJNE Problemy rekurencyjne są to problemy rozwiązywane w oparciu o rekurencję, tzn. rozwiązanie problemu o pewnym rozmiarze uzyskiwane jest w oparciu o rozwiązanie tego samego problemu o mniejszym rozmiarze. © Małgorzata Sterna Matematyka Dyskretna PROBLEM WIEŻ Z HANOI 8 7 6 5 4 3 2 1 A B C W jakiej minimalnej liczbie ruchów, T8, można przenieść wszystkie krążki z jednego pręta na drugi, przenosząc je pojedynczo i nigdy nie kładąc większego na mniejszy? 22 © Małgorzata Sterna Matematyka Dyskretna WYZNACZENIE WARUNKÓW POCZĄTKOWYCH Analiza problemów o małym rozmiarze n=0 n=2 T0=0 A B C T2=3 2 1 A B C B C 2 1 A n=1 T1=1 1 A B 1 C A 2 B C 1 A B 1 C A B 2 C 23 Matematyka Dyskretna © Małgorzata Sterna ODGADNIĘCIE WZORU OGÓLNEGO Aby wykonać zadanie należy: należy w Tn-1 ruchach przenieść n-1 krążków na pręt pomocniczy, pozostały n-ty (największy krążek) przesunąć w jednym ruchu na pręt docelowy przełożyć pozostałe n-1 krążków w Tn-1 ruchach na pręt docelowy Należy więc wykonać co najmniej Tn=2Tn-1+1 ruchów dla n>0 (T0=0). 24 © Małgorzata Sterna Matematyka Dyskretna WYZNACZENIE WZORU JAWNEGO Zależność rekurencyjna Tn=2Tn-1+1 (n>0, T0=0) jest niejednorodna. T0 T1 T2 T3 T4 T5 T6 =0 =2·0 + 1 =2·1 + 1 =2·3 + 1 =2·7 + 1 =2·15 + 1 =2·31 + 1 ... =0 =1 =3 =7 =15 =31 =63 ... =20-1 =21-1 =22-1 =23-1 =24-1 =25-1 =26-1 ... Tn=2n-1, n0 zależność rekurencyjna: Tn=2Tn-1+1, T0=0, n>0 wzór jawny: Tn=2n-1, n0 25 © Małgorzata Sterna Matematyka Dyskretna DOWÓD POPRAWNOŚCI WZORU JAWNEGO Dowód poprawności poczynionej obserwacji (wzoru jawnego na liczbę ruchów Tn=2n-1, n0) oparty jest o zasadę skończonej indukcji matematycznej: warunek początkowy dla n=0 n=0 A B C T0=20-1=0 krok indukcyjny: (Tn=2n-1) (Tn+1=2n+1-1) dla dowolnego nN Tn+1= 2Tn+1 =2(2n-1)+1 =2n+1-2+1 =2n+1-1 z zależności rekurencyjnej z założenia o prawdziwości hipotezy indukcyjnej teza c.b.d.u. 26 Matematyka Dyskretna © Małgorzata Sterna PROBLEM WIEŻ Z HANOI minimalna liczba kroków koniecznych do przełożenia n krążków wynosi: T0=0 Tn=2Tn-1+1, n>0 Tn=2n-1, n0 problem sformułowany przez Eduarda Lucas’a w 1883 roku dla n=64: T64 = 264-1 = 18 446 744 073 709 551 615 1 przesunięcie krążka na μs ok. 500 000 lat 27 Matematyka Dyskretna © Małgorzata Sterna ALGORYTMY REKURENCYJNE Algorytmy rekurencyjne, to metody wywołujące same siebie. Warunki poprawności algorytmu rekurencyjnego: algorytm musi zakończyć działanie tzn. muszą zostać zdefiniowane przypadki początkowe, w których wynik jest uzyskiwany bez kolejnych wywołań rekurencyjnych (warunek wyjścia z rekurencji), algorytm musi generować poprawne wyniki w przypadkach początkowych, kolejne wywołania rekurencyjne algorytmu powinny przybliżać metodę do przypadków początkowych, algorytm musi generować poprawne wyniki, jeśli wszystkie wywołania rekurencyjne generowały poprawne wyniki. 28 © Małgorzata Sterna Matematyka Dyskretna PRZYKŁAD ALGORYTMU REKURENCYJNEGO przypadki początkowe dla n {0,1} Fibonacci (n) begin if n 1 then else end. Fibonacci:=n Fibonacci:=Fibonacci(n-1)+ Fibonacci(n-2); wywołanie rekurencyjne 29 Matematyka Dyskretna © Małgorzata Sterna OGÓLNY SCHEMAT ALGORYTMU REKURENCYJNEGO Rekurencja (I,O) jeśli dana I jest jakimś przypadkiem początkowym, to wynik O staje się tym, czym być powinien w przeciwnym wypadku znajdź pewne dane Ik, bliższe przypadkowi początkowemu niż I, Rekurencja(Ik,Ok) dla każdego Ik, wykorzystaj wszystkie wyniki Ok aby wyznaczyć O. Warunki poprawności algorytmu: jeśli I jest przypadkiem początkowym, to wynik O ma właściwą wartość, jeśli każdy wynik Ok ma właściwą wartość przy wywołaniu Rekurencja(Ik,Ok), to wynik O ma właściwą wartość dla danej I. Mówimy, że dane I można otrzymać ze zbioru danych {I1, I2, ..., Im}, jeśli w algorytmie Rekurencja(I,O) wynik O może być obliczony z wyników O1,O2,...,Om uzyskanych z poszczególnych wywołań Rekurencja(I1,O1), Rekurencja(I2,O2), ..., Rekurencja(Im,Om). 30 © Małgorzata Sterna Matematyka Dyskretna PRZYKŁAD ALGORYTMU REKURENCYJNEGO dane I Fibonacci (n) begin dane I1 dane I2 if n 1 then Fibonacci:=n else Fibonacci:=Fibonacci(n-1)+ Fibonacci(n-2); end. wynik O1 wynik O2 wynik O np. dane I=2 można otrzymać z danych I1=1 i I2=0, ponieważ wynik O=F2 dla I=2 jest obliczony na podstawie wyników O1=F1 dla I1=1 i O2=F0 dla I2=0 31 Matematyka Dyskretna © Małgorzata Sterna POPRAWNOŚĆ ALGORYTMU REKURENCYJNEGO S - zbiór danych, dla których algorytm może wyliczyć wyniki ma postać: P: X jest zbiorem przypadków początkowych, XS R: jeśli dane I można otrzymać z danych I1, I2, ..., Im S, to IS p(I) – zdanie postaci „algorytm generuje poprawny wynik dla danych I”. Prawdziwość zdania p(I) dla każdej IS gwarantuje poprawność algorytmu. Dowód oparty o uogólniona zasadę indukcji dla zbiorów definiowanych rekurencyjnie: Jeśli (1) p(I) jest prawdziwe dla wszystkich IX i (2) p(I) jest prawdziwe dla wszystkich danych I, które można otrzymać z takich danych IkS, dla których p(Ik) są prawdziwe to p(I) jest prawdziwe dla każdego IS. 32 © Małgorzata Sterna Matematyka Dyskretna POPRAWNOŚĆ ALGORYTMU REKURENCYJNEGO Przy konstrukcji algorytmów rekurencyjnych, należy rozważyć: zasadność stosowania rekurencji, możliwość zastosowania efektywnego podejścia iteracyjnego, dopóki g, wykonuj S vs rekurencja() jeśli g jest fałszywe to nic nie rób, w przeciwnym wypadku S rekurencja() poprawność sformułowania warunku początkowego, który musi gwarantować zatrzymanie metody, ograniczenia pamięciowe związane z maksymalnym zagłębieniem rekurencji, … 33