Kruskal algoritmusa (Kruskal's algorithm)

  • A $G = (V, E)$ összefüggő, irányítatlan, élsúlyozott gráf feszítő erdeje $(V, A)$, és $A$ részhalmaza a $G$ valamelyik minimális feszítőfája élhalmazának.

Animáció

Struktogram

$Kruskal(G : \mathcal{G}_{w};A : \mathcal{E}\{\}) : \mathbb{N}$

$\forall u \in G.V$
$makeSet(v)$
$A = \{\}$
$k := |G.V|$
$Q : minPrQ(G.E, G.w)$
$k > 1 \land \lnot Q.isEmpty()$
$e : \mathcal{E}$
$e := Q.remMin()$
$x := findSet(e.u)$
$y := findSet(e.v)$

$x \neq y$

$A := A \cup \{ e \}$ $\text{SKIP}$
$union(x,y)$
$k--$
$\text{return} \space k$

$makeSet(v : \mathcal{V})$

$\pi (v) := v$
$s(v) := 1$

$findSet(v : \mathcal{V}) : \mathcal{V}$


$\pi (v) \neq v$

$\pi (v) := findSet(\pi (v))$ $\text{SKIP}$
$\text{return} \space \pi (v)$

$union(x, y : \mathcal{V})$


$s(x) < s(y)$

$\pi (x) := y$ $\pi (y) := x$
$s(y) += s(x)$ $s(x) += s(y)$

Feladatok