From: Martin Mares Date: Mon, 14 May 2007 18:00:51 +0000 (+0200) Subject: Dalsich par kousku kapitoly o QS. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=431bc2eb1909f379fe8e198cc49949cb14992519;p=ads1.git Dalsich par kousku kapitoly o QS. --- diff --git a/5-qs/5-qs.tex b/5-qs/5-qs.tex index b95ea4f..b28bd5a 100644 --- a/5-qs/5-qs.tex +++ b/5-qs/5-qs.tex @@ -33,4 +33,135 @@ nejefektivn \s{Vìta:} QS s náhodnou volbou pivota má slo¾itost prùmìrnì $\O(n\log n)$ \foot{Vìta': QS s pevnou volbou pivota má v prùmìru pøes v¹echny permutace na vstupu èasovou slo¾itost $\O(n\log n)$.} +\s{Pozorování:} + +\itemize\ibull +\:Ka¾dá fáze rozdìlí vstup na disjunktní èásti + pivoty $X_1, \ldots, X_k$ ($k \geq 2$) + +\:$\forall i: \vert X_i \vert \leq {3\over 4} \vert X \vert$ + +\:$\sum_i \vert X_i \vert \leq \vert X \vert$ + +\:prùmìrná délka fáze je nejvý¹e~2 (proto¾e pravdìpodobnost na vybrání l¾imediánu je alespoò $1/2$) + +\:v prùmìru poèítáme jednu fázi v èase $\O(n)$ + +\:Proto $T(n) = \sum_i T (n_i) + \O(n)$, kde $n = \vert X \vert$, $n_i = \vert X_i \vert$. + +\endlist + +\s{Komprimovaný strom} + +Hloubka je logaritmická $\Rightarrow$ $\O(log n)$ (proto¾e velikost +fáze klesá exponencálnì, a tak po $\O(\log n)$ krocích dostaneme posloupnosti +velikosti~1). + +Práce na jedné hladinì je $\O(n)$. + +$\Downarrow$ + +Celkem je v~prùmìru $\O(n \log n)$. + +\s{Vìta:} +Ka¾dý tøídící algoritmus zalo¾ený na porovnávání +(a prohazování) potøebuje na~vstup délky~$n$ v~nejhor¹ím pøípadì +$\Omega (n \log n)$ porovnání. + +\bye + +\proof + 1) {\tmsamp{BÚNO}} nejdøíve algoritmus porovnává a potom + prohazuje + + {\small{ (algoritmus mù¾eme upravit tak aby + prohazoval a¾ nakonci)}} + + 2) {\tmsamp{BÚNO}} hledáme vstupy, které jsou permutace na \{1 - n\} + + 3) Sestrojíme rozhodovací strom ne¹eho algoritmu + + \begin{tabular}{l} + \ + \begin{tabular}{|l|} + \hline + $x_1 < x_2$\\ + \hline + \end{tabular} + \end{tabular} + + $\swarrow + \searrow$ + + \begin{tabular}{|l|} + \hline + $x_1 < x_3$\\ + \hline + \end{tabular} + + $\swarrow \searrow$ \ + Ka¾dý algoritmus mù¾eme popsat podobným Stromem + + \begin{tabular}{|l|} + \hline + $x_2 < x_3$\\ + \hline + \end{tabular} + + $\swarrow \searrow$ + + {\tmstrong{$x_1 < x_2 < x_3$}} $\Leftarrow$ \ + {\tmstrong{Listy}} {\small{- algoritmus u¾ zde dotøídil a u¾ bude jen + pøehazovat a pak zkonèí}} + + + + Jde vidìt ¾e $\tmmathbf{}$Existence dvou rùzných $\Pi_1 a \Pi_2 $, + + pøi kterých bychom zkonèili ve stejném listu vede ke Sporu + + + + pøitom {\tmstrong{\# listù $\geqslant$ n!}} + + + + {\tmstrong{Pozorování:}} Binární strom hloubku {\tmstrong{k}} + má {\tmstrong{poèet listù $\leq 2^k$ }} + + \begin{tmparmod}{0pt}{2cm}{0pt} + \begin{proof} + {\small{}}Uva¾me binární strom hloubky k s maximálním + poètem listù + + pak v¹echny listy le¾í na poslední hladinì + + víme ¾e na i-té hladinì je $2^i$ vrcholù + + $\tmmathbf{\Rightarrow}$ poèet listù je $2^k$ + + \tmmathbf{$\Rightarrow$} v ka¾édém binárním stromu je + maximálnì $2^k$ listù + \end{proof} + \end{tmparmod} + + {\tiny{pokraèování pùvodního dùkazu...}} + + Z toho co u¾ víme plyne ¾e $\Rightarrow$\begin{tabular}{l} + + \end{tabular}Hloubka stromu je $\geqslant$ log(n!) + + {\small{z Diskrétní matematiky víme ¾e: \ + $\tmmathbf{n^{n / 2} \leq n!} \leq (n / 2)^n$}} + + {\small{ Udìlá se to pomocí {\tmstrong{AG + Nerovnosti}}}} + + tedy $\Rightarrow$ Hloubka stromu je $\geqslant \log (n^{n / 2}) = (n / 2) + \log (n) \Longrightarrow \tmmathbf{\Omega (n \log n)}$ + + +\end{proof} + +\end{document} + \bye