【Bellman-Ford算法】

    【算法】Bellman-Ford算法(单源最短路径问题)(判断负圈)

结构:

#define MAX_V 10000
#define MAX_E 50000
int V,E;   //顶点和边的数量
struct edge{int from,to,cost;
};
edge es[MAX_E];//边集
int d[MAX_V];    //d[i]表示从某个点出发到i的最短路径 

算法特点:1.每次都用所有的边更新所有的边,直到无可更新为止。

     2.无负圈最多更新 V-1 次,否则有负圈。

【dijkstra算法】

    【算法】Dijkstra算法(单源最短路径问题)(路径还原) 邻接矩阵和邻接表实现

结构1:

#define MAX_V 10000
#define MAX_E 50000
int cost[MAX_V][MAX_V];  //cost[u][v]表示e = (u,v)的权值
int d[MAX_V];        //源点s出发的最短距离
bool used[MAX_V];    //标记使用过的点
int V;          //顶点数 

算法特点:1.每次都找没使用过的 d 最小的点,用这个点更新其他点。

     2.不能解决有负圈的图。

结构2:

#define MAX_V 10000
#define MAX_E 50000
int V;    //顶点数
int d[MAX_V];            // d[i]表示i离源点的最短距离
struct edge{  int to,cost;  };
typedef pair<int, int> P;  //first是最短距离,second是顶点的编号
vector <edge> G[MAX_V];   // 边集 

算法特点:1.用之前更新过的点,来更新其他点,直到无点可更新。

     2.不能解决有负圈的图。

【Floyd-Warshall算法】

    【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)

结构:

#define MAX_V 10000
#define MAX_E 50000
int d[MAX_V][MAX_V]; // d[u][v]表示边e=(u,v)的权值(不存在时设为INF,不过d[i][i] = 0)
int V;             //  顶点数 

算法特点:1.dp[i][j] = min(dp[i][j] , dp[i][k] + d[k][j]);

       基于只有k-1个点的情况,从加入第k个点和不加第k个点中做选择。

     2.能解决有负圈的图,如果d[i][i]出现负数说明有负圈。

拜读了一位大神的blog学会了SPFA算法:

    【最短路算法】Dijkstra+heap和SPFA的区别

稠密图用Dijkstra,稀疏图用SPFA。

【算法】单源最短路径和任意两点最短路径总结(补增:SPFA)相关推荐

  1. 数据结构与算法—单源最短路径dijkstra算法

    介绍 对于dijkstra算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解bfs和dfs,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或 ...

  2. dijkstra 算法_数据结构与算法—单源最短路径dijkstra算法

    介绍 对于dijkstra算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解bfs和dfs,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或 ...

  3. Dijkstra(迪杰斯特拉)算法(单源最短路径算法)的理解

    介绍 对于dijkstra算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解bfs和dfs,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或 ...

  4. 贪心算法最短路径java_贪心算法-单源最短路径

    算法思想:贪心算法 实际问题:单源最短路径 编程语言:Java 问题描述 单源最短路径算法,又称迪杰斯特拉算法.其目的是寻找从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题. 算法构 ...

  5. 你必须会的--Dijkstra算法--单源最短路径问题

    文章目录 一.算法原理 1.基本原理 2.如何保存最短路径? 二.算法实战一 1.测试 2.结果 二.算法实战2 Input Output Sample Input Sample Output 一.算 ...

  6. c语言单元最短路径贪心算法,单源最短路径 贪心算法

    <单源最短路径 贪心算法>由会员分享,可在线阅读,更多相关<单源最短路径 贪心算法(3页珍藏版)>请在人人文库网上搜索. 1.实验三 单源最短路径一.实验目的及要求掌握贪心算法 ...

  7. [图] Floyd算法|佛洛依德 - 任意两点的最短路径 - C语言实现

    文章目录 原理 核心代码 代码 path[][]数组解释 完整代码 原文链接:https://www.yuque.com/cppdev/algo/bgt4ea 原理 [Floyd算法]用动态规划的思想 ...

  8. 贪心算法-单源最短路径

    算法流程: (a) 初始化:用起点v到该顶点w的直接边(弧)初始化最短路径,否则设为∞: (b) 从未求得最短路径的终点中选择路径长度最小的终点u:即求得v到u的最短路径: (c) 修改最短路径:计算 ...

  9. java程序两点之间最短路径算法_java 最短路径算法 如何实现有向 任意两点的最短路径...

    展开全部 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节e68a8462616964757a686964616f31333361316131点的最短路径.主要 ...

最新文章

  1. SDN教育城域网解决方案
  2. 廖雪峰javascript教程学习记录
  3. MBProgressHUD
  4. 递归2:第 N 个泰波那契数
  5. 一 手游开发工具cocos2d-x editor初识
  6. php pdo 绕过,php-带PDO的忘记密码脚本(需要解密)
  7. 使用IE建多个会话的小技巧
  8. 分配系统盘容量应考虑三要素
  9. crontab mysql命令_crontab命令使用介绍
  10. 【滑动冲突】常见情形及解决方案
  11. Unity 鼠标进入UI控件,显示控件名称
  12. 16个经典面试问题及回答思路(推荐)
  13. arduino nano 简单点亮LED灯和实现串口时钟计时
  14. Scroller简介
  15. mysql快速复制数据库
  16. MOOC清华《面向对象程序设计》第9章:听课感想
  17. 「数据库」Linux服务安装部署SQL Server -外网安全远程连接【端口映射】
  18. linux系统部署web项目
  19. 线程生命周期 什么时候会出现僵死进程
  20. 淘宝、飞猪、闲鱼全都挂了!阿里程序员要被祭天了?

热门文章

  1. 每日程序C语言23-求一个正整数的位数并逆序打印
  2. 云鲸扫拖一体机器人说明书_比老公更好用的扫拖一体机—自动洗拖布的云鲸扫拖机器人使用体验...
  3. C语言学习之企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提成10%;
  4. 关于Xbox live及其在中国的使用
  5. CentOS安装和配置FTP
  6. jenkins中通过git发版操作记录
  7. 翻译:打造Edge渲染内核的浏览器
  8. 职高中专的模块化课程设计难点
  9. SQL Server 2008 阻止保存要求重新创建表的更改
  10. if 需求:小于或等于18未成年,小于或等于30青年人,其余都是老年人