]> mj.ucw.cz Git - ga.git/commitdiff
Dekompozice: Pořádný popis Fredericksonovy clusterizace
authorMartin Mares <mj@ucw.cz>
Tue, 25 Feb 2014 22:40:18 +0000 (23:40 +0100)
committerMartin Mares <mj@ucw.cz>
Tue, 25 Feb 2014 22:40:18 +0000 (23:40 +0100)
9-decomp/9-decomp.tex

index 08ce770e1d2c6aa9ba554b8b03bb93dee2439015..e423487841733c11641184c78c9e1f766d194366 100644 (file)
@@ -299,27 +299,103 @@ nejbli
 \h{Fredericksonova clusterizace}
 
 Mikro/makro-stromová dekompozice není jediný zpùsob, jak stromy rozkládat. Nìkdy
-se hodí napøíklad následující my¹lenka:
+se více hodí následující my¹lenka:
 
-\s{Definice:} {\I (Fredericksonova clusterizace)} Nech» $G$ je graf s~vrcholy stupòù nejvý¹e~3
-a $c\ge 1$. Pak $c$-clusterizací grafu $G$ nazveme libovolný rozklad
-$G$ na~souvislé podgrafy {\I (clustery)} $C_1, C_2, \ldots, C_k$ takový, ¾e platí:
+\s{Definice:} {\I (Fredericksonova clusterizace)} Nech» $k\ge 1$ je pøirozené èíslo
+a $T$~strom s~maximálním stupnìm nejvý¹e~3. Pak $k$-clusterizací stromu~$T$
+nazveme libovolný rozklad $V_1\cup\ldots\cup V_t$ mno¾iny~$V(T)$, pro který platí:
 \itemize\ibull
-\:Ka¾dý vrchol se nachází v~právì jednom clusteru (hrany mohou vést i mezi clustery).
-\:Ka¾dý cluster má nejvý¹e~$c$ vrcholù.
-\:Vnìj¹í stupeò ka¾dého clusteru (tj. poèet hran, které vedou mezi $C_i$ a ostatními
-clustery; mezi ka¾dou dvojicí clusterù poèítáme jen jednu hranu) je nejvý¹e~3.
-Navíc pokud je právì~3, je cluster triviální, èili $\vert C_i \vert = 1$.
-\:®ádné dva sousední clustery nelze spojit.
+\:Podgrafy stromu~$T$ indukované jednotlivými~$V_i$ jsou souvislé.
+Tìmto podgrafùm budeme øíkat {\I clustery} a znaèit je~$C_i$.
+\:Z~ka¾dého clusteru vedou nejvý¹e 3~hrany do sousedních clusterù.
+Takovým hranám øíkáme {\I vnìj¹í,} jejich poèet je {\I vnìj¹í stupeò} clusteru $\<ed>(C_i)$.
+Hrany uvnitø clusterù nazveme {\I vnitøní.}
+\:Nech» $\vert C_i\vert$ znaèí poèet vrcholù clusteru~$C_i$.
+Pak pro v¹echny clustery platí $\vert C_i\vert \le k$
+a pro clustery vnìj¹ího stupnì~3 dokonce $\vert C_i\vert = 1$.
+\:®ádné dva sousední clustery není mo¾né slouèit.
 \endlist
 
-\s{Vìta:} (Frederickson \cite{frederickson91ambivalent}) Ka¾dá $c$-clusterizace grafu $G$ má $\O(\vert V(G)\vert /c)$ clusterù. Existuje
-algoritmus, který jednu takovou najde v~lineárním èase.
+\s{Úmluva:}
+Clustery vnìj¹ího stupnì~0 se nazývají {\I izolované,}
+stupnì~1 {\I listové,}
+stupnì~2 {\I cestové} a
+stupnì~3 {\I vìtvicí.}
 
