Rekurencja. Algorytmy i Struktury Danych. (c) Marcin Sydow. Wst p. Fibonacci. Liniowe 2. rz du. Wie»e Hanoi. Wa»ne 3 przypadki

Podobne dokumenty
Matematyka dyskretna dla informatyków

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Matematyka dyskretna dla informatyków

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Lab. 02: Algorytm Schrage

Liniowe równania ró»niczkowe n tego rz du o staªych wspóªczynnikach

Materiaªy do Repetytorium z matematyki

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

2 Liczby rzeczywiste - cz. 2

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

1 Bª dy i arytmetyka zmiennopozycyjna

Ukªady równa«liniowych

Proste modele o zªo»onej dynamice

Programowanie wspóªbie»ne

1 Metody iteracyjne rozwi zywania równania f(x)=0

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

TEORETYCZNE PODSTAWY INFORMATYKI

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)

Algorytmy zwiazane z gramatykami bezkontekstowymi

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Bash i algorytmy. Elwira Wachowicz. 20 lutego

ELEMENTARNA TEORIA LICZB. 1. Podzielno±

Interpolacja funkcjami sklejanymi

Teoretyczne podstawy informatyki

Metody dowodzenia twierdze«

Ekstremalnie fajne równania

Programowanie wspóªbie»ne

XVII Warmi«sko-Mazurskie Zawody Matematyczne

Funkcje jednej zmiennej. Granica, ci gªo±. (szkic wykªadu)

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

