n - Wkuwanko.pl
Transkrypt
n - Wkuwanko.pl
Algorytmy i programowanie – 8 Złożoność obliczeniowa Relacja ≺ Niech f (n) i g (n) będą funkcjami rozbiegającymi do nieskończoności gdy n → ∞. Mówimy, że funkcja f (n) rośnie wolniej niż g (n) , co zapisujemy f (n) ≺ g (n) wtedy i tylko wtedy gdy f (n) = 0. n→∞ g (n) lim Notacja asymptotyczna Dla danej funkcji g (n) oznaczamy: • Θ (g (n)) = {f (n) : ∃c1 ,c2 ∃n0 takie, że ∀nn0 0 ¬ c1 g (n) ¬ f (n) ¬ c2 g (n)} • O (g (n)) = {f (n) : ∃c ∃n0 takie, że ∀nn0 0 ¬ f (n) ¬ cg (n)} • Ω (g (n)) = {f (n) : ∃c ∃n0 takie, że ∀nn0 0 ¬ cg (n) ¬ f (n)} Fakt Dla każdych dwóch funkcji f (n) i g (n) zachodzi zależność f (n) = Θ (g (n)) wtedy i tylko wtedy, gdy f (n) = O (g (n)) i f (n) = Ω (g (n)) . Twierdzenie o rekurencji uniwersalnej Niech a 1 i b 1 będą stałymi, f (n) będzie pewną funkcją a T (n) będzie zdefiniowane dla nieujemnych liczb całkowitych przez rekurencję: n b T (n) = aT gdzie n b oznacza n b lub n b + f (n) . Wtedy funkcja T (n) może być ograniczona asymptotycznie w następujący sposób: • jeśli f (n) = O nlogb a− dla pewnej stałej > 0, to T (n) = Θ nlogb a , • jeśli f (n) = Θ nlogb a , to T (n) = Θ nlogb a ln n , • jeśli f (n) = Ω nlogb a+ dla pewnej stałej > 0 oraz jeśli af n b ¬ cf (n) dla pewnej stałej c < 1 i wszystkich dostatecznie dużych n, to T (n) = Θ (f (n)) . Zadania 1. Uszeregować poniższe funkcje według relacji ≺: n2 , √ 53 n, log n, n!, 1, √ n, log10 n, 2n , nn 2. Korzystając z metody rekurencji uniwersalnej podaj oszacowania asymptotyczne dla poniższych rekurencji: n 3 +n b) T (n) = 4T n4 + n c) T (n) = T 2n +1 3 d) T (n) = 4T n2 + n2 e) T (n) = 3T n3 + n ln n f) T (n) = 4T n2 + n3 a) T (n) = 9T 3. Czas działania algorytmu A jest opisany przez rekurencję T (n) = 7T rencyjnego algorytmu A0 przez T 0 = aT 0 n 4 n 2 + n2 , a konku- + n2 . Jaka jest największa liczba całkowita a, przy której A0 jest asymptotycznie szybszy niż A? 4. Algorytm sortowania przez zliczanie działa na trzech tablicach n elementowych: A [1..n] zawierającej nieposortowany ciąg, B [1..n] , w której zwracany jest posortowany ciąg elementów z A oraz pomocniczej tablicy C [1..k] . Istotnym założeniem jest, że elementy w tablicy A są wszystkie różne i ze zbioru {1, 2, . . . , k} procedure SortowaniePrzezZliczanie (A, B, n, k) for i ← 1 to k do C [i] ← 0 for i ← 1 to n do C [A [i]] ← 1 for i ← 2 to k do C [i] ← C [i] + C [i − 1] for i ← 1 to n do B [C [A [i]]] ← A [i] a) Oszacować złożoność tego algorytmu. b) Opracować wersję tego algorytmu, gdy dopuścimy powtórzenia w tabeli A.