Buď neorientovaný graf $G = (V,E)$ a startovní vrchol $s \in V$ vstupem BFS
,
pak výstupem bude
Pole vzdáleností $D$ takové, že
Pole předchůdcu $P$ takové, že
BFS
)
Algoritmus BFS
$(G, s)$ se vždy zastaví.
Každý vrchol je přidán do fronty $Q$ nejvýše jednou, neboť je předtím otevřen a nemůže už tedy vícekrát splnit podmínku na řádku (10), že je nenalezený.
V každé iteraci cyklu (7)–(15) je jeden vrchol odebrán z fronty.
% Algoritmus se tedy zastaví nejvýše po $|V(G)|$ iteracích cyklu (7)–(15).
$\square$
BFS
fáze $F_i$ a BFS
hladiny $H_i$)
Hladina $H_0 = \{s\}$.
Fáze $F_0$ trvá od odebrání $s$ z $Q$, otevření a vložení všech jeho sousedů do $Q$ až do uzavření $s$.
Hladina $H_i$ je množina všech vrcholů otevřených a vložených do $Q$ ve fázi $F_{i−1}$.
Fáze $F_i$ trvá od konce fáze $F_{i−1}$ až po uzavření všech vrcholů z $H_i$ (zahrnuje tedy vybrání všech vrcholů z $H_i$ z $Q$, otevření jejich dosud nenalezených sousedů a vložení těchto sousedů do $Q$).
Nechť $h$ je číslo poslední fáze BFS
($G, s$)
(po ní se BFS
($G, s$) zastaví).
BFS
)
Vlastost 1: Po skončení BFS
($G, s$) jsou uzavřené právě ty vrcholy,
do kterých vede cesta ze startu $s$ a ostatní vrcholy zůstanou nenalezené.
Vlastost 2: Pro všechny uzavřené vrcholy v platí $D[v] = d(s, v) =$ délka nejkratší cesty ze startu $s$ do vrcholu $v$.
Vlastost 3: Pro všechny uzavřené vrcholy $v$ platí $[v] = w$, kde w je předchůdce $v$ na nějaké nejkratší cestě ze startu $s$ do vrcholu $v$.
Prvním otevřeným a následně uzavřeným vrcholem je start $s$.
BFS
otvírá na řádku (11) všechny nové sousedy dříve otevřených vrcholů.
$(⊇)$ Vrchol tedy bude otevřen (a později pak uzavřen) pouze tehdy, když do něho ze startu $s$ vede posloupnost sousedních hran.
$(⊆)$ Naopak, existuje-li do vrcholu nějaká posloupnost sousedních hran z $s$, bude v průběhu algoritmu někdy otevřen.
Hladiny $H_i, i = 0, . . . , h$, tvoří rozklad množiny uzavřených vrcholů.
$\square$
Triviálně platí ve fázi $F_0$. Uvažujme fázi $F_i, i > 0$.
Pokud $v ∈ H_i$, pak $D[v] = i$ a tedy z $s$ do $v$ musí existovat cesta o $i$ hranách. Proto je vzdálenost $d(s, v) ≤ i$.
Ukážeme nyní, že nemůže existovat $s$ - $v$-cesta kratší než $i$. Pro spor, nechť existuje cesta $P$ z $s$ do $v$ délky $j$, kde $j < i$.
Protože $j < i$, musí dle holubníkového principu na $P$ existovat dva sousední vrcholy $w$ a $w′$ a dvě nesousední hladiny $H_k$ a $H_ℓ$ (tedy $|k − ℓ| > 1$) tak, že $w ∈ H_k$ a $w′ ∈ H_ℓ$.
To však není možné, neboť dva sousední vrcholy na P nutně musí ležet ve dvou sousedních hladinách. Spor.
Proto $d(s, v) = i = D[v]$.
$\square$
TBD
$\square$