【问题标题】:Special Case for MST algorithm in linear time线性时间 MST 算法的特例
【发布时间】:2018-08-29 14:32:23
【问题描述】:

令 G = (V, E) 是一个加权无向连通图,其中所有 边缘权重是不同的。令 T 表示最小生成树。

假设 G 有 m ≤ n + 157 条边。对于这种特殊情况,请给出 MST 在 O(n) 时间内运行的算法击败了 Kruskals 和 Prims 算法。

有什么提示吗?

【问题讨论】:

  • 您可以在 O(n) 中对边进行桶排序,然后继续使用 Kruskal 算法。

标签: algorithm kruskals-algorithm prims-algorithm


【解决方案1】:

首先验证图是连通的。

然后重复直到图是一棵树(#edges = n-1):

  • 使用 DFS 查找循环。必须有一个,因为#edges >= n
  • 删除循环中最长的边。它不能是 MST 的一部分。

完成后,您将得到 MST。

尽管每次迭代可能需要 O(n) 时间,但最多会有 158 次迭代,所以总共还是 O(n)。

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 1970-01-01
    • 2022-01-23
    • 2011-05-02
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    相关资源
    最近更新 更多