Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej

Podobne dokumenty
Teoretyczne podstawy informatyki

TEORETYCZNE PODSTAWY INFORMATYKI

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

i = n = n 1 + n 2 1 i 2 n 1. n(n + 1)(2n + 1) n (n + 1) =

Podstawy Informatyki. Sprawność algorytmów

Przykładowe zadania z teorii liczb

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Algorytmy i struktury danych Matematyka III sem.

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Wykład 2. Poprawność algorytmów

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

6. Liczby wymierne i niewymierne. Niewymierność pierwiastków i logarytmów (c.d.).

Rekurencja. Matematyka dyskretna

Indukcja matematyczna

Dwa równania kwadratowe z częścią całkowitą

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

domykanie relacji, relacja równoważności, rozkłady zbiorów

Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów

Jarosław Wróblewski Matematyka Elementarna, lato 2012/13. Czwartek 28 marca zaczynamy od omówienia zadań z kolokwium nr 1.

n=0 (n + r)a n x n+r 1 (n + r)(n + r 1)a n x n+r 2. Wykorzystując te obliczenia otrzymujemy, że lewa strona równania (1) jest równa

Kongruencje pierwsze kroki

LX Olimpiada Matematyczna

Jarosław Wróblewski Matematyka Elementarna, zima 2012/13

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d

Zadania do samodzielnego rozwiązania

Wykład z równań różnicowych

Jarosław Wróblewski Matematyka Elementarna, zima 2013/14. Czwartek 21 listopada zaczynamy od omówienia zadań z kolokwium nr 2.

I Liceum Ogólnokształcące im. Cypriana Kamila Norwida w Bydgoszczy. Wojciech Kretowicz PODZIELNOŚĆ SILNI A SUMA CYFR

Konstrukcja liczb rzeczywistych przy pomocy ciągów Cauchy ego liczb wymiernych

E-learning - matematyka - poziom rozszerzony. Funkcja wykładnicza. Materiały merytoryczne do kursu

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Logarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne.

a 1, a 2, a 3,..., a n,...

Podyplomowe Studium Informatyki

WYRAŻENIA ALGEBRAICZNE

Indukcja matematyczna, zasada minimum i maksimum. 17 lutego 2017

OLIMPIADA MATEMATYCZNA

FUNKCJA POTĘGOWA, WYKŁADNICZA I LOGARYTMICZNA

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

2. LICZBY RZECZYWISTE Własności liczb całkowitych Liczby rzeczywiste Procenty... 24

LI Olimpiada Matematyczna Rozwiązania zadań konkursowych zawodów stopnia trzeciego 3 kwietnia 2000 r. (pierwszy dzień zawodów)

Algorytmy w teorii liczb

Ciągi komplementarne. Autor: Krzysztof Zamarski. Opiekun pracy: dr Jacek Dymel

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Logarytmy. Historia. Definicja

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Matematyka dyskretna dla informatyków

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Zaawansowane algorytmy i struktury danych

Algorytmy i Struktury Danych

KLUCZ PUNKTOWANIA ODPOWIEDZI

Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne.

ALGEBRA Z GEOMETRIĄ CIAŁO FUNKCJI WYMIERNYCH

Tematyka do egzaminu ustnego z matematyki. 3 semestr LO dla dorosłych

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Analiza matematyczna. 1. Ciągi

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15

5. Logarytmy: definicja oraz podstawowe własności algebraiczne.

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

4. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych.

I) Reszta z dzielenia

Matematyka Dyskretna Zestaw 2

W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1

Indukcja matematyczna. Zasada minimum. Zastosowania.

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Liczby pierwsze. Kacper Żurek, uczeń w Gimnazjum nr 1 im. Jana Pawła II w Giżycku.

Schemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej

Zbiory, relacje i funkcje

Zadanie 3 Oblicz jeżeli wiadomo, że liczby 8 2,, 1, , tworzą ciąg arytmetyczny. Wyznacz różnicę ciągu. Rozwiązanie:

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

LXIX Olimpiada Matematyczna Rozwiązania zadań konkursowych zawodów stopnia trzeciego 18 kwietnia 2018 r. (pierwszy dzień zawodów)

B jest liniowo niezależny V = lin (B) 1. Układ pusty jest bazą przestrzeni trywialnej {θ}. a i v i = i I. b i v i, (a i b i ) v i = θ.

Równania i nierówności wykładnicze i logarytmiczne

1 Działania na zbiorach

Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów

Sumy kolejnych bikwadratów

1. Wykład NWD, NWW i algorytm Euklidesa.

Zaawansowane algorytmy i struktury danych

Finanse i Rachunkowość studia niestacjonarne Wprowadzenie do teorii ciągów liczbowych (treść wykładu z 21 grudnia 2014)

1. Powtórka ze szkoły. Wykład: (4 godziny), ćwiczenia: , kolokwium nr 1:

Podstawowe struktury algebraiczne

Jarosław Wróblewski Matematyka Elementarna, zima 2014/15

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

