background image

Algorytmy i programowanie – 8

Złożoność obliczeniowa

Relacja 

Niech (n) i (n) będą funkcjami rozbiegającymi do nieskończoności gdy n → ∞. Mówimy,

że funkcja (n) rośnie wolniej niż (nco zapisujemy (n≺ g (n) wtedy i tylko wtedy gdy

lim

n→∞

(n)

(n)

= 0.

Notacja asymptotyczna

Dla danej funkcji (n) oznaczamy:

• Θ ((n)) = {f (n) : 

c

1

,c

2

n

0

takie, że 

n­n

0

¬ c

1

(n¬ f (n¬ c

2

(n)}

• O ((n)) = {f (n) : 

c

n

0

takie, że 

n­n

0

¬ f (n¬ cg (n)}

• Ω ((n)) = {f (n) : 

c

n

0

takie, że 

n­n

0

¬ cg (n¬ f (n)}

Fakt

Dla każdych dwóch funkcji (n) i (n) zachodzi zależność (n) = Θ ((n)) wtedy i tylko

wtedy, gdy (n) = ((n)) i (n) = Ω ((n)) .

Twierdzenie o rekurencji uniwersalnej

Niech a ­ 1 i b ­ 1 będą stałymi, (n) będzie pewną funkcją a (n) będzie zdefiniowane dla

nieujemnych liczb całkowitych przez rekurencję:

(n) = aT



n

b



(n)

gdzie

n

b

oznacza



n

b



lub



n

b



Wtedy funkcja (n) może być ograniczona asymptotycznie w

następujący sposób:

• jeśli (n) = O



n

log

b

a−



dla pewnej stałej  > 0to (n) = Θ



n

log

b

a



,

• jeśli (n) = Θ



n

log

b

a



to (n) = Θ



n

log

b

a

ln n



,

• jeśli (n) = Ω



n

log

b

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 (n) = Θ ((n)) .

Zadania

1. Uszeregować poniższe funkcje według relacji :

n

2

,

53

n,

log n,

n!,

1,

n,

log

10

n,

2

n

,

n

n

2. Korzystając z metody rekurencji uniwersalnej podaj oszacowania asymptotyczne dla poniż-

szych rekurencji:

background image

a) (n) = 9T

n

3



n

b) (n) = 4T

n

4



n

c) (n) = T



2n

3



+ 1

d) (n) = 4T

n

2



n

2

e) (n) = 3T

n

3



ln n

f) (n) = 4T

n

2



n

3

3.

Czas działania algorytmu jest opisany przez rekurencję (n) = 7T

n

2



n

2

a konku-

rencyjnego algorytmu A

0

przez T

0

aT

0

n

4



n

2

Jaka jest największa liczba całkowita a, przy

której A

0

jest asymptotycznie szybszy niż A?

4.

Algorytm sortowania przez zliczanie działa na trzech tablicach elementowych: [1..n]

zawierającej nieposortowany ciąg, [1..nw której zwracany jest posortowany ciąg elementów

oraz pomocniczej tablicy [1..kIstotnym założeniem jest, że elementy w tablicy 

wszystkie różne i ze zbioru {12, . . . , k}

procedure SortowaniePrzezZliczanie (A, B, n, k)

for i ← to k

do [i← 0

for i ← to n

do [[i]] ← 1

for i ← to k

do [i← C [i] + [i − 1]

for i ← to n

do [[[i]]] ← A [i]

a) Oszacować złożoność tego algorytmu.

b) Opracować wersję tego algorytmu, gdy dopuścimy powtórzenia w tabeli A.