1.6 KiB
1.6 KiB
Úloha minimální kostry
Nechť G
je souvislý ohodnocený neorientovaný graf a nechť T
je kostra grafu G
. Potom číslo
\displaystyle w(T) = \sum_{e \in E(T)} w(e)
nazveme vahou kostry T
v grafu $G$. Kostru T'
takovou, že w(T') = \min\{ w(T); T \text{ je kostra } G \}
, nazveme minimální kostrou grafu $G$.
Algoritmus - O. Borůvka
- Vstup: souvislý ohodnocený neorientovaný graf.
F
je faktor grafuG
sE(F) = \emptyset
(nemá žádné hrany).- Existuje hrana
e \in E(G) - E(F)
taková, že faktorF' = (V(G), E(F) \cup \{e\})
neobsahuje kružnici?- Pokud ne - KONEC, pokud ano, pokračuj na 3.
- Ze všech takových hran vyber hranu
e'
s minimální váhou a položF = (V(G), E(F) \cup \{e'\})
a jdi na 2.
Věta: Nechť G
je souvislý ohodnocený neorientovaný graf. Potom faktor F
nalezený předchozím algoritmem je minimální kostra grafu G
.
Algoritmus - V. Jarník
- Vstup: souvislý ohodnocený neorientovaný graf.
- Zvolme libovolný vrchol
x \in V(G)
, položmei := 1
aG_{1} = (\{x\}, \emptyset)
. - Je
V(G_{i}) = V(G)
?- ANO -
G_{i}
je minimální kostrou grafuG
, konec - NE - zvolme hranu
e_{i}
s nejmenší vahou takovou, že má jeden konec vG_{i}
a druhýx_{i}
mimoG_{i}
(ze souvislosti grafuG
taková hrana existuje), krok 3
- ANO -
- Označme
G_{i+1}
graf vzniklý z grafuG_{i}
přidáním hranye_{i}
včetně jejího koncového vrcholux_{i}
V(G_{i+1}) = V(G_{i} \cup \{x_{i}\}), \quad E(G_{i+1}) = E(G_{i}) \cup \{e_{i}\}
- krok 2
Algoritmus - J. B. Kruskal
- TODO