... [a n,b n ] kn [M 1,M 2 ], gdzie a i M 1, b i M 2, dla i {1,..., n}. Wówczas: [a 1,b 1 ] k [a n,b n ] kn =(a 1 b 1 a 1

TEORETYCZNE PODSTAWY INFORMATYKI

Rozdział 4. Ciągi nieskończone. 4.1 Ciągi nieskończone

Zliczanie Podziałów Liczb

Łatwy dowód poniższej własności pozostawiamy czytelnikowi.

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY MATEMATYKA STOSOWANA - KLASA II I. POWTÓRZENIE I UTRWALENIE WIADOMOŚCI Z ZAKRESU KLASY PIERWSZEJ

Wykład 3. Miara zewnętrzna. Definicja 3.1 (miary zewnętrznej) Funkcję µ przyporządkowującą każdemu podzbiorowi

Jarosław Wróblewski Matematyka Elementarna, lato 2014/15

ALGEBRA Z GEOMETRIĄ BAZY PRZESTRZENI WEKTOROWYCH

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

EGZAMIN, ANALIZA 1A, , ROZWIĄZANIA

Układy równań i nierówności liniowych

Konstrukcja liczb rzeczywistych przy pomocy ciągów Cauchy ego liczb wymiernych

LXII Olimpiada Matematyczna

CIĄGI wiadomości podstawowe

Transkrypt:

Krzysztof Gniłka Twierdzenie o rekurencji uniwersalnej

Spis treści Wstęp 3 Rozdział 1 Definicje i pomocnicze lematy 4 1 Części całkowite liczb 4 2 Logarytmy 9 3 Notacja asymptotyczna 12 Rozdział 2 Metoda rekurencji uniwersalnej 19 1 Twierdzenie o rekurencji uniwersalnej 19 2 Dowód Twierdzenia 23 Bibliografia 41 2

Wstęp W mojej pracy została przedstawiona metoda rekurencji uniwersalnej opisana w książce Wprowadzenie do algorytmów Thomas H Cormen, Charles E Leiserson, Ronald L Rivest [1], która służy do określenia czasu działania algorytmów zawierających rekurencyjne wywołanie samego siebie W dalszej części pracy będziemy zajmować się algorytmami rekurencyjnymi, których czas działania można opisać za pomocą wzoru rekurencyjnego T (n) = at (n/b) + f(n), gdzie n oznacza rozmiar problemu, a ilość podproblemów na jakie został rozbity problem, n/b oznacza wielkość podproblemów, natomiast f(n) jest funkcją nieujemną opisującą koszt dzielenia problemu oraz łączenia rezultatów częściowych W trakcie gromadzenia materiałów do pracy spotkałem się z udoskonaloną wersją tej metody zamieszczoną w Journal of the ACM, Vol 48, No 2, March 2001 [3], którą można zastosować do rekurencji powyższej postaci nierozwiązywalnych za pomocą omawianej przeze mnie metody Rozdział 1 Definicje i pomocnicze lematy zawiera narzędzia matematyczne, którymi będziemy się posługiwać w dalszej części pracy oraz definicje notacji asymptotycznej wraz z podstawowymi twierdzeniami i lematami jej dotyczącymi Rozdział 2 Metoda rekurencji uniwersalnej zawiera twierdzenie o rekurencji uniwersalnej wraz z dowodem oraz sposób jego zastosowania na konkretnych przykładach równań rekurencyjnych opisujących czas działania algorytmów 3

ROZDZIAŁ 1 Definicje i pomocnicze lematy Będziemy używać następujących oznaczeń : N - zbiór liczb naturalnych z zerem (N = N {0}), R - zbiór liczb rzeczywistych, R + - zbiór liczb rzeczywistych nieujemnych (R + = [0, )), Z - zbiór liczb całkowitych 1 Części całkowite liczb Definicja 11 Zdefiniujmy następujące oznaczenia, niech x R, x oznacza największą liczbę całkowitą, nie większą niż x, a zapis x - najmniejszą liczbę całkowitą, nie mniejszą niż x, czyli x x x Spostrzeżenie Jeśli k Z to k = k = k Wtedy k = k + l = k l l [0,1) Lemat 11 Jeśli n, a, b N, x [0, ) oraz a 0 i b 0 to dla, zachodzą następujące własności: 1 x 1 < x 2 x < x + 1 3 x + n = x + n 4 x + n = x + n 5 n/2 + n/2 = n 6 n/a /b = n/ab 7 n/a /b = n/ab Dowód: Własność 1 4

Mamy wykazać, że x 1 < x Posłużmy się dowodem nie wprost Przypuśćmy, że x 1 x i ustalmy takie k, że k = x Z założenia nie wprost mamy x 1 k zatem x k + 1 Z definicji wynika że, x = k + (x k) = k + B gdzie B [0, 1), a wtedy k + B k + 1 czyli B 1 co nie jest prawdą Tak więc otrzymujemy sprzeczność co kończy dowód 1 Własność 2 Mamy wykazać, że x < x + 1 Posłużmy się dowodem nie wprost Przypuśćmy, że x x + 1 i ustalmy takie k, że k = x Z założenia nie wprost mamy k x + 1 zatem k 1 x Z definicji wynika że, x = k (k x) = k B gdzie B [0, 1), a wtedy k B k 1 co nie jest prawdą Tak więc otrzymujemy sprzeczność co kończy dowód 2 Własność 3 Mamy wykazać x + n = x + n Ustalmy takie B [0, 1), że x = x B Po podstawieniu do x + n otrzymujemy x + n = x B + n oczywiście (x B + n) N Weźmy takie k N, że k = x B + n Wiemy, że B < 1 czyli z definicji otrzymujemy k = k + B = x B + n + B = x + n Zatem x + n = x + n Własność 4 Mamy wykazać x + n = x + n Ustalmy takie B [0, 1), że x = x + B Po podstawieniu do x + n otrzymujemy x + n = x + B + n oczywiście (x + B + n) N Weźmy takie k N że k = x + B + n 5

Wiemy, że B < 1 czyli z definicji otrzymujemy k = k B = x + B + n B = x + n Zatem x + n = x + n Własność 5 Mamy wykazać n/2 + n/2 = n Ustalmy takie B [0, 1), że n/2 = n/2 B Z własności 4 i 3 wiemy, że n/2 + n/2 = n/2 + n/2 = n/2 + n/2 B = n B = n Co kończy dowód Własność 6 Mamy wykazać n/ab = n/a /b dla a, b, n N oraz gdzie a 0 i b 0 Weźmy takie k, l, r 1, r 2 N że (i) n = ka + r 1, gdzie r 1 < a, (ii) k = lb + r 2, gdzie r 2 < b Wtedy L= n/ab = (k + r 1 /a)/b = k/b + r 1 /ab = l + r 2 /b + r 1 /ab, P= n/a /b = k + r 1 /a /b Rozpatrzmy następujące przypadki: 1 r 1 = 0 P= k /b = l + r 2 /b, L= l + r 2 /b Czyli L=P 2 r 1 0 Z (i) oraz (ii) otrzymujemy r 1 /a < 1, r 2 /b < 1 oraz r 1 /ab < 1 Musimy teraz rozpatrzyć przypadki, gdy r 2 0 i r 2 = 0 a) r 2 = 0 L= l + r 1 /ab = l + 1, 6

P= k + r 1 /a /b = k/b + 1/b = l + 1/b = l + 1 Czyli L=P b) r 2 0 Mamy L= l + r 2 /b + r 1 /ab, P= l + r 2 /b + 1/b Załóżmy nie wprost, że 1/b + r 2 /b > 1, ale największa wartość jaką może przyjąć r 2 to (b 1) otrzymujemy więc sprzeczność bo 1/b + (b 1)/b = 1, czyli 1/b + r 2 /b 1 Załóżmy nie wprost, że r 2 /b + r 1 /ab 1 Wtedy (r 2 a + r 1 )/ab 1, (r 2 a + r 1 ) ab Wiemy że r 1 /a, r 2 /b [0, 1), ponieważ a > r 1, b > r 2, czyli maksymalna wartość dla r 1 to (a 1), a dla r 2 to (b 1) Z tego otrzymujemy: (r 2 a + r 1 ) (b 1)a + (a 1), (r 2 a + r 1 ) ab a + a 1, (r 2 a + r 1 ) ab 1 Z założenia mamy, że (r 2 a + r 1 ) ab, więc otrzymujemy sprzeczność ponieważ (r 2 a + r 1 ) ab 1 < ab Czyli (r 2 a + r 1 )/ab < 1 Z powyższego mamy: L= l + r 2 /b + r 1 /ab = l + 1, P= l + r 2 /b + 1/b = l + 1 Czyli L=P Własności 7 Mamy wykazać, że n/ab = n/a /b dla a, b, n N oraz gdzie a 0 i b 0 Weźmy takie k, l, r 1, r 2 N, że (i) n = ka + r 1 gdzie r 1 < a, 7

(ii) k = lb + r 2 gdzie r 2 < b Wtedy L= n/ab = (k + r 1 /a)/b = k/b + r 1 /ab = l + r 2 /b + r 1 /ab, P= n/a /b = k + r 1 /a /b Rozpatrzmy następujące przypadki: 1 r 1 = 0 P= k /b = l + r 2 /b, L= l + r 2 /b Czyli L=P 2 r 1 0 Z (i) oraz (ii) otrzymujemy r 1 /a < 1, r 2 /b < 1 oraz r 1 /ab < 1 Musimy teraz rozpatrzyć przypadki, gdy r 2 0 i r 2 = 0 Z powyższego dostajemy P= k/b = l + r 2 /b = l a) r 2 = 0 L= l + r 1 /ab = l Czyli L=P b) r 2 0 L= l + r 2 /b + r 1 /ab Załóżmy nie wprost, że r 2 /b + r 1 /ab 1 Wtedy (r 2 a + r 1 )/ab 1, (r 2 a + r 1 ) ab Z (i),(ii) wiemy że r 1 /a, r 2 /b [0, 1) czyli maksymalna wartość dla r 1 to (a 1), a dla r 2 to (b 1) Z tego otrzymujemy: (r 2 a + r 1 ) (b 1)a + (a 1), (r 2 a + r 1 ) ab a + a 1, 8

