]> mj.ucw.cz Git - ads1.git/commitdiff
Rozdel a panuj: Oprava preklepu.
authorMartin Mares <mj@ucw.cz>
Mon, 6 Jul 2009 13:27:32 +0000 (15:27 +0200)
committerMartin Mares <mj@ucw.cz>
Mon, 6 Jul 2009 13:27:32 +0000 (15:27 +0200)
8-rozdel/8-rozdel.tex

index 5c46706bd66ca5e2e009f5e1af8b059420582455..10a19f8f776cac3fa427f6a28a33431b12abb308 100644 (file)
@@ -333,7 +333,7 @@ Pro 
 \:Rekurzivnì se zavoláme na~jednu z $L,S,P$ (tu, ve které se má vyskytovat hledaný prvek)
 \endalgo
 
-Ná¹ deterministický algoritmus tedy roz¹iøuje pùvodní algoritmus tak, ¾e v¾dy, kdy¾ je potøeba zvolit pivota z posloupnosti X, tak si posloupnost rozdìlí na~pìtice a~v ka¾dé spoète medián. Následnì potøebuje medián z tìchto mediánù, co¾ bude výsledný pivot -- medián V~pùvodní posloupnosti. Ten získá tak, ¾e se znovu zavolá na~\<Select> s parametry posloupnost mediánù a~èíslo $\lceil n/10 \rceil$, nebo» potøebuje právì prostøední prvek této poslounosti, která má délku $\lceil n/5 \rceil$. Kdy¾ máme koneènì výhodného pivota (medián) nalezeného, tak mù¾eme pokraèovat, ¾e si posloupnost opìt rozdìlíme na~tøi hromádky -- prvky men¹í ($L$), stejné ($S$) a~vìt¹í ($P$) ne¾ pivot. Následnì jen vybereme hromádku, která odpovídá umístìní $k$-tého nejmen¹ího prvku, a~na tu se rekurzivnì zavoláme.
+Ná¹ deterministický algoritmus tedy roz¹iøuje pùvodní algoritmus tak, ¾e v¾dy, kdy¾ je potøeba zvolit pivota z posloupnosti X, tak si posloupnost rozdìlí na~pìtice a~v ka¾dé spoète medián. Následnì potøebuje medián z tìchto mediánù, co¾ bude výsledný pivot -- medián V~pùvodní posloupnosti. Ten získá tak, ¾e se znovu zavolá na~\<Select> s parametry posloupnost mediánù a~èíslo $\lceil n/10 \rceil$, nebo» potøebuje právì prostøední prvek této poslounosti, která má délku $\lceil n/5 \rceil$. Kdy¾ máme koneènì výhodného pivota nalezeného, tak mù¾eme pokraèovat, ¾e si posloupnost opìt rozdìlíme na~tøi hromádky -- prvky men¹í ($L$), stejné ($S$) a~vìt¹í ($P$) ne¾ pivot. Následnì jen vybereme hromádku, která odpovídá umístìní $k$-tého nejmen¹ího prvku, a~na tu se rekurzivnì zavoláme.
 
 Abychom dokázali, ¾e tento algoritmus bude mít opravdu lineární èasovou slo¾itost, musíme si nejdøíve dokázat následující lemma:
 
@@ -400,7 +400,7 @@ St
 Aby $C_{ij}$ se rovnalo $1$ pro prvky $y_i$ a~$y_j$, tak se musel pro podposloupnost $y_i, \dots, y_j$ stát pivotem jako první jeden z $y_i$ nebo $y_j$. Kdyby se tak nestalo, tak spolu pøi tomto rozdìlování prvky $y_i$ a~$y_j$ nebudou porovnány a~dostanou se ka¾dý do~jiné skupiny ($L$ a~$P$), tak¾e u¾ spolu porovnány nikdy ani nebudou.
 Pravdìpodobnost, ¾e $y_i$ nebo $y_j$ se staly pivotem pro posloupnost $y_i, \dots, y_j$  je rovna $2 \over {j-i+1}$ (nebo» pivota vybíráme rovnomìrnì náhodnì). Proto mù¾eme koneènì vyjádøit:
 
-$${\bb E}[C] = \sum_{1 \le i < j \le n} {2\over{j-i+1}} = \sum_{d=1}^{n-1} { \sum_{n=1}^{n-d \le n} {2\over{d + 1}} }\le \sum_{d=1}^{n-1} {2n\over{d + 1}} = 2n\sum_{d=2}^n {1\over d} = \Theta(n \cdot\log{n}).$$
+$${\bb E}[C] = \sum_{1 \le i < j \le n} {2\over{j-i+1}} = \sum_{d=1}^{n-1} { \sum_{n=1}^{n-d} {2\over{d + 1}} }\le \sum_{d=1}^{n-1} {2n\over{d + 1}} = 2n\sum_{d=2}^n {1\over d} = \Theta(n \cdot\log{n}).$$
 
 \qed