Bellman-Ford
)
Nechť $A_0 = \{ v_0 \}$
Fáze $F_0 =$ otevření počátečního vrcholu $v_0$, čili všech prvků množiny $A_0 = \{ v_0 \}$
$A_i$ je množina vrcholů, které byly otevřeny při relaxování vrcholů z množiny $A_{i-1}$
Vytvoření množiny vrcholů $A_i$ se nazývá fáze $F_i$
Pokud se změní hodnota uzavřeného vrcholu, je znovu otevřen.
Hodnota otevřeného vrcholu se může změnit vícekrát, dříve než je vyjmut z fronty, relaxován a uzavřen.
Během výpočtu může tedy daný vrchol postupně patřit do více $A_i$.
Pro každý nalezený vrchol $v$ platí na konci fáze $F_i$, že $h(v) \le l(S)$ kde $S$ je nejkratší $v_{0}v$-sled o nejvýše $i$ hranách.
Tvrzení dokážeme indukcí podle $i$.
Pro $i = 0$ tvrzení platí: jediný vrchol dosažitelný z $v_0$ sledem s 0 hranami je $v_0$ sám; $h(v_0) = 0$ a pro ostatní vrcholy $v$ je $h(v) = +\infty$
Dále nechť $i > 0$.
Zvolme nějaký nalezený vrchol $v$ na konci fáze $F_i$.
Označme $S$ nejkratší $v_0v$-sled o nejvýše $i$ hranách.
Dále označme $e(S)$ počet hran v sledu $S$.Pokud $e(S) < i$, platilo $h(v) \le l(S)$ už na konci předchozí fáze $F_{i-1}$ a jelikož ohodnocení vrcholů nerostou, platí nadále.
Pokud $e(S) = i$, označme $uv$ jeho poslední hranu a $S'$ podsled z $v_0$ do $u$.
Na konci fáze $F_{i-1}$ je z indukce $h(u) \le l(S')$.
Na tuto hodnotu muselo být h(u) nastaveno nejpozději ve fázi $F_{i-1}$, čímž byl vrchol u otevřen.
Nejpozději ve fázi $F_i$ proto musel být vrchol $u$ relaxován.
Na začátku relaxace muselo stále platit $h(u) \le l(S')$, hodnota $h(u)$ se sice mohla změnit, ale ne zvýšit.
Po relaxaci tedy muselo platit $h(v) \le h(u) + l((u, v)) \le l(S') + l((u, v)) = l(S)$.
$\square$
Nechť $G = (V, E)$ a $n = |V|$. Pokud $G$ neobsahuje záporné cykly, po
fázi $F_n$ se Bellman-Ford
zastaví.
Po fázi $F_{n−1}$ jsou ohodnocení všech vrcholů shora omezena délkami nejkratších cest, protože nejkratší cesty mají nejvýše $n − 1$ hran.
Ve fázi $F_n$ se se tedy ohodnocení vrcholů již nemohou změnit a algoritmus už žádný vrchol neotevře a zastaví se.
$\square$
V grafu bez záporných cyklů nalezne Bellman-Fordův algoritmus všechny vzdálenosti z vrcholu $v_0$ v čase $O(|V| \cdot |E|)$
Podle předchozího důsledku se po $|V|$ fázích algoritmus zastaví a podle Vlastnosti 2 o dosažitelnosti vrcholů a Vlastnosti 3 o významu $h(v)$ na konci relaxačního algoritmu vydá správný výsledek.
Během jedné fáze je přitom každý vrchol relaxován nejvýše jednou, takže celá fáze dohromady trvá $O(|E|)$.
$\square$
Algoritmus SimpleBellman-Ford
je korektní a pracuje v čase $O(|V| \cdot |E|)$