(r 2 a + r 1 ) ab 1 Z założenia mamy że (r 2 a + r 1 ) ab, więc otrzymujemy sprzeczność ponieważ (r 2 a + r 1 ) ab 1 < ab Zatem (r 2 a + r 1 )/ab < 1, więc L= l + r 2 /b + r 1 /ab = l =P 2 Logarytmy Definicja 12 Jeśli a x = b, to x = log a b (a więc a log a b = b), gdzie: b - dana liczba większa od zera, a - podstawa logarytmu (a > 0 i a 1), x - (wykładnik potęgi) - logarytm liczby b przy podstawie a Będziemy używali następujących oznaczeń : lg n = log 2 n, lg k n = (lg n) k Lemat 12 Dla wszystkich liczb rzeczywistych a > 0, b > 0,c > 0 dla których logarytmy są określone i dowolnej liczby naturalnej n zachodzą następujące własności: 1 log b a n = n log b a 2 log c (ab) = log c a + log c b 3 log c ( a b ) = log c a log c b 4 log b a = log c a log c b 5 log b a = 1 log a b 6 a log b n = n log b a Dowód: Własność 1 Mamy wykazać, że log b a n = n log b a Weźmy takie y, że y = log b a z definicji otrzymujemy b y = a 9

Po podniesieniu obu stron równości do potęgi n otrzymujemy b yn = a n Z powyższego i definicji logarytmu otrzymujemy log b a n = yn = n log b a Czyli otrzymaliśmy log b a n = n log b a co kończy dowód dla własności 1 Własność 2 Mamy wykazać, że log c (ab) = log c a + log c b Ustalmy takie p i q, że log c a = p co implikuje a = c p, log c b = q co implikuje b = c q Z powyższego mamy ab = c p c q = c p+q Po obłożeniu odpowiednich równości logarytmem otrzymujemy log c ab = log c c p+q Korzystając z własności 1 mamy log c ab = (p + q) log c c = p + q = log c a + log c b Co kończy dowód własności 2 Własność 3 Mamy wykazać, że log c ( a b ) = log c a log c b Weźmy d = b 1 Z własności 2 otrzymujemy log c ad = log c a + log c d Zatem log c ab 1 = log c a + log c b 1 Korzystając z własności 1 mamy log c ab 1 = log c a log c b Własność 4 Mamy wykazać, że log b a = log c a log c b Niech (i) log b a = y 1, 10

(ii) log c a = y 2, (iii) log c b = y 3 Zatem b y 1 = a = c y 2 Z (iii) mamy b = c y 3 Po podniesieniu obu stron do potęgi y 1 otrzymujemy b y 1 = c y 1y 3, c y 2 = c y 1y 3 Z powyższego mamy y 2 = y 1 y 3, y 1 = y 2 y 3 Czyli y 1 = y 2 y 3 Własność 5 = log b a = log c a log c b Z definicji wiemy, że log a a = 1 ponieważ a x = a x = 1 Zatem z własności 4 mamy log b a = log a a log a b = 1 log a b Własność 6 Mamy wykazać, że a log b n = n log b a Zauważmy, że log b n = y 1 n = b y 1 (n) 1 y 1 = b Podobnie log b a = y 2 a = b y 2 (a) 1 y 2 = b Zatem (a) 1 y 2 = b = (n) 1 y 1, więc (a) 1 y 2 = (n) 1 y 1 Po podniesieniu obu stron do potęgi y 1 y 2 otrzymujemy n y 2 = a y 1 n log b a = a log b n Co kończy dowód własności 6 11

3 Notacja asymptotyczna Notacja asymptotyczna służy do opisywania i porównywania czasu działania algorytmów Wykorzystuje ona funkcje, których zbiorem argumentów jest zbiór liczb naturalnych N Notacja taka jest użyteczna przy opisie czasu T (n) działania algorytmu, gdzie n jest liczbą naturalną oznaczającą rozmiar danych W podrozdziale tym zdefiniujemy podstawowe notacje asymptotyczne Θ, O i Ω Definicja 13 Niech f,g będą funkcjami odwzorowującymi N w R + Mówimy, że f jest rzędu Θ(g) gdy f Θ(g) c 1,c 2 >0 n 0 N Mówimy, że f jest rzędu O(g) gdy c 1 g(n) f(n) c 2 g(n) n n 0 f O(g) c>0 n 0 N Mówimy, że f jest rzędu Ω(g) gdy f(n) cg(n) n n 0 f Ω(g) c>0 n 0 N cg(n) f(n) n n 0 Lemat 13 Niech f,g będą funkcjami odwzorowującymi N w R + Jeśli f O(g) oraz f Ω(g) to f Θ(g) Dowód Z definicji (13) mamy f O(g) f Ω(g) Jeśli weźmiemy takie n 0 > 0, że n 1 jeśli n 1 > n 2 n 0 = n 2 jeśli n 1 n 2 c2 >0 c1 >0 n 1 N n 2 N f(n) c 2 g(n), n n 1 c 1 g(n) f(n) n n 2 12

Z powyższego mamy, że dla dowolnego n > n 0 zachodzi Czyli f Θ(g) Co kończy dowód lematu (13) c 1 g(n) f(n) c 2 g(n) Definicja 14 Jeśli f,g będą funkcjami odwzorowującymi N w R + to f + Θ(g) = {f + h : h Θ(g)}, f + O(g) = {f + h : h O(g)}, f + Ω(g) = {f + h : h Ω(g)} Oznaczenie 11 Wprowadźmy teraz następujące oznaczenia, których będziemy używać w dalszej części pracy Niech f,g,h będą funkcjami odwzorowującymi N w R + to f(n) = Θ(g(n)) oznaczać będzie, że f Θ(g), f(n) = O(g(n)) oznaczać będzie, że f O(g), f(n) = Ω(g(n)) oznaczać będzie, że f Ω(g), f(n) = h(n) + Θ(g(n)) oznaczać będzie, że f {h + d : d Θ(g)}, f(n) = h(n) + O(g(n)) oznaczać będzie, że f {h + d : d O(g)}, f(n) = h(n) + Ω(g(n)) oznaczać będzie, że f {h + d : d Ω(g)} Powyższe równości będziemy nazywać równościami asymptotycznymi Czyli jeśli na przykład będziemy mieli f(n) = Ω(g(n)) to mówimy, że f(n) jest równa asymptotycznie g(n) w sensie Ω Formalnie taki zapis może wydać się mylący ponieważ Ω(g(n)) jest zbiorem, a f(n) jego elementem, ale zobaczymy, że zapis ten ma swoje zalety Lemat 14 Niech f, g, h będą funkcjami odwzorowującymi N w R + wtedy dla notacji asymptotycznych zachodzą poniższe własności: Przechodniość 1f(n) = Θ(g(n)) i g(n) = Θ(h(n)) implikuje f(n) = Θ(h(n)) 2 f(n) = O(g(n)) i g(n) = O(h(n)) implikuje f(n) = O(h(n)) 13