Przykªady problemów optymalizacji kombinatorycznej

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Rozwi zanie równania ró»niczkowego metod operatorow (zastosowanie transformaty Laplace'a).

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Funkcje, wielomiany. Informacje pomocnicze

Wykªad 10. Spis tre±ci. 1 Niesko«czona studnia potencjaªu. Fizyka 2 (Informatyka - EEIiA 2006/07) c Mariusz Krasi«ski 2007

f(x) f(x 0 ) i f +(x 0 ) := lim = f(x 0 + x) f(x 0 ) wynika ci gªo± funkcji w punkcie x 0. W ka»dym przypadku zachodzi:

Aproksymacja funkcji metod najmniejszych kwadratów

Programowanie i struktury danych 1 / 44

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Liczenie podziaªów liczby: algorytm Eulera

punkcie. Jej granica lewostronna i prawostronna w punkcie x = 2 wynosz odpowiednio:

Informacje pomocnicze

Wstęp do programowania

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Metodydowodzenia twierdzeń

Metody numeryczne. Wst p do metod numerycznych. Dawid Rasaªa. January 9, Dawid Rasaªa Metody numeryczne 1 / 9

Uczenie Wielowarstwowych Sieci Neuronów o

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

1 Granice funkcji wielu zmiennych.

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

Czy funkcja zadana wzorem f(x) = ex e x. 1 + e. = lim. e x + e x lim. lim. 2 dla x = 1 f(x) dla x (0, 1) e e 1 dla x = 1

Algorytmiczna teoria grafów

Przekroje Dedekinda 1

Numeryczne zadanie wªasne

Algorytmy i struktury danych

ALGORYTMIKA Wprowadzenie do algorytmów

Wyszukiwanie. Algorytmy i Struktury Danych. (c) Marcin Sydow. Dziel i rz d¹. Wyszukiwanie. Statystyki pozycyjne. Podsumowanie

Arytmetyka zmiennopozycyjna

Semestr letni 2014/15

Zbiory i odwzorowania

O pewnym zadaniu olimpijskim

Lekcja 12 - POMOCNICY

det A := a 11, ( 1) 1+j a 1j det A 1j, a 11 a 12 a 21 a 22 Wn. 1 (Wyznacznik macierzy stopnia 2:). = a 11a 22 a 33 +a 12 a 23 a 31 +a 13 a 21 a 32

1 Przypomnienie wiadomo±ci ze szkoªy ±redniej. Rozwi zywanie prostych równa«i nierówno±ci

Liniowe zadania najmniejszych kwadratów

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

1 0 Je»eli wybierzemy baz A = ((1, 1), (2, 1)) to M(f) A A =. 0 2 Daje to znacznie lepszy opis endomorzmu f.

Wst p do sieci neuronowych 2010/2011 wykªad 7 Algorytm propagacji wstecznej cd.

Funkcje wielu zmiennych

Rachunek ró»niczkowy funkcji jednej zmiennej

ODPOWIEDZI I SCHEMAT PUNKTOWANIA ZESTAW NR 2 POZIOM ROZSZERZONY. S x 3x y. 1.5 Podanie odpowiedzi: Poszukiwane liczby to : 2, 6, 5.

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Model obiektu w JavaScript

ZADANIA. Maciej Zakarczemny

Zagadnienia na wej±ciówki z matematyki Technologia Chemiczna

Rekurencja. Przygotowała: Agnieszka Reiter

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

Opis matematyczny ukªadów liniowych

Metody numeryczne i statystyka dla in»ynierów

Janusz Adamowski METODY OBLICZENIOWE FIZYKI Zastosowanie eliptycznych równa«ró»niczkowych

2. L(a u) = al( u) dla dowolnych u U i a R. Uwaga 1. Warunki 1., 2. mo»na zast pi jednym warunkiem: L(a u + b v) = al( u) + bl( v)

Wykªad 4. Funkcje wielu zmiennych.

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

x y x y x y x + y x y

Podstawy matematyki dla informatyków

Rekurencyjne struktury danych

Zaawansowane algorytmy i struktury danych

Algorytmy i Struktury Danych.

5. (8 punktów) EGZAMIN MAGISTERSKI, r Matematyka w ekonomii i ubezpieczeniach

Oba zbiory s uporz dkowane liniowo. Badamy funkcj w pobli»u kresów dziedziny. Pewne punkty szczególne (np. zmiana denicji funkcji).

Programowanie funkcyjne. Wykªad 13

Przetwarzanie sygnaªów

Transkrypt:

Rekurencja

Zawarto± wykªadu: Wprowadzenie: czym jest rekurencja ci g ego Przykªad: liniowe równania rekurencyjne 2. Przykªad: zagadka wie»e Hanoi 3 cz sto spotykane rekurencyjne schematy równa«

Rekurencja Rekurencja ma kilka aspektów, m.in. matematyczny, algorytmiczny i programistyczny matematyczny: rekurencyjne denicje (takie, poj cie deniowane jest przez odwoªanie do samego siebie). Niezb dn cz ±ci denicji rekurencyjnej jest tzw. przypadek bazowy. Algorytmy: rekurencja ma tu odzwierciedlenie w pot»nej technice projektowania algorytmów dziel i zwyci»aj, gdzie rozwi zanie problemu deniuje si w oparciu o rozwi zanie (mniejszych) podproblemów tego samego typu Programowanie: rekurencja (zwana te» rekursj ) jest naturaln technik implementacji algorytmów rekurencyjnych, czyli funkcji, które wywoªuj same siebie (dla mniejszych argumentów).

Przykªad: matematyczna denicja poj cia silni Dla liczby naturalnej n N silnia, oznaczana n! zdeniowana jest jako iloczyn wszystkich kolejnych dodatnich liczb naturalnych niewi kszych od n: n! = n (n 1) (n 2)... 1 (oraz przyjmuje si,»e 0! = 1) Denicj t mo»na te» poda w formie rekurencyjnej: n! = (n 1)! n przypadek bazowy: 0! = 1 Zauwa»my,»e bez podania przypadku bazowego, powy»sza denicja byªaby wadliwa, rozwijaj c si w niesko«czono±, np.: 2! = 1! 2 = 0! 1 2 =(-1)!0 1 2, etc...

Przykªad 2: ci g liczb ego Przypadek bazowy: (0) = 0 (1) = 1 denicja rekurencyjna: (n+1) = (n) + (n-1) Pierwsze 10 warto±ci: 0,1,1,2,3,5,8,13,21,34,...

Rekurencja jako narz dzie projektowania algorytmów Jest to cz sto u»ywane podej±cie do projektowania algorytmów, przykªady: MergeSort, QuickSort i wiele innych. Niektóre algorytmy trudno byªoby inaczej zaprojektowa ni» rekurencyjnie (np. algorytm rozwi zuj cy problem wie» Hanoi przedstawiony na kolejnych slajdach). Matematyczne denicje rekurencyjne stanowi w zasadzie gotow recept algorytmu rekurencyjnego. Stosuj c rekurencj nale»y jednak bra pod uwag wynikaj cy z niej koszt pami ciowy (masowe wywoªywanie funkcji). Z tego powodu rekurencji powinno si unika o ile to mo»liwe i je±li nie komplikuje to bardzo algorytmu.

Przykªad: liczby ego Korzystaj c z rekurencyjnej denicji, napiszmy rekurencyjny algorytm obliczaj cy n-t liczb ego: fibonacci(n){ if (n < 2) return n; else return (fibonacci(n-1) + fibonacci(n-2)); } I gotowe! Jest jednak problem: jaki? Co si stanie, gdy zaimplementujemy i wywoªamy np. bonacci(50)?

Przykªad: liczby ego Korzystaj c z rekurencyjnej denicji, napiszmy rekurencyjny algorytm obliczaj cy n-t liczb ego: fibonacci(n){ if (n < 2) return n; else return (fibonacci(n-1) + fibonacci(n-2)); } I gotowe! Jest jednak problem: jaki? Co si stanie, gdy zaimplementujemy i wywoªamy np. bonacci(50)? Dokªadniejsza analiza zachowania tego algorytmu pokazuje,»e liczba wywoªa«rekurencyjnych jest tu wykªadnicz funkcj liczby n. Algorytm ten b dzie wi c dziaªaª zaskakuj co wolno (i mo»e nawet zabrakn pami ci na wywoªania funkcji dla wi kszych warto±ci n). Aby zaprojektowa bardziej efektywny algorytm, potrzeba nierekurencyjnego wzoru na n-t liczb ego.

Przykªad: rekurencyjne równania liniowe 2- Istnieje wiele twierdze«pozwalaj cych rozwi zywa równania rekurencyjne. Uwaga: Przez rozwi zanie równania rekurencyjnego rozumiemy podanie nierekurencyjnego wzoru na n-ty wyraz danego ci gu. Rekurencyjne równanie na n-ty wyraz ci gu ego ma posta funkcji liniowej i odwoªuje si wstecz do dwóch poprzednich wyrazów ci gu: (n) = (n-1) + (n-2) Równanie to jest szczególnym emy liniowego równanania rekurencyjnego 2-giego.

o rekurencyjnych liniowych równaniach 2-go Je±li równanie rekurencyjne ma poni»sz ogóln posta : s n = as n 1 + bs n 2 to rozwi zuj c pewne pomocnicze tzw równanie charakterystyczne: x 2 ax b = 0, w zale»no±ci od liczby jego pierwiastków otrzymujemy nast puj ce rozwi zanie nierekurencyjne: 1 istnieje 1 pierwiastek r: s n = c1r n + c2nr n 2 istniej 2 pierwiastki r1, r2: s n = c1r n 1 + c 2r n 2 gdzie staªe c1, c2 mo»na znale± podstawiaj c warto±ci bazowe (dla n = 0 i n = 1) Nie podamy dowodu tego twierdzenia. Oczywi±cie istniej te» inne twierdzenia dla innych typów równa«rekurencyjnych.

Przykªad zastosowania twierdzenia Poniewa» równanie ego ma wªa±nie posta rekurencyjnego równania liniowego 2-go, wi c mo»na u»yc twierdzenia do jego rozwi zania: Stosuj c twierdzenie, zauwa»amy,»e wspóªczynniki wynosz a = 1, b = 1: (n) = 1 (n-1) + 1 (n-2) Rozwi zuj c równanie charakterystyczne otrzymujemy: (n) = 1 5 (( 1+ 5 2 ) n ( 1 5 2 ) n ) Jest to bezpo±redni (nierekurencyjny) wzór na n-ty wyraz ci gu ego! (tzw. wzór Bineta) Korzystaj c z niego mo»emy ju» obliczy : (50) =

Przykªad zastosowania twierdzenia Poniewa» równanie ego ma wªa±nie posta rekurencyjnego równania liniowego 2-go, wi c mo»na u»yc twierdzenia do jego rozwi zania: Stosuj c twierdzenie, zauwa»amy,»e wspóªczynniki wynosz a = 1, b = 1: (n) = 1 (n-1) + 1 (n-2) Rozwi zuj c równanie charakterystyczne otrzymujemy: (n) = 1 5 (( 1+ 5 2 ) n ( 1 5 2 ) n ) Jest to bezpo±redni (nierekurencyjny) wzór na n-ty wyraz ci gu ego! (tzw. wzór Bineta) Korzystaj c z niego mo»emy ju» obliczy : (50) = 12 586 269 025 (ci g ego ro±nie wykªadniczo szybko!)

Przykªad: zagadka wie»e Hanoi Jak widzieli±my na przykªadzie liczb ego, algorytm rekurencyjny cz sto nie jest efektywnym rozwi zaniem równania rekurencyjnego (tu lepsze byªo rozwi zanie równania rekurencyjnego do wzoru bezpo±redniego) Dla wielu jednak problemów algorytm rekurencyjny jest przynajmniej jedynym naturalnym sposobem uj cia rozwi zania, i ci»ko rozpocz rozwi zywanie problemu bez sformuªowania rekurencyjnego. Przykªadem jest np. zagadka wie»e Hanoi, dla której jedyne ªatwe rozwi zanie daje si sformuªowa w formie równania rekurencyjnego.

Mamy n kr»ków, ka»dy o innym rozmiarze, nawleczonych jeden na drugim na pionowym pocz tkowym dr»ku A, od najwi kszego (na dole) do najmniejszego (na górze). Celem jest przeniesienie wszystkich kr»ków na docelowy dr»ek C po jednym w ka»dym ruchu, ale tak,»e w ka»dym ruchu mo»emy wzi tylko 1 kr»ek z wierzchu dowolnego dr»ka i nigdy nie mo»na kªa± wi kszego kr»ka nad mniejszym. W caªej operacji mamy te» do dyspozycji pomocniczy dr»ek B (po ka»dym ruchu na ka»dym dr»ku mo»e by dowolnie wiele kr»ków, ale znowu, nigdy wi ksze nad mniejszymi) 1) Ile minimalnie ruchów nale»y wykona, aby przenie± wszystkie n kr»ków z A na C? (oznaczmy minimaln liczb ruchów przez hanoi(n)) 2) Jakie dokªadnie ruchy nale»y wykona?

