Rekursja Materiały pomocicze do wykładu wykładowca: dr Magdalea Kacprzak
Rozwiązywaie rówań rekurecyjych
Jedorode liiowe rówaia rekurecyje
Twierdzeie Niech k będzie ustaloą liczbą aturalą dodatią i iech (*) ozacza zależość rekurecyją między wyrazami ciągu {a()}: (*) a( k) D k- a( k -) D a( D a( ) D a() k 0 k - )... gdzie D 0,..., D k- są ustaloymi liczbami zespoloymi oraz iech a(0), a(),...,a(k-) będą warukami początkowymi.
Twierdzeie Każdy ciąg {a()} spełiający dla 0 zależość (*) jest postaci a() i gdzie m ozacza liczbę różych pierwiastków wielomiau charakterystyczego m W i P() k D k k D k k... D D 0
Twierdzeie Ozaczmy te pierwiastki przez z,... z m zaś ich krotości przez k,... k m odpowiedio. Wtedy W i ma postać: W i (z i ) (C 0 C... C p p C p p ) gdzie p=k i -, zaś C 0,..., C p-, C p są ustaloymi liczbami zespoloymi.
Przykład Rozważmy astępujące jedorode liiowe rówaie rekurecyje a(0) 0, a(), a(), a( 3) a( ) 7 4 a( ) a()
Przykład Wtedy wielomia charakterystyczy tego rówaia ma postać P() 3 7 4
Przykład Poieważ P() ( ) to pierwiastkami są =-/, =-/, 3 =
Przykład Zatem a() (C C ) C 3
Przykład Brakujące współczyiki wyzaczamy z układu trzech rówań liiowych C (C (C C C C ) C ) 4C dla a(0)=0, a()=, a()= 3 a(0) 3 3 a() a()
Przykład Ostateczie C =4/5, C =-9/5, C 3 =9/5 a z tego rozwiązaiem rozważaego rówaia jest a() 4 ( 5 9 ) 5 9 5
Niejedorode liiowe rówaia rekurecyje
Redukcja do rówań jedorodych Rozważmy astępującą zależość rekurecyją a( k) Dk a( k -)... Da( ) D0a() Zauważmy, że B a( k ) Dk a( k)... Da( ) D0a( ) B
Redukcja do rówań jedorodych Odejmując stroami oba rówaia dostajemy D (D k a( k ) - a( k) a( k) (D - D )a( k -)... - D )a( ) k (D 0 k - D )a( ) D a() 0
Redukcja do rówań jedorodych Stąd (D k (D )a( k) (D - D )a( ) a( k ) k (D 0 - D k )a( k -)... - D )a( ) D a() 0
Redukcja do rówań jedorodych Zatem iejedorode liiowe rówaie rekurecyje sprowadziliśmy do jedorodego rówaia rekurecyjego, którego rozwiązaie opisuje wielomia charakterystyczy P() k (D k ) k (D k - D k ) k-... (D - D ) (D 0 - D ) D 0
Przykład Rozważmy astępujące iejedorode liiowe rówaie rekurecyje a(0), a( ) a() 7 4, a( ) a() 3 4 a()
Przykład Wówczas Po odjęciu stroami dostajemy a() ) - a( 4 7 ) a( 4 7 3) a( ) a( ) a( 4 7 3) a( a() ) a( 4 7 ) a(
Przykład Wielomia charakterystyczy tego rówaia ma postać P() 3 4 5 4
Przykład Poieważ P() ( 4 )( ) to pierwiastkami są =-/4, =, =
Przykład Zatem a() C C C 3 4
Przykład Brakujące współczyiki wyzaczamy z układu trzech rówań liiowych dla a(0)=, a()=, a()=3/4 a() 4C C C 4 a() C C C 4 a(0) C C C 3 3 3
Przykład Ostateczie C =4/5, C =-4/5, C 3 = a z tego rozwiązaiem rozważaego rówaia jest a() 4 5 4 4 5
Fukcje tworzące
Defiicja Rozważmy ciąg liczbowy {a()}. Wówczas f() 0 a() azywamy zwykłą fukcją tworzącą lub krótko fukcją tworzącą.
Uwagi Fukcje tworzące mają zatem postać szeregów potęgowych. Dla każdego takiego szeregu istieje liczba rzeczywista R0, zwaa promieiem zbieżości, taka że jeśli <R, to jest o absolutie zbieży, a poadto moża go różiczkować i całkować wyraz po wyrazie dowolą liczbę razy.
Wzór Taylora Zachodzi też wtedy wzór Taylora a() f ()! (0), 0,,...
Uwagi Niestety, gdy liczby a() są zbyt duże, wówczas R=0 i fukcje tworzące stają się bezużytecze. Tak jest a przykład, gdy a()=!. Nietrudo zauważyć, że szereg 0! jest rozbieży dla każdego >0.
Wykładicza fukcja tworząca Aby omiąć te problem, wprowadza się wykładiczą fukcję tworzącą f() 0 a()! której promień zbieżości jest zwykle dodati.
Uwagi Na przykład, jeśli a() jest liczbą wszystkich fukcji ze zbioru -elemetowego w siebie, czyli a()=, to szereg jest rozbieży dla każdego >0,
Uwagi ale szereg! jest zbieży dla wszystkich </e, poieważ <!e.
Uwagi Wykładicze fukcje tworzące stosuje się a ogół w przypadkach, o których wiemy lub spodziewamy się, że a() rośie szybciej iż wykładiczo. Od tej pory będziemy zakładać, że <R.
Przykład Rozważmy ciąg:,,4,8,6, a()=, =0,,... Wówczas fukcja tworząca ciągu { } daa jest wzorem: 0 () f() 0 () () 3... -
Przykład Rozważmy ciąg:,,3,4,5, a()=+, =0,,... Wówczas fukcja tworząca ciągu {+} daa jest wzorem: ' ' 0 0 0 - )' ( ) ( f()
Przykład 3 Rozważmy ciąg: Fukcja tworząca tego ciągu jest skończoą sumą i ma postać k 0 ) ( k f() 0,,..., k a()..., 3 k, k, k, 0 k
Przykład 3 Iymi słowy, dwumia Newtoa (+) k jest zwykłą fukcją tworzącą ciągu k określającego liczbę -wyrazowych kombiacji zbioru k-elemetowego.
Przykład 4 Z drugiej stroy ( ) k k 0 k! (k )!! Tak więc (+) k jest jedocześie wykładiczą fukcją tworzącą ciągu określającego liczbę -wyrazowych wariacji bez powtórzeń ze zbioru k-elemetowego.
Przykład 5 Fukcja f() 0 k! e jest wykładiczą fukcją tworzącą dla liczby -wyrazowych wariacji z powtórzeiami ze zbioru k-elemetowego
Zastosowaia
Rozwiązywaie rówań rekurecyjych. Postać rekurecyja ciągu. Fukcja tworząca ciągu 3. Postać zwarta fukcji tworzącej 4. Rozwiięcie fukcji tworzącej w szereg Taylora 5. Postać jawa ciągu (współczyiki rozwiięcia fukcji tworzącej w szereg to koleje wyrazy ciągu)
Proste a płaszczyźie
Proste a płaszczyźie Na ile spójych obszarów dzieli płaszczyzę prostych, z których żade dwie ie są rówoległe i żade trzy ie przeciają się w jedym pukcie?
Proste a płaszczyźie. Układamy zależość rekurecyją Ozaczmy szukaą liczbę przez a(). Mamy a(0)= i a()=. Prowadząc -tą prostą przetiemy wszystkie - poprzedie, a to ozacza, że przetiemy a dwie części obszarów spójych, zwiększając tym samym liczbę obszarów o.
Proste a płaszczyźie Zatem a()=a(-)+ dla. Określamy fukcję tworzącą Niech f() będzie fukcją tworzącą tego ciągu. Wtedy f() 0 a() a(0) 0 (a( ) )
Proste a płaszczyźie 3. Zajdujemy postać zwartą )' ( a() a() ) a( ) ) (a( a(0) f() 0 0-0 0
Proste a płaszczyźie Stąd f() f() f() ( 0 ( )' )'
Proste a płaszczyźie Zatem czyli f() f() f()(- ) f() (- ) 3
Proste a płaszczyźie 0 f() 0 0 f() 0 0 f() 4. Rozwijamy fukcję tworzącą w szereg
Proste a płaszczyźie 5. Wyzaczamy postać jawą ciągu Ostateczie a()
Proste a płaszczyźie Skorzystaliśmy tutaj z rozwiięcia Taylora ( ) r 0 r gdzie dla dowolej liczby rzeczywistej r r r(r )...(r! )
W szczególości stąd Proste a płaszczyźie ) (! ) (... 4 3 ) ( 3-0 0 0 3 3 3 3 ) ( -3 ) (
Wieża Haoi
Wieża Haoi Niech a() będzie miimalą liczbą ruchów iezbędą do przeiesieia wieży składającej się z krążków.. Układamy zależość rekurecyją a()=a(-)+ oraz a()=
Wieża Haoi. Określamy fukcję tworzącą ) a( ) ) (a( a() a() f()
Wieża Haoi f() a() ) a( f() - 3. Zajdujemy postać zwartą
Wieża Haoi Stąd f() f() f()(- ) f() ( )( - )
Wieża Haoi 4. Rozwijamy fukcję tworzącą w szereg f() (- ) ( )( - ) ( )
Wieża Haoi 5. Wyzaczamy postać jawą ciągu a()= -
Podzbiory bez sąsiadów
Podzbiory bez sąsiadów Ile podzbiorów zbioru []={,,...,}, wliczając zbiór pusty, ie zawiera sąsiedich liczb?
Podzbiory bez sąsiadów. Układamy zależość rekurecyją Ozaczmy szukaą liczbę przez a() i podzielmy wszystkie podzbiory tego typu a dwie klasy: te do których ie ależy liczba, i te do których ależy. Tych pierwszych jest tyle, ile podzbiorów bez sąsiadów zbioru {,...,}, a więc a(-). Tych drugich jest tyle, ile podzbiorów bez sąsiadów zbioru {3,...,}, a więc a(-).
Podzbiory bez sąsiadów Zatem a()=a(-)+a(-) przy warukach początkowych a(0)= i a()=
Podzbiory bez sąsiadów. Określamy fukcję tworzącą Dla a(0)=a()= fukcja tworząca ciągu Fiboacciego przyjmuje postać a(0) a() f() 0 a() (a( ) a( )) (a( ) a( ))
Podzbiory bez sąsiadów f() f() a() a() a() a() a() a() ) a( ) a( )) a( ) (a( f() 0 0 0 0 0 3. Zajdujemy postać zwartą
Podzbiory bez sąsiadów Stąd gdzie a 5 a a 5 a f() 5 a i 5 a
Podzbiory bez sąsiadów 0 5 5 5 5 f() 4. Rozwijamy fukcję tworzącą w szereg 5. Wyzaczamy postać jawą ciągu 5 5 5 5 a()
Twierdzeie o rekursji uiwersalej
Twierdzeie o rekursji uiwersalej Niech a, b> będą stałymi, f:nr + {0} pewą fukcją i iech T() będzie rówaiem rekurecyjym postaci T()=aT(/b)+f(), gdzie /b tratujemy jako /b albo /b wtedy
Twierdzeie o rekursji uiwersalej jeżeli f()=o( log[b]a- ) dla pewej stałej >0, to T()=( log[b]a ) jeżeli f()=( log[b]a ) dla pewej stałej >0, to T()=( log[b]a lg) jeżeli f()=( log[b]a+ ) dla pewej stałej >0, to T()=(f()) pod warukiem, że af(/b)cf() dla pewej stałej c< i wszystkich dostateczie dużych.
Przykład Rozważmy rówaie T()=3T(/3)+ 3 +. Wówczas a=3, b=3, f()= 3 +. Zauważmy, że f() = ( + ) dla =. Zatem T()=(f())=( 3 +) Przyjmujemy, że c=/3: 3f(/3)= 3 /9+ /3( 3 +)=/3f().
Zadaia
Zadaie Wyzaczyć liczbę a() ciągów biarych długości, w których żade dwa zera ie występują obok siebie.
Zadaie a()= ciągi ; 0 a()=3 ciągi 0; 0; a(3)=??
Zadaie a()= ciągi ; 0 a()=3 ciągi 0; 0; a(3)=5 ciągi 0; 0; ; 00; 0 a()=a(-)+a(-) dla >
Zadaie Wielomia charakterystyczy tego rówaia ma postać P() Pierwiastkami tego wielomiau są 5 oraz 5
Zadaie Zatem a() C 5 C 5
Zadaie Brakujące współczyiki wyzaczamy z układu dwóch rówań liiowych dla a()=, a()=3 a() 5 C 5 C a() 5 C 5 C
Zadaie Ostateczie a z tego rozwiązaiem rozważaego rówaia jest 5 5 3 5 5 5 3 5 a() 5 3 5 C oraz 5 3 5 C
Zadaie Wyzaczyć liczbę a() ciągów terarych (złożoych z cyfr 0,,) długości, w których żade dwie jedyki ie występują obok siebie.
Zadaie a()=3 ciągi ; ; 0 a()=8 ciągi 00; 0; 0; 0; ; 0; ; a(3)=??
Zadaie a()=3 ciągi ; ; 0 a()=8 ciągi 00; 0; 0; 0; ; 0; ; a(3)= ciągi 000; 00; 00; 00; 0; 00; 0; 0; 00; 0; 0; 0; ; 0; ; ; 0; 0; 00; ; ; 0
Zadaie a()=a(-)+a(-) dla >
Zadaie Wielomia charakterystyczy tego rówaia ma postać P() Pierwiastkami tego wielomiau są 3 oraz 3
Zadaie Zatem a() C 3 C 3
Zadaie Brakujące współczyiki wyzaczamy z układu dwóch rówań liiowych C C 3 C 3 3 C 3 a() a() dla a()=3, a()=8
Zadaie Ostateczie a z tego rozwiązaiem rozważaego rówaia jest 6 3 3 C oraz 6 3 3 C 3 6 3 3 3 6 3 3 a()
Zadaie 3 Zaleźć postać jawą ciągu (rozwiązaie zagadieia wieży Haoi) a()=a(-)+ oraz a()=, a()=3
Zadaie 3 Wyzaczamy a(+)=a()+ a(+)=a(+)+ i odejmujemy stroami otrzymując a(+)-a(+)=a(+)-a()+- czyli a(+) =3a(+)-a()
Zadaie 3 Wielomia charakterystyczy tego rówaia ma postać P() 3 Pierwiastkami tego wielomiau są Zatem a() oraz C C C C
Zadaie 3 Brakujące współczyiki wyzaczamy z układu dwóch rówań liiowych C C C C a() a() dla a()=, a()=3
Zadaie 3 Ostateczie C oraz C a z tego rozwiązaiem rozważaego rówaia jest a()