没有合适的资源?快使用搜索试试~ 我知道了~
C++计算任意权值的单源最短路径(Bellman-Ford)
1 下载量 27 浏览量
2020-12-20
20:53:56
上传
评论
收藏 202KB PDF 举报
温馨提示
试读
8页
本文实例为大家分享了C++计算任意权值单源最短路径的具体代码,供大家参考,具体内容如下 一、有Dijkstra算法求最短路径了,为什么还要用Bellman-Ford算法 Dijkstra算法不适合用于带有负权值的有向图。 如下图: 用Dijkstra算法求顶点0到各个顶点的最短路径: (1)首先,把顶点0添加到已访问顶点集合S中,选取权值最小的邻边<0>,权值为5 记录顶点2的最短路径为:dist[2]=5, path[2]=0,把顶点2添加到集合S中。 顶点2,没有邻边(从顶点2出发,其他顶点为终点的边),结束; (2)访问<0>边,权值为7,把顶点7添加到顶点集合S中,dis
资源详情
资源评论
资源推荐
C++计算任意权值的单源最短路径(计算任意权值的单源最短路径(Bellman-Ford))
本文实例为大家分享了C++计算任意权值单源最短路径的具体代码,供大家参考,具体内容如下
一、有一、有Dijkstra算法求最短路径了,为什么还要用算法求最短路径了,为什么还要用Bellman-Ford算法算法
Dijkstra算法不适合用于带有负权值的有向图。
如下图:
用Dijkstra算法求顶点0到各个顶点的最短路径:
(1)首先,把顶点0添加到已访问顶点集合S中,选取权值最小的邻边<0, 2>,权值为5
记录顶点2的最短路径为:dist[2]=5, path[2]=0,把顶点2添加到集合S中。
顶点2,没有邻边(从顶点2出发,其他顶点为终点的边),结束;
(2)访问<0, 1>边,权值为7,把顶点7添加到顶点集合S中,dist[1]=7, path[1]=0。
虽然,顶点1有邻边<1,2>,但是因为顶点2已在集合S中,所以,不继续修改,结束程序。
所以,最终dist[1]=7,dist[2]=5。显然结果不对,顶点2的最短路径应为:0->1->2,权值为7+(-5)=2
二、二、Bellman-Ford算法思路:算法思路:
Bellman-Ford算法,效率低,但是适合用于求带有负权值的单源最短路径。
不考虑有回路的,如下图,顶点0到顶点1的最短路径可以无穷小
下面开始简单描述Bellman-Ford的思路:
weixin_38599537
- 粉丝: 8
- 资源: 923
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0