Bellman-Ford算法优化
2017-07-27 16:02:48
writer:pprp
在BEllman-Ford算法中,其最外层的循环的迭代次数为n-1,如果不存在负权回路,需要迭代的次数是远远小于n-1;
如果在某一次迭代中,松弛操作没有被执行,则说明这次迭代所有的边都没有被松弛,表示任意两点之间在之后的迭代中没有可能会在减小了,所以应该提前结束;
为此加入一个标记:relaxed;
代码如下:
void bellman_ford(int x)
{
int i,j,k;
bool relaxed;
for(i=; i<=n; i++) //initial array d
d[i] = w[x][i];
d[x] = ; //到自己距离为0
for(k=; k<=n-; k++)
{
relaxed = false; //默认没有进行松弛操作
for(j = ; j >=n ; j++) //松弛
for(i = ; i <=n ; i++)
if((w[i][j]!=INT_MAX)&&d[i]!=INT_MAX&&d[j]>d[i]+w[i][j])
{
d[j] = d[i]+w[i][j];
relaxed = true;
}
if(!relaxed) //如果没有进行松弛操作,跳出循环
break;
}
change = ;
for(i =; i<=n; i++) //松弛操作判断是否存在负权回路
for(j=; j<=n; j++)
if(w[i][j]!=INT_MAX&&d[i]!=INT_MAX&&d[j]>d[i]+w[i][j])
{
change = ;
break;
}
if(change)
cout <<"Not possoble"<<endl;
else
cout <<"Possible"<<endl;
}
Bellman-Ford算法优化的更多相关文章
- poj1860 bellman—ford队列优化 Currency Exchange
Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 22123 Accepted: 799 ...
- Bellman—Ford算法思想
---恢复内容开始--- Bellman—Ford算法能在更普遍的情况下(存在负权边)解决单源点最短路径问题.对于给定的带权(有向或无向)图G=(V,E),其源点为s,加权函数w是边集E的映射.对图G ...
- Bellman - Ford 算法解决最短路径问题
Bellman - Ford 算法: 一:基本算法 对于单源最短路径问题,上一篇文章中介绍了 Dijkstra 算法,但是由于 Dijkstra 算法局限于解决非负权的最短路径问题,对于带负权的图就力 ...
- Dijkstra算法与Bellman - Ford算法示例(源自网上大牛的博客)【图论】
题意:题目大意:有N个点,给出从a点到b点的距离,当然a和b是互相可以抵达的,问从1到n的最短距离 poj2387 Description Bessie is out in the field and ...
- bellman ford优先队列优化简介模板
#include<iostream>#include<cstdio>#include<utility>#include<queue>#include&l ...
- uva 558 - Wormholes(Bellman Ford判断负环)
题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...
- Til the Cows Come Home 最短路Dijkstra+bellman(普通+优化)
Til the Cows Come Home 最短路Dijkstra+bellman(普通+优化) 贝西在田里,想在农夫约翰叫醒她早上挤奶之前回到谷仓尽可能多地睡一觉.贝西需要她的美梦,所以她想尽快回 ...
- SQL Server 聚合函数算法优化技巧
Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...
- ACM/ICPC 之 最短路径-Bellman Ford范例(POJ1556-POJ2240)
两道Bellman Ford解最短路的范例,Bellman Ford只是一种最短路的方法,两道都可以用dijkstra, SPFA做. Bellman Ford解法是将每条边遍历一次,遍历一次所有边可 ...
- Harris角点检测算法优化
Harris角点检测算法优化 一.综述 用 Harris 算法进行检测,有三点不足:(1 )该算法不具有尺度不变性:(2 )该算法提取的角点是像素级的:(3 )该算法检测时间不是很令人满意. 基于以上 ...
随机推荐
- python中的str()与eval函数
author:headsen chen date:2018-04-09 10:48:22 eval函数是把str转化成list.dict.tuple str函数把list,dict,tuple ...
- SpringMVC如何接收json数据
请求头:Content-Type=application/json数据如: {"mobile":"12345678912","smsContent&q ...
- JS中:数组和二维数组、MAP、Set和枚举的使用
1.数组和二维数组: 方法一: var names = ['Michael', 'Bob', 'Tracy']; names[0];// 'Michael' 方法二: var mycars=new ...
- mybatis循环map
一.循环key <foreach collection="map.keys" item="key" separator="and"&g ...
- Powershell Get-ChildItem 筛选文件,文件处理
使用Where-Object也可以根据其它属性来过滤. Dir | Where-Object { $_.CreationTime -gt [datetime]::Parse("May 12, ...
- 目标探测:r-cnn, fast-rcnn, faster-rcnn, yolo, mask-rcnn
目标探测:r-cnn, fast-rcnn, faster-rcnn, yolo, mask-rcnn 作者:尼箍纳斯凯奇 链接: https://www.zhihu.com/question/574 ...
- NOIP2018酱油记
考完了,终于有时间来写游记了. 有一种悲伤,叫做知道正解是什么但是就是不会写... 有一种遗憾,叫做能拿到的分考完才意识到... 有一种$NOIP$,叫做$Day1$原题大赛,$Day2AHOI$.. ...
- android应用程序优化之布局优化
在我们开发APP时不仅要在代码实现上.做到对App的优化,而在我们的界面布局也有很多要优化的地方,假设布局写的非常low的话,系统载入布局的速度会十分的慢,使得用户的体验非常的不好.这篇文章主要是从我 ...
- python安装virtualenv
pip install virtualenv 为了使用更方便用,安装另外一个,windows下要-win,linux下不用 pip install virtualenvwrapper-win 使用方法 ...
- 快速排序算法Java版
网上关于快速排序的算法原理和算法实现都比较多,不过java是实现并不多,而且部分实现很难理解,和思路有点不搭调.所以整理了这篇文章.如果有不妥之处还请建议.首先先复习一些基础. 1.算法概念. ...