From 6ac344caafb862d21a521ca1abea157ab4fbef29 Mon Sep 17 00:00:00 2001 From: Jan 'Moskyt' Matejka Date: Mon, 20 Jun 2011 18:12:40 +0200 Subject: [PATCH] 4: mosty --- 4-dfs/4-dfs.tex | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/4-dfs/4-dfs.tex b/4-dfs/4-dfs.tex index f8af8bb..6e82533 100644 --- a/4-dfs/4-dfs.tex +++ b/4-dfs/4-dfs.tex @@ -151,5 +151,38 @@ D \algout Obsah zásobníku $Z$ (nalezený cyklus). \endalgo +\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 +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. + +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. + +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$). + +\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. + +Jak spoèítáme $z(v)$? + +\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)$, +\::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 -- 2.39.2