[英]dynamic minimum spanning tree
我想制作一个动态的最小生成树。 我在 n 个顶点上有一个现有的 MS 树,我从这个新顶点向所有现有顶点添加了一个顶点和边。 如何有效地更新新图的 MST? O(n) 将是最优的。 我还可以使删除顶点操作高效吗?
O(n log n)
使用Kruskal算法。 关键思想是原始MST中未使用的任何边缘也不会在新的MST中使用。 所以只需对n
新边进行排序O(n log n)
,将这个排序列表与旧MST的边缘列表合并(按照排序顺序保存,对吧?) O(n)
,然后重新运行Kruskal的算法结果排序的边缘列表O(n)-ish
。
这个问题可以使用局部敏感排序来解决。 请参考这篇论文。 他们讨论了形成动态最小生成树的成本,并且它给出了最佳解决方案的 (1+epsilon) 近似值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.