Algorytmy rekurencyjne w połączeniu ze strukturami grafowymi doskonale nadają się do reprezentacji wielu problemów, z którymi moŜemy spotkać się na co dzień. Analiza efektywności i poprawności rekurencji wraz umiejętnością prawidłowego jej wykorzystania jest elementem bardzo istotnym w dzisiejszej sztuce programowania. Rekurencje liniowe RozwaŜmy następujące równanie rekurencyjne f n + k = G ( f n, f n −1,..., f n + k −1) (1) gdzie G jest daną funkcją fn, fn+1,…, fn+k-1, przy czym fn jest funkcją niewiadomą, określoną na zbiorze liczb naturalnych. Liczbę k nazywamy rzędem równania rekurencyjnego. W przypadku gdy G jest funkcją liniową swych argumentów, tj. f n + k = a1 f n + k −1 + a 2 f n + l − 2 + ... + a k f n + bn (2) równanie jest liniowe, przy czym, gdy współczynniki rzeczywiste ai, bi (i=1, 2,…, k) nie zaleŜą od n, to równanie (2) jest równaniem rekurencyjnym liniowym o stałych współczynnikach, w p.p. równaniem rekurencyjnym liniowym o współczynnikach zmiennych. Ponadto w zaleŜności od tego czy w równaniu (2) bn = 0 lub bn ≠ 0 równanie rekurencyjne (2) jest jednorodne lub niejednorodne. Dla jednoznacznego wyznaczenia funkcji fn, określonej przez równanie rekurencyjne, potrzebne są jej wartości początkowe, przy czym tyle wartości początkowych, ile wynosi rząd równania rekurencyjnego. Równanie rekurencyjne (1) jest rozwiązane wtedy, gdy dany jest wzór postaci: f n = ϕ ( n, f1, f 2,..., f k ) (3) gdzie f1, f 2,..., f k oznaczają warunki początkowe równania (1). ZauwaŜmy, Ŝe rozwiązanie równania w postaci (3) pozwala obliczyć fn dla dowolnego n, bez konieczności wyznaczania wszystkich fi dla i < n. Równanie rekurencyjne ma nieskończenie wiele rozwiązań. MoŜemy je zapisać w postaci ogólnej, obejmującej wszystkie rozwiązania szczególne danego równania (w zaleŜności od warunków początkowych f1, f 2,..., f k ). Wówczas takie rozwiązanie ogólne równania rekurencyjnego ma tyle stałych dowolnych, ile wynosi jego rząd. Podsumowując, rozwiązanie równania rekurencyjnego polega bądź na znalezieniu rozwiązania ogólnego, bądź w przypadku gdy dane są wartości początkowe równania szukamy rozwiązania szczególnego. Rozwiązywanie jednorodnych równań rekurencyjnych liniowych o stałych współczynnikach Niech będzie dane jednorodne równanie rekurencyjne liniowe rzędu k f n + k = a1 f n + k −1 + a 2 f n + k − 2 + ... + a k f n (4) w którym a1, a 2,..., a k są współczynnikami rzeczywistymi niezaleŜnymi od n, przy czym ak ≠ 0. Jest to równanie rzędu k, a więc dla jego jednoznacznego rozwiązania potrzeba, aby były dane wartości początkowe f1, f 2,..., f k. Dla rozwiązania równania (4) wprowadza się pewną funkcję pomocniczą p(z) zwaną wielomianem charakterystycznym równania. Funkcja p(z) zmiennej zespolonej z jest określona jako wielomian tego samego stopnia k co dane równanie (4) jest rzędu, i którego współczynnikami są te same współczynniki ai, występujące w równaniu (4). Zatem p ( z ) = z k − a1z k −1 − a 2 z k − 2 − ... − a k −1z − a k (5) Równanie p ( z) = 0 (6) z kolei nazywamy równaniem charakterystycznym, a jego pierwiastki (rzeczywiste lub zespolone, których liczba wraz z ich krotnościami wynosi k) – pierwiastkami charakterystycznymi. Niech z1, z 2,..., z r, r ≤ k oznaczają róŜne pierwiastki charakterystyczne o krotnościach równych r odpowiednio v1, v2,..., v r tak, Ŝe ∑ vi = k. Wówczas i =1 r p ( z) = ∏ ( z − zi ) vi (7) i =1 Ogólnym rozwiązaniem równania (4) o współczynnikach rzeczywistych a1, a 2,..., a k niezaleŜnych od n oraz ak ≠ 0 jest r vi −1 s =1 m =0 f n = ∑ z sn ∑ C smn m gdzie zs (8) (s = 1, … ,r) jest pierwiastkiem charakterystycznym równania o krotności vi, Csm (s = 1, … ,r; m = 0,1,…,vi-1) jest dowolną stałą. W przypadku gdy wszystkie pierwiastki charakterystyczne zi są pojedyncze, tj. równanie (6) ma k pierwiastków zi o krotnościach vi = 1 (i = 1,…,k), rozwiązanie (8) przyjmuje uproszczoną postać k f n = ∑ z snC s (9) s =1 gdzie Cs (s = 1,…,k) są dowolnymi stałymi wyznaczanymi z warunków początkowych. Dla otrzymania rozwiązania szczególnego wzoru (4) o warunkach początkowych f1, f 2,..., f k naleŜy najpierw rozwiązać równanie charakterystyczne, zapisać postać ogólną rozwiązania (8) bądź (9) zaleŜnie od pierwiastków, a następnie rozwiązać układ k równań liniowych względem k niewiadomych, którymi są C10, C11, …, Cr,v-1 v1 −1 ∑C z1 1m m=0 v1 −1 z12 ∑ + z2 v 2 −1 ∑C 2m m =0 C1m 2 m + z 22 m=0 v 2 −1 ∑ + ... + z r v r −1 ∑C 1m = f1 m=0 C 2m2 m + ... + z r2 m =0 v r −1 ∑C rm 2 m = f2 m =0 (10) ............................................................................. v1 −1 z1k ∑ m =0 C1mk m + z 2k v 2 −1 ∑ m =0 C 2mk m + ... + z rk v r −1 ∑C rmk m = fk m =0 Obliczone wartości wstawiamy do wzoru (8) uzyskując w ten sposób szukane rozwiązanie szczególne danego równania. UWAGA JeŜeli współczynniki równania charakterystycznego p ( z ) = 0 są liczbami rzeczywistymi, to równanie, jeśli ma pierwiastki zespolone, to są one parami sprzęŜone. Rozwiązywanie niejednorodnych równań rekurencyjnych liniowych o stałych współczynnikach Niech będzie dane niejednorodne równanie rekurencyjne liniowe rzędu k f n + k = a1 f n + k −1 + a 2 f n + k − 2 + ... + a k f n + b (11) W którym a1, a 2,..., a k , b są współczynnikami rzeczywistymi niezaleŜnymi od n, przy czym ak ≠ 0 oraz b ≠ 0. Jest to równanie rzędu k, a więc dla jego jednoznacznego rozwiązania potrzeba, aby były dane wartości początkowe f1, f 2,..., f k. Równanie jednorodne, które otrzymujemy z danego równania (4) przez przyjęcie b = 0, nosi nazwę równania uzupełniającego to równanie i ma postać f n + k = a1 f n + k −1 + a 2 f n + k − 2 + ... + a k f n (12) Wielomianem charakterystycznym równania uzupełniającego jest p ( z ) = z k − a1z k −1 − a 2 z k − 2 − ... − a k −1z − a k (13) Napiszmy teraz (12) zastępując n → n+1 f n + k +1 = a1 f n + k + a 2 f n + k −1 + ... + a k −1 f n + 2 + a k f n +1 + b (14) Odejmując stronami (11) i (14) otrzymamy równanie jednorodne rzędu k+1 f n + k +1 − (1 + a1) f n + k + ( a1 − a 2 ) f n + k −1 + ... + ( a k −1 − a k ) f n +1 + a k f n = 0 (15) o równaniu charakterystycznym z k +1 − (1 + a1) z k + ( a1 − a 2 ) z k −1 + ... + ( a k −1 − a k ) z + a k = 0 (16) Ostatnie równanie moŜna zapisać jako p ( z )( z − 1) = 0 Z drugiej strony wydzielając czynnik związany z ewentualnym pierwiastkiem z = 1 charakterystycznego α p ( z ) = ( z − 1) ϕ ( z ) (17) i wielomianu (18) gdzie ϕ (1) ≠ 0 otrzymujemy p ( z )( z − 1) = ( z − 1) α+1 ϕ ( z) (19) Wówczas rozwiązanie ogólne równania (11) jest postaci α f n = g n + bn ϕ (1) α ! (20) Gdzie gn jest rozwiązaniem ogólnym równania uzupełniającego (12), ϕ ( z ) zaś oraz α jak we wzorze (18). i Jeśli wielomian charakterystyczny p(z) ma pierwiastek z = 1, to a jest równe jego krotności. ĆWICZENIA 1) Znaleźć rozwiązanie równania rekurencyjnego f n +3 − 6 f n+ 2 + 11 f n +1 − 6 f n = 0 przy warunkach początkowych f1 = 0, f 2 = 1, f 3 = 0. ROZWIĄZANIE Równanie charakterystyczne jest postaci z 3 − 6z 2 + 11z − 6 = 0 Pierwiastki tego równania moŜna znaleźć korzystając z tw. Bezou’ta zauwaŜając, Ŝe z−2 dzieli bez reszty wielomian z − 6z + 11z − 6. Stąd otrzymujemy, Ŝe ( z − 1)( z − 2) ( z − 3) = 0 A zatem pierwiastkami charakterystycznymi są z = 1, z = 2, z = 3, wszystkie jednokrotne. Wobec tego rozwiązaniem ogólnym danego równania rekurencyjnego według wzoru (9) jest 3 2 f n = C1 + C 22 n + C33 n Dla znalezienia rozwiązani szczególnego o danych warunkach początkowych trzeba rozwiązać układ równań liniowych względem C1, C 2, C3 odpowiadający układowi jeszcze C1 + 2C 2 + 3C3 = 0 C1 + 4C 2 + 9C3 = 1 C1 + 8C 2 + 27C3 = 0 Stąd otrzymujemy C1 = − 5 , C 2 = 2, C 3 = − 1 . Podstawiając te wartości do wzoru na 2 2 rozwiązanie ogólne uzyskujemy rozwiązanie szczególne postaci f n = − 5 + 2 n +1 − 1 ⋅ 3 n 2 2 2) Znaleźć rozwiązanie równania rekurencyjnego f n +3 = f n+ 2 + f n +1 − f n przy warunkach początkowych f1 = 1, f 2 = 2, f 3 = 3. ROZWIĄZANIE Równanie charakterystyczne jest postaci z3 − z 2 − z +1 = 0 czyli ( z − 1) 2 ( z + 1) = 0 Stąd pierwiastkami charakterystycznymi są z1 = 1 o krotności α1 = 2 z 2 = −1 o krotności α 2 = 1 Rozwiązanie ogólne równania rekurencyjnego ma więc postać n f n = C10 + C11n + C 20 ( −1) Współczynniki C10, C11, C 20 wyznaczmy z układu równań C10 + C11 − C 20 = 1 C10 + 2C11 + C 20 = 2 C10 + 3C11 − C 20 = 3 Dostajemy C10 = C 20 = 0, C11 = 1, co prowadzi di rozwiązania szczególnego f n = n. 3) Znaleźć rozwiązanie równania rekurencyjnego f n + 2 + 4 f n+1 + 3 f n = 0 przy warunkach początkowych f1 = −1, f 2 = 5 ROZWIĄZANIE Równanie charakterystyczne jest postaci z 2 + 4z + 3 = 0 Stąd pierwiastkami charakterystycznymi są z1 = −3 o krotności α1 = 1 z 2 = −1 o krotności α 2 = 1 Wobec tego rozwiązaniem ogólnym danego równania rekurencyjnego według wzoru n n f n = ( −3) C1 + ( −1) C 2 (9) jest Dla znalezienia rozwiązani szczególnego o danych warunkach początkowych trzeba rozwiązać układ równań liniowych względem C1 oraz C 2 odpowiadający układowi jeszcze −3 C1 − C 2 = −1 9 C1 + C 2 = 5 Stąd otrzymujemy C1 = 2 , C 2 = −1. Podstawiając te wartości do wzoru na 3 rozwiązanie ogólne uzyskujemy rozwiązanie szczególne postaci n −1 n +1 f n = 2 ⋅ ( −3) + ( −1) 4) Znaleźć rozwiązanie równania rekurencyjnego niejednorodnego f n + 2 + 4 f n+1 + 3 f n = 5 przy warunkach początkowych f1 = −1, f 2 = 5 ROZWIĄZANIE Rozwiązanie równania uzupełnionego juŜ policzyliśmy n −1 n +1 g n = 2 ⋅ ( −3) + ( −1) Pozostało zauwaŜyć, Ŝe wielomian charakterystyczny równania jednorodnego nie pierwiastka z = 1 zatem α = 0 oraz ϕ ( z ) = p ( z ) i stąd ϕ (1) = 8 oraz b = 5. Podstawiając wzoru (20) ma do n +1 n −1 f n = 2 ⋅ ( −3) + ( −1) + 5 8 5) Znaleźć rozwiązanie równania rekurencyjnego niejednorodnego f n +3 − 3 f n + 2 + 3 f n+1 − f n = 5 przy warunkach początkowych f1 = 1, f 2 = 0, f 3 = −1. ROZWIĄZANIE Równanie charakterystyczne równania uzupełniającego jest ( z − 1) 3 = 0 Stąd z1 = 1 o krotności α1 = 3 Wobec tego rozwiązaniem ogólnym danego równania według wzoru (9) przy uwzględnieniu (2) (ϕ ( z ) = 1 bo p ( z ) = ( z − 1) 3 ⋅1, b = 5) jest 3 f n = C1 + C 2n + C3n 2 + 5n 3! Dla spełnienia warunków początkowych musi być C1 + C 2 + C3 = 1 6 C1 + 2C 2 + 4C3 = − 20 3 C1 + 3C 2 + 9C3 = − 47 2 Rozwiązaniem tego układu są C1 = −3, C 2 = 49 , C3 = −5. Zatem rozwiązaniem równania rekurencyjnego 6 niejednorodnego spełniającego podane warunki początkowe jest f n = −3 + 49 n − 5n 2 + 5 n 3 6 6 ROZWIĄZAĆ 1) a n = −6a n−1 − 9a n− 2 z warunkami początkowymi a 0 = 1, a1 = −9. 2) a n+ 2 = a n +1 + a n z warunkami początkowymi 3) a n+ 2 = 5a n +1 + 6a n z warunkami początkowymi a 0 = 1, a1 = −4. 4) a n = 3a n−1 − 2a n− 2 z warunkami początkowymi a1 = 2, a 2 = 3. 5) f n = f n −1 + 6 f n −2 z warunkami początkowymi f 0 = 3, f1 = 4. 6) f n = 3 f n −1 + 4 f n− 2 − 12 f n −3 z warunkami początkowymi 7) f n = 2 f n −2 − f n −4 z warunkami początkowymi ODPOWIEDZI n 1) a n = ( −3) (1 + 2n) ( ) ( 4) 5) f n = ( −2) + 2 ⋅ 3 n 6) f n = 2 nC1 + ( −2) C 2 + 3 nC3 7) f n = C10 + C11n + ( −1) (C 20 + C 21n) 3) f 0 = 1, f1 = 2, f 2 = 3. f 0 = 1, f1 = 1, f 2 = 2, f 3 = 2. ) n n an = 1 1 + 5 − 1 − 5 2 2 5 n a n = ( −1) ⋅ 10 − 3 ⋅ 6 n 7 7 n −1 an = 2 + 1 2) a 0 = 0, a1 = 1. n n n n f n = 3 + 1 n + 1 ⋅ ( −1) 4 2 4