【问题标题】:Prim MST with Adjacency Matrix as parameter以邻接矩阵为参数的 Prim MST
【发布时间】:2023-03-21 02:56:02
【问题描述】:

我正在使用 C 语言中的 Prim MST,该函数采用邻接矩阵。考虑到A[i][j] 中的权重。

假设我有一个前驱数组,它可以追踪我到目前为止找到的最小边。 predecessor[u]=v {这也是最终的 MST}

现在我想修改当前的A[i][j] 矩阵并将权重更改为 1。 那就是边(索引)也存在于前驱数组中的时候。 否则我将其更改为零。

我该怎么做?这是我的解决方案:

for (x....)
   for (y...)
      if (x!=y && (p[x]==y || p[y]==x))
         set to 1
      else
         set to 0

【问题讨论】:

  • 看起来不错...您的实际问题是什么?
  • 我不完全确定还要检查什么:S 你会怎么做?
  • 完全按照您的方式...或者可能与 sdcwc 的回答一样

标签: c algorithm minimum-spanning-tree prims-algorithm


【解决方案1】:

您的伪代码是正确的,这将为您提供一个 0-1 矩阵,它代表 Prim 算法找到的树。然而,这种存储方法相当昂贵,因为它需要 O(n^2) 的空间,而一棵树可以存储在 O(n) 的内存中。

或者,您可以在 O(n^2) 时间内将矩阵初始化为零,然后在 O(n) 时间内添加边:

 for (x ...)
    for (y ...)
       A[x][y] = 0

 for (x ...)
    if (p[x] != x)
      A[x][p[x]] = A[p[x]][x] = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2016-03-29
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    相关资源
    最近更新 更多