, c.d. Ile wynosi: hanoi(0) =

, c.d. Ile wynosi: hanoi(0) = 0 hanoi(1) =

, c.d. Ile wynosi: hanoi(0) = 0 hanoi(1) = 1 hanoi(2) =

, c.d. Ile wynosi: hanoi(0) = 0 hanoi(1) = 1 hanoi(2) = 3 (tu musimy ju» skorzysta z pomocniczego dr»ka) hanoi(10) =? Celem jest znalezienie ogólnego wzoru dla dowolnego n.

: liczba ruchów Jak zdeniowa rozwi zanie dla n kr»ków w oparciu o rozwi zanie dla n-1 kr»ków (czyli rekurencyjnie, wg zasady dziel i zwyci»aj)?

: liczba ruchów Jak zdeniowa rozwi zanie dla n kr»ków w oparciu o rozwi zanie dla n-1 kr»ków (czyli rekurencyjnie, wg zasady dziel i zwyci»aj)? 1 Je±li mamy 1 kr»ek (n=1), to przenosimy go jednym ruchem z dr»ka A na dr»ek C. 2 je±li na dr»ku startowym jest n>1 kr»ków to zauwa»my,»e je±li umiemy przenie± (za pomoc pewnej liczby ruchów) wierzchnie n-1 kr»ków na dr»ek pomocniczny, to mo»emy potem przenie± najni»szy (odsªoni ty) kr»ek ze startowego na docelowy i na ko«cu znowu n-1 kr»ków z pomocniczego na docelowy.

