prim 与 dijkstra 的比较

本文通过一个具体例子解释了Prim算法和Dijkstra算法在寻找最小生成树与最短路径时的不同之处。以一个包含四个顶点和四条边的图为例,展示了Prim算法得到的最小生成树中两点间距离与Dijkstra算法直接连线距离之间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

他们的不同之处是:

两个集合U,V

U是构成最小生成树的集合,V原图的集合

prim 每次都是从U的每个点出发,寻找U集合与V集合最近的距离的点,再将V中的该点加入U中

dijksra从原点出发在V找离该点最近的点 p1, 将该距离加入到 dis[i],接着以p1为原点开始找


举个例子就知道他们不能乱来了:

有四个顶点(v0, v1, v2, v3)和四条边且边值定义为(v0, v1)=20, (v0, v2)=10, (v1, v3)=2, (v3, v2)=15的图,用Prim算法得到的最小生成树中v0v1是不直接相连的,也就是在最小生成树中v0v1的距离是v0->v2->v3->v1的距离是27,而用Dijkstra算法得到的v0v1的距离是20,也就是二者直接连线的长度。

相关链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值