我在大学遇到了以下问题:
令G = (V, E)是一个(无向)图,在边e ∈ E上具有成本c e >= 0 。假设给定G中的最小成本生成树T。现在假设一条新边被添加到G中,连接两个节点v,t v ∈ V,成本为c。
- 给出一个有效的算法来测试T是否仍然是最小成本生成树,并将新边添加到G(但不添加到树T)。让你的算法在 O(|E|) 时间内运行。你能在 O(|V|) 时间内完成吗?请注意您对用于表示树T和图G的数据结构所做的任何假设。
- 假设T不再是最小成本生成树。给出一个线性时间算法(时间 O(|E|))将树 T 更新为新的最小成本生成树。
这是我找到的解决方案:
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
它似乎有效,但我可以轻松地在 O(|V|) 时间内运行,而问题需要 O(|E|) 时间。我错过了什么吗?
顺便说一句,我们有权向任何人寻求帮助,所以我没有作弊 :D