udr¾ujeme ve~frontì (v¾dy relaxujeme vrchol na poèátku fronty, novì otevírané
zaøazujeme na~konec). Co toto pravidlo zpùsobí?
-\s{Vìta:} Èasová slo¾itost algoritmu~BFM je $\O(nm)$.
+\s{Vìta:} Èasová slo¾itost algoritmu~BFM èiní $\O(nm)$.
\proof
Bìh algoritmu rozdìlíme na~fáze. Nultá fáze sestává z~vlo¾ení vrcholu~$u$
do~fronty. V~$(i+1)$-ní fázi relaxujeme ty vrcholy, které byly do~fronty
ulo¾eny bìhem $i$-té fáze.
-V¹imneme si, ¾e na~konci $i$-té fáze je ka¾dé ohodnocení $h(v)$ shora omezeno
-délkou nejkrat¹ího ze~sledù z~$u$ do~$v$, které mají nejvý¹e~$i$ hran. Fází je
-tedy nejvý¹e~$n$.
-
-Relaxace ka¾dého vrcholu pøitom trvá lineárnì se stupnìm vrcholu, tak¾e celá
-fáze probìhne v~èase $\O(m)$. V¹echny fáze pak v~$\O(nm)$.
+Jeliko¾ relaxace vrcholu trvá lineárnì se stupnìm vrcholu a ka¾dý vrchol
+se dané fáze úèastní nejvý¹e jednou, trvá jedna fáze $\O(m)$. Zbývá ukázat,
+¾e fází provedeme nejvý¹e~$n$.
+
+Indukcí doká¾eme, ¾e na konci $i$-té fáze je ka¾dé ohodnocení $h(v)$ shora omezeno
+délkou nejkrat¹ího z~$uv$-sledù o~nejvý¹e~$i$ hranách. Pro $i=0$ to triviálnì
+platí. Uva¾ujme nyní vrchol~$v$ na konci $(i+1)$-ní fáze a nìjaký nejkrat¹í $uv$-sled~$P$
+o~$i+1$ hranách. Oznaème $wv$ poslední hranu tohoto sledu a $P'$ sled bez této hrany,
+který tedy má délku~$i$. Podle indukèního pøedpokladu je na konci $i$-té fáze
+$h(w)\le \ell(P')$. Tuto hodnotu získalo $h(w)$ nejpozdìji v~$i$-té fázi, pøi tom jsme
+vrchol~$w$ otevøeli, tak¾e jsme ho nejpozdìji v~$(i+1)$-ní fázi zavøeli a relaxovali.
+Po této relaxaci je ov¹em $h(v)\le h(w)+\ell(w,v)\le \ell(P') + \ell(w,v) = \ell(P)$.
\qed
\s{Cvièení:}
na jediné patro, tedy na pole, které se opravdu ukázalo být optimální volbou pro husté grafy.)
\:{\I Fibonacciho halda} \cite{ft:fibonacci} -- \<Insert> a \<Decrease> stojí $\O(1)$, \<ExtractMin> má slo¾itost
$\O(\log n)$ [v¹e amortizovanì]. Dijkstrùv algoritmus proto dobìhne v~èase $\O(m + n\log n)$.
- To je lineární pro grafy s~hustotou $\Omega(\log n)$.
+ To je lineární pro grafy s~hustotou $\Omega(\log n)$. Té¾e slo¾itosti operací dosahují
+ i jiné, ménì známé haldy \cite{haeupler:rankph,elmasry:violheap}, které mohou být v~praxi
+ výraznì rychlej¹í.
\:{\I Monotónní haldy} -- mù¾eme pou¾ít nìjakou jinou haldu, která vyu¾ívá toho,
¾e posloupnost odebíraných prvkù je neklesající. Pro celá èísla na~\hbox{RAMu} to mù¾e
být napøíklad Thorupova halda \cite{thorup:queue} se slo¾itostí $\O(\log\log n)$ u~operace \<ExtractMin>
acmid = {129784},
publisher = {ACM},
}
+
+@article{ haeupler:rankph,
+ title={Rank-pairing heaps},
+ author={Haeupler, B. and Sen, S. and Tarjan, R.},
+ journal={Algorithms-ESA 2009},
+ pages={659--670},
+ year={2009},
+ publisher={Springer}
+}
+
+@article{ elmasry:violheap,
+ title={{The violation heap: a relaxed Fibonacci-like heap}},
+ author={Elmasry, A.},
+ journal={Computing and Combinatorics},
+ pages={479--488},
+ year={2010},
+ publisher={Springer}
+}