Minimum Spanning Trees - Time Complexity
Minimum Spanning Trees - Time Complexity
Time Complexity
Kruskal's algorithm
KRUSKAL(V, E, ω)
A=∅
for each vertex υ ∈ V // O(|V|)
MAKE-SET(υ)
return A
2
Prim’s algorithm
PRIM(V, E, ω)
Pick randomly a node r in V
for each u ∈ V // O(|V|)
π[u] = NIL; key[u] = ∞
Q = BUILD_MIN_HEAP(V-{r}) // O(|V|)
A= ∅
u = r // a start node to expand
repeat :
for each υ ∈ Adj[u] :
if υ ∈ Q and ω(u, υ) < key[υ] : // update the key value of cross edges
π[υ] = u
DECREASE-KEY(Q, υ, ω(u, υ)) // O(|E| |log |V|)
u' ← EXTRACT-MIN(Q) // O(|V| |log |V|)
A = A ∪ {(π[u'], u')}
until Q is empty
O((|E| + |V|) |log |V|) if Q is a binary heap
return A O(|E| + |V| |log |V|) if Q is a Fibonacci heap 3