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 ∀n­n0 0 ¬ c1 g (n) ¬ f (n) ¬ c2 g (n)}
• O (g (n)) = {f (n) : ∃c ∃n0 takie, że ∀n­n0 0 ¬ f (n) ¬ cg (n)}
• Ω (g (n)) = {f (n) : ∃c ∃n0 takie, że ∀n­n0 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.