3 f(n) = Ω(g(n)) i g(n) = Ω(h(n)) implikuje f(n) = Ω(h(n)) Zwrotność 1 f(n) = Θ(f(n)) 2 f(n) = O(f(n)) 3 f(n) = Ω(f(n)) Symetria f(n) = Θ(g(n)) wtedy i tylko wtedy, gdy g(n) = Θ(f(n)) Dowód: Przechodniość 1 Mamy wykazać, że jeśli f(n) = Θ(g(n)) i g(n) = Θ(h(n)) to f(n) = Θ(h(n)) Z założenia wynika, że c 1,c 2 >0 n 0 N c 1 g(n) f(n) c 2 g(n), n n 0 Ustalmy takie k, że c 3,c 4 >0 m 0 N c 3 h(n) g(n) c 4 h(n) n m 0 m 0 jeśli m 0 n 0 k = n 0 jeśli m 0 < n 0 oraz s 1 = c 1 c 3 i s 2 = c 2 c 4 Z powyższego wynika, że Czyli Wykazaliśmy więc punkt 1 c 3c 1 h(n) c 1 g(n) f(n) c 2 g(n) c 4 c 2 h(n) n k s 1h(n) f(n) s 2 h(n) n k 14

2 Mamy wykazać, że jeśli f(n) = O(g(n)) i g(n) = O(h(n)) to f(n) = O(h(n)) Z założenia mamy: c 1 >0 n 0 N f(n) c 1 g(n), n n 0 Ustalmy takie k, że c 2 >0 m 0 N g(n) c 2 h(n) n m 0 m 0 jeśli m 0 n 0 k = n 0 jeśli m 0 < n 0 oraz s = c 1 c 2 Z powyższego mamy, że co implikuje Wykazaliśmy więc punkt 2 f(n) c 1g(n) c 1 c 2 h(n) = sh(n) n k f(n) sh(n) n k 3 Mamy wykazać, że jeśli f(n) = Ω(g(n)) i g(n) = Ω(h(n)) to f(n) = Ω(h(n)) Z założenia mamy: c 1 >0 n 0 N c 1 g(n) f(n), n n 0 Ustalmy takie k, że m 0 jeśli m 0 n 0 k = n 0 jeśli m 0 < n 0 oraz s = c 1 c 2 Z powyższego wynika, że c 2 >0 m 0 N c 2 h(n) g(n) n m 0 sh(n) = c 2c 1 h(n) c 1 g(n) f(n), n k 15

czyli sh(n) f(n) n k Wykazaliśmy więc punkt 3 Zwrotność 1 Mamy wykazać, że f(n) = Θ(f(n)) f(n) = Θ(f(n)) c 1,c 2 >0 n 0 N c 1 f(n) f(n) c 2 f(n) n n 0 Biorąc c 1 1 oraz c 2 1 otrzymujemy, że dla dowolnego n: c 1 f(n) f(n) c 2 f(n) Nierówności są więc prawdziwe Wykazaliśmy więc punkt 1 2 Mamy wykazać, że f(n) = O(f(n)) f(n) = O(f(n)) c>0 n 0 N Biorąc c 1 dostajemy, że dla dowolnego n f(n) cf(n) n n 0 f(n) cf(n) Wykazaliśmy więc punkt 2 3 Mamy wykazać, że f(n) = Ω(f(n)) f(n) = Ω(f(n)) c>0 n 0 N Biorąc c 1 dostajemy, że dla dowolnego n cf(n) f(n) n n 0 cf(n) f(n) Wykazaliśmy więc punkt 3 Symetria Mamy wykazać, że f(n) = Θ(g(n)) wtedy i tylko wtedy, gdy g(n) = Θ(f(n)) 16

Załóżmy, że f(n) = Θ(g(n)) Z definicji Θ mamy f(n) = Θ(g(n)) c 1,c 2 >0 n 0 N c 1 g(n) f(n) c 2 g(n), n n 0 czyli 1 c 2 f(n) g(n), g(n) 1 c 1 f(n) Przy założeniach, że s 1 = 1 c 2 i s 2 = 1 c 1 otrzymujemy, że gdy to g(n) = Θ(f(n)) c 1,c 2 >0 n 0 N s 1,s 2 >0 n 0 N s 1 f(n) g(n) s 2 f(n) n n 0 c 1 g(n) f(n) c 2 g(n) n n 0 Wykazaliśmy więc symetryczność równości asymptotycznej w notacji Θ Powyższe własności służą do porównywania funkcji, można się jednak doszukać analogii między porównywaniem funkcji a porównywaniem liczb rzeczywistych, które można potraktować jako funkcje stałe Wniosek 11 Niech f, g będą funkcjami odwzorowującymi N w {c}, gdzie c R + wtedy f(n) = Θ(g(n)), f(n) = O(g(n)), f(n) = Ω(g(n)) Dowód: Powyższy lemat jest prawdziwy ponieważ zbiór wartości tych funkcji jest podzbiorem zbioru R Z definicji notacji asymptotycznej wynika że jest ona określona dla 17

wszystkich funkcji działających ze zbioru liczb naturalnych w zbiór liczb rzeczywistych, czyli jest określona także dla funkcji stałych Oznaczenie 12 Jeśli f:n {c}, gdzie c R + f(n) = Θ(1) lub f(n) = O(1) lub f(n) = Ω(1) to wtedy będziemy pisać, że 18

ROZDZIAŁ 2 Metoda rekurencji uniwersalnej Metoda rekurencji uniwersalnej podaje uniwersalny przepis rozwiązywania równania rekurencyjnego postaci Θ(1) jeśli 1 n < b (21) T (n) = at (n/b) + f(n) jeśli n b, gdzie a 1 i b > 1 są stałymi, n > 0 rozmiarem problemu, a f(n) jest funkcją dodatnią Metoda rekurencji uniwersalnej wymaga rozważenia trzech przypadków, ale za to rozwiązanie wielu równań rekurencyjnych może być wyznaczone całkiem łatwo Wzór 21 opisuje czas działania algorytmu, który dzieli problem rozmiaru n na a problemów, każdy rozmiaru a/b, gdzie a i b są dodatnimi stałymi Każdy z a podproblemów jest rozwiązywany rekurencyjnie w czasie T (n/b), który jest nie większy od T (n) Koszt dzielenia problemu oraz łączenia rezultatów częściowych jest opisany funkcją f(n) 1 Twierdzenie o rekurencji uniwersalnej Metoda rekurencji uniwersalnej opiera się na następującym twierdzeniu Twierdzenie 21 Niech a 1, b > 1 będą stałymi całkowitymi, niech f będzie funkcją odwzorowującą N w R +, a funkcja T będzie zdefiniowana dla n > 0 przez rekurencję Θ(1) jeśli 1 n < b T (n) = at (n/b) + f(n) jeśli n b, 19