Rozwi zanie rekurencyjne dla hanoi(n) Daje to w prosty sposów rekurencyjne równanie na liczb ruchów: warunek bazowy: hanoi(1) = 1 równanie rekurencyjne: hanoi(n) = hanoi(n-1) + 1 + hanoi(n-1) = 2*hanoi(n-1) + 1

Rozwi zanie równania rekurencyjnego dla wie» Hanoi Zastosujemy prost metod tzw. rozwijania sumy: hanoi(n) = 2 hanoi(n 1) + 1 = 2 (2 hanoi(n 2) + 1) + 1 =... = n 1 i 2 i = 2 n 1 Mamy wi c gotowy nierekurencyjny wzór na liczb ruchów! hanoi(10) = 2 10 1 = 1023 (funkcja ta ro±nie jeszcze szybciej ni» liczby ego!) Uwaga: W tym zadaniu wyznaczenie wzoru na liczb ruchów mo»liwe byªo dzi ki rekurencyjnemu uj ciu problemu. (pozostawiamy dla zainteresowanych jako nieobowi zkowe, ale ciekawe wiczenie, napisanie programu wypisuj cego list ruchów, które nale»y wykona dla n kr»ków!)

Zalety i wady stosowania rekurencji Podsumujmy: rekurencja pozwala ªatwo napisa algorytm korzystaj c z rekurencyjnego równania lub rekurencyjnej denicji jakiego± poj cia rekurencja jest czasami bardzo naturalnym ±rodkiem do rozwi zania pozornie skomplikowanych problemów algorytm rekurencyjny mo»e by nieefektywny (zarówno czasowo jak i pami ciowo - stos wywoªa«rekurencyjnych funkcji) je±li to mo»liwe, nale»y zamieni denicj rekurencyjn na nierekurencyjn i w ten sposób na ko«cu unikn rekurencyjnego algorytmu, o ile nie komplikuje to bardzo algorytmu

