Updating a Minimum spanning tree when a new edge is inserted

Posted by Lynette on Stack Overflow See other posts from Stack Overflow or by Lynette
Published on 2010-04-20T23:50:39Z Indexed on 2010/04/20 23:53 UTC
Read the original article Hit count: 371

Filed under:

Hello, I've been presented the following problem in University:

Let G = (V, E) be an (undirected) graph with costs ce >= 0 on the edges e € E. Assume you are given a minimum-cost spanning tree T in G. Now assume that a new edge is added to G, connecting two nodes v, tv € V with cost c. a) Give an efficient algorithm to test if T remains the minimum-cost spanning tree with the new edge added to G (but not to the tree T). Make your algorithm run in time O(|E|). Can you do it in O(|V|) time? Please note any assumptions you make about what data structure is used to represent the tree T and the graph G. b)Suppose T is no longer the minimum-cost spanning tree. Give a linear-time algorithm (time O(|E|)) to update the tree T to the new minimum-cost spanning tree.

This is the solution I found:

Let e1=(a,b) the new edge added
Find in T the shortest path from a to b (BFS)
if e1 is the most expensive edge in the cycle then T remains the MST
else T is not the MST

It seems to work but i can easily make this run in O(|V|) time, while the problem asks O(|E|) time. Am i missing something?

By the way we are authorized to ask for help from anyone so I'm not cheating :D

Thanks in advance

© Stack Overflow or respective owner

Related posts about minimum-spanning-tree