0. 《算法导论》讲解







1. 图24-4 手算过程

2. 代码实现(自己根据算法导论伪代码实现的代码,有错请指出,谢谢)

#include<iostream>
#include<vector>
using namespace std;const int n = 5;
const int INF = 0x3f3f3f3f;typedef struct {int u;int v;int w;
}edge;typedef struct {int d;int pi;
}record;void printRecords(record records[]) {for (int i = 0; i < n; ++i) {if (records[i].d >= INF) {cout << "nan\t";} else {cout << records[i].d << "\t";}}cout << endl;for (int i = 0; i < n; ++i) {cout << records[i].pi << "\t";}cout << endl << endl;
}vector<edge> transform(int graph[n][n]) {vector<edge> edges;for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {if (graph[i][j] != INF) {edge temp = {i, j, graph[i][j]};edges.push_back(temp);}}}return edges;
}void init(record records[n], vector<edge> edges) {for (int i = 0; i < n; ++i) {records[i].d = INF;records[i].pi = -1;}records[0].d = 0;
}void relax(int u, int v, record records[], int graph[n][n]) {if (records[v].d > records[u].d + graph[u][v]) {records[v].d = records[u].d + graph[u][v];records[v].pi = u;}
}bool bellmanFord(int graph[n][n]) {vector<edge> edges = transform(graph);record records[n];init(records, edges);printRecords(records);for (int i = 1; i < n; ++i) {for (int j = 0; j < edges.size(); ++j) {relax(edges[j].u, edges[j].v, records, graph);}printRecords(records);}for (int k = 0; k < edges.size(); ++k) {int u = edges[k].u;int v = edges[k].v;if (records[v].d > records[u].d + graph[u][v]) {return false;}}return true;
}int main() {int graph[n][n] = {{INF, 6, INF, 7, INF},{INF, INF, 5, 8, -4},{INF, -2, INF, INF, INF},{INF, INF, -3, INF, 9},{2, INF, 7, INF, INF}};if (bellmanFord(graph)) {cout << "true";} else {cout << "false";}return 0;
}

3. 代码运行结果

Bellman-Ford算法图解及手算过程详解 —— C++代码实现相关推荐

  1. 帝国竞争算法(imperialist competitive algorithm, ICA )详解+Java代码实现

    前言 这段时间用过这个算法做过相关的工作,今天就介绍一下吧.虽然感觉效果嘛,勉勉强强啦.不过每种算法肯定有其适用的地方,用到了就Mark一下方便后人吧~ 介绍 帝国竞争算法(imperialist c ...

  2. 舞伴问题数据结构java_Gale-Shapley算法解决舞伴问题过程详解(C++实现)

    舞伴问题是这样的:有 n 个男孩与 n 个女孩参加舞会,每个男孩和女孩均交给主持一个名单,写上他(她)中意的舞伴名字.无论男孩还是女孩,提交给主持人的名单都是按照偏爱程度排序的,排在前面的都是他们最中 ...

  3. leetcode 1129. 颜色交替的最短路径【BSF方法图解-python3实现过程详解】

    题目 在一个有向图中,节点分别标记为 0, 1, -, n-1.图中每条边为红色或者蓝色,且存在自环或平行边. red_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的红色有向边 ...

  4. 机器学习:Linear Discriminant Analysis(过程详解+实例代码MATLAB实现

    目录 LDA概念 线性判别分析(LDA)-二分类 LDA二分类过程 举个例子 线性判别分析-多分类 LDA多分类过程 Experiment 3: Linear Discriminant Analysi ...

  5. 【机器学习】K近邻算法(K-NearestNeighbors , KNN)详解 + Java代码实现

    文章目录 一.KNN 基本介绍 二.KNN 核心思想 三.KNN 算法流程 四.KNN 优缺点 五.Java 代码实现 KNN 六.KNN 改进策略 一.KNN 基本介绍 邻近算法,或者说K最邻近(K ...

  6. 数据结构与算法之选择排序图文详解及代码 (C++实现)

    实现: #include<iostream> using namespace std; #define MAXSIZE 20//顺序表的最大长度 typedef int KeyType;/ ...

  7. 【线索二叉树】C++代码及线索化过程详解

    文章目录 线索二叉树的概念 中序线索二叉树的构造 中序线索二叉树的遍历 过程详解版代码 纯享版代码 我在这里不仅写了线索二叉树的普通代码,在代码中我还加入了线索化过程的打印,更好的帮助理解! 线索二叉 ...

  8. 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现

    目录 前言 二次指数平滑法(Holt's linear trend method) 1.定义 2.公式 二次指数平滑值: 二次指数平滑数学模型: 3.案例实现 三次指数平滑法(Holt-Winters ...

  9. 图解Bellman Ford算法

    Bellman Ford 单源最短路径算法[中字] Bellman Ford 单源最短路径算法[中字]_哔哩哔哩_bilibili 贝尔曼-福特算法(Bellman–Ford algorithm )油 ...

最新文章

  1. check_mk自定义监控实践之powershell
  2. emf java_Java实现emf图片字节流转png(jpg)图片字节流
  3. “死去活来”罗永浩:我就做千元机,你能把我怎么着!
  4. oracle教程之解决DML事务锁定的冲突(二)
  5. MFC 盾webBrowser打开弹出的页面
  6. 基于全网最棒的Vue教学视频(尚硅谷张天禹老师)整理出的最详细的Vue指令笔记
  7. iPhone手机屏幕突然变暗该怎么办?
  8. 总结了一份嵌入式相关开源项目、库、资料
  9. OPENWRT:编译E8820V2总结
  10. C#中check和uncheck
  11. 高通平台msm8953 display子系统学习
  12. Bugku杂项——旋转跳跃
  13. 导论:什么是 Conversational Robot
  14. 算法语句高中数学计算机,高中数学《基本算法语句》文字素材3 新人教A版必修3...
  15. day05匿名函数,内置函数,二分法,递归,模块
  16. java.exe占用cpu高_Java进程cpu占用过高问题解决
  17. 字符串、字符长度计算
  18. 塔科玛校区的计算机教育,华盛顿大学塔科马校区申请难度
  19. 单目标应用:基于北方苍鹰优化算法NGO的概率神经网络PNN数据分类(提供MATLAB代码)
  20. 相机光学(十九)——像差理论(球差)

热门文章

  1. 3D成像方法汇总(原理解析):双目视觉、激光三角、结构光、ToF、光场、全息...
  2. 黑洞(black hole)
  3. Netherlands central buffer of UPS european delivery center
  4. python登录qq邮箱_Python + Selenium 登录QQ邮箱
  5. linux服务器开发三(网络编程)
  6. 计算机系统操作高级工考试题,计算机系统操作高级工试题和答案.doc
  7. 初创企业购买企业邮箱_停止对初创企业的限制
  8. C#快速调用海康威视工业相机的SDK拍照获取图片
  9. 2020五四青年节 | 青年人在美团是怎样成长的?
  10. 网信办督促平台整改算法歧视、大数据杀熟:必须保护用户合法权益