Rekursja 2
wykładowca: dr Magdalena Kacprzak
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) D
1) a(n
D
...
2) - k a(n
D 1)
- k a(n
D k)
a(n
0 1
2 k 1
- 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
m1 i
W
ia(n)
0 1
2 k 2 k 1
k 1 k
k
D x D x ... D x D
x
P(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.
) n C n
C ...
n C (C
) (z
W
i
i n 0
1
p1 p1
p pPrzykład
Rozważmy następujące jednorodne liniowe równanie rekurencyjne
2 a(n) 1) 1
4 a(n 2) 7
a(n 3)
a(n
2, a(2)
1, a(1)
0, a(0)
Przykład
Wtedy wielomian charakterystyczny tego równania ma postać
2 x 1
4 x 7
x
P(x)
3
2
Przykład
Ponieważ
to pierwiastkami są
x
1=-1/2, x
2=-1/2, x
3=2
2) 2 (x
x 1 P(x)
2
Przykład
Zatem
n 3 n
2
1
C 2
2 ) 1
C n
(C
a(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 2 (2C
1
a(1) 2C
) C 2 (C
1
a(0) C
C
3 2
1 2
3 2
1
3 2
Przykład
Ostatecznie
C
1=4/5, C
2=-9/25, C
3=9/25 a z tego rozwiązaniem rozważanego równania jest
n n
25 2 9 2
) 1 25 n 9
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
B a(n)
D 1)
a(n D
...
1) - k a(n
D k)
a(n
k1
1
0
B 1)
a(n D
2) a(n
D ...
k) a(n
D 1)
k
a(n k1 1 0
Redukcja do równań jednorodnych
Odejmując stronami oba równania dostajemy
a(n) D
1) )a(n
D - D ( 2)
)a(n D
- D (
...
1) - k )a(n
D - D
( k)
a(n D
k) a(n
- 1) k
a(n
0 1
0 2
1
1 k 2
k 1
k
Redukcja do równań jednorodnych
Stąd
a(n) D
1) )a(n
D - D ( 2)
)a(n D
- D (
...
1) - k )a(n
D - D
( k)
1)a(n (D
1) k
a(n
0 1
0 2
1
1 k 2
k 1
k
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
0 1
0 2
2 1
1 - k 1 k 2
k k
1 k 1
k
D )x
D - D ( )x
D - D (
...
)x D
- D
( 1)x
(D x
P(x)
Przykład
Rozważmy następujące niejednorodne liniowe równanie rekurencyjne
1 2 a(n)
) 1 1 4 a(n
2) 7 a(n
4 a(2) 13
1, a(1)
1, a(0)
Przykład
Wówczas
Po odjęciu stronami dostajemy
2 a(n) - 1
1) 4 a(n
7 2
) 1 2 a(n
4 1 3) 7
a(n
1 1) 2 a(n
) 1 2 4 a(n
3) 7 a(n
1 2 a(n)
) 1 1 4 a(n
2) 7 a(n
Przykład
Wielomian charakterystyczny tego równania ma postać
2 1 4
x 5 4 x 11
P(x)
3
2 x
Przykład
Ponieważ
to pierwiastkami są x=-1/4, x=1, x=2
2) 1)(x
4 (x x 1
P(x)
Przykład
Zatem
n 3 n
2 n
1
C 1 C 2
4 C 1
a(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) 4C
C 4 C
1
a(1) 2C
C 4 C
1
a(0) C
C C
3 2
1 2
3 2
1
3 2
1
Przykład
Ostatecznie
C
1=4/5, C
2=-4/5, C
3=1
a z tego rozwiązaniem rozważanego równania jest
n n
5 2 4 4
1 5
a(n) 4
Funkcje tworzące
Definicja
Rozważmy ciąg liczbowy {a(n)}. Wówczas
nazywamy zwykłą funkcją tworzącą lub krótko funkcją tworzącą.
0 n
a(n)x
nf(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) a(n) f
(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.
0 n
x
nn!
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.
0 n
n
n!
a(n) x
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,
1 n
n n
x
n
Uwagi
ale szereg
jest zbieżny dla wszystkich x<1/e, ponieważ n
n<n!e
n.
1 n
n n
n!
n x
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)=2
n, n=0,1,....
Wówczas funkcja tworząca ciągu {2
n} dana jest wzorem:
0 n
3 2
n
0 n
n n
2x - 1 ... 1
(2x) (2x)
2x 1
(2x)
x
2
f(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' '
0 n
1 n 0
n
1 n
0 n
n
x - 1
1 x
1 x x
)' (x
1)x n
( f(x)
Przykład 3
Rozważmy ciąg:
Funkcja tworząca tego ciągu jest skończoną sumą i ma postać
k
0 n
n
n
(1 x)
n x f(x) k
0,1,...
n n ,
a(n) k
....
3 , , k
2 , k
1 , k
0
k
Przykład 3
Innymi słowy, dwumian Newtona (1+x)
kjest 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)
kjest 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 x) k!
(1
k n
0 n
k
Przykład 5
Funkcja
jest wykładniczą funkcją tworzącą dla liczby n-wyrazowych wariacji z
powtórzeniami ze zbioru k-elementowego
nx n
0 n
n
e
n!
k x
f(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 1
n 0
n 0
n
x n) 1)
(a(n a(0)x
x a(n)
f(x)
Proste na płaszczyźnie
3. Znajdujemy postać zwartą
)' x x(
a(n)x x
1
nx x
a(n)x 1
nx 1)x
a(n 1
n)x 1)
(a(n a(0)x
f(x)
0 n
n 0
n
n
1 n
1 - n 0
n
1 n
1 n
n 1
n
n 1 n
n 0
Proste na płaszczyźnie
Stąd
20 n
n
x 1 x 1 xf(x)
1
x )' 1
x( 1 xf(x)
1
)' x x(
xf(x) 1
Proste na płaszczyźnie
Zatem
czyli
1 1 x
2x xf(x)
1
f(x)
1 1 x
2x 1
x) - f(x)(1
1 x x
3x) - (1 f(x) 1
Proste na płaszczyźnie
1 n
n 0
n
n
x
2 1 x n
f(x)
0 n
n 0
n
n
x
2 2 x n
x f(x)
0 n
1 n 0
n
n
x
2 2 x n
f(x)
4. Rozwijamy funkcję tworzącą w szereg
Proste na płaszczyźnie
2
1 1 n
a(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) n
1)...(r r(r
n
r
0 n
n
r
x
n x) r
(1
W szczególności
stąd
Proste na płaszczyźnie
2 2 1) n
n! (
2) (n
...
4 1) 3
n ( 3
-
n n
0 n
n 0
n
n n n
0 n
n n
3 3
3 3
2 x 2 x n
x 2 1
2 1) n
( x
x n 1
3 x -
x) (
1 x x
1 x x
1 x 1 x
1
x
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ą
2 n
n n
2 n
n 2
n 1
n 1
n
x 1 x
1) 2a(n
x 1
x 1) 1)
(2a(n a(1)x
x
a(n)
f(x)
Wieża Hanoi
x 1
2xf(x) x
x x
a(n) 2x
x x
1) a(n
2x x
f(x)
1 n
n n
1 n
2 n
n 1
- n 2
n
3. Znajdujemy postać zwartą
Wieża Hanoi
Stąd
2x) -
x)(1 (1
f(x) x
x 1
2x) x -
f(x)(1
x 1
2xf(x) x f(x)
Wieża Hanoi
1 n
n n
1 n
n 1
n
n
x 2 1 x
2x
x) (1
x 2x)
- (1
2x
2x) -
x)(1 (1
f(x) x
4. Rozwijamy funkcję tworzącą w szereg
Wieża Hanoi
5. Wyznaczamy postać jawną ciągu a(n)=2
n-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 2
n
n 2
n 1
n 0
n
x 2)) a(n
1) (a(n
x 1
x 2)) a(n
1) (a(n
a(1)x a(0)
x a(n) f(x)
Podzbiory bez sąsiadów
f(x) x
xf(x) 1
x a(n) x
x a(n) x
1 x
a(n) x
a(n) 1
x a(n) x
a(n) x
1
x 2) a(n
x 1) a(n
x 1
x 2)) a(n
1) (a(n
x 1 f(x)
2
n 0
n 2 n
0 n 2
n 0
n 1 n 0
n
2 n 0
n 1 n 1
n
n 2
n n 2
n
n 2
n
3. Znajdujemy postać zwartą
Podzbiory bez sąsiadów
Stąd
gdzie
x a 1
5 a 1
x a 1
5 a 1
x x
1 f(x) 1
2 2
1 1
2
2 5 a 1
2 i 5
a
1 1
2
Podzbiory bez sąsiadów
0 n
n 1
n 1
n
2 x 5 1
5 1 2
5 1
5 f(x) 1
4. Rozwijamy funkcję tworzącą w szereg
5. Wyznaczamy postać jawną ciągu
1 n 1
n
2 5 1
5 1 2
5 1
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(n
log[b]a-) dla pewnej stałej >0, to T(n)=(n
log[b]a)
jeżeli f(n)=(n
log[b]a) dla pewnej stałej >0, to T(n)=(n
log[b]algn)
jeżeli f(n)=(n
log[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)+n
3+n.
Wówczas a=3, b=3, f(n)=n
3+n.
Zauważmy, że f(n) = (n
1+) dla =2.
Zatem
T(n)=(f(n))=(n
3+n) Przyjmujemy, że c=2/3:
3f(n/3)=n
3/9+n 2/3(n
3+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; 0
a(2)=3 – ciągi 01; 10; 11
a(3)=??
Zadanie 1
a(1)=2 – ciągi 1; 0
a(2)=3 – ciągi 01; 10; 11
a(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 5 x 1
2 oraz 5
x
11
2
1 x
x
P(x)
2
Zadanie 1
Zatem
n 2
n
1
2
5 C 1
2 5 C 1
a(n)
Zadanie 1
Brakujące współczynniki wyznaczamy z układu dwóch równań liniowych
dla a(1)=2, a(2)=3
) 2 ( 2 a
5 C 1
2 5 C 1
) 1 ( 2 a
5 C 1
2 5 C 1
2
2 2
1
1
2 1
1
Zadanie 1
Ostatecznie
a z tego rozwiązaniem rozważanego równania jest
n n
2 5 1
5 2
3 5
2 5 1
5 2
3
a(n) 5
5 2
3 C 5
5 oraz 2
3
C
1 5
2
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; 0
a(2)=8 – ciągi 00; 01; 02; 10; 12;
20; 21; 22
a(3)=??
Zadanie 2
a(1)=3 – ciągi 2; 1; 0
a(2)=8 – ciągi 00; 01; 02; 10; 12;
20; 21; 22 a(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ą
3 1
x oraz
3 1
x
1
2
2 x
2 x
P(x)
2
Zadanie 2
Zatem
2
nn
1
1 3 C 1 3
C
a(n)
Zadanie 2
Brakujące współczynniki wyznaczamy z układu dwóch równań liniowych
dla a(1)=3, a(2)=8
) 2 ( a 3
1 C 3
1 C
) 1 ( a 3
1 C 3
1 C
2 2
2 1
1 2
1 1
Zadanie 2
Ostatecznie
a z tego rozwiązaniem rozważanego równania jest
6
3 2 C 3
6 oraz 3 2
C
13
2
n 1 3
n6
3 2
3 3 6 1
3 2
a(n) 3
Zadanie 3
Znaleźć postać jawną ciągu
(rozwiązanie zagadnienia wieży Hanoi)
a(n)=2a(n-1)+1 oraz a(1)=1, a(2)=3
Zadanie 3
Wyznaczamy
a(n+1)=2a(n)+1
a(n+2)=2a(n+1)+1
i odejmujemy stronami otrzymując a(n+2)-a(n+1)=2a(n+1)-2a(n)+1-1 czyli
a(n+2) =3a(n+1)-2a(n)
Zadanie 3
Wielomian charakterystyczny tego równania ma postać
Pierwiastkami tego wielomianu są Zatem x
1 2 oraz x
2 1
2 x
3 x
P(x)
2
2 n
1 n
2 n
1
2 C 1 C 2 C
C
a(n)
Zadanie 3
Brakujące współczynniki wyznaczamy z układu dwóch równań liniowych
dla a(1)=1, a(2)=3
a(2) C
2 C
a(1) C
2 C
2 2
1
2 1
1