gdzie n/b oznacza n/b lub n/b Wtedy funkcja T może być ograniczona asymptotycznie w następujący sposób: (1) Jeśli f(n) = O(n log b a ɛ ) dla pewnej stałej ɛ > 0, to T (n) = Θ(n log b a ) (2) Jeśli f(n) = Θ(n log b a ) to T (n) = Θ(n log b a lg n) (3) Jeśli f(n) = Ω(n log b a+ɛ ) dla pewnej stałej ɛ > 0 i jeśli af(n/b) cf(n) dla pewnej stałej 0 < c < 1 i wszystkich dostatecznie dużych n, to T (n) = Θ(f(n)) Zanim przejdziemy do dalszej części pracy trzeba powiedzieć parę słów na temat stosowania powyższego twierdzenia W każdym z trzech przypadków porównujemy funkcję f(n) z funkcją n log b a Jak łatwo zauważyć podstawowym warunkiem do zajścia warunku 1 jest to, że n log b a musi być asymptotycznie większe od f(n) Do zajścia warunku trzeciego koniecznym jest aby funkcja f(n) była asymptotycznie większa od n log b a Natomiast do zajścia przypadku drugiego wymagane jest aby f(n) i n log b a były równe asymptotycznie W stosowaniu powyższego twierdzenia trzeba jednak pamiętać, że w przypadku 1 f(n) nie tylko musi być asymptotycznie mniejsze od n log b a, ale musi być wielomianowo mniejsza Przez określenie wielomianowo mniejsza będziemy rozumieć, że f(n) musi być asymptotycznie mniejsza niż n log b a o czynnik n ɛ dla pewnej stałej ɛ > 0 W trzecim przypadku n log b a nie tylko musi być asymptotycznie mniejsze od f(n), ale musi być wielomianowo mniejsze oraz dodatkowo musi zachodzić warunek af(n/b) cf(n) dla pewnej stałej 0 < c < 1, zwany warunkiem regularności W obliczu powyższego widzimy więc, że powyższego twierdzenia nie można stosować do wszystkich rekurencji Powodem tego są istniejące luki pomiędzy przypadkami 1 i 2 oraz 2 i 3, w które wpadają rekurencje gdy f(n) jest asymptotycznie mniejsza od n log b a, ale nie wielomianowo mniejsza lub gdy n log b a jest asymptotycznie mniejsza od f(n), ale nie wielomianowo mniejsza, oraz gdy w przypadku 3 f(n) nie spełnia warunku regularności Przykład zastosowania metody rekurencji uniwersalnej Aby zastosować metodę rekurencji uniwersalnej, po prostu stwierdzamy, który przypadek z twierdzenia o rekurencji uniwersalnej możemy zastosować 20

Jako pierwszy przykład rozważmy T (n) = 4T (n/2) + n Od razu widzimy, że f(n) = n, a = 4, b = 2 oraz n log b a = n log 2 4 = n 2 = Θ(n 2 ) Ponieważ f(n) = O(n log 2 4 ɛ ) = O(n 2 1 ) = O(n), gdzie ɛ = 1, możemy zastosować przypadek 1 z twierdzenia o rekurencji uniwersalnej i wywnioskować że rozwiązaniem jest T (n) = Θ(n 2 ) Rozważmy teraz T (n) = T (n/3) + 1, gdzie a = 1, b = 3, f(n) = 1, a n log 3 1 = n 0 = 1 Stosujemy tutaj przypadek 2, gdyż f(n) = Θ(n log b a ) = Θ(1), a zatem rozwiązaniem rekurencji jest T (n) = Θ(lg n) Jako trzeci przypadek rozważmy T (n) = 9T (n/3) + n 3 Mamy f(n) = n 3, a = 9, b = 3 oraz n log b a = n log 3 9 = n 2 Ponieważ f(n) = Ω(n log 3 9+ɛ ), gdzie ɛ = 1, więc stosuje się tutaj przypadek 3, teraz należy pokazać, że dla f(n) zachodzi warunek regularności Dla dostatecznie dużych n i 1/3 c < 1 zachodzi: (1/3)n 3 cn 3, (n 3 /3) cn 3, 9(n 3 /27) cn 3, af(n/b) = 9(n/3) 3 cn 3 = cf(n) Czyli pokazaliśmy, że warunek regularności jest spełniony Korzystając zatem z przypadku 3 możemy wywnioskować że rozwiązaniem jest T (n) = Θ(n 3 ) Metody rekurencji uniwersalnej nie możemy zastosować do rekurencji T (n) = 2T (n/2) + n 1 lg n 21

chociaż ma ona poprawną formę: a = 2, b = 2, f(n) = n 1 lg n i nlog b a = n Wydaje się, że powinien tu zachodzić przypadek 1, gdyż f(n) = n 1 lg n jest asymptotycznie mniejsze od n log b a = n, ale nie wielomianowo mniejsze Wynika to z tego że stosunek f(n) n log b a = n n lg n = 1 lg n jest asymptotycznie większy niż 1 n ɛ 0 < d ɛ mamy: = n ɛ dla każdej stałej ɛ Ponieważ dla n ɛ lg n d, n ɛ d lg n, 1 n 1 ɛ d lg n W konsekwencji rekurencja ta wpada w lukę między przypadkiem 1 i przypadkiem 2 Metody rekurencji uniwersalnej nie można zastosować także do rekurencji T (n) = 2T (n/2) + n lg n, gdzie a = 2, b = 2, f(n) = n lg n i n log b a = n Wydaje się, że powinien tu zachodzić przypadek 3, gdyż f(n) = n lg n jest asymptotycznie większe od n log b a = n, ale nie wielomianowo większe Wynika to z tego że stosunek f(n) (n lg n) = a n n log b = lg n jest asymptotycznie mniejszy niż n ɛ dla każdej stałej ɛ Ponieważ dla 0 < d ɛ mamy: n ɛ lg n d, n ɛ d lg n W konsekwencji rekurencja ta wpada w lukę między przypadkiem 2 i przypadkiem 3 22

2 Dowód Twierdzenia Aby w pełni przeprowadzić dowód twierdzenia o rekurencji uniwersalnej, musimy rozpatrzyć dwa przypadki, gdy n/b oznacza n/b i gdy n/b oznacza n/b Chcemy iterować rekurencję T (n) = at ( n/b ) + f(n) W czasie jej iterowania otrzymujemy sekwencję rekurencyjnych wywołań dla argumentów n, n/b, n/b /b, n/b /b /b, Oznaczmy j-ty element w tej sekwencji przez v j, gdzie n jeśli j = 0 (22) v j = v j 1 /b jeśli j > 0 Natomiast w czasie iterowania T (n) = at ( n/b ) + f(n) otrzymujemy sekwencje rekurencyjnych wywołań dla argumentów n, n/b, n/b /b, n/b /b /b, Oznaczmy j-ty element w tej sekwencji przez w j, gdzie n jeśli j = 0 (23) w j = w j 1 /b jeśli j > 0 Naszym pierwszym celem jest wyznaczenie liczby iteracji i, dla której v i i w i są stałymi Korzystając z nierówności x x x + 1 gdzie x R +, otrzymujemy: w 0 v 0 n, 23

w0 b = w1 v 1 = v 0b v 0b + 1 n b + 1, w1 b = w2 v 2 = v 1b v 1b + 1 n b 2 + 1 b + 1, Korzystając z wzoru na sumę szeregu geometrycznego otrzymujemy: v j n j 1 b + 1 j k=0 b = n k b + 1 ( 1 b )j j 1 1 b = n b j + 1 ( 1 b j ) b 1 b = n b + b ( 1 j b 1 b j 1 ) = n b + b 1 j b 1 b j 1 b 1 < n b + b j b 1, (24) w j v j < n b j + b b 1 Jeśli weźmiemy takie i, że i = log b n to otrzymujemy Z definicji logarytmu mamy, że i = log b n log b n < log b n + 1 = i + 1 (25) b i n < b i+1 Korzystając ze wzoru 23 oraz 25 otrzymujemy: b i n, b i n = w 0, b i /b = b w 0 /b = w 1, b /b = b i 2 w 1 /b = w 2, b i 2 /b = b i 3 w 2 /b = w 3, b i () /b = b 0 w /b = w i, b 1 /b = 1 w i Korzystając ze wzoru 22 oraz 25 otrzymujemy: n < b i+1, v 0 = n b i+1, v 1 = v 0 /b b i+1 /b = b i, v 2 = v 1 /b b i /b = b, 24