Cz sto spotykane rekurencyjne Przedstawimy teraz pewne 3 cz sto spotykane równa«rekurencyjnych (z rozwi zaniami), które powstaj w rezultacie analizy zªo»ono±ci czasowej algorytmów. Ich znajomo± jest przydatna do obliczenia zªo»ono±ci czasowej cz sto spotykanych schematów algorytmów. W poni»szych przykªadach wyobra¹my sobie,»e t(n) oznacza zªo»o± czasow pewnego algorytmu dla danych o rozmiarze n. W dowodach 3 poni»szych przypadków zakªadamy (dla prostoty dowodu),»e n jest dokªadn pot ga 2, ale uzyskane wyniki mo»na uogólni na dowolne warto±ci n dla typowo spotykanych funkcji zªo»ono±ci czasowej t().

Przypadek 1 t(1) = 0 (interpretacja: dla danych 1-elementowych nie ma specjalnie nic do zrobienia) t(n) = t(n/2) + c; n>1, c N jest staª dodatni (interpretacja: dla danych o rozmiarze wi kszych ni» 1, mo»na rozwi zac problem przez rozwi zanie podproblemu poªow (n/2) mniejszego przy staªym (c) dodatkowym narzucie pracy) (n/2 oznacza (n/2) lub (n/2) ) Rozwi zanie: podstawmy dla wygody rachunków n = 2 k i zastosujmy rozwijanie do sumy: t(2 k ) = t(2 k 1 ) + c = t(2 k 2 ) + c + c = t(2 0 ) + kc = kc = clog(n) rozwi zanie: t(n) = c(log(n)) = Θ(log(n)), czyli logarytmiczna zªo»ono± czasowa Przykªad algorytmu speªniaj cego ten schemat? rekurencyjna wersja binsearch

