From: Martin Mares Date: Mon, 3 Sep 2007 10:18:59 +0000 (+0200) Subject: Drobne korektury. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=f80d9c73b9f94c72a465a156bb705c606640b6e5;p=ads1.git Drobne korektury. --- diff --git a/9-dfs/9-dfs.tex b/9-dfs/9-dfs.tex index 3426e0f..53bc939 100644 --- a/9-dfs/9-dfs.tex +++ b/9-dfs/9-dfs.tex @@ -1,10 +1,10 @@ - \input ../lecnotes.tex +\input ../lecnotes.tex -\prednaska{10}{Prùchod grafem}{(zapsali T. Hubík, V. Kolomièenko, L. Slinták)} +\prednaska{9}{Prùchod grafem}{(zapsali T. Hubík, V. Kolomièenko, L. Slinták)} \h{1. do hloubky (DFS)} -\>in(v), out(v) +\>$\$, $\$ \>Hrany rozdìlíme do nekolika tøíd \itemize\ibull @@ -16,26 +16,26 @@ \>{\I Pozn.: u neorientovaných grafù mohou být pouze stromové a zpìtné hrany} -{\I Slo¾itost O(m+n), n ... poèet vrcholù, m ... poèet hran} +{\I Slo¾itost $\O(m+n)$, n ... poèet vrcholù, m ... poèet hran} \h{2. do ¹íøky (BFS)} -{\I Slo¾itost O(m+n)} +{\I Slo¾itost $\O(m+n)$} -\s{Definice:} Lineární uspoøádání $<$ vrcholù grafu G je topologické $\Longleftrightarrow \forall (u,v) \in E(G) : u < v$ +\s{Definice:} {\I Lineární uspoøádání} $<$ vrcholù grafu G je topologické $\Longleftrightarrow \forall (u,v) \in E(G) : u < v$ \>{\I Pozorování: Pro cyklické grafy topologické uspoøádání neexistuje.} -\s{Vìta:} Libovolný acyklický orientovaný graf (DAG) má topologické uspoøádání a lze ho sestrojit v O(m+n). +\s{Vìta:} Libovolný acyklický orientovaný graf (DAG) má topologické uspoøádání a lze ho sestrojit v $\O(m+n)$. \proof -Spustíme DFS, u$<$v právì tehdy, kdy¾ out(u)$>$out(v) +Spustíme DFS, $u < v$ právì tehdy, kdy¾ $\ > \$ hrany: \itemize\ibull -\:stromová - out(u) $>$ out(v) +\:stromová - $\ > \$ \:zpìtná - existuje cyklus a to je spor -\:dopøedná - out(u) $>$ out(v) -\:pøíèná - out(u) $>$ in(u) $>$ out(v) +\:dopøedná - $\ > \$ +\:pøíèná - $\ > \ > \$ \endlist \>{\I Dùsledek:} Orientovaný graf $G$ je cyklický $\Longleftrightarrow$ DFS najde zpìtnou hranu, existuje zpìtná hrana $\Rightarrow$ existuje cyklus, neexistuje zpìtná hrana $\Rightarrow$ existuje topologické uspoøádání $\Rightarrow$ neexistuje cyklus. \qed @@ -47,18 +47,18 @@ hrany: \algo \:Zvolíme topologické uspoøádání na $G$, BÚNO $S$ je minimum. -\:$\forall v: D(v)=-inf ; D(S)=0$ +\:$\forall v: D(v)=-\ ; D(S)=0$ \:Postupnì procházíme vrcholy $v \in V(G)$ v topologickém poøadí a pro $\forall v$ spoèítáme $D(v)$ -\:$D(v)=max(D(n))+1$ +\:$D(v)=\(D(n))+1$ $u:(u,v) \in E(G)$ \endalgo -\>{\I Pozorování:} Ka¾dý DAG obsahuje zdroj (vycházejí z nìj cesty) a stok (cesty do nìj vstupují) +\>{\I Pozorování:} Ka¾dý DAG obsahuje {\I zdroj} (vycházejí z nìj cesty) a {\I stok} (cesty do nìj vstupují) \s{Rozkládání orientovaných grafù na komponenty souvislosti} -\s{Definice:} $R$ bude relace na $V(G)$ tak, ¾e $uRv \Longleftrightarrow$ existuje orientovaná cesta v $G$ z $u$ do $v$ a opaène ??? +\s{Definice:} $R$ bude relace na $V(G)$ tak, ¾e $uRv \Longleftrightarrow$ existuje orientovaná cesta v $G$ z $u$ do $v$ a opaène \s{Definice:} $G$ je silnì souvislý $\Longleftrightarrow \forall (u,v) \in V(G) : uRv$ @@ -88,36 +88,36 @@ $(c_1,c_2) \in E(C(G)) \Longleftrightarrow \exists v_1 \in c_1, v_2 \in c_2 : ( obrázkem a sporem, existuje cyklus $c_1, c_2, ..., c_k$ v $C(G)$. \qed -\h{Algoritmus hladání silnì souvislých komponent grafu v O(n)} +\h{Algoritmus hladání silnì souvislých komponent grafu v \O(n)} \>{\I Pozorování 1:} DFS z vrcholu $v$ projde $\{w, \exists v$-$w$ cesta$ \}$. \>{\I Pozorování 2:} Je-li $C$ stoková komponenta a $v \in V(C)$, pak DFS z $v$ projde právì $C$. -\>{\I Pozorování 3:} Spustíme-li DFS na celý $G$, pak vchol $v$ s maximální $out(v)$ le¾í ve zdrojové SSK. +\>{\I Pozorování 3:} Spustíme-li DFS na celý $G$, pak vchol $v$ s maximální $\$ le¾í ve zdrojové SSK. -\>{\I Pozorování 3*:} Nech» $C_1, C_2$ jsou SSK a $C_1, C_2 \in E(C(G)$, pak max$\{out(u), u \in V(C_1)\} >$ max$\{out(v), v \in V(C_2)\}$. +\>{\I Pozorování 3*:} Nech» $C_1, C_2$ jsou SSK a $C_1, C_2 \in E(C(G)$, pak $\\{\, u \in V(C_1)\} > \\{\, v \in V(C_2)\}$. -\>{\I Pozorování 4:} $G$ a $G^R$ mají stejné SSK ($G^R$ má proti $G$ otoèené hrany). +\>{\I Pozorování 4:} $G$ a $G^R$ mají stejné SSK ( $G^R$ má proti $G$ otoèené hrany ). \s{Algoritmus:} \algo -\:Sestrojíme $G^R$, $O(m+n)$ -\:DFS na $G^R$ $\rightarrow$ $out(v)$, $O(m+n)$ -\:$T$ bude uspoøádání vrcholù podle klesajících $out(v)$, $O(n)$ -\:$\forall v \in V(G)$ v poøadí podle $T$, $O(m+n)$ +\:Sestrojíme $G^R$ \quad $\O(m+n)$ +\:DFS na $G^R \rightarrow \$ \quad $\O(m+n)$ +\:$T$ bude uspoøádání vrcholù podle klesajících $\$ \quad $\O(n)$ +\:$\forall v \in V(G)$ v poøadí podle $T$ \quad $\O(m+n)$ \:pokud $v$ je¹tì nepatøí do ¾ádné komponenty, tak -\::spustím DFS z $v$ a dosa¾ené vrcholy prohlásím za dal¹í SSK, $O(m+n)$ +\::spustím DFS z $v$ a dosa¾ené vrcholy prohlásím za dal¹í SSK \quad $\O(m+n)$ \endalgo -\s{Vìta:} Ka¾dý orientovaný graf lze rozlo¾it na SSK v èase $O(m+n)$ +\s{Vìta:} Ka¾dý orientovaný graf lze rozlo¾it na SSK v èase $\O(m+n)$ \proof Pozorovani 3*: \itemize\ibull -\:1. DFS vstoupí nedøíve do $C_1$: Z $C_2$ vyleze urèitì døív ne¾ z $C_1$ $\Rightarrow$ $out(C_1)>out(C_2)$. -\:2. nejdøíve do $C_2$: Nejdøív se vrátím z celé $C_2$, a¾ pak nìkdy zase vlezu do $C_1$ $\Rightarrow$ $out(C_1)>out(C_2)$. +\:1. DFS vstoupí nedøíve do $C_1$ : Z $C_2$ vyleze urèitì døív ne¾ z $C_1 \Rightarrow \(C_1) > \(C_2)$. +\:2. nejdøíve do $C_2$: Nejdøív se vrátím z celé $C_2$, a¾ pak nìkdy zase vlezu do $C_1 \Rightarrow \(C_1) > \(C_2)$. \endlist \bye