v 3 = v 2 /b b /b = b i 2, v i = v /b b i (i 2) /b = b 1, v i b Z powyższego otrzymaliśmy (26) 1 w i v i b Lemat 21 Niech a 1 i b > 1 będą stałymi całkowitymi oraz niech f będzie funkcją odwzorowującą N w R +, a funkcja T będzie zdefiniowana dla n > 0 przez rekurencje gdzie n/b oznacza n/b lub n/b Wtedy Θ(1) jeśli 1 n < b T (n) = at (n/b) + f(n) jeśli n b (27) T (n) = Θ(n log b a ) + a j f(n j ), gdzie 1 i = log b n natomiast n j = w j gdy n/b oznacza n/b lub n j = v j gdy n/b oznacza n/b dla 0 j i Dowód: Iterując rekurencję T, otrzymujemy: T (n) = f(n 0 ) + at (n 1 ) = f(n 0 ) + af(n 1 ) + a 2 T (n 2 ) = f(n 0 ) + af(n 1 ) + a 2 f(n 2 ) + + a f(n ) + a i T (n i ) = a j f(n j ) + a i T (n i ) 25

Wiemy, że i = log b n, korzystając z wzoru 26 oraz założeń Lematu 21 mamy: (28) 1 n i b Z definicji funkcji T dostajemy, że (29) T (n i ) = Θ(1) jeśli 1 n i < b, natomiast T (b) = at (b/b) + f(b) = at (1) + f(b) = aθ(1) + f(b), gdzie a i b są stałymi, f(b) przyjmuje wartość stałą więc też jest stałą asymptotycznie równą Θ(1) Z powyższego oraz z definicji 13 otrzymujemy T (b) = aθ(1) + f(b) = Θ(1) + Θ(1) = 2Θ(1) = Θ(1) Zatem mamy (210) T (b) = Θ(1) Z wzorów 28, 29, 210 dostajemy (211) T (n i ) = Θ(1) Z powyższego otrzymujemy a i T (n i ) = a log b n T (n logb n ) = a log b n Θ(1) Z lematu 11 otrzymujemy a log b n 1 a log b n a log b n Korzystając z definicji notacji asymptotycznej dostajemy (212) a log b n = O(a log b n ) Pozostaje nam już tylko wykazać, że a log b n = Ω(a log b n ) Ustalmy c 1 = 1/a 3 Wtedy a (log b n) 3 a (log b n) 1 a log b n, 26

n 0 N c 1 a log b n a (log b n) 1 a log b n n n 0 Powyższa nierówność jest prawdziwa więc z definicji 13 mamy (213) a log b n = Ω(a log b n ) Z lematu 13 oraz wzorów 212, 213 dostajemy (214) a log b n = Θ(a log b n ) Z lematu 12 mamy (215) a log b n = n log b a = Θ(n log b a ) Korzystając z Lematu 14, a dokładniej z własności przechodniości notacji asymptotycznej oraz wzorów 214, 215 otrzymujemy (216) a log b n = Θ(n log b a ), a to daje nam a log b n Θ(1) = Θ(n log b a ) Wykazaliśmy zatem równość T (n) = Θ(n log b a ) + a j f(n j ) co kończy dowód Lematu 21 Lemat 22 Niech a 1 i b > 1 będą stałymi całkowitymi oraz niech f będzie funkcją odwzorowującą N w R +, natomiast funkcja g zdefiniowana jest dla n b następująco (217) g(n) = a j f(n j ), gdzie 1 i = log b n oraz n/b oznacza n/b lub n/b, natomiast n j = w j, gdy n/b oznacza n/b lub n j = v j, gdy n/b oznacza n/b dla 0 j i Przy powyższych założeniach funkcja g może być ograniczona asymptotycznie dla liczb całkowitych w następujący sposób (1) Jeśli f(n) = O(n log b a ɛ ) dla pewnej stałej ɛ > 0 to g(n) = O(n log b a ) 27

(2) Jeśli f(n) = Θ(n log b a ) to g(n) = Θ(n log b a lg n) (3) Jeśli af(n/b) cf(n) dla pewnej stałej 0 < c < 1 i wszystkich n > b + (b/(b 1)) to g(n) = Θ(f(n)) Dowód: Dowód dla przypadku 1 Z założenia mamy f(n) = O(n log b a ɛ ) z czego wynika gdzie 0 j < i Należy pokazać, że f(n j ) = O ( (n j ) log b a ɛ), ( ( ) n logb a ɛ ) f(n j ) = O b j Z f(n j ) = O(n log b a ɛ j ) wynika, że istnieje stała c > 0 taka, że dla 0 j < i prawdziwa jest nierówność Z definicji n j oraz wzoru 24 mamy cn log b a ɛ j cv log b a ɛ j f(n j ) cn log b a ɛ j < c ( n b + b ) logb a ɛ = j b 1 ( ) n logb a ɛ ( ( )) logb c 1 + bj a ɛ b = b j n b 1 c ( n log b a ɛ (b j ) log b a ɛ ) ( 1 + bj n ( )) logb a ɛ b b 1 Sięgając do wzoru 25 oraz do założenia dowodu 0 j < i widzimy, że b j < b i n to z kolei implikuje nierówność b j /n < 1 Z powyższego otrzymujemy ( ) ( n log b a ɛ c (b j ) log b a ɛ c ( n log b a ɛ (b j ) log b a ɛ 1 + bj n ( )) logb a ɛ b b 1 ) ( 1 + b ) logb a ɛ b 1 28

Zauważmy że istnieje stała c 1 = c ( ) 1 + b logb a ɛ b 1 taka, że ( ) ( n log b a ɛ c 1 + b ) logb a ɛ ( ) n log b a ɛ = c (b j ) log b a ɛ 1 b 1 (b j ) log b a ɛ Z powyższego i definicji 13 mamy (218) f(n j ) = O ( n log b a ɛ (b j ) log b a ɛ Podstawiając do funkcji g(n) powyższe oszacowanie f(n j ) otrzymujemy g(n) = O ( ) n logb a j a ɛ b j = O ) n log b a ɛ a j (b j ) log b a ɛ Korzystając z definicji 12 i lematu 12 otrzymujemy b log b a = a, więc O n log b a ɛ a j ( ) = O n log (b j ) log b a ɛ b a ɛ ab ɛ j = (b) log b a O n log b a ɛ ( ) ab ɛ j = O a n log b a ɛ Wiemy, że i = log b n, b > 1, z lematu 11 mamy, więc że a to daje nam nierówność czyli log b n log b n, b log b n b log b n, b log b n 1 b log b n 1 (b ɛ ) j Korzystając z sumy szeregu geometrycznego oraz powyższego otrzymujemy (b ɛ ) j = 1 (bɛ ) log b n = ((bɛ ) logb n 1) 1 b ɛ (b ɛ 1) = ((bɛ ) log b n 1) (b ɛ 1) b ɛ log b n 1 b ɛ 1 Z lematu 12 mamy, że n ɛ = (b log b n ) ɛ więc Zatem (b log b n ) ɛ 1 b ɛ 1 = (blog b n ) ɛ 1 b ɛ 1 = nɛ 1 b ɛ 1 = O(nɛ ) 29