Przypadek 2 t(1) = 0 t(n) = t( (n/2) ) + t( (n/2) ) + c; n>0, c N jest staª dodatni. (interpretacja: rozwi zanie problemu mo»na otrzyma poprzez rozwi zanie dwóch podproblemów poªow mniejszych przy staªym narzucie dodatkowej pracy) Rozwi zanie (znowu podstawmy dla wygody oblicze«n = 2 k ): t(2 k ) = 2t(2 k 1 ) + c = 2(2t(2 k 2 ) + c) + c = 2 2 (t(2 k 2 )) + 2 1 c + 2 0 c = 2 k t(2 0 ) + c(2 k 1 + 2 k 2 +... + 2 0 ) = 0 + c(2 k 1) = c(n 1) rozwi zanie: t(n) = c(n 1) = Θ(n) (Liniowa zªo»ono± czasowa) Przykªad algorytmu speªniaj cego ten schemat?

Przypadek 2 t(1) = 0 t(n) = t( (n/2) ) + t( (n/2) ) + c; n>0, c N jest staª dodatni. (interpretacja: rozwi zanie problemu mo»na otrzyma poprzez rozwi zanie dwóch podproblemów poªow mniejszych przy staªym narzucie dodatkowej pracy) Rozwi zanie (znowu podstawmy dla wygody oblicze«n = 2 k ): t(2 k ) = 2t(2 k 1 ) + c = 2(2t(2 k 2 ) + c) + c = 2 2 (t(2 k 2 )) + 2 1 c + 2 0 c = 2 k t(2 0 ) + c(2 k 1 + 2 k 2 +... + 2 0 ) = 0 + c(2 k 1) = c(n 1) rozwi zanie: t(n) = c(n 1) = Θ(n) (Liniowa zªo»ono± czasowa) Przykªad algorytmu speªniaj cego ten schemat? np. rekurencyjne wyszukiwanie maksimum w ci gu n elementów (rekurencyjnie wyszukaj w lewej i prawej poªowie ci gu i zwró wi kszy z wyników)

Przypadek 3 t(1) = 0 t(n) = t( (n/2) ) + t( (n/2) ) + cn; n>0, c N jest staª interpretacja: Rozwi za problem mo»na przez rozwi zanie dwóch podproblemów poªow mniejszych i przy dodatkowym liniowym (n) narzucie pracy. Rozwi zanie (podstawmy n = 2 k ): t(2 k ) = 2t(2 k 1 ) + c2 k = 2(2t(2 k 2 ) + c2 k 1 ) + c2 k = 2 2 t(2 k 2 ) + c2 k + c2 k = 2 k t(2 0 ) + kc2 k = 0 + cnlog(n) rozwi zanie: cn(log(n)) = Θ(nlog(n)) (Zªo»ono± liniowo-logarytmiczna) przykªad algorytmu speªniaj cego ten schemat?:

Przypadek 3 t(1) = 0 t(n) = t( (n/2) ) + t( (n/2) ) + cn; n>0, c N jest staª interpretacja: Rozwi za problem mo»na przez rozwi zanie dwóch podproblemów poªow mniejszych i przy dodatkowym liniowym (n) narzucie pracy. Rozwi zanie (podstawmy n = 2 k ): t(2 k ) = 2t(2 k 1 ) + c2 k = 2(2t(2 k 2 ) + c2 k 1 ) + c2 k = 2 2 t(2 k 2 ) + c2 k + c2 k = 2 k t(2 0 ) + kc2 k = 0 + cnlog(n) rozwi zanie: cn(log(n)) = Θ(nlog(n)) (Zªo»ono± liniowo-logarytmiczna) przykªad algorytmu speªniaj cego ten schemat?: mergesort

