【算法设计与分析】dijkstra算法和prim算法有什么不同

  • 这里默认大家对两个算法过程相对比较熟悉,所以直接给出伪代码。
  • 如果大家对这两个算法不是很了解可以先看下我的这两篇博客
    dijkstra算法求最短路径
    prim算法求最小生成树
  • dijkstra算法是求最短路径的,而prim算法是求最小生成树的,这两个算法怎么能说有什么不同呢?
    其实对这两个算法有了解的同学比较清楚,他们两个非常相似。伪代码如下:
  • dijkstra:
    在这里插入图片描述
  • prim
    在这里插入图片描述
  • 请大家注意看伪代码中用红框框住的部分,dijkstra算法每次用 α [ u ] + L e \alpha [u]+L_{e} α[u]+Le 更新优先队列中的 α \alpha α[v]。而prim算法每次用u到v之间的权重更新v的key。也就是说,prim算法每次更新是不需要考虑它的父节点的信息,只关注父节点到本身的权重。
  • 为什么会这样呢?
  • 仔细分析一下,这是因为prim算法思想是求距离自己集合最近的路径,也就是说它求的是距离已经被弹出队列的元素最近的点。而dijkstra算法求得是距离原点最近的点,所以每次都要考虑父节点到原点的距离。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值