
图
数据结构与算法 --- 图
小馋喵星人
这个作者很懒,什么都没留下…
展开
-
【经典算法实现 39】图的最短路径计算(优化Dijkstra算法支持负权计算 及 负环检测功能)(参考Bellman_Ford算法)
【经典算法实现 39】图的最短路径计算(优化Dijkstra算法支待负权计算及负环检测功能)(参考Bellman_Ford算法)一、核心算法实现二、运行结果:负权计算三、运行结果:带负环计算四、完整代码在前面《【经典算法实现 37】图的最短路径计算(Dijkstra迪杰斯特拉算法 及 其优化)》我们实现了 Dijkstra迪杰斯特拉算法 对正权值图的计算,本文参考 Bellman_Ford算法,实现对 Dijkstra迪杰斯特拉算法 的优化,让其支持:负权值计算负环检测 及 自动退出功能一原创 2020-08-27 14:21:28 · 715 阅读 · 0 评论 -
【经典算法实现 38】图的最短路径计算(Floyd弗洛伊德算法)
【经典算法实现 38】图的最短路径计算(Floyd弗洛伊德算法)一、Floyd弗洛伊德算法1. 算法思路2. Floyd 算法核心代码二、完整代码如下:2.1 运行结果本文接着前面的文章,继续探讨最短路径的问题《【经典算法实现 36】图的最短路径计算(广度优先遍历法 和 深度优先遍历法)》《【经典算法实现 37】图的最短路径计算(Dijkstra迪杰斯特拉算法 及 其优化)》今天,我们来看下,别一种计算最短路径的算法:Floyd弗洛伊德算法。老样子,先上图:一、Floyd弗洛伊德算法1.原创 2020-08-26 15:51:35 · 616 阅读 · 0 评论 -
【经典算法实现 37】图的最短路径计算(Dijkstra迪杰斯特拉算法 及 其优化)
【经典算法实现 37】图的最短路径计算(Dijkstra迪杰斯特拉算法)一、Dijkstra 迪杰斯特拉算法1. 算法思路2. 算法代码实现二、Dijkstra 迪杰斯特拉算法(优化为任意起点作起始点,计算所有能到达的点的最短路径)1. 算法思路(以节点D作起始点为例)2. 算法代码实现3. 运行结果(查找A到所有节点的最短距离)4. 运行结果(查找D到所有节点的最短距离)三、完整代码在前面《【经典算法实现 36】图的最短路径计算(广度优先遍历法 和 深度优先遍历法)》中,我们实现了在广度优先遍历 及 深原创 2020-08-26 14:24:02 · 808 阅读 · 0 评论 -
【经典算法实现 36】图的最短路径计算(广度优先遍历法 和 深度优先遍历法)
【经典算法实现 36】图的最短路径计算(广度优先遍历法 和 深度优先遍历法)一、最短路径算法1.1 通过广度 / 深度优先 实现思路1.2 广度优先遍历实现计算最短路径代码1.3 深度优先遍历实现计算最短路径代码本文接着前文,如果对网的创建、深度优先遍历算法或广度优先遍历算法 有疑问的同学,可参考下前文:《【经典算法实现 33】图的创建 — 有向邻接矩阵法 与 网》《【经典算法实现 34】带权有向邻接矩阵(网的遍历)— 深度优先遍历算法》《 【经典算法实现 35】带权有向邻接矩阵(网的遍历)— 广度原创 2020-08-25 15:33:07 · 5990 阅读 · 0 评论 -
【经典算法实现 35】带权有向邻接矩阵(网的遍历)--- 广度优先遍历算法
【经典算法实现 34】带权有向邻接矩阵(网的遍历)--- 广度优先遍历算法一、广度遍历算法(队列实现)1. 算法思路2. 网矩阵广度优先遍历算法在前面《【经典算法实现 33】图的创建 — 有向邻接矩阵法 与 网》中,我们实现了使用邻接矩阵法实现图的创建。在《【经典算法实现 34】带权有向邻接矩阵(网的遍历)— 深度优先遍历算法》中我们实现了网矩阵的深度优先遍历算法,本文,我们来研究下,网矩阵的广度优先遍历算法。废话不多说,先上图:一、广度遍历算法(队列实现)1. 算法思路我们先把前面代原创 2020-08-25 12:37:58 · 2015 阅读 · 0 评论 -
【经典算法实现 34】带权有向邻接矩阵(网的遍历)--- 深度优先遍历算法
【经典算法实现 34】带权有向邻接矩阵(网的遍历)--- 深度优先遍历算法一、深度遍历算法(栈实现)1. 算法思路2. 网矩阵深度遍历算法3. 运行结果二、完整代码在前面《【经典算法实现 33】图的创建 — 有向邻接矩阵法 与 网》中,我们实现了使用邻接矩阵法实现图的创建。由于有向邻接矩阵是网(带权有向邻接矩阵法)的简化版,所以我们此处来研究下网(带权有向邻接矩阵法)的深序遍历算法。废话不多说,先上图:一、深度遍历算法(栈实现)1. 算法思路我们先把前面代码中网的结果发下:网矩阵创建完原创 2020-08-25 12:13:16 · 3221 阅读 · 0 评论 -
【经典算法实现 33】图的创建 --- 有向邻接矩阵法 与 网
【经典算法实现 33】图的创建 --- 邻接矩阵一、有向邻接矩阵法1. 有向邻接矩阵代码实现2. 运行结果二、网 (带权有向邻接矩阵法)在前面《【经典算法实现 30】图的创建 — 十字链表法》 中我们实现了使用十字链表法创建图。还是把之前的那张图搬出来,今天,我们来学习下使用邻接矩阵法创建这幅图:一、有向邻接矩阵法无向邻接矩阵的二维边数组是一个对称矩阵,相对比较简单本章重点来讲下有向邻接矩阵。有向图的邻接矩阵,如下图所示,使用的是一个一维数组 和一个二维数组来表示。根据上图,因此我们原创 2020-08-25 10:40:28 · 2215 阅读 · 1 评论 -
【经典算法实现 32】图的遍历 --- 广度优先遍历算法
【经典算法实现 31】图的遍历 --- 广度优先遍历算法一、 广度优先遍历算法1.1 实现思路1.2 广度优先遍历算法代码实现二、完整代码2.1 运行结果本文接着《【经典算法实现 30】图的创建 — 十字链表法》,《【经典算法实现 31】图的遍历 — 深度优先遍历算法》本文,我们来实现图的广度优先遍历算法。先上图一、 广度优先遍历算法深度优先遍历算法 与 广度优先遍历算法 最大的区别在于,深度优先遍历算法 使用的栈,后进先出广度优先遍历算法 使用的是队列,先进先出1.1 实现原创 2020-08-24 22:03:22 · 3137 阅读 · 0 评论 -
【经典算法实现 31】图的遍历 --- 深度优先遍历算法
【经典算法实现 31】图的遍历 --- 深度优先法 与 广度优先法一、深度优先算法1.1 实现思路1.2 栈代码实现1.3 深度优先算法代码实现二、完整代码实现2.1 运行结果本文接着《【经典算法实现 30】图的创建 — 十字链表法》,在它的基础上来实现 深度优先算法 与 广度优先算法。先上图一、深度优先算法1.1 实现思路假设提供的第一个节点就是A.通过A 找到B,将A 放入栈,此时栈内容为:A通过B 找到D,将B 放入栈,此时栈内容为:BA通过D 找到E,将D放入栈,此时栈内容原创 2020-08-24 21:33:48 · 2194 阅读 · 0 评论 -
【经典算法实现 30】图的创建 --- 十字链表法
【经典算法实现 30】十字链表实现图的保存一、十字链表法1.1 画出所有顶点1.2 画出所有的边1.3 完善边与顶点的出边关系1.4 完善边与顶点的入边关系二、十字链表代码实现之前写了这么多树的文章,本文要开始学习图了,先来随便画个图:问题来,如果要在C语言代码中保存这幅图,应该如何保存呢?本文主要目的,就是通过十字链表法来实现这幅图的保存 及 遍历。一、十字链表法我们先来画图,使用十字链表法,将前面的图画出来。1.1 画出所有顶点顶点结点的数据类型为// 顶点结构 typedef原创 2020-08-24 17:38:21 · 1044 阅读 · 1 评论