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 nN
warunek początkowy (P): x0=a
warunek rekurencyjny (R): xn=2xn-1+b dla nZ+
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 
 (x36   x36  )  (x14   x14  )  x18  x7  x7  x2  x18  2x7  x2 
 2 
 5 
 2 
 5 
 2 
 5 
 2 
 5 
 (x18   x18  )  2(x 7   x 7  )  (x2   x 2  ) 
2 
 5 
 x9  x3  2x3  2x1  x1  x0  x9  3x3  3x1  x0 
 (x 9   x 9  )  3(x3   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 
 x2   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):
XS, 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 sS.
przykład: zbiór nieparzystych liczb całkowitych dodatnich
S = {1, 3, 5, 7, 9, …}
S = {2n+1: nN}
warunek początkowy:
warunek rekurencyjny:
1 S
  (a  2)  S
aS
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 sS związane jest zdanie p(s).
Jeśli
(1) dla każdego sX zdanie p(s) jest prawdziwe
i
(2) zdanie p(s) jest prawdziwe dla każdego elementu s,
utworzonego z takich elementów tS,
dla których p(t) jest prawdziwe
to
zdanie p(s) jest prawdziwe dla każdego sS.
[  p(s)  [
sX

sS
sR( t ):tS
p(t)  p(s)]]   p(s)
sS
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)  [
sX

sS
sR( t ):tS
p(t)  p(s)]]   p(s)
Dla zbioru liczb naturalnych, N,
zdefiniowanego rekurencyjnie jako:
sS
P : 0 N
R :  (n  1)  N
nN
uogólniona zasada indukcji matematycznej brzmi następująco:
jeśli
(1) p(0) jest prawdziwe
i
(2) dla dowolnego nN,
p(n+1) jest prawdziwe, jeśli p(n) jest prawdziwe,
to
p(n) jest prawdziwe dla wszystkich nN
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 (nN),
c - pewna stała,
f(n) - pewna funkcja określona na zbiorze liczb naturalnych.
Gdy f(n)=0 dla wszystkich nN,
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, n0
definiuje ciąg 5, 15, 45, 135, ... .
Liniowa niejednorodna zależność rekurencyjna 1-szego rzędu
postaci:
an = an-1+(n-1) a1=0, n2
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 n0, stałych d i a0
postaci an = a0dn, dla n0.
Przykład
Dla liniowej jednorodnej zależności rekurencyjnej 1-szego rzędu
an+1 = 3an, gdzie a0=5, n0
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 (nN), n2,
- pewne stałe rzeczywiste (cn, cn-1, cn-2R), cn 0, cn-20
- pewna funkcja określona na zbiorze liczb naturalnych.
Gdy f(n)=0 dla wszystkich nN, 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 n2, cn 0, cn-20
ma postać
an=crn, gdzie c0, r0.
Po podstawieniu do zależności rekurencyjnej otrzymujemy równanie
cncrn + cn-1crn-1 + cn-2crn-2 = 0,
które upraszcza się (c,r0) 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 n0, 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 (nN),
k
- liczba całkowita dodatnia (kZ+), nk,
cn, cn-1, ..., cn-k - pewne stałe rzeczywiste (cn,cn-1, ..., cn-kR), cn 0, cn-k0
f(n)
- pewna funkcja określona na zbiorze liczb naturalnych.
Gdy f(n)=0 dla wszystkich nN, 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 (c0, r0)
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 (2mk):
(ĉ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, n0
zależność rekurencyjna:
Tn=2Tn-1+1, T0=0, n>0
wzór jawny:
Tn=2n-1, n0
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, n0)
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 nN
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, n0
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, XS
R: jeśli dane I można otrzymać z danych I1, I2, ..., Im S, to IS
p(I) – zdanie postaci „algorytm generuje poprawny wynik dla danych I”.
Prawdziwość zdania p(I) dla każdej IS 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 IX
i
(2) p(I) jest prawdziwe dla wszystkich danych I,
które można otrzymać z takich danych IkS,
dla których p(Ik) są prawdziwe
to
p(I) jest prawdziwe dla każdego IS.
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