Algoritmo generico
Un algoritmo ideale su cui basare la ricerca di un MST trova tutti gli archi di un grafo che sono sicuri:
generic_mst(G, w)
A = {} // Un set, i.e. tabella hash senza valori
while not is_mst(G.V, A) // Oppure, in questo caso, finchè A.length < G.V.length - 1
... // Trova un arco sicuro (u, v) per A
add(A, (u, v))
return A
Componenti connesse
Un modo per trovare le componenti connesse è quello di raggruppare tutti i nodi connessi da un arco:
connected_components(G)
C = map(G.V, v -> {v})
for each (u, v) in G.E
U = find(C, s -> contains(s, u)) // Trova l'insieme di C che contiene u
V = find(C, s -> contains(s, v))
if U != V
remove(C, U)
remove(C, V)
append(C, union(U, V))
return C
Per esempio, dal grafo
si va da C = [{1}, {2}, {3}, {4}, {5}, {6}] a C = [{1, 2, 3}, {4, 5}, {6}].