-\proof První èást rozborem pøípadù, druhá hladovì pomocí DFS. \qed
+\s{Pozorování:} Nech» $C$ a~$D$ jsou sousední clustery (bez újmy na obecnosti $\<ed>(C) \ge \<ed>(D)$).
+Kdy je lze slouèit? Pøedev¹ím $\vert C\vert + \vert D\vert$ musí být nejvý¹e rovno~$k$. Pak mohou
+nastat následující pøípady:
+\itemize\ibull
+\:Pokud~$C$ i~$D$ jsou listové, lze je slouèit do jednoho izolovaného clusteru.
+\:Pokud~$C$ je cestový a $D$~listový, lze je slouèit do listového clusteru.
+\:Pokud~$C$ i~$D$ jsou cestové, lze je slouèit do cestového clusteru.
+\:Pokud~$C$ je vìtvicí a $D$~listový, lze je slouèit do cestového clusteru.
+\:V~ostatních pøípadech sluèovat nelze, nebo» by vznikl cluster vnìj¹ího stupnì~4
+  nebo stupnì~3 s~více ne¾ jedním vrcholem.
+\endlist
+
+\s{Vìta:} (Frederickson \cite{frederickson91ambivalent}) Ka¾dá $k$-clusterizace stromu~$T$
+na $n$~vrcholech obsahuje $\O(n/k)$ clusterù.
+
+\proof
+Pokud clusterizace obsahuje pouze izolované nebo listové clustery, pak je konstantnì
+velká a tvrzení triviálnì platí.
+
+Pokud navíc obsahuje cestové clustery, musí být clustery propojeny do jedné cesty,
+která zaèíná a konèí listovými clustery a ostatní clustery jsou cestové. Cestové
+clustery rozdìlíme na velké (alespoò $k/2$ vrcholù) a malé (ostatní). V¹imneme si,
+¾e malé spolu nemohou sousedit. Velkých je pøitom nejvý¹e $n/k$, tak¾e malých
+nejvý¹e $n/k+1$.
+
+Zbývá obecný pøípad, v~nìm¾ jsou i vìtvicí clustery. Uva¾me clusterizaèní strom~$S$:
+jeho vrcholy odpovídají clusterùm, hrany externím hranám mezi nimi. Tento strom zakoøeòme
+v~libovolném vìtvicím clusteru.
+
+Pokud ve~stromu~$S$ nahradíme ka¾dou nevìtvící se cestu hranou, vznikne nìjaký
+komprimovaný strom~$S'$. V~nìm u¾ jsou pouze listové clustery (coby listy) a
+vìtvicí clustery (jako vnitøní vrcholy).
+
+Nyní si v¹imneme, ¾e pro ka¾dý list~$\ell$ stromu~$S$ platí, ¾e tento cluster
+spolu s~cestovými clustery nad ním (které se schovaly do hrany mezi~$\ell$ a jeho
+otcem) musí mít velikost alespoò~$k$. V~opaèném pøípadì by toti¾ bylo mo¾né
+tyto clustery spoleènì s~vìtvicím clusterem nad nimi slouèit do jediného clusteru,
+co¾ by poru¹ilo poslední podmínku z~definice clusterizace.
+
+Proto strom~$S'$ obsahuje nejvý¹e $n/k$ listù. A~jeliko¾ v¹echny jeho vnitøní
+vrcholy mají alespoò~2 syny, musí být vnitøních vrcholù také nanejvý¹ $n/k$.
+
+Zbývá zapoèítat cestové clustery. Uva¾me hranu~$e$ stromu~$S'$ a cestové clustery,
+které se do ní zkomprimovaly. U¾ víme, ¾e je-li celková velikost tìchto clusterù~$r$,
+mù¾e jich být nanejvý¹ $2r/k + 1$. A~jeliko¾ clustery jsou disjunktní, v~souètu
+pøes v¹echny hrany~$e$ dostaneme $2n/k + \hbox{poèet hran stromu~$S'$} = \O(n/k)$.
+
+Clusterù v¹ech typù je tedy dohromady $\O(n/k)$.
+\qed
+
+\s{Vìta:} (Frederickson \cite{frederickson91ambivalent}) Pro ka¾dé~$k$ lze $k$-clusterizaci
+stromu o~$n$~vrcholech najít v~èase $\O(n)$.
+
+\proof
+Clusterizaci lze najít upraveným hledáním do hloubky, ale pøi tom je nutné øe¹it
+mnoho rùzných pøípadù sluèování clusterù. Místo toho pou¾ijeme následující
+hladový algoritmus.
+
+Nejprve vytvoøíme z~ka¾dého vrcholu triviální cluster. Taková clusterizace
+splòuje v¹echny podmínky kromì poslední. Budeme tedy clustery hladovì sluèovat.
+
+Poøídíme si frontu clusterù, u~nich¾ jsme je¹tì nezkontrolovali sluèitelnost.
+Na poèátku do ní umístíme v¹echny clustery. Pak v¾dy odebereme cluster, prozkoumáme
+jeho sousedy a pokud mezi nimi je nìjaký, s~ním¾ lze sluèovat, tak to provedeme.
+Nový cluster ulo¾íme do fronty, oba staré z~fronty odstraníme.
+
+V¹imneme si, ¾e pøi ka¾dé kontrole poklesne velikost fronty o~1 -- buïto jsme
+nesluèovali a zmizel pouze kontrolovaný cluster, anebo sluèovali, ale pak zmizely
+dva clustery a pøibyl jeden. Jeliko¾ kontrolu i slouèení zvládneme v~konstantním
+èase, celý algoritmus dobìhne v~èase $\O(n)$.
+\qed
 
 \s{Pou¾ití:} Pøedchozí variantu Union-Find problému bychom také mohli vyøe¹it nahrazením
-vrcholù stupnì $>3$ \uv{kruhovými objezdy bez jedné hrany}\foot{tzv. francouzský trik},
+vrcholù stupnì vìt¹ího ne¾~3 \uv{kruhovými objezdy bez jedné hrany},
 nalezením $(\log n)$-clusterizace, pou¾itím bitové reprezentace mno¾in uvnitø clusterù
 a pøebarvovací struktury na~hrany mezi clustery.