BellmanFord贝尔曼-福特算法
import java.util.ArrayList;
import java.util.Scanner;
/**
* 贝尔曼-福特算法
*
* Bellman - ford算法是求含负权图的单源最短路径算法,效率较低。
* @author CEMABENTENG
*
*/
public class BellmanFord
{
private static int n, m;
private static final int MAXN = 100;
private static final int INF = Integer.MAX_VALUE;
private static ArrayList<Edge> edges = new ArrayList<Edge>();
private static int[][] edge = new int[MAXN][MAXN];
private static int[] dist = new int[MAXN];
private static int[] path = new int[MAXN];
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
while (scan.hasNext())
{
//点
n = scan.nextInt();
//边
m = scan.nextInt();
//初始化点
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == j)
{
edge[i][j] = 0;
}
else
{
edge[i][j] = INF;
}
}
}
//初始化边
for (int i = 0; i < m; i++)
{
//边左点
int u = scan.nextInt();
//边右点
int v = scan.nextInt();
//权
int w = scan.nextInt();
Edge edge_ = new BellmanFord.Edge();
edge_.u = u;
edge_.v = v;
edge_.w = w;
edge[u][v] = w;
edges.add(edge_);
}
//查找0的距离
bellman(1);
for (int i = 0; i < n; i++)
{
System.out.println("从0到" + i + "的距离最短为 :" + dist[i]);
}
}
}
/**
* 贝尔曼-福特算法
* @param vo
*/
public static void bellman(int vo)
{
int i, k;
for (i = 0; i < n; i++)
{
//初始化所有最短距离
dist[i] = INF;
path[i] = -1;
}
//结果集的起点,起点距离为0
dist[vo] = 0;
//遍历点
for (k = 1; k < n; k++)
{
//遍历边
for (i = 0; i < m; i++)
{
Edge edge = edges.get(i);
/**
* 当前边的左点到原点距离有值,且边的左点到原点的值+当前权小于右点到原点的值,则更新右点到原点的值(即松弛算法)
*
* 每个单源最短路径算法中都会初始化,然后重复对边进行松弛的过程。
* 另外,松弛是改变最短路径和前趋的唯一方式。各个单源最短路径算法间区别在于对每条边进行松弛操作的次数,以及对边执行松弛操作的次序有所不同。在
*/
if (dist[edge.u] != INF && dist[edge.u] + edge.w < dist[edge.v])
{
dist[edge.v] = dist[edge.u] + edge.w;
path[edge.v] = edge.u;
}
}
}
}
public static class Edge
{
int u, v, w;
}
}
BellmanFord贝尔曼-福特算法的更多相关文章
- Bellman-Bord(贝尔曼-福特)
include const int inf=0x3f3f3f3f; int main() { int m,n; scanf("%d%d",&n,&m); int u ...
- oj2894(贝尔曼福特模板)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2894 就因为粗心,一中午没A,题目说是2000 ...
- Python 图_系列之纵横对比 Bellman-Ford 和 Dijkstra 最短路径算法
1. 前言 因无向.无加权图的任意顶点之间的最短路径由顶点之间的边数决定,可以直接使用原始定义的广度优先搜索算法查找. 但是,无论是有向.还是无向,只要是加权图,最短路径长度的定义是:起点到终点之间所 ...
- Bellman-Ford 单源最短路径算法
Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法.该算法由 Richard Bellman 和 Leste ...
- 单源最短路径算法——Bellman-ford算法和Dijkstra算法
BellMan-ford算法描述 1.初始化:将除源点外的所有顶点的最短距离估计值 dist[v] ← +∞, dist[s] ←0; 2.迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V ...
- 【算法】单元最短路径之Bellman-Ford算法和SPFA算法
SPFA是经过对列优化的bellman-Ford算法,因此,在学习SPFA算法之前,先学习下bellman-Ford算法. bellman-Ford算法是一种通过松弛操作计算最短路的算法. 适用条件 ...
- Bellman-Ford(BF)和Floyd算法
以下只是本人的笔记,想法我自己都怀疑,内容不作为参考, Floyd算法就比较暴力了,算法思想是三重循环,直接枚举所有的顶点,再两次for循环枚举所有点,验证以第一个点为中转点的两个点是否路径更短,具体 ...
- 最短路--Bellman-Ford
Bellman-Ford 贝尔曼-福特 算法思想 贝尔曼-福特算法(英语:Bellman–Ford algorithm),求解单源最短路径问题的一种算法,由理查德·贝尔曼 和 莱斯特·福特 创立的.它 ...
- 最短路算法 (bellman-Ford算法)
贝尔曼-福特算法与迪科斯彻算法类似,都以松弛操作为基础,即估计的最短路径值渐渐地被更加准确的值替代,直至得到最优解.在两个算法中,计算时每个边之间的估计距离值都比真实值大,并且被新找到路径的最小长度替 ...
随机推荐
- MyBatis 3(中文版) 第四章 使用注解配置SQL映射器
本章将涵盖以下话题: l 在映射器Mapper接口上使用注解 l 映射语句 @Insert,@Update,@Delete,@SeelctStatements l 结果映射 一对一映射 一对多映射 l ...
- eclipse (android环境搭建)
如何安装java环境 http://jingyan.baidu.com/article/a24b33cd59b58e19fe002bb9.html eclipse安装教程 http://jingyan ...
- win10安装MySQL免安装版
一:下载并解压 这个就不多说了https://dev.mysql.com/downloads/mysql/,简单的很 二:MySQL根目录下新建my.ini [mysql] # 设置mysql客户端默 ...
- 改善C#公共程序类库质量的10种方法(转)
出处:http://www.cnblogs.com/JamesLi2015/p/3140897.html 最近重构一套代码,运用以下几种方法,供参考. 1 公共方法尽可能的使用缓存 public s ...
- [GO]并发的网络爬虫
package main import ( "fmt" "strconv" "net/http" "os" " ...
- C#编程之程序集和反射
这里我又唠叨几句,大家在学习的时候,如看书或者看视频时觉得非常爽,因为感觉基本都看得懂也都挺容易的,其实看懂是一回事,你自己会动手做出来是一回事,自己能够说出来又是另一回事了.应该把学到的东西变成自己 ...
- kubernetes使用ceph
一.有一个ceph cluster,假设已经准备好了,文档网上一大堆 二.开始集成ceph和kuberntes 2.1 禁用rbd features rbd image有4个 features,lay ...
- 15 输入三个整数x,y,z,请把这三个数由小到大输出。
题目:输入三个整数x,y,z,请把这三个数由小到大输出. public class _015ThreeNumberSort { public static void main(String[] arg ...
- javascript的事件冒泡【转】
出处:http://www.cnblogs.com/sanshi/archive/2009/02/18/1393165.html (感谢三生石上) 这是一个基础性的文章,使用Javascript观察D ...
- a 标签 name 属性 页面定位 (一)
a(§b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...