【问题标题】:dynamic minimum spanning tree动态最小生成树
【发布时间】:2012-03-21 19:54:14
【问题描述】:

我想制作一个动态最小生成树。我在 n 个顶点上有一个现有的 MS 树,我从这个新顶点向所有现有顶点添加了一个顶点和边。如何有效地更新新图表的 MST? O(n) 将是最佳的。我也可以使删除顶点操作高效吗?

【问题讨论】:

  • 这里我增加了树的大小并引入了 n 条新边,可能是每条边都被替换了,仍然花费的时间应该是 O(n)。
  • 添加顶点时,是否总是将新顶点的边添加到所有现有顶点?如果是这样,新的 MST 就是 NEW-VERTEX + MST...
  • 是的,到所有现有的顶点
  • 所以只需将 NEW_VERTEX 链接到 MST 根目录。工作完成。 (如果我没有遗漏什么)

标签: algorithm insert minimum-spanning-tree


【解决方案1】:

O(n log n) 使用 Kruskal 算法。关键思想是原始 MST 中未使用的任何边也不会在新 MST 中使用。所以只需对 n 新边 O(n log n) 进行排序,将此排序列表与旧 MST 的边列表合并(您按排序顺序保存,对吗?)O(n),然后对生成的排序结果重新运行 Kruskal 算法边列表O(n)-ish

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2019-03-26
    相关资源
    最近更新 更多