博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bellman-Ford算法详解
阅读量:3950 次
发布时间:2019-05-24

本文共 764 字,大约阅读时间需要 2 分钟。

目录

Bellman-Ford算法定义

Bellman-Ford算法就是求解有负边权的单源路径问题。

我觉得这篇pdf挺好理解的

分析:

设起点 start 终点 end

那么由start 到 end ,要想找到最短路,那么它可能会经过k个点,
(k=0,1,2,3…),那么诠释这一思想的核心代码为

for(int k=1; k<=n-1; k++)//1    for(int i=1 ;i
dis[u[i]] + w[i])//3 dis[v[i]]=dis[u[i]]+w[i];//4 /*1.n为顶点个数2.m为边的个数34.相当于松弛操作,u,v用来存顶点权值,w[i]就表示从u[i]到v[i]的边权是w[i]*/

公式说明,递推

dis1[s]=edge[s][t];//直达边,即是直接连接s到t的那条边
disk[s]=min(disk-1[s],min(disk-1[j]+edge[j][s])//经过k-1个点后,最短路径

图解Bellman-ford算法

在这里插入图片描述

它解决的是负权边的问题,同时保证没有形成负权边回路,它最多进行n-1次松弛操作,为了保证不形成回路

针对上图,我们设置1号点为起点,2,3,4,5为终点

那么首先起始图
在这里插入图片描述

进入松弛操作前,初始化所有的值为无穷大+∞

在这里插入图片描述
松弛操作后

1    2    3    4    5dis1       0    3   -5    ∞    ∞dis2       0    3   -5    1    -4dis3       0    2   -5   -1    -4dis4       0    0   -5   -1    -4 因为本题共有5个点,所以最多进行5-1=4次松弛操作,得到最小解

转载地址:http://ydwzi.baihongyu.com/

你可能感兴趣的文章
Android电源管理相关应用技巧分享
查看>>
Android录音失真具体解决方案
查看>>
Android根文件系统相关应用介绍
查看>>
Android文件系统深入剖析
查看>>
Android判断网络状态方法详解
查看>>
在Android上实现Junit单元测试的四部曲
查看>>
有效控制Android应用程序的耗电量
查看>>
Android术语列表概览
查看>>
全方位解读Android多媒体框架源码
查看>>
Android音乐编程的管理音频硬件
查看>>
Android UI控件组合应用之一:建立数据模型
查看>>
避免Andriod平台图片失真的图片形式
查看>>
Android之Gridview图片列表
查看>>
objdump的使用方法
查看>>
编译错误处理noproguard.classes-with-local.dex已杀死
查看>>
LTE - CSFB技术
查看>>
GSM链路层信令协议
查看>>
技术道德
查看>>
“需求为王”才是根本
查看>>
高效率的危害
查看>>