From: Martin Mares Date: Thu, 16 Jun 2011 15:07:18 +0000 (+0200) Subject: Trideni: Korektury od Karla X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=583f7ce8ed9124541682027f37315d030b283b8c;p=ads1.git Trideni: Korektury od Karla --- diff --git a/13-trideni/13-trideni.tex b/13-trideni/13-trideni.tex index 46914df..ebe067c 100644 --- a/13-trideni/13-trideni.tex +++ b/13-trideni/13-trideni.tex @@ -63,38 +63,47 @@ s~rozd \>®ádný algoritmus v tabulce netøídil rychleji ne¾ $\Theta(n\log n)$. To není náhoda -- nasledující vìta nám øíká, ¾e to nejde: -{\bf XXX: Letos jsem vìtu dokazoval trochu jinak, nutno pøedìlat.} - \s{Vìta:} -Ka¾dý tøídící algoritmus zalo¾ený na porovnávání a prohazování prvkù +Ka¾dý deterministický tøídící algoritmus zalo¾ený na porovnávání a kopírování prvkù potøebuje na vstup délky $n$ v nejhor¹ím pøípadì $\Omega (n \log n)$ porovnání. -\proof -Bez újmy na obecnosti budeme nejdøíve pøedpokládat o algoritmu dvì vìci: -Jednak to, ¾e algoritmus nejprve porovnává, a teprve potom prohazuje.\foot{Algoritmus -mù¾eme upravit tak, aby si pamatoval aktuální permutaci prvkù a podle ní prohazoval a¾ na konci.} -Také pøedpokládáme, ¾e vstup algoritmu je permutace na mno¾inì $\{1, \ldots, n\}$. +O pravdìpodobnostních se v prùmìru dá dokázat podobná vìta. + +\proof Bez újmy na obecnosti budeme nejdøíve pøedpokládat o algoritmu dvì vìci: Jednak +to, ¾e algoritmus nejprve porovnává, a teprve potom kopíruje setøídìné prvky do +výsledného pole.\foot{Algoritmus mù¾eme upravit tak, aby si pamatoval aktuální +permutaci prvkù a podle ní prohazoval a¾ na konci.} Také pøedpokládáme, ¾e vstup +algoritmu je permutace na mno¾inì $\{1, \ldots, n\}$. Toto je také bez újmy na +obecnosti, proto¾e dokazujeme ¾e existuje vstup na kterém pobì¾í aspoò takhle dlouho. + +Chování tohoto algoritmu popí¹eme rozhodovacím stromem. V rozhodovacím stromu vnitøní +vrcholy urèují jednotlivá porovnání prvkù a listy odpovídají okam¾ikùm, kdy algoritmus +urèil permutaci. Porovnáváme prvky na jejich pùvodních pozicích. Nikdo nám nebrání +porovnat prvek sám se sebou (proto mù¾e nastat rovnost) nebo porovnat nìco +nìkolikrát\dots -Chování tohoto algoritmu popí¹eme rozhodovacím stromem. V rozhodovacím stromu vnitøní vrcholy -urèují jednotlivá porovnání prvkù a listy odpovídají okam¾ikùm, kdy algoritmus pøestal porovnávat a zaèal prohazovat. +Hloubka rozhodovacího stromu odpovídá poètu porovnání. My chceme dokázat, ¾e porovnání +musí být aspoò $\Omega (n\log n)$. \figure{RozhodovaciStrom.eps}{Rozhodovací Strom}{0.3\hsize} -Vstup je permutace $n$ prvkù, a víme ¾e poèet rùzných permutací je $n!$. Existuje tedy právì $n!$ rùzných vstupù. -Dále si v¹imneme, ¾e nemohou existovat dvì vstupní permutace, pro které by algoritmus skonèil v tém¾e listu rozhodovacího stromu. -Listù stromu je tedy alespoò tolik, kolik je rùzných vstupù, tedy $n!$. +Vstup je permutace $n$ prvkù, a víme ¾e poèet rùzných permutací je $n!$. Existuje tedy +právì $n!$ rùzných vstupù. Kompletní prùbìh algoritmu je urèen pouze výsledky +porovnání. Dále si v¹imneme, ¾e nemohou existovat dvì vstupní permutace, pro které by +algoritmus skonèil v tém¾e listu rozhodovacího stromu. Listù stromu je tedy alespoò +tolik, kolik je rùzných vstupù, tedy $n!$. {\narrower - \s{Lemmátko:} Binární strom hloubky $k$ má nejvý¹e $2^k$ listù. - \par\noindent {\sl Dùkazík:} Uva¾me binární strom hloubky $k$ s maximálním poètem + \s{Lemmátko:} Ternární strom hloubky $k$ má nejvý¹e $3^k$ listù. + \par\noindent {\sl Dùkazík:} Uva¾me ternární strom hloubky $k$ s maximálním poètem listù. V takovém stromu budou v¹echny listy urèitì le¾et na poslední hladinì (kdyby nele¾ely, mù¾eme pod nìkterý list na vy¹¹í hladinì pøidat dal¹í dva vrcholy a získat - tak \uv{listnatìj¹í} strom stejné hloubky). Jeliko¾ na $i$-té hladinì je nejvý¹e $2^i$ - vrcholù, v¹ech listù je nejvý¹e $2^k$. + tak \uv{listnatìj¹í} strom stejné hloubky). Jeliko¾ na $i$-té hladinì je nejvý¹e $3^i$ + vrcholù, v¹ech listù je nejvý¹e $3^k$. \qed } -\>Z~tohoto lemmátka plyne, ¾e rozhodovací strom musí být hluboký alespoò $\log n!$. +\>Z~tohoto lemmátka plyne, ¾e rozhodovací strom musí být hluboký alespoò $\log_3 n!$. \>Zbytek je u¾ snadné cvièení z diskrétní matematiky: