当前位置: 首页 > 知识库问答 >
问题:

加权有向图的Prim算法

杜彦君
2023-03-14

我正在学习最小生成树。我研究了Prim的加权有向图算法。

算法简单

  • 您有两组顶点:已访问和未访问
  • 将所有边的距离设置为无穷远
  • 从未访问集合中的任意顶点开始并探索其边
  • 在所有边中,如果目标顶点没有被访问,并且如果边的权重小于目标顶点的距离,则用该边的权重更新目标顶点的距离
  • 选择距离最小的未访问顶点,然后再进行一次,直到所有顶点都访问完

相信通过以上算法,能够在所有的生成树中找到代价最小的生成树,即最小生成树。

顶点是{v1,v2,v3,v4,v5},边的权
(x,y):w=>
(v1,v2):8
(v1,v3):15
(v1,v4):7
(v2,v5):4
(v4,v5):7

(v4,v5):7

首先我探索v1,它有v2,v3,v4的边,所以图变成
顶点v1被访问,并且(顶点,距离)=>
(v2,8)
(v3,15)
(v4,7)

现在v4有最小的距离,即7所以我探索v4,它有v5的边,所以发生以下修改
顶点v4被访问,并且(顶点,距离)=>(v5,7)

在所有的v5中,距离最小,也就是7,所以我探索v5,它没有任何边,所以我只标记它已访问

v5顶点被访问

现在,困惑从这里开始

共有1个答案

曹焱
2023-03-14

首先我要提到的是,Prim的算法只适用于无向图,所以如果我们认为图是无向的,这是算法在您的情况下的一步一步的进展:

你应该考虑到在有向图中找到最小生成树是不可能的,然而对于有向图,最接近MST的概念是最小代价树形。

 类似资料:
  • 我有一个有向图,边上的权值是非负的。 我的算法应该做到以下几点: 获取从顶点u到顶点V的所有路径 计算从u到v的每条路径上的最小加权边 计算我从上面计算的最小加权边的最大值。

  • 给我一个图中名为“a”的顶点,对于v中的每一个v,我需要找到从a到v的路径的权重,它在时间O(v+E)中权重最低。我不得不只使用BFS或DFS(尽管这很可能是BFS的问题)。 我想过要制作一个新的图,其中边为0的顶点是统一的,然后在它上面运行BFS,但是这会破坏图的方向(如果图是无向的或者权重是{2,1},对于边为2,我会创建一个新的顶点)。 如果有任何帮助,我将不胜感激。 谢谢

  • 无向图最小生成树的Prim算法 思路说明 假设点A,B,C,D,E,F,两点之间有连线的,以及它们的距离分别是:(A-B:7);(A-D:5);(B-C:8);(B-D:9);(B-E:7);(C-E:5);(D-E:15);(D-F:6);(E-F:8);(E-G:9);(F-G:11) 关于Prim算法的计算过程,参与维基百科的词条:普里姆算法 将上述点与点关系以及两点之间距离(边长,有的文献

  • 问题内容: 使用Redis实现加权图的最佳方法是什么? 我们将主要在图上搜索最短路径(可能使用Dijkstra算法) 目前我们考虑将边缘添加到Redis 对于每个节点,我们将使用nodeId作为键,并使用引用节点的键的sortedset,sortedSet中每个nodeId的分数就是边缘的权重。 你怎么看?如果我错了,请纠正我,但这里唯一的遗憾是,对于sortedset中的下一个节点的每个查询,我

  • B)设是带有向图(无环多边)的一个邻接矩阵,其中是边到的一个权重。如果没有这样的边并且对于evrey我们有。矩阵。槽表示什么?最小权重?还是...? 知道吗? 编辑:我的意思是这些算法在图中找到哪一个?找到最大重量?最小重量?什么也没找到?

  • 在一个加权有向图中,我需要找到两个结点s,t之间的最短路径。以下是限制: 权重可以为负值。 路径必须经过一个特定的边,让我们从节点u到V调用her e和shes。 输出路径必须简单,即我们只通过一个节点一次。 因为我希望它最短,所以我将检查在从s到u之前从v到t运行bellman ford是否比相反的方式更快(如果有节点,两个节点都使用where是放置它的最佳位置)。 谢谢你的帮助!