弗洛伊德算法是计算无向有权图中两点间最短路径的算法,复杂度为O(n^3)。其思路是将两点间距离分为过(指定的)第三点或是不过,然后取它们的最小值,如此循环就可以得到两点之间真正的最小值。 其中,matrix为有n个点的图的邻接矩阵,若两点没有直连路径则设相应的值为MAX。执行函数后的矩阵的对应项即为 ...
分类:
编程语言 时间:
2017-07-21 23:18:41
阅读次数:
285
图的建立有两种,邻接矩阵和邻接表。 邻接矩阵适用于图较为密集,(稀疏图太浪费存储空间了),图如果较为稀疏,则使用邻接表为宜,dijkstra算法就是以邻接表为基础的。 有向无权图 无向无权图的建立: 有向有权图的建立: 无向有权图的建立: ...
分类:
其他好文 时间:
2017-05-07 00:07:21
阅读次数:
144
Dijkstra算法:有权图的单源最短路 1.最短路必定只经过S中的顶点 如果还存在一个w在S之外,v0>w必定小于v0>v,但路径是按照递增顺序生成的,那么w一定已经收录了,与前提矛盾。 2.新收录一个v,会影响v的邻接点的dist值 如果收录v使得s>w的路径变短,则s>w的路径一定经过v,并且 ...
分类:
其他好文 时间:
2017-05-06 11:51:03
阅读次数:
191
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法, 在很多专业课程中都作为基本内容有详细的介绍,如数据结构 ...
分类:
编程语言 时间:
2017-04-22 17:39:36
阅读次数:
191
一、 图的最常用的表示方法是邻接矩阵和邻接表。 1,邻接矩阵 邻接矩阵其实就是一个二维数组,对于每条边<u,v>,我们就令A[u][v] = 1,如果图为有权图,我们也可以令A[u][v]等于该权,这么表示的优点是非常简单,但是它的空间需求很大,如果图是稠密的,邻接矩阵是合适的表示方法,如果图是稀疏 ...
分类:
编程语言 时间:
2017-04-20 23:20:47
阅读次数:
235
如果看完本篇博客任有不明白的地方,可以去看一下《大话数据结构》的7.4以及7.5,讲得比较易懂,不过是用C实现 下面内容来自segmentfault 存储结构 要存储一个图,我们知道图既有结点,又有边,对于有权图来说,每条边上还带有权值。常用的图的存储结构主要有以下二种: 邻接矩阵 邻接表 邻接矩阵 ...
分类:
编程语言 时间:
2017-03-19 15:38:20
阅读次数:
245
bzoj1681[Usaco2005 Mar]Checking an Alibi 不在场的证明 题意: 给个点集,求无向有权图中点集里的哪些点到点1的距离小于等于M。点集内点数≤100,图中点数≤500,边数≤1000。 题解: spfa。 代码: 20160803 ...
分类:
其他好文 时间:
2016-08-06 15:43:21
阅读次数:
204
存储结构 要存储一个图,我们知道图既有结点,又有边,对于有权图来说,每条边上还带有权值。常用的图的存储结构主要有以下二种: 邻接矩阵 邻接表 邻接矩阵 我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一维数组来表示了,我们可以用二维数组来表示,也就是一 ...
分类:
其他好文 时间:
2016-05-23 10:38:11
阅读次数:
146
Floyd算法又称弗洛伊德算法,也叫做Floyd's algorithm,Roy–Warshall algorithm,Roy–Floyd algorithm, WFI algorithm。 Floyd算法是一种在有权图中(有确定的非负的权值,不能存在环路)查找最短路径的算法。该算法的一次简单执行可
分类:
编程语言 时间:
2016-03-10 21:59:24
阅读次数:
195
插点法,也就是Flord算法,主要应用于 求出有权图中最短路径。算法核心:for(k=1;k<=n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(d[i][k]+d[k][j]<d[i][j])d[i][j]=d[i][k]+d[k][j];}
分类:
编程语言 时间:
2015-07-16 00:43:10
阅读次数:
168