我想创建一个动态最小生成树。我在n个顶点上有一个现有的MS树,并且我从这个新顶点向所有现有顶点添加了一个顶点和边。如何有效地更新新图形的MST? O(n)是最佳的。我还可以使删除顶点操作有效吗?
答案 0 :(得分:0)
O(n log n)
使用Kruskal算法。关键思想是原始MST中未使用的任何边缘也不会在新的MST中使用。所以只需对n
新边O(n log n)
进行排序,将此排序列表与旧MST的边缘列表(您按排序顺序保存,对吗?)O(n)
合并,然后运行Kruskal& #39; s算法重新生成边缘O(n)-ish
的结果排序列表。