g(n) = O(n log b a ɛ n ɛ ) = O(n log b a ) Co kończy dowód dla przypadku pierwszego Dowód dla przypadku 2 Z założenia mamy f(n) = Θ(n log b a ), a to daje nam f(n j ) = Θ(n log b a j ) Istnieje zatem stała c > 0 taka że dla 0 j < i prawdziwa jest nierówność Z definicji n j oraz wzoru 24 mamy cn log b a j cv log b a j Korzystając z lematu 12 dostajemy a to daje nam równość c ( n b j + ( ) b j ( n n b j f(n j ) cn log b a j ( n < c b + b ) logb a ( ( ) n b j ( n = c j b 1 b + j n b j b j = (b log a a ) j = (a log a b ) j = (a 1 log b a ) j = (a j ) 1 log b a, ( c n log b a a j ) ( b )) logb a b 1 ) 1 c = c log b a + ( n log b a nlog b a a j ( a j 1 + n (a j ) 1 log b a ) 1 ( b j n + log b a (( b j n n (a j ) 1 log b a ) ) logb a b b 1 ) ) b a b log = b 1 ) ( )) logb a b b 1 ( ) log b j b a b = n b 1 Sięgając do wzoru 25 widzimy, że b j < b i n, a to z kolei implikuje nierówność b j /n < 1 Z powyższego otrzymujemy c nlog b a a j ( 1 + ( b j n ) ) logb a ( b n log b a c b 1 a j ) ( Weźmy stałą c 1 taką, że c 1 = c ( ) 1 + b logb a b 1, z tego mamy ( ) n log b a f(n j ) c 1 a j 1 + b ) logb a b 1 30

( ) Po podstawieniu c n log b a 1 a za j f(nj ) we wzorze 217 otrzymujemy g(n) = a j f(n j ) ( ) n a j log b a c 1 = c a j 1 Z definicji 13 oraz z założenia lematu, że i = log b n dostajemy O g(n) = O log b n 1 n log b a ( ) n a j log b a = O a j 1 = O(n log b a log b n ) = O ( ) n a j log b a a j n log b a a j = a j Korzystając z definicji 11 oraz definicji 13 otrzymujemy ( ) ( O n log b a log2 n = O n log b a log ) 2 n log 2 b log 2 b log 2 b jest stałą, więc z definicji 13 mamy ( O n log b a log ) 2 n = O ( n log b a log log 2 b 2 n ) Czyli g(n) = O(n log ba log 2 n) = O(n log ba lg n) ( n log b a log2 n log 2 b Z założenia mamy f(n) = Θ(n log b a ), a to daje nam f(n j ) = Θ(n log b a j ) Istnieje zatem stała c 3 > 0 taka, że dla 0 j < i prawdziwa jest nierówność f(n j ) c 3 n log b a j ) Po podstawieniu c 3 n log b a j za f(n j ) we wzorze 217 otrzymujemy g(n) = a j f(n j ) Z wzoru 24 i definicji n j otrzymujemy g(n) Korzystając ze wzoru 25 dostajemy a więc n można zapisać jako a j c 3 n log b a j b j < b i n < b i+1, n = b i + r, c 3 a j n log ba j a j c 3 w log b a j 31

gdzie 0 r < n Z lematu 11 mamy dla k N i x 0 a więc x + k = x + k, n/b = b i /b + r/b = r/b + b i /b Zdefiniujmy ciąg r j w następujący sposób r jeśli j = 0 (219) r j = r j 1 /b jeśli j > 0 gdzie r = n b i Możemy zatem ciąg w j zapisać w nieco inny sposób b i + r jeśli j = 0 (220) w j = ((b i /b j 1 ) + r j 1 )/b jeśli j > 0 Iterując kolejne wyrazy ciągu w j otrzymujemy w 0 = b i + r 0 = b i + r, w 1 = (b i + r 0 )/b = (b i /b) + r 0 /b = (b i /b) + r 1, w 2 = ((b i /b 1 ) + r 1 )/b = (b i /b 2 ) + r 1 /b = (b i /b 2 ) + r 2, w j = ((b i /b j 1 ) + r j 1 )/b = (b i /b j ) + r j 1 /b = (b i /b j ) + r j Łatwo zauważyć, że Z powyższego dostajemy więc w j = (b i /b j ) + r j b i /b j a j c 3 w log b a j ( b a j i c 3 b j ) logb a = Na mocy lematu 12 mamy c 3 (b i ) log b a a j (b j ) log b a (b j ) log b a = (b log b a ) j = (a log b b ) j = a j, 32

więc Wiemy, że c 3 (b i ) log b a a j (b j ) = c 3(b i ) log log b a b a i = log b n, a j (a j ) = c 3(b i ) log b a 1 (log b n) 1 i log b n, Na mocy lematu 12 mamy b (log b n) 1 b i b log b n, 1 b b(log b n) b i b log b n b log b n = n log b b = n, więc Dostaliśmy więc następującą nierówność 1 b n bi n c 3 (b i ) log b a 1 c 3 ( 1 b n)log b a 1 1 = c 3 b log b a nlog b a Weźmy stałą c 4 = c 3 1 b log b a Z sumy szeregu arytmetycznego i tego, że i = log b n dostajemy Chcemy wykazać, że 1 c 3 b log b a nlog b a 1 = c 4 n log b a log b n n log b a log b n = Ω(n log b a log b n) Na początek weźmy n = b oraz 0 < k < 1 wtedy Zatem dla n = b mamy kb log b a b log b a, kb log b a log b b b log b a log b b kn log b a log b n n log b a log b n Korzystając z lematu 11 otrzymujemy dla n > b 1 n log b a (log b n 1) n log b a log b n, 33

n log b a log b n(1 1 log b n ) nlog b a log b n, (n log b a log b n) log b n 1 log b n Wiemy, że dla m > b zachodzi czyli dla n > b mamy log b (b + 1) 1 log b (b + 1) (n log b a log b n) log b(b + 1) 1 log b (b + 1) (n log b a log b n) log b n log b n log b m 1 log b m log b(m + 1) 1, log b (m + 1) (n log b a log b n) log b n 1 log b n (n log b a log b n) log b n log b n Zatem z powyższego wynika, że istnieje stała k = log b (b+1) 1 log b (b+1) prawdziwa jest nierówność taka, że dla n b kn log b a log b n n log b a log b n Korzystając z powyższego i definicji 13 dostajemy a to implikuje n log b a log b n = Ω(n log b a log b n), c 4 n log b a log b n = Ω(n log b a log b n) Z powyższego oraz lematu 12 otrzymujemy g(n) = Ω(n log b a log b n) = Ω ( n log b a log 2 n log 2 b log 2 b jest stałą, więc z definicji 13 mamy ( Ω n log b a log ) 2 n = Ω ( n log b a log log 2 b 2 n ) Czyli Mając następujące równości g(n) = Ω(n log b a log 2 n) = Ω(n log b a lg n) g(n) = O(n log b a lg n), g(n) = Ω(n log b a lg n) możemy przy pomocy lematu 13 wywnioskować, że ) 34

