最短路径总结&&最小生成树总结

目录

  1. Floyd算法

  1. Dijsktar算法

  1. Bellman-Ford算法

  1. Kruskal算法

  1. Prim算法

一.Floyd(弗洛伊德)(多源最短路径)时间复杂度较高,可适用顶点数少

思想:三行for循环 第一行:经过哪个点(k)中转

第二行:起点

第三行:终点

核心代码:

二.Dijsktar(迪杰斯卡尔)(单源最短路径)

思想:

找到一个离源点最短的点,以该点为中心进行扩展(源点到该点和该点到其余点的距离比源点直接到其余点的距离小,就更新该距离),直至重复n(顶点数)-1次。

核心代码:

三.Bellman-Ford(贝尔曼)(解决负权边)

思想:

通过输入的起点、终点、边进行松弛(如果源点到终点的直接距离比源点到起点和起点到终点的距离还要大,就进行更新),直到重复n-1次(最多有n-1条边)。

核心代码:

四.Kruskal(克鲁斯卡尔)

思想:

将边权值进行排序,每次选取最短边且两端顶点没有连接(并查集判断)的两点进行连接,直至连接n-1次。

核心代码:

五.Prim(普里姆)

思想:

从任意一个点出发,找出距离该点最短的点加入到生成树,接着更新生成树到未在生成树中各个顶点的距离,再找出最小值,直至所有顶点纳入到生成树中。

核心代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值