我在大学中遇到了以下问题:
假设G =(V,E)是带有边缘e∈E的成本ce>=0的(无向)图。假设您已在G中给出了最小成本生成树T。现在假设向G添加了一个新的边缘,将两个节点v,tv∈V与成本c连接。
假设G =(V,E)是带有边缘e∈E的成本ce>=0的(无向)图。假设您已在G中给出了最小成本生成树T。现在假设向G添加了一个新的边缘,将两个节点v,tv∈V与成本c连接。
- 提供一种有效的算法来测试在向G添加新边缘(但不是树T)时是否保留最小成本生成树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