Bellman_ford求最短路可以说这个算法在某些地方和dijkstra还是有些相似的,它们的松弛操作基本还是一样的只不过dijkstra以图中每个点为松弛点对其相连接的所有边进行松弛操作

而Bellman_ford就是省去了找松弛点的操作,而是每次将n个点进行m次操作(一共m条边),那么和dijkstra一样的我们进行n次循环即最坏的情况我们要对整个图进行n次松弛(虽然对没有优化的Bell_ford始终都要跑n次),(这篇博客不讲对于Bellman_ford的优化)

Bellman_ford算法和dijkstra算法相差其实并不大,不过是Bellman_ford是以边来进行松弛的就是我们跑n次循环每一遍又进行m次操作对整个图进行松弛那么n次过后我们一定可以保证每一个点的dis值一定是最小的,但我们可以发现这样即使当dis值已经是最小时我们还是要对其操作即使其结果也没有什么变化因此我们就浪费了时间(因为Bellman_ford算法不能像dijkstra那样确定最小的dis值)

Bellman_ford核心代码

void Bellman_ford()
{
for(int k=;k<=n-;k++)//因为最后一次没有必要所以没有必要进行(某些情况例外)
{
for(int i=;i<=m;i++)//松弛操作
{
if(dis[edges[i].to]>dis[edges[i].from]+edges[i].w)
dis[edges[i].to]=dis[edges[i].from]+edges[i].w;
}
}
return;
}

图解:

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <iomanip>
#include <cstring>
using namespace std;
#define in cin
#define out cout
typedef int insert;
const insert INF=0x3f3f3f3f;
const insert N=1e4+;
insert n,m,startpoint,dis[N];
struct Node
{
insert from,to,w;
}edges[N];
void inital_value()
{
memset(dis,INF,sizeof(dis));
for(int i=;i<=m;i++)
in>>edges[i].from>>edges[i].to>>edges[i].w;
dis[startpoint]=;
} void Bellman_ford()
{
for(int k=;k<=n-;k++)
{
for(int i=;i<=m;i++)
{
if(dis[edges[i].to]>dis[edges[i].from]+edges[i].w)
dis[edges[i].to]=dis[edges[i].from]+edges[i].w;
}
}
return;
} int main()
{
in>>n>>m>>startpoint;
inital_value();
Bellman_ford();
for(int i=;i<=n;i++)
out<<startpoint<<"-->"<<i<<" "<<dis[i]<<endl;
return ;
}

Bellman_ford标准算法的更多相关文章

  1. 用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的(1)

    用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的. 测试代码如下: #include <stdio.h> #include <stdlib.h> #includ ...

  2. 第 1 章 第 1 题 高级语言的排序问题 C++标准算法实现

    问题分析 依题意,所需程序不用过多考虑效率且暗示使用库,自然想到用高级语言实现(个人选择C++).可用顺序容器暂存数据,用标准算法解决排序问题. 代码实现 #include <iostream& ...

  3. 【计算机视觉】黄金标准算法Gold Standard algorithm

    前言 最近有关于3DMM的内容,博主也只是看了个大概,并没有深入了解算法的实现原理和过程.昨天实习生问关于黄金标准算法的推导,博主也就参考一些资料熟悉了这个算法的实现过程.不太了解使用这个算法的前因后 ...

  4. 偏最小二乘回归(PLSR)- 2 标准算法(NIPALS)

    1 NIPALS 算法 Step1:对原始数据X和Y进行中心化,得到X0和Y0.从Y0中选择一列作为u1,一般选择方差最大的那一列. 注:这是为了后面计算方便,如计算协方差时,对于标准化后的数据,其样 ...

  5. [c++] STL 标准算法

    _if 1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using names ...

  6. [C语言] 数据结构-衡量算法的标准

    1.衡量算法的标准 算法 解题的方法和步骤 衡量算法的标准 1.时间复杂度 大概程序要执行的次数,而非执行的时间,不同的机器运行时间肯定不一样. 2.空间复杂度 算法执行过程中大概所占用的最大内存 3 ...

  7. C++ 泛型算法

    <C++ Primer 4th>读书笔记 标准容器(the standard container)定义了很少的操作.标准库并没有为每种容器类型都定义实现这些操作的成员函数,而是定义了一组泛 ...

  8. STL 简介,标准模板库

    这篇文章是关于C++语言的一个新的扩展--标准模板库的(Standard Template Library),也叫STL.  当我第一次打算写一篇关于STL的文章的时候,我不得不承认我当时低估了这个话 ...

  9. 转载: scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法

    版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...

随机推荐

  1. 【Linux-CentOS】在无互联网-内网环境的Windows7主机上安装CentOS双系统,从安装到放弃

    2018.12.3 日更新:本文仅作为无互联网环境下安装的参考.更推荐在互联网环境下安装软件和使用系统,毕竟会自动安装依赖包,比较方便. 因个人办公电脑装的盗版Win7总是蓝屏,影响工作,加之看到 W ...

  2. Eclipse插件的卸载和安装

    Eclipse 卸载插件: 右下角会有卸载进度 卸载完后 然后需要重启 Eclipse安装插件 选择本地下载好的插件 点击 Ok 插件下载地址:https://jaist.dl.sourceforge ...

  3. MVVM及框架的双向绑定

    MVVM由以下三个内容组成 View:视图模板 Model:数据模型 ViewModel:作为桥梁负责沟通View和Model,自动渲染模板 在JQuery时期,如果需要刷新UI时,需要先取到对应的D ...

  4. Vue 封装的组件生命周期钩子

    export default { // ... // 在组件初始化时调用,可以简单理解为页面加载时 created () { // 存在 localStorage 的缓存内容 if (localSto ...

  5. Block代替delegate,尽量使用block,对于有大量的delegate方法才考虑使用protocol实现.

    Block代替delegate,尽量使用block,对于有大量的delegate方法才考虑使用protocol实现. 1.Block语法总结及示例如下:         //1.普通代码块方式bloc ...

  6. JAVA面向对象思想理解分析

    1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...

  7. 重置mysql5.7.25临时密码

    安装完mysql之后,登陆以后,不管运行任何命令,总是提示这个:mac mysql error You must reset your password using ALTER USER statem ...

  8. 两台Linux主机 scp免密传输

    两台服务器IP如下配置 Linux1: 10.0.0.1   Linux2: 10.0.0.2 Linux1服务器执行如下操作: #  ssh-keygen -t rsa 然后一直回车就行 # sud ...

  9. CentOS查看占用端口并关闭

    1.查看占用的端口号 netstat -lnp|grep 80  #80 是你需要查看的端口号 二.查看进程的详细信息 ps 29280  #查看进行信息,是否是自己要找的进程 三.杀掉进程 kill ...

  10. mysql-介绍

    1.mysql几个重要的文件 每个数据库新建后,会产生数据库文件夹,在该文件夹下每张表均对应以下三个文件: xx.frm  存放表结构 xx.MYD    存放表数据 xx.MYI 存放表索引 mys ...