III Rekursja 2
description
Transcript of III Rekursja 2
III Rekursja 2
uczelnia: PJWSTKprzedmiot: Matematyka Dyskretna 2wykładowca: dr Magdalena Kacprzakdata: październik 2010
Materiały pomocnicze do wykładu
Rozwiązywanie równań rekurencyjnych
Jednorodne liniowe równania rekurencyjne
Twierdzenie
Niech k będzie ustaloną liczbą naturalną dodatnią i niech (*) oznacza zależność rekurencyjną między wyrazami ciągu {a(n)}: (*)
gdzie D0, ..., Dk-1 są ustalonymi liczbami zespolonymi oraz niech a(0), a(1), ...,a(k-1) będą warunkami początkowymi.
a(n)D1)a(nD
...2)-ka(nD1)-ka(nDk)a(n
01
2k1-k
Twierdzenie
Każdy ciąg {a(n)} spełniający dla n 0 zależność (*) jest postaci
gdzie m oznacza liczbę różnych pierwiastków wielomianu charakterystycznego
m
1iiWa(n)
012k
2k1k
1kk DxD...xDxDxP(x)
Twierdzenie
Oznaczmy te pierwiastki przez z1, ... zm zaś ich
krotności przez k1, ... km odpowiednio. Wtedy Wi
ma postać:
gdzie p=ki-1, zaś C0, ..., Cp-1, Cp są ustalonymi
liczbami zespolonymi.
)nCnC...nC(C)(zW pp
1p1p10
nii
Przykład
Rozważmy następujące jednorodne liniowe równanie rekurencyjne
a(n)2
11)a(n
4
72)a(n3)a(n
2,a(2)1,a(1)0,a(0)
Przykład
Wtedy wielomian charakterystyczny tego równania ma postać
2
1x
4
7xxP(x) 23
Przykład
Ponieważ
to pierwiastkami są x1=-1/2, x2=-1/2, x3=2
2)(x2
1xP(x)
2
Przykład
Zatem
n3
n
21 2C2
1)Cn(Ca(n)
Przykład
Brakujące współczynniki wyznaczamy z układu trzech równań liniowych
dla a(0)=0, a(1)=1, a(2)=2
a(2)4C)C(2C2
1
a(1)2C)C(C2
1a(0)CC
321
2
321
32
Przykład
OstatecznieC1=4/5, C2=-9/25, C3=9/25
a z tego rozwiązaniem rozważanego równania jest
nn
225
9
2
1)
25
9n
5
4(a(n)
Niejednorodne liniowe równania rekurencyjne
Redukcja do równań jednorodnych
Rozważmy następującą zależność rekurencyjną
Zauważmy, że
Ba(n)D1)a(nD...1)-ka(nDk)a(n 011k
B1)a(nD2)a(nD...k)a(nD1)ka(n 011k
Redukcja do równań jednorodnych
Odejmując stronami oba równania dostajemy
a(n)D1))a(nD-D(2))a(nD-D(
...1)-k)a(nD-D(k)a(nD
k)a(n-1)ka(n
01021
1k2k1k
Redukcja do równań jednorodnych
Stąd
a(n)D1))a(nD-D(2))a(nD-D(
...1)-k)a(nD-D(k)1)a(n(D
1)ka(n
01021
1k2k1k
Redukcja do równań jednorodnych
Zatem niejednorodne liniowe równanie rekurencyjne sprowadziliśmy do jednorodnego równania rekurencyjnego, którego rozwiązanie opisuje wielomian charakterystyczny
0102
21
1-k1k2k
k1k
1k
D)xD-D()xD-D(
...)xD-D(1)x(DxP(x)
Przykład
Rozważmy następujące niejednorodne liniowe równanie rekurencyjne
1a(n)2
1)1a(n
4
72)a(n
4
13a(2)1,a(1)1,a(0)
Przykład
Wówczas
Po odjęciu stronami dostajemy
a(n)2
1-1)a(n
4
7
2
1)2a(n1
4
73)a(n
11)a(n2
1)2a(n
4
73)a(n
1a(n)2
1)1a(n
4
72)a(n
Przykład
Wielomian charakterystyczny tego równania ma postać
2
1
4
5x
4
11xP(x) 23 x
Przykład
Ponieważ
to pierwiastkami są x=-1/4, x=1, x=2
2)1)(x(x4
1xP(x)
Przykład
Zatem
n3
n2
n
1 2C1C4
1Ca(n)
Przykład
Brakujące współczynniki wyznaczamy z układu trzech równań liniowych
dla a(0)=1, a(1)=1, a(2)=13/4
a(2)4CCC4
1
a(1)2CCC4
1a(0)CCC
321
2
321
321
Przykład
OstatecznieC1=4/5, C2=-4/5, C3=1
a z tego rozwiązaniem rozważanego równania jest
nn
25
4
4
1
5
4a(n)
Funkcje tworzące
Definicja
Rozważmy ciąg liczbowy {a(n)}. Wówczas
nazywamy zwykłą funkcją tworzącą lub krótko funkcją tworzącą.
0n
na(n)xf(x)
Uwagi
Funkcje tworzące mają zatem postać szeregów potęgowych.
Dla każdego takiego szeregu istnieje liczba rzeczywista R0, zwana
promieniem zbieżności, taka że jeśli |x|<R, to jest on absolutnie zbieżny, a ponadto można go różniczkować i całkować wyraz po wyrazie dowolną liczbę razy.
Wzór Taylora
Zachodzi też wtedy wzór Taylora
0,1,....n,n!
(0)fa(n)
(n)
Uwagi
Niestety, gdy liczby a(n) są zbyt duże, wówczas R=0 i funkcje tworzące stają się bezużyteczne. Tak jest na przykład, gdy
a(n)=n!. Nietrudno zauważyć, że szereg
jest rozbieżny dla każdego x>0.
0n
nxn!
Wykładnicza funkcja tworząca
Aby ominąć ten problem, wprowadza się wykładniczą funkcję tworzącą
której promień zbieżności jest zwykle dodatni.
0n
n
n!
xa(n)f(x)
Uwagi
Na przykład, jeśli a(n) jest liczbą wszystkich
funkcji ze zbioru n-elementowego w siebie, czyli a(n)=nn, to szereg
jest rozbieżny dla każdego x>0,
1n
nnxn
Uwagi
ale szereg
jest zbieżny dla wszystkich x<1/e, ponieważ nn<n!en.
1n
nn
n!
xn
Uwagi
Wykładnicze funkcje tworzące stosuje się na ogół w przypadkach, o których wiemy lub spodziewamy się, że a(n) rośnie szybciej niż wykładniczo.
Od tej pory będziemy zakładać, że |x|<R.
Przykład 1
Rozważmy ciąg: 1,2,4,8,16,…
a(n)=2n, n=0,1,....
Wówczas funkcja tworząca ciągu {2n} dana jest wzorem:
0n
32n
0n
nn
2x-1
1...(2x)(2x)2x1(2x)
x2f(x)
Przykład 2
Rozważmy ciąg: 1,2,3,4,5,… a(n)=n+1, n=0,1,....
Wówczas funkcja tworząca ciągu {n+1} dana jest wzorem:
2
''
0n
1n
0n
1n
0n
n
x-1
1
x1
xx)'(x
1)xn(f(x)
Przykład 3
Rozważmy ciąg:
Funkcja tworząca tego ciągu jest skończoną sumą i ma postać
k
0n
nn x)(1xn
kf(x)
0,1,.....n,n
ka(n)
....,3
k,
2
k,
1
k,
0
k
Przykład 3
Innymi słowy, dwumian Newtona (1+x)k
jest zwykłą funkcją tworzącą ciągu
określającego liczbę n-wyrazowych kombinacji zbioru k-elementowego.
n
k
Przykład 4
Z drugiej strony
Tak więc (1+x)k jest jednocześnie wykładniczą funkcją tworzącą ciągu określającego liczbę n-wyrazowych wariacji bez powtórzeń ze zbioru k-elementowego.
n!
x
n)!(k
k!x)(1
nk
0n
k
Przykład 5
Funkcja
jest wykładniczą funkcją tworzącą dla liczby n-wyrazowych wariacji z powtórzeniami ze zbioru k-elementowego
nxn
0n
n en!
xkf(x)
Zastosowania
Rozwiązywanie równań rekurencyjnych
1. Postać rekurencyjna ciągu
2. Funkcja tworząca ciągu
3. Postać zwarta funkcji tworzącej
4. Rozwinięcie funkcji tworzącej w szereg Taylora
5. Postać jawna ciągu (współczynniki rozwinięcia funkcji tworzącej w szereg to kolejne wyrazy ciągu)
Proste na płaszczyźnie
Proste na płaszczyźnie
Na ile spójnych obszarów dzieli płaszczyznę n prostych, z których żadne dwie nie są równoległe i żadne trzy nie przecinają się w jednym punkcie?
Proste na płaszczyźnie
1. Układamy zależność rekurencyjną
Oznaczmy szukaną liczbę przez a(n). Mamy a(0)=1 i a(1)=2. Prowadząc n-tą prostą przetniemy wszystkie n-1 poprzednie, a to oznacza, że przetniemy na dwie części n obszarów spójnych, zwiększając tym samym liczbę obszarów o n.
Proste na płaszczyźnie
Zatem a(n)=a(n-1)+n dla n1
2. Określamy funkcję tworzącą
Niech f(x) będzie funkcją tworzącą tego ciągu. Wtedy
n
1n
0n
0n
xn)1)(a(na(0)xxa(n)f(x)
Proste na płaszczyźnie
3. Znajdujemy postać zwartą
)'xx(a(n)xx1
nxxa(n)x1
nx1)xa(n1
n)x1)(a(na(0)xf(x)
0n
n
0n
n
1n
1-n
0n
1n
1n
n
1n
n
1n
n0
Proste na płaszczyźnie
Stąd
2
0n
n
x1
1xxf(x)1
)'x1
1x(xf(x)1
)'xx(xf(x)1
Proste na płaszczyźnie
Zatem
czyli
2x1
1xxf(x)1f(x)
2x1
1x1x)-f(x)(1
3x1
x
x)-(1
1f(x)
Proste na płaszczyźnie
1n
n
0n
n x2
1nxf(x)
0n
n
0n
n x2
2nxxf(x)
0n
1n
0n
n x2
2nxf(x)
4. Rozwijamy funkcję tworzącą w szereg
Proste na płaszczyźnie
2
1n1a(n)
Ostatecznie
5. Wyznaczamy postać jawną ciągu
Skorzystaliśmy tutaj z rozwinięcia Taylora
gdzie dla dowolnej liczby rzeczywistej r
Proste na płaszczyźnie
n!
1)n1)...(rr(r
n
r
0n
nr xn
rx)(1
W szczególności
Proste na płaszczyźnie
2
2n1)(
n!
2)(n...431)(
n
3- nn
Wieża Hanoi
Wieża Hanoi
Niech a(n) będzie minimalną liczbą ruchów niezbędną do przeniesienia wieży składającej się z n krążków.
1. Układamy zależność rekurencyjną
a(n)=2a(n-1)+1 oraz a(1)=1
Wieża Hanoi
2. Określamy funkcję tworzącą
2n
nn
2n
n
2n
1
n
1n
x1x1)2a(nx1
x1)1)(2a(na(1)x
xa(n)f(x)
Wieża Hanoi
x1
x2xf(x)
xxa(n)2x
xx1)a(n2xxf(x)
1n
nn
1n
2n
n1-n
2n
3. Znajdujemy postać zwartą
Wieża Hanoi
Stąd
2x)-x)(1(1
xf(x)
x1
x2x)-f(x)(1
x1
x2xf(x)f(x)
Wieża Hanoi
1n
nn
1n
n
1n
n x12x2x
x)(1
x
2x)-(1
2x
2x)-x)(1(1
xf(x)
4. Rozwijamy funkcję tworzącą w szereg
Wieża Hanoi
5. Wyznaczamy postać jawną ciągu
a(n)=2n-1
Podzbiory bez sąsiadów
Podzbiory bez sąsiadów
Ile podzbiorów zbioru [n]={1,2,...,n},
wliczając zbiór pusty, nie zawiera sąsiednich liczb?
Podzbiory bez sąsiadów
1. Układamy zależność rekurencyjną
Oznaczmy szukaną liczbę przez a(n) i podzielmy wszystkie podzbiory tego typu na dwie klasy: te do których nie należy liczba 1, i te do których 1 należy. Tych pierwszych jest tyle, ile podzbiorów bez sąsiadów zbioru {2,...,n}, a więc a(n-1). Tych drugich jest tyle, ile podzbiorów bez sąsiadów zbioru {3,...,n}, a więc a(n-2).
Podzbiory bez sąsiadów
Zatem a(n)=a(n-1)+a(n-2)
przy warunkach początkowych
a(0)=1 i a(1)=2
Podzbiory bez sąsiadów
2. Określamy funkcję tworzącąDla a(0)=a(1)=1 funkcja tworząca ciągu Fibonacciego przyjmuje postać
n
2n
n
2n
1
n
0n
x2))a(n1)(a(nx1
x2))a(n1)(a(na(1)xa(0)
xa(n)f(x)
Podzbiory bez sąsiadów
f(x)xxf(x)1
xa(n)xxa(n)x1xa(n)xa(n)1
xa(n)xa(n)x1
x2)a(nx1)a(nx1
x2))a(n1)(a(nx1f(x)
2
n
0n
2n
0n
2n
0n
1n
0n
2n
0n
1n
1n
n
2n
n
2n
n
2n
3. Znajdujemy postać zwartą
Podzbiory bez sąsiadów
Stąd
gdzie
xa15
1a
xa15
1a
xx1
1f(x)
2
2
1
1
2
2
51ai
2
51a 21
Podzbiory bez sąsiadów
0n
n
1n1n
x2
51
5
1
2
51
5
1f(x)
4. Rozwijamy funkcję tworzącą w szereg
5. Wyznaczamy postać jawną ciągu
1n1n
2
51
5
1
2
51
5
1)n(a
Twierdzenie o rekursji uniwersalnej
Twierdzenie o rekursji uniwersalnej
Niech a1, b>1 będą stałymi, f:NR+{0} pewną
funkcją i niech T(n) będzie równaniem
rekurencyjnym postaci
T(n)=aT(n/b)+f(n),
gdzie n/b tratujemy jako n/b albo n/b wtedy
Twierdzenie o rekursji uniwersalnej
jeżeli f(n)=O(nlog[b]a-) dla pewnej stałej >0, to
T(n)=(nlog[b]a) jeżeli f(n)=(nlog[b]a) dla pewnej stałej >0, to
T(n)=(nlog[b]a lgn) jeżeli f(n)=(nlog[b]a+) dla pewnej stałej >0, to
T(n)=(f(n))
pod warunkiem, że af(n/b)cf(n) dla pewnej stałej c<1 i wszystkich dostatecznie dużych n.
Przykład
Rozważmy równanie
T(n)=3T(n/3)+n3+n.
Wówczas a=3, b=3, f(n)=n3+n.
Zauważmy, że f(n) = (n1+) dla =2.
Zatem
T(n)=(f(n))=(n3+n)
Przyjmujemy, że c=2/3:
3f(n/3)=n3/9+n 2/3(n3+n)=2/3f(n).
Zadania
Zadanie 1
Wyznaczyć liczbę a(n) ciągów binarnych długości n, w których żadne dwa zera nie występują obok siebie.
Zadanie 1
a(1)=2 – ciągi 1; 0a(2)=3 – ciągi 01; 10; 11a(3)=??
Zadanie 1
a(1)=2 – ciągi 1; 0a(2)=3 – ciągi 01; 10; 11a(3)=5 – ciągi 011; 101; 111; 010; 110
a(n)=a(n-1)+a(n-2) dla n>2
Zadanie 1
Wielomian charakterystyczny tego równania ma postać
Pierwiastkami tego wielomianu są
2
51xoraz
2
51x 21
1xxP(x) 2
Zadanie 1
Zatem
n
2
n
1 2
51C
2
51Ca(n)
Zadanie 1
Brakujące współczynniki wyznaczamy z układu dwóch równań liniowych
dla a(1)=2, a(2)=3
)2(a2
51C
2
51C
)1(a2
51C
2
51C
2
2
2
1
1
2
1
1
Zadanie 1
Ostatecznie
a z tego rozwiązaniem rozważanego równania jest
nn
2
51
52
35
2
51
52
35a(n)
52
35C oraz
52
35C 21
Zadanie 2
Wyznaczyć liczbę a(n) ciągów ternarnych (złożonych z cyfr 0,1,2) długości n, w których żadne dwie jedynki nie występują obok siebie.
Zadanie 2
a(1)=3 – ciągi 2; 1; 0a(2)=8 – ciągi 00; 01; 02; 10; 12;
20; 21; 22a(3)=??
Zadanie 2
a(1)=3 – ciągi 2; 1; 0a(2)=8 – ciągi 00; 01; 02; 10; 12;
20; 21; 22a(3)=22 – ciągi 000; 010; 020; 100; 120; 200; 210; 220;002; 012; 022; 102; 122; 202; 212; 222;201; 101; 001; 221; 121; 021
Zadanie 2
a(n)=2a(n-1)+2a(n-2) dla n>2
Zadanie 2
Wielomian charakterystyczny tego równania ma postać
Pierwiastkami tego wielomianu są
31xoraz31x 21
2x2xP(x) 2
Zadanie 2
Zatem
n2
n
1 31C31Ca(n)
Zadanie 2
Brakujące współczynniki wyznaczamy z układu dwóch równań liniowych
dla a(1)=3, a(2)=8
)2(a31C31C
)1(a31C31C2
2
2
1
1
2
1
1
Zadanie 2
Ostatecznie
a z tego rozwiązaniem rozważanego równania jest
6
323C oraz
6
323C 21
nn31
6
32331
6
323a(n)