souvislosti, která tvoøí zdroj v $C(G)$.
\s{Trik:} Uva¾ujme graf $G^R$ (graf $G$, ve kterém otoèíme orientace v¹ech hran). Pokud
-$v$~le¾í ve zdrojové komponentì grafu $G$, pak $<DFS>(v)$ v $G^R$ projde právì
+$v$~le¾í ve zdrojové komponentì grafu $G$, pak $\<DFS>(v)$ v $G^R$ projde právì
komponenty~$G$.
-Pustíme-li $<DFS>(G)$, pak vrchol s maximálním $\<out>(v)$ le¾í nutnì ve zdrojové
+Pustíme-li $\<DFS>(G)$, pak vrchol s maximálním $\<out>(v)$ le¾í nutnì ve zdrojové
komponentì (laskavý ètenáø doká¾e samostatnì).
\s{Tvrzeníèko:} Dále pokud $(C_1, C_2) \in E(C(G))$, pak $$\max_{x \in C_1} \<out>(x) > \max_{x \in C_2} \<out>(x).$$
Algoritmus na vypsání {\I v¹ech} cyklù v grafu si neuká¾eme, nebo» tento
problém je tì¾¹í, ne¾ se zdá. Zde probíráme nalezení {\I nìjakého} cyklu v grafu.
-\s{Lemma:} Cyklus je v grafu $G$ právì tehdy, kdy¾ $<DFS>(G)$ oznaèí nìjakou
+\s{Lemma:} Cyklus je v grafu $G$ právì tehdy, kdy¾ $\<DFS>(G)$ oznaèí nìjakou
hranu jako zpìtnou.
-\proof Nech» je v grafu $G$ cyklus $v_1,v_2,\dots,v_k,v_1$, nech» $<DFS>(G)$ urèí
+\proof Nech» je v grafu $G$ cyklus $v_1,v_2,\dots,v_k,v_1$, nech» $\<DFS>(G)$ urèí
nìjakou funkci $\<out>$. Nech» je oznaèení vrcholù takové, ¾e $\<out>(v_1)$ je
maximální pøes celý cyklus. Pak jistì $\<out>(v_k) < \<out>(v_1)$.
\h{Hledání mostù v neorientovaném grafu}
-\s{Definice:} Hrana $(u,v) \in E(G)$ je {\I most}, pokud se jejím odebráním
+\s{Definice:} Hrana $uv \in E(G)$ je {\I most}, pokud se jejím odebráním
z~grafu $G$ zvý¹í poèet komponent souvislosti tohoto grafu.
-\s{Pozorování:} Hrana, která je v nìjakém cyklu, nemù¾e být mostem. Cyklus je
-toti¾ sám o~sobì 2-souvislý. V¹echny ostatní hrany naopak mosty jsou.
+\s{Pozorování:} Hrana, která je v nìjakém cyklu, nemù¾e být mostem. Z cyklu
+toti¾ lze libovolnì odebrat jednu hranu a pøesto zùstane souvislý. V¹echny
+ostatní hrany naopak mosty jsou.
-Hledáme tedy v¹echny hrany, které nejsou v ¾ádném cyklu. Projdeme graf zase
-pomocí DFS, které bude upravené tak, ¾e ka¾dému vrcholu $v$ pøiøadí
-navíc~$h(v)$ -- hloubku ve stromì DFS.
+Mù¾e být mostem jiná hrana ne¾ stromová? Zpìtné hrany nutnì tvoøí cyklus.
+Pøíèné a dopøedné se v neorientovaném DFS neobjeví.
-Kdy je hrana $(u,v)$ v nìjakém cyklu? Kdy¾ existuje cesta $v\dots w$ (a nebo
-$v=w$), zpìtná hrana $(w,x)$ a cesta $x\dots u$ (a nebo $x=u$).
+Hledáme tedy v¹echny stromové hrany, které nejsou v ¾ádném cyklu. Projdeme graf
+zase pomocí upraveného DFS.
-\s{Algoritmus} bude je¹tì trochu více upravené DFS. Pro ka¾dý vrchol~$v$ si
-budeme kromì hloubky je¹tì pamatovat nejmen¹í hloubku~$z(v)$, do které z~jeho
-podstromu vedou zpìtné hrany.
+Kdy je hrana $uv$ v nìjakém cyklu? Kdy¾ existuje cesta $v\dots w$ (a nebo
+$v=w$), zpìtná hrana $wx$ a cesta $x\dots u$ (a nebo $x=u$).
-Jak spoèítáme $z(v)$?
+\smallskip
+\s{Algoritmus} bude je¹tì trochu více upravené DFS. Pro ka¾dý vrchol~$v$ si
+budeme kromì hloubky je¹tì pamatovat $z(v)$. To bude nejmen¹í \<in> vrcholu,
+do kterého se dá dostat po zpìtných hranách z~vrcholu $v$ nebo podstromu pod ním.
\algo
-\:Vstoupíme do vrcholu $u$ jako DFS, nastavíme $h(u)$.
-\:$x \la $~minimum z $h(v)$ pøes v¹echny zpìtné hrany $(u,v)$
-\:$y \la $~minimum ze $z(w)$ pøes v¹echny stromové hrany $(u,w)$
-\:$z(u) = \min (x,y)$
-\:Pokud $z(u) \ge h(u)$,
+\:Vstoupíme do vrcholu $u$ jako DFS.
+\:$x \la $~minimum z $\<in>(v)$ pøes v¹echny zpìtné hrany $uv$
+\:$y \la $~minimum ze $z(w)$ pøes v¹echny stromové hrany $uw$
+\:$z(u) \la \min xy$
+\:Pokud $z(u) \ge \<in>(u)$,
\::je jistì mostem hrana, po které jsme vstoupili do $u$.
\endalgo
-Mù¾e být mostem jiná hrana ne¾ stromová? Zpìtné hrany nutnì tvoøí cyklus.
-Pøíèné a dopøedné se v neorientovaném DFS neobjeví.
\qed
\bye