]> mj.ucw.cz Git - ads1.git/commitdiff
Korektury, připsané kritické hrany
authorJan 'Moskyt' Matejka <moskyto@atrey.karlin.mff.cuni.cz>
Mon, 20 Jun 2011 21:18:22 +0000 (23:18 +0200)
committerJan 'Moskyt' Matejka <moskyto@atrey.karlin.mff.cuni.cz>
Mon, 20 Jun 2011 21:18:22 +0000 (23:18 +0200)
4-dfs/4-dfs.tex

index 2ca975e71895de575d51075695b16c4df92cb780..4b594cb27ac1bfc54c5e0a8b8867fe998ddeb860 100644 (file)
@@ -3,13 +3,13 @@
 
 \prednaska{4}{Aplikace DFS}{}
 
-\h{Nejdel¹í cesta v DAG-u (v grafu bez orientovaných cyklù):}
+\h{Nejdel¹í cesta v ohodnoceném DAG-u (v grafu bez orientovaných cyklù)}
 
 \s{Definice:} Pro $u,v \in V$ bude $D(u,v)$ délka nejdel¹í cesty z $u$ do $v$.
 $D^R(u,v)$ bude délka nejdel¹í cesty v grafu s otoèenými hranami.
 
-Neexistuje-li cesta z $u$ do $v$, nech» $D(u,v) = -\inf$. Zvolme pak $D(u)$
-jako nejdel¹í cestu zaèínající v $u$. $$D(u) = \max_{v\in V} D(u,v)$$
+Neexistuje-li cesta z $u$ do $v$, nech» $D(u,v) = -\infty$.
+%Zvolme pak $D(u)$ jako nejdel¹í cestu zaèínající v $u$. Pak platí: $$D(u) = \max_{v\in V} D(u,v)$$
 
 \s{Algoritmus:}
 
@@ -17,17 +17,30 @@ jako nejdel
 \algin Graf $G$, v nìm vrchol $u$.
 \:Zvolíme topologické uspoøádání $w_1 \dots w_n$ na $G$. Nech» $w_k=u$.
 \:Pøedpoèítáme si ke ka¾dému vrcholu v¹echny jeho pøedchùdce, tedy mno¾inu
-$W_i = \{w_j\mid(w_j,w_i)\in E\}$, v èase i pamìti $\O(n+m)$.
-\:Pro v¹echny vrcholy $w_i$ pøed $u$ ($\forall w_i\mid i<k$) nastavíme délku cesty $D(u,w_i)=-\infty$, pro $u$ pak $D(u,u)=0$.
-\:Postupnì procházíme vrcholy $w_i \in V(G)$ v topologickém poøadí a pro ka¾dý z nich spoèítáme $D(w_i)$.
-$$D(u,w_i)=\max_{w_j \mid (w_j, w_i) \in E} (D(u,w_j)) + e(w_i,w_j)$$
-\:Nalezneme maximum z $D(u,w_i)$ pøes v¹echna $i$ a oznaèíme jej $D(u)$.
-\algout Vrátime $D(u)$.
+$W_i = \{w_j\mid(w_j,w_i)\in E\}$.
+\:Pro v¹echny vrcholy $w_i$ pøed $u$ ($\forall w_i: i<k$) nastavíme délku cesty $D(u,w_i)=-\infty$, pro $u$ pak $D(u,u)=0$.
+\:Postupnì procházíme vrcholy $w_i \in V(G)$ v topologickém poøadí a pro ka¾dý z nich spoèítáme $D(u,w_i)$.
+$$D(u,w_i)=\max_{w_j \mid (w_j, w_i) \in E} (D(u,w_j)+ e(w_i,w_j))$$
+\algout $\left\{\strut D(u,w_i)\right\}$.
 \endalgo
 \s{Èasová slo¾itost:} Sestrojení topologického uspoøádání a pøedpoèet v $\O(n+m)$. Postupné poèítání $D(u,w)$ také v $\O(n+m)$, celkem $\O(n+m)$.
 
+\s{Pamì»ová slo¾itost:} Pøedpoèet pøedchùdcù zabere $\O(n+m)$ pamìti.
+
+\h{Hledání kritických hran v ohodnoceném DAG-u}
 \s{Definice:} Hrana je kritická právì tehdy, kdy¾ le¾í na nìkteré z nejdel¹ích cest.
 
+\s{Pozorování:} Hrana $(x,y)$ je kritická právì tehdy, kdy¾ $D(u,x) + e(x,y) = D(u,y)$.
+
+\s{Algoritmus:}
+\algo
+\algin Graf $G$, v nìm vrchol $u$.
+\:Nalezneme v grafu $G$ nejdel¹í cesty z $u$ pøedchozím algoritmem
+\:Vybereme ty hrany, které splòují rovnost $D(u,x) + e(x,y) = D(u,y)$ -- kritické
+\algout Seznam kritických hran.
+\endalgo
+\s{Èasová a pamì»ová slo¾itost:} $\O(n+m)$
+
 %\>{\I Pozorování:} $e = (x,y)$ kritická kdy¾ $D(x) + D^R(y) + e(x,y) = D(v)$
 % MQ: Toto pozorování mì mate. Co tam má být doopravdy?