g(n) = Θ(n log b a lg n) Co kończy dowód dla przypadku drugiego Dowód dla przypadku 3 W założeniach lematu mamy, że n/b oznacza n/b lub n/b oraz n j = w j gdy n/b oznacza n/b lub n j = v j gdy n/b oznacza n/b dla 0 j i Udowodnimy na początek, że jeśli jest prawdziwa nierówność (221) af(n/b) cf(n) dla n > b + (b/(b 1)), gdzie 0 < c < 1 jest stałą to prawdziwa jest także następująca nierówność (222) a j f(n j ) c j f(n) W celu udowodnienia powyższego faktu posłużmy się dowodem indukcyjnym Indukcja dla j = 0 a 0 f(n 0 ) = f(n) c 0 f(n) = f(n) Udowodnimy, że jeśli nierówność a j f(n j ) c j f(n) jest prawdziwa dla j < i to jest również prawdziwa dla j + 1 Z definicji ciągu n j otrzymujemy a j+1 f(n j+1 ) = aa j f(n j /b) = a j af(n j /b) Korzystając z wzoru 221 dostajemy a j af(n j /b) a j cf(n j ), Z założenia indukcyjnego mamy aa j f(n j /b) ca j f(n j ) ca j f(n j ) cc j f(n) = c j+1 f(n), 35

czyli a j+1 f(n j+1 ) c j+1 f(n) Co kończy dowód indukcyjny Po podstawieniu wzoru 222 do g(n) otrzymujemy g(n) = a j f(n j ) c j f(n) = f(n) Z wzoru na sumę ciągu geometrycznego oraz tego że 0 < c < 1 otrzymujemy ( ) 1 c f(n) c j i = f(n) 1 c c j ( ) 1 f(n) 1 c Ponieważ 1 1 c jest stałą to ( ) 1 f(n) = O(f(n)) 1 c Zatem (223) g(n) = O(f(n)) Ponieważ n 0 = n więc f(n) pojawia się w definicji funkcji g(n) = f(n) + a j f(n j ), a wszystkie składniki g(n) są nieujemne więc wnioskujemy że (224) g(n) = Ω(f(n)) Zatem z lematu 13 i wzorów 223, 224 otrzymujemy g(n) = Θ(f(n)) Co kończy dowód lematu 22 Udowodnijmy teraz twierdzenie 21, które brzmi następująco: Niech a 1 i b > 1 będą stałymi całkowitymi oraz niech f będzie funkcją odwzorowującą N w R + Niech funkcja T będzie zdefiniowana dla n > 0 w następujący sposób j=1 36

Θ(1) jeśli 1 n < b T (n) = at (n/b) + f(n) jeśli n b gdzie n/b oznacza n/b lub n/b Wtedy funkcja T może być ograniczona asymptotycznie dla liczb całkowitych w następujący sposób: (1) Jeśli f(n) = O(n log b a ɛ ) dla pewnej stałej ɛ > 0, to T (n) = Θ(n log b a ) (2) Jeśli f(n) = Θ(n log b a ) to T (n) = Θ(n log ba lg n) (3) Jeśli f(n) = Ω(n log b a+ɛ ) dla pewnej stałej ɛ > 0 i jeśli af(n/b) cf(n) dla Dowód: pewnej stałej 0 < c < 1 i wszystkich dostatecznie dużych n, to T (n) = Θ(f(n)) Dowód dla przypadku pierwszego Z założenia mamy, że f(n) = O(n log b a ɛ ), natomiast z lematu 21 oraz 22 otrzymujemy Niech Wiemy, że oraz h 1 Θ(D) Ustalmy takie n 0, że T (n) = Θ(n log b a ) + O(n log b a ) c 1,c 2 >0 h 2 O(S) n 1 jeśli n 1 > n 2 n 0 = n 2 jeśli n 1 n 2 n 1 N c 3 >0 S(n) = n log b a, D(n) = n log b a c 1 n log b a h 1 (n) c 2 n log b a n n 1 n 2 N h 2 (n) c 3 n log b a n n 2 Po dodaniu nierówności do siebie otrzymujemy, że dla każdego n > n 0 c 1 n log b a h 1 (n) + h 2 (n) c 2 n log b a + c 3 n log b a, c 1 n log b a h 1 (n) + h 2 (n) (c 2 + c 3 )n log b a 37

Otrzymaliśmy więc, że T (n) = Θ(n log b a ) Dowód dla przypadku drugiego Z założenia mamy, że f(n) = Θ(n log b a ), natomiast z lematu 21 oraz 22 dostajemy, że T (n) = Θ(n log b a ) + Θ(n log b a lg n) Niech S(n) = n log b a, D(n) = n log b a lg n Wiemy, że oraz h 1 Θ(S) c 1,c 2 >0 n 1 N c 1 n log b a h 1 (n) c 2 n log b a, n n 1 h 2 Θ(D) c 3,c 4 >0 Ustalmy takie n 0, że n 1 jeśli n 1 > n 2 n 0 = n 2 jeśli n 1 n 2 oraz c 1 jeśli c 1 < c 3 c 5 = c 3 jeśli c 1 c 3 n 2 N c 3 n log b a lg n h 2 (n) c 4 n log b a lg n n n 2 Po dodaniu nierówności do siebie otrzymujemy, że dla każdego n > n 0 c 1 n log b a + c 3 n log b a lg n h 1 (n) + h 2 (n) c 2 n log b a + c 4 n log b a lg n, n log b a (c 5 + c 5 lg n) n log b a (c 1 + c 3 lg n) h 1 (n) + h 2 (n) n log b a (c 2 + c 4 lg n), c 5 n log b a lg n c 5 n log b a (1 + lg n) h 1 (n) + h 2 (n) n log b a (c 2 + c 4 lg n), c 5 n log b a lg n h 1 (n) + h 2 (n) n log b a (c 2 lg n + c 4 lg n), c 5 n log b a lg n h 1 (n) + h 2 (n) n log b a lg n(c 2 + c 4 ) 38

Otrzymaliśmy więc równość Dowód dla przypadku trzeciego T (n) = Θ(n log b a lg n) Z założenia mamy, że f(n) = Ω(n log b a+ɛ ) gdzie ɛ > 0, oraz af(n/b) cf(n) dla pewnej stałej c < 1 i wszystkich n N Z lematu 21 i 22 otrzymujemy T (n) = Θ(n log b a ) + Θ(f(n)) Niech S(n) = f(n), D(n) = n log b a Wiemy, że oraz h 1 Θ(D) c 1,c 2 >0 n 1 N c 1 n log b a h 1 (n) c 2 n log b a n n 1 h 2 Θ(S) Ustalmy takie n 0, że n 1 jeśli n 1 > n 2 n 0 = n 2 jeśli n 1 n 2 c 3 >0,c 4 >0 n 2 N c 3 f(n) h 2 (n) c 4 f(n) n n 2 Po dodaniu nierówności do siebie otrzymujemy, że dla każdego n > n 0 (225) c 3 f(n) + c 1 n log b a h 1 (n) + h 2 (n) c 2 n log b a + c 4 f(n) Z założeń twierdzenia 21 mamy, że (226) f(n) = Ω(n log b a+ɛ ), a to implikuje nierówność (227) n log b a f(n) 39

Z wzorów 225, 227 otrzymujemy, że dla odpowiednio dużych n zachodzi nierówność c 3 f(n) h 1 (n) + h 2 (n) c 2 f(n) + c 4 f(n), c 3 f(n) h 1 (n) + h 2 (n) (c 2 + c 4 )f(n) Z powyższego i definicji 13 dostaliśmy więc T (n) = Θ(f(n)) Co kończy dowód twierdzenia 21 zwanego także Twierdzeniem o rekurencji uniwersalnej 40

Bibliografia [1] Thomas H Cormen, Charles E Leiserson, Ronald L Rivest Wprowadzenie do algorytmów, 44-98 [2] Ira Koźniewska Równania rekurencyjne [3] Journal of the ACM, Vol 48, No 2, March 2001, pp 170-205 41