From: Martin Mares Date: Fri, 10 Nov 2006 10:35:58 +0000 (+0100) Subject: Fixed typos. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=8d1efdbbecccc98ba81ee706e700d11b1b0a25e8;p=ga.git Fixed typos. --- diff --git a/3-bipcon/3-bipcon.tex b/3-bipcon/3-bipcon.tex index 99595a1..7415877 100644 --- a/3-bipcon/3-bipcon.tex +++ b/3-bipcon/3-bipcon.tex @@ -37,63 +37,78 @@ jej \s{Degree Split s~násobnostmi:} Pro sudì-regulární grafy s násobnostmi zavedeme operaci Degree Split takto: Graf $G=(V,E)$ rozdìlíme na dva grafy $G_1$ a $G_2$, bude platit $V(G_1) = V(G_2) = V$. Hrany nyní pøidìlíme následujícím zpùsobem: \algo -\:Pokud $e\in E$ v $G$ má sudou násobnost (znaèíme $n(e)$), umístíme ji do $E_1$ i do $E_2$ s násobností ${n(e) \over 2}$, v opaèném pøípadì pøidáme do obou grafù hranu s násobností $\lfloor {n(e) \over 2} \rfloor$. +\:Pokud $e\in E$ v $G$ má sudou násobnost (znaèíme $n(e)$), umístíme ji do $E_1$ i do $E_2$ s násobností ${n(e) \over 2}$, v opaèném pøípadì pøidáme do obou grafù hranu s násobností $\lfloor {n(e) \over 2} \rfloor$. \:Graf se zbylých hran má v¹echny stupnì sudé a je bez multiplicit. Provedeme na nìj pùvodní operaci Degree Split a rozdìlené mno¾iny hran pøidáme do $G_1$ a $G_2$. \endalgo Celý proces lze stihnout v èase $\O(m)$ ($m$ je poèet hran $G$), nebo» v první èásti u ka¾dé hrany pouze zjistíme, zda má sudou násobnost, pøidáme nové hrany v konstantním èase (upravíme násobnosti), a v druhé èásti se provede Split, který má té¾ lineární slo¾itost. Operace Degree Split má tedy slo¾itost $\O(m)$ i v grafu s násobnostmi. -Mìjme nyní $k$-regulární bipartitní graf. Zvolme $t$ tak aby $2^t\geq kn$. -Zvolme dále +Mìjme nyní $k$-regulární bipartitní graf. Zvolme $t$ tak aby $2^t\geq kn$. +Zvolme dále $\alpha := \lfloor {2^t \over k} \rfloor$ a $\beta := 2^t \bmod k$. Do grafu pøidáme hrany a upravíme násobnosti hran tak, aby byl $2^t$ regulární. Dále pøidáme triviální párování ($i$-tý vrchol vlevo se spojí s $i$-tým vrcholem vpravo) s násobností $\beta$. Tuto mno¾inu hran oznaème $F$. Platí $\beta < k \Rightarrow \vert F \vert < 2^t$. Takto získáme $2^t$-regulární graf. Na tento graf budeme aplikovat operaci Degree Split a vybereme si v¾dy tu polovinu, kde bude ménì hran z $F$. Tímto zpùsobem budem graf dìlit dokud budou stupnì vrcholù vìt¹í ne¾ jedna. Tedy $t$-krát. Poslední takto získaný graf bude 1-regulární (párování). V ka¾dém kroku se zbavíme alespoò poloviny hran z $F$. Provedeme to ceklem $t$-krát a tedy výsledné párování bude perfektní párování zadaného grafu. -Slo¾itost algoritmu je $\O(kn \log n)$, proto¾e inicializace algoritmu se dá provést v lineárním èase, provede se $\log (kn)$ iterací po $\O(m)$. +Slo¾itost algoritmu je $\O(kn \log n)$, proto¾e inicializace algoritmu se dá provést v lineárním èase, provede se $\log (kn)$ iterací po $\O(m)$. \h{Algoritmy na hledání globální k-souvislosti} -\s{Hranová k-souvislost} -Problém zji¹tìní stupnì souvislosti grafu lze pøevést na problém hledání minimálního øezu v~grafu. Algoritmus pro hledání minimálního øezu lze zkonstruovat napøíklad tak, ¾e pro ka¾dé dva vrcholy $s$, $t$ zjistíme minimální $st$-øez. Algoritmus mù¾eme zrychlit, pokud si uvìdomíme, ¾e jeden z vrcholù $s$ nebo $t$ lze zvolit pevnì. Pokud pracujeme s orientovanými grafy, musíme projít jak $s \rightarrow t$ øezy tak i $t \rightarrow s$ øezy. Algoritmus bude mít slo¾itost $\O(n^{{5/3}}m)$. -U vrcholové $k$-souvislosti to ov¹em tak snadno nepùjde. Pokud by toti¾ fixovaný vrchol byl souèástí nìjakého minimálního separátoru, algoritmus mù¾e selhat. Pøesto ale nemusíme procházet v¹echny dvojice vrcholù. Staèí si pamatovat, kolik vrcholù $s$ jsme u¾ pro v¹echny $t$ zkontrolovali a nejmen¹í zatím nalezený separátor. Kdy¾ bude poèet vrcholù vìt¹í ne¾ nejmen¹í separátor, tak u¾ jsme jistì na¹li jeden z minimálních øezù. Slo¾itost takového algoritmu pak bude $\O(\kappa (G) n^{3/2} m)$, kde $\kappa(G)$ je stupeò souvislosti $G$, který hledáme. +\>Problém zji¹tìní {\I stupnì hranové souvislosti} grafu lze pøevést na problém hledání minimálního øezu, +který ji¾ pro zadanou dvojici vrcholù umíme øe¹it pomocí Dinicova algoritmu v~èase $\O(n^{2/3}m)$. +Pokud chceme najít minimum pøes v¹echny dvojice, mù¾eme vyzkou¹et v¹echny dvojice $(s,t)$. +To v¹ak lze snadno zrychlit, pokud si uvìdomíme, ¾e jeden z vrcholù $s$ nebo $t$ lze zvolit +pevnì. Pokud pracujeme s orientovanými grafy, musíme projít jak øezy pro $s \rightarrow t$, tak i $t \rightarrow s$. +Algoritmus bude mít slo¾itost $\O(n^{{5/3}}m)$. -Bez tokù se dá ov¹em najít hranová k-souvislost efektivnìji (i v ohodnocených grafech). Uka¾me si, jak na to. +U~{\I vrcholové $k$-souvislosti} to ov¹em tak snadno nepùjde. Pokud by toti¾ fixovaný vrchol byl souèástí nìjakého +minimálního separátoru, algoritmus mù¾e selhat. Pøesto ale nemusíme procházet v¹echny dvojice vrcholù. Staèí si +pamatovat, kolik vrcholù $s$ jsme u¾ pro v¹echny $t$ zkontrolovali a nejmen¹í zatím nalezený separátor. Kdy¾ bude poèet +vrcholù vìt¹í ne¾ nejmen¹í separátor, tak u¾ jsme jistì na¹li jeden z minimálních øezù. Slo¾itost takového algoritmu pak +bude $\O(\kappa (G) n^{3/2} m)$, kde $\kappa(G)$ je stupeò souvislosti $G$, který hledáme. -\h{Algoritmus pro nalezení minimálního globálního øezu v neorientovaných grafech (Namagochi, Ibaraki)} +Pro minimální øezy v~neorientovaných grafech ov¹em existuje rychlej¹í algoritmus, který toky nepou¾ívá. -\noindent Zavedeme znaèení: +\h{Algoritmus Namagochiho a Ibarakiho} + +\>Buï $G$ neorientovaný graf s~ohodnocením na~hranách. Oznaèíme si: + +\s{Znaèení:} \itemize\ibull -\:{$r(u,v)$ buï kapacita minimálního $uv$-øezu} -\:{$d(v)$ buï celková kapacita hran vedoucích z $v$} -\:{$d(U)$ buï kapacita hran vedoucích z mno¾iny $U \subseteq V$, speciálnì $d(U)=d(\overline{U})$} -\:{$d(P,Q)$ buï kapacita hran vedoucích mezi mno¾inami $P,Q$} +\:$r(u,v)$ buï kapacita minimálního $uv$-øezu, +\:$d(P,Q)$ buï kapacita hran vedoucích mezi mno¾inami $P,Q \subseteq V$, +\:$d(P) = d(P,\overline P)$ buï kapacita hran vedoucích mezi $P\subseteq V$ a zbytkem grafu, +\:$d(v) = d(\{v\})$ buï kapacita hran vedoucích z~$v$ (tedy pro neohodnocené grafy stupeò~$v$), +\:analogicky zavedeme $d(v,w)$ a $d(v,P)$. \endlist -\s{Definice} -{\it Legálním uspoøádáním vrcholù} (LU) budeme nazývat lineární uspoøádání vrcholù $v_1, v_2,... ,v_n$ takové, ¾e platí +\s{Definice:} +{\it Legálním uspoøádáním vrcholù} (LU) budeme nazývat lineární uspoøádání vrcholù $v_1 \ldots v_n$ takové, ¾e platí $d(\{v_1 \ldots v_{i-1}\},v_i) \geq d(\{v_1 \ldots v_{i-1}\},v_j)$ pro $1 \leq ii$, $v_i$ a $v_j$ jsou oddìleny øezem $C$ a $j$ je minimální takové. \endalgo -Ka¾dé $u_{i-1}$ je tedy buï $u_i$, pokud jsou $v_i$ a $v_{i-1}$ na stejné stranì øezu, nebo $u_{i-1}$ je $v_i$ pokud jsou $v_i$ a $v_{i-1}$ na opaèné stranì øezu. -Dostáváme tedy, ¾e $d(\{v_1...v_{i-1}\},u_i)\leq d(\{v_1...v_{i-1}\},u_{i-1})$, proto¾e buïto $u_i=u_{i-1}$ a pak je nerovnost splnìna jako rovnost, nebo je $u_i=v_j$, $j>i$ a nerovnost plyne z LU vrcholù $v_i$. +Ka¾dé $u_{i-1}$ je tedy buï $u_i$, pokud jsou $v_i$ a $v_{i-1}$ na stejné stranì øezu, nebo $u_{i-1}$ je $v_i$ pokud +jsou $v_i$ a $v_{i-1}$ na opaèné stranì øezu. Dostáváme tedy, ¾e $d(\{v_1\ldots v_{i-1}\},u_i)\leq d(\{v_1\ldots +v_{i-1}\},u_{i-1})$, proto¾e buïto $u_i=u_{i-1}$, a pak je nerovnost splnìna jako rovnost, nebo je $u_i=v_j$, $j>i$ a +nerovnost plyne z LU vrcholù $v_i$. -Chceme ukázat, ¾e velikost libovolného øezu je alespoò taková jako velikost øezu kolem vrcholu $v_n$. -Platí, ¾e $ \vert C \vert \geq \sum_{i=1}^{n-1} d(v_i,u_i)$. Uká¾eme, ¾e pravá strana je alespoò $d(v_n)$. +Chceme ukázat, ¾e velikost libovolného øezu je alespoò taková, jako velikost øezu kolem vrcholu $v_n$. +Platí, ¾e $ \vert C \vert \geq \sum_{i=1}^{n-1} d(v_i,u_i)$. Uká¾eme, ¾e pravá strana je alespoò $d(v_n)$: -$$\sum_{i=1}^{n-1} d(v_i,u_i) = \sum_{i=1}^{n-1} d(\{v_1..v_i\},u_i) - d(\{v_1 \ldots v_{i-1}\},u_i) \geq \sum_{i=1}^{n-1} d(\{v_1 \ldots v_i\},u_i) - d(\{v_1 .. v_{i-1}\},u_{i-1}) = $$ - -$$ = d(\{v_1 \ldots v_{n-1}\},u_{n-1}) - d(\{v_1 \ldots v_0\},u_0) = d(\{v_1 \ldots v_{n-1}\},v_n) - 0.$$ +$$\eqalign{ +\sum_{i=1}^{n-1} d(v_i,u_i) &= \sum_{i=1}^{n-1} d(\{v_1\ldots v_i\},u_i) - d(\{v_1 \ldots v_{i-1}\},u_i) \geq \sum_{i=1}^{n-1} d(\{v_1 \ldots v_i\},u_i) - d(\{v_1 \ldots v_{i-1}\},u_{i-1}) = \cr +&= d(\{v_1 \ldots v_{n-1}\},u_{n-1}) - d(\{v_1 \ldots v_0\},u_0) = d(\{v_1 \ldots v_{n-1}\},v_n) - 0 = d(v_n).\cr +}$$ \qed Dokázali jsme, ¾e libovolný øez separující $v_{n-1}$ a $v_n$ je vìt¹í ne¾ jednoduchý øez skládající se jen z hran kolem~$v_n$. Kdy¾ tedy sestavíme nìjakou LU posloupnost vrcholù, budeme mít k dispozici jednoduchý minimální øez $v_{n-1}$ a~$v_n$. Následnì vytvoøíme graf $G'$, v nìm¾ $v_{n-1}$ a $v_n$ skontrahujeme. Rekurzivnì najdeme minimální øez v $G'$. Hledaný minimální øez poté buïto oddìluje vrcholy $v_n$ a $v_{n-1}$ a potom je øez kolem vrcholu $v_n$ minimální, nebo vrcholy $v_n$ a $v_{n-1}$ neoddìluje, a v takovém pøípadì jej najdeme rekurzivnì. Hledaný øez je tedy men¹í z rekurzivnì nalezeného øezu a øezu kolem $v_n$. @@ -101,16 +116,16 @@ Dok Zbývá ukázat, jak konstruovat LU. Postaèí hladovì: Pamatujeme si $\forall v\neq v_1 \ldots v_{i-1}$ hodnotu $d(\{v_1 \ldots v_{i-1},v)$, oznaème ji $z_v$. V ka¾dém kroku vybereme vrchol $v$ s maximální hodnotou $z_v$ a prohlásíme ho za $v_i$ a pøepoèítáme~$z_v$. Zde se hodí datová struktura, která doká¾e rychle hledat maxima a zvy¹ovat hodnoty prvkù, -napøíklad Fibonacciho halda. Ta zvládne \ v~èase $(\log n)$ a \ v~$\O(1)$ +napøíklad Fibonacciho halda. Ta zvládne \ v~èase $\O(\log n)$ a \ v~$\O(1)$ amortizovanì. Celkem pak ná¹ algoritmus bude mít slo¾itost $\O(n(m+n\log n))$ pro obecné kapacity. -Pokud jsou kapacity malá celá èísla, mù¾eme vyu¾ít balíèkové struktury. Budeme +Pokud jsou kapacity malá celá èísla, mù¾eme vyu¾ít pøíhrádkové struktury. Budeme si udr¾ovat obousmìrný seznam zatím pou¾itých hodnot $z_v$, ka¾dý prvek takového seznamu bude obsahovat v¹echny vrcholy se spoleènou hodnotou $z_v$. Kdy¾ budeme mít seznam seøazený, vybrání minimálního prvku znamená pouze podívat se na první prvek seznamu a z nìj odebrat jeden vrchol, pøípadnì celý prvek ze seznamu odstranit. Operace \ poté bude reprezentovat pouze pøesunutí vrcholu o malý poèet pøihrádek, pøípadnì zalo¾ení nové pøihrádky na správném místì. -\ i \ pak budou mít slo¾itost $\O(1)$ amortizovanì a celý algoritmus $\O(mn)$. +\ i \ pak budou mít slo¾itost $\O(1)$ a celý algoritmus $\O(mn)$. \bye