6 \def\note{\color{RawSienna}}
7 \def\cmt{~~\color{Blue}}
8 \def\?{\ifmmode\hbox{\bffont ?}\else{\sem ?}\fi}
10 \slide{Nejkrat¹í cesty: Prùzkumnický algoritmus}
15 \:$Z(*)\leftarrow{\bf N}$, $Z(v_0)={\bf O}$ {\cmt znaèky: {\sem N}evidìn, {\sem O}tevøen, {\sem U}zavøen}
16 \:$D(*)\leftarrow\infty$, $D(v_0)=0$ {\cmt odhady vzdáleností}
17 \:$P(*)\leftarrow \?$ {\cmt pøedchùdci, \?=nedefinováno}
18 \:Dokud existuje vrchol~$u$ takový, ¾e $Z(u)={\bf O}$:
19 \::{\note Prozkoumáme vrchol~$u$, èili:}
20 \::$Z(u)\leftarrow{\bf U}$
21 \::Pro v¹echny vrcholy~$v$, do kterých vede hrana z~$u$:
22 \:::Je-li $D(u)+\ell(u,v) < D(v)$:
23 \::::$D(v) \leftarrow D(u) + \ell(u,v)$
24 \::::$P(v) \leftarrow u$
25 \::::$Z(v) \leftarrow {\bf O}$
31 {\sem Vìta:} Pokud se alg. zastaví, pak $\forall v \; D(v)=d(v_0,v)$ a graf $C=(V_C,E_C)$,
32 $V_C=\{ v\in V \mid Z(v)\ne{\bf N} \}, E_C = \{ \left( v,P(v) \right) \mid v\in V_C \land P(v)\ne\? \}$,\\
33 je {\sit strom nejkrat¹ích cest.}
38 \slide{Nejkrat¹í cesty: Dijkstrùv algoritmus}
43 \:{\note Inicializace jako u~Prùzkumnického algoritmu}
44 \:Dokud existuje vrchol~$u$ takový, ¾e $Z(u)={\bf O}$:
45 \::Zvolíme~$u$ tak, aby $Z(u)={\bf O}$ a $D(u)$ bylo minimální.
46 \::{\note Prozkoumáme vrchol~$u$.}
51 {\sem Lemma:} Algoritmus jednou uzavøený vrchol znovu neotevøe.
53 {\sem Dùsledek:} Algoritmus se zastaví po nejvý¹e~$n$ prùchodech a vydá\\
54 vzdálenosti z~$v_0$ a strom nejkrat¹ích cest.
58 \slide{Dijkstrùv algoritmus: Jádro pudla}
63 \:$M\leftarrow V$ {\cmt mno¾ina nevidìných a otevøených vrcholù}
64 \:{\color{OliveGreen}$D(*)\leftarrow\infty$, $D(v_0)=0$} {\cmt Insert}
65 \:Dokud $M\ne\emptyset$:
66 \::{\color{OliveGreen}Zvolíme $u\in M$, jeho¾ $D(u)$ je minimální.} {\cmt DeleteMin}
67 \::{\color{OliveGreen}$M\leftarrow M\setminus\{u\}$}
68 \::Je-li $D(u)=\infty$, skonèíme.
69 \::Pro v¹echny vrcholy~$v$, do kterých vede hrana z~$u$:
70 \:::{\color{OliveGreen}$D(v) \leftarrow \min( D(v), D(u)+\ell(u,v))$ {\cmt Decrease} \\
71 {\note (nutné pouze pokud $v\in M$)}}
76 {\sem Pozorování:} Potøebujeme datovou strukturu pro uchování v¹ech $D(\cdot)$,
77 která bude umìt operace {\color{Blue}\<Insert>}, {\color{Blue}\<DeleteMin>} a {\color{Blue}\<Decrease>}.
81 Èasová slo¾itost pak bude $\O(n\cdot T_{\hbox{\ifonts Ins}} + n\cdot T_{\hbox{\ifonts DelMin}} + m\cdot T_{\hbox{\ifonts Dec}})$.