Podamy teraz pot»ne narz dzie opisuj ce uniwersaln metod rozwi zywania rekurencyjnych równa«, które wyra»aj np. funkcje zªo»ono±ci czasowej T(n) wielu typów rekurencyjnych algorytmów typu dziel i zwyci»aj, w których rekurencyjnie rozwi zuje si a podproblemów ka»dy o rozmiarze b razy mniejszym od oryginalnego przy dodatkowym narzucie pracy wyra»onym przez ogólnie dan funkcj f (n). Dokªadniej, twierdzenie mówi jakie jest rozwi zanie równania rekurencyjnego postaci: T (n) = at (n/b) + f (n) gdzie a 1, b > 1 pewne staªe, f (n) jest asymptotycznie dodatnia Np. funkcja zªo»ono±ci mergesort jest jego szczególnym em dla a = 2, b = 2, f (n) = Θ(n)

Zaªó»my,»e funkcja T (n) : N R jest rekurencyjnie zdeniowana nast puj co: T (n) = at (n/b) + f (n) gdzie a 1, b > 1: staªe, n/b oznacza (n/b) lub (n/b) oraz f (n) : R R jest asymptotycznie dodatnia Wtedy T (n) mo»e by asymptotycznie wyra»ona w zale»no±ci od 3 przypadków jako: 1 je±li f (n) = O(n log b a ɛ ) dla pewnego ɛ > 0, wtedy: T (n) = Θ(n log b a ) 2 je±li f (n) = Θ(n log b a ), wtedy: T (n) = Θ(n log b a log(n)) 3 je±li f (n) = Ω(n log b a+ɛ dla pewnego ɛ > 0, 1, wtedy: T (n) = Θ(f (n)) (Dowód: Cormen et al. Wprowadzenie do algorytmów rozdziaª 4.4) 1 i je±li dodatkowo zaªo»ymy,»e af (n/b) cf (n) dla pewnego c < 1 (tzw. warunek regularno±ci)

Interpretacja twierdzenia porównuje rz d funkcji narzutu f (n) z rz dem pomocniczego wyra»enia n log ba i mówi,»e wy»szy z tych rz dów determinuje rz d zªo»ono±ci funkcji T(n): 1 je±li rz d f (n) jest (nieco upraszczaj c) ni»szego ni» n log ba, to to ostatnie wyra»enie dominuje funkcj T(n) 2 je±li f (n) i n log ba s tego samego, to pojawia si dodatkowy czynnik narzutu Θ(log(n)) 3 je±li f (n) jest (upraszczaj c) wy»szego ni» n log ba (i speªnia pewien techniczny warunek), to f (n) dominuje (i wyznacza) rz d caªej funkcji T(n) Uwaga: istniej bardzo specyczne funkcje f (n), które nie speªniaj powy»szych warunków i dla nich twierdzenie nie dziaªa, ale s to bardzo szczególne funkcje raczej niespotykane w analizie podstawowych algorytmów.

/Problemy: wymie«pozytywne i negatywne aspekty zastosowania rekurencji w projektowaniu algorytmów podaj rekurencyjn denicj liczb ego i kilka pierwszych wyrazów podaj sekwencj ruchów dla zagadki Hanoi Towers dla n=3 i n=4 zastosuj twierdzenie o rozwi zywaniu równa«rekurencyjnych 2-giego do równania ego Wymie«3 podane schematów równa«rekurencyjnych wraz z przykªadami algorytmów, które do nich pasuj napisz rekurencyjn wersj algorytmu binsearch, dokonaj analizy zªo»ono±ci czasowej i pami ciowej i porównaj z wersj nierekurencyjn. Która jest lepsza? Dlaczego? podobnie jak wy»ej, tylko dla algorytmu znajdowania minimum w tablicy n liczb (*) napisz funkcj wypisuj c ci g ruchów niezb dnych dla rozwi zania problemu wie» Hanoi dla n kr»ków zilustruj twierdzenie do analizy algorytmu mergesort i do analizy rekurencyjnej wersji algorytmu binsearch

Dzi kuj za uwag.