【问题标题】:How to find maximum edge of path for all pairs of vertices of mst如何为 mst 的所有顶点对找到路径的最大边
【发布时间】:2017-05-13 23:33:47
【问题描述】:

假设我们有一个已知的最小生成树。

我们的任务是找到每对顶点之间存在的路径的最大边。

举个例子,

我们有以下最小生成树:

    1---10---2
       \     
       5\   
           \ 
    4---4---3

在顶点 1 和 2 之间,我们有一条成本为 10 的边。 在顶点 1 和 3 之间,我们有一条成本为 5 的边。 在顶点 3 和 4 之间,我们有一条成本为 4 的边。

每条路径的最大边:

路径 1-2 :它只包含成本为 10 的边。所以答案是 10。

路径 1-3:它只包含成本为 5 的边。所以答案是 5。

path 1-4:从顶点 1 到顶点 4,路径是 1-3-4。它包含成本为 5 的边和成本为 4 的边。所以答案是 5。

路径 2-3:我们需要遵循路径 2-1-3。最大边数为 10。

路径 2-4:我们需要遵循路径 2-1-3-4。最大边 10。

路径 3-4:最大边 4。

所以最终的答案是:

    X 10  5  5
    X  X 10 10
    X  X  X  4
    X  X  X  X

哪种算法最适合这项任务?

到目前为止,我已经考虑了对每对顶点使用 DFS 的可能性。但是,由于我们有 O(V^2) 对顶点,总复杂度将是 O(V^3),这看起来不太好。

【问题讨论】:

    标签: algorithm graph depth-first-search minimum-spanning-tree


    【解决方案1】:

    对于每个顶点,您可以执行 DFS 来查找与该顶点对应的行/列的矩阵条目。类似的东西

    fill-entries-DFS(root, maxEdgeRootToV, v):
        set the entry for (root, v) to maxEdgeRootToV
        for each child w of v:
            fill-entries-DFS(root, max(maxEdgeRootToV, edgeWeight(v, w)), w)
    
    for each vertex v:
        fill-entries-DFS(v, -infinity, v)
    

    运行时间为 O(V^2),渐近最优。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2019-02-14
      相关资源
      最近更新 更多