【问题标题】:Using Prim's Algorithm With Priority Queue?使用 Prim 算法和优先队列?
【发布时间】:2014-02-28 05:24:07
【问题描述】:

我正在使用 Prim 算法和优先级队列来解决图形问题。我得到了一个包含处理边和图形本身的代码的类。我还需要使用优先级队列来找到最小生成树。

你们将如何解决这样的问题?你会得到每个节点的所有边,将其放入优先队列,然后从那里开始吗?

【问题讨论】:

  • 能否请您展示课程和一些示例输入?

标签: python algorithm priority-queue prims-algorithm


【解决方案1】:

对于 Prims 算法,我的优先级队列有 pairs (weight, vertex),按重量排序。 这是伪代码。请注意,如果它比您遇到的所有边都好,则只需将边添加到顶点的优先级队列中即可。

key[v] = Infinity for all vertex v
vis[v] = false for all vertex v
Q.Push(0, 1) // weight 0, and 1 is a valid vertex
while (Q is not empty) :
  curV = first element of Q
  curW = second element of Q
  Q.pop
  if (vis[curV]) continue
  add curV to spanning tree
  for u in adjacency list of curV :
    if (not vis[u] and key[u] > weight(u, v)):
      Q.push(u, weight(u,v)
      key[u] = weight(u,v) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2013-12-23
    相关资源
    最近更新 更多