In a sample problem, I’m given a MST T for a weighted graph G = (V, E). The question is, if a new vertex v and all its edges are to be added to the graph, what is an o(|V|log|V|) algorithm to compute the new MST of this new G* = (V U v, E*).
My only idea so far is:
add min( out(v) ) to T
for each edge e in out(v) do
let u be the other vertex of e
if there exists a lower weight path from v to u then
remove all edges in that path from T
add e to T
Two problems:
- What do I do with the vertices that may have gotten disconnected
- This is definitely not O(|V|log|V|)
How can I do this?
See ultimately you know that your MST will be among the edges already in th MST and the new edges addedSo add all the new edges you will get a graph. Do any normal MST algorithm (Boruvka, Kruskal, Prims) on this and you will have your solution.Since the edges in this is = (V-2) Initially (V-1) added = 2V-1 the algorithms will achieve the time bound you need.