1.写了算法课关于有向图的作业。 用c++开辟大数组容易出segment fault,后来改用堆开辟。图的邻接表用了链表表示。 2.关于图的存储,用了邻接链表存储(用链表比vector数组存储速度快多了)。 2.1 边表 2.2 顶点表 2.3 初始化图边时用了头插法 3.深度优先搜索 3.1 递归 ...
分类:
编程语言 时间:
2018-05-06 22:23:21
阅读次数:
140
我们在前面讲过的《克里姆算法》是以某个顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树的。同样的思路,我们也可以直接就以边为目标去构建,因为权值为边上,直接找最小权值的边来构建生成树也是很自然的想法,只不过构建时要考虑是否会形成环而已,此时我们就用到了图的存储结构中的边集数组结构,如图7-6- ...
分类:
编程语言 时间:
2018-02-26 11:39:28
阅读次数:
152
一、图的存储 一般来说,图的存储方式有两种:邻接矩阵和邻接表。本节只讲解邻接矩阵的形式。 设图 G(V,E) 的顶点标号为 0,1,……,N-1,那么可以令二维数组 G[N][N] 的两维分别表示图的顶点标号,即如果 G[i][j] 为 1,则说明顶点 i 和顶点 j 之间有边;如果 G[i][j] ...
分类:
编程语言 时间:
2018-02-12 18:39:22
阅读次数:
220
一、图的存储结构 1.1 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 看一个实例,下图左就是一个无向图。 从上面可以看出,无向图的边数组是一个对称矩阵。所 ...
分类:
其他好文 时间:
2017-10-16 22:05:31
阅读次数:
156
链式前向星 这个博客写的不错:http://www.cnblogs.com/Tovi/p/6194786.html ...
分类:
编程语言 时间:
2017-10-08 15:26:12
阅读次数:
207
一、邻接矩阵 定义:以a[i][j]存储边(i,j)的相关信息,如权重等,通常是二维数组。 举例:(无向图<==>双向的有向图) 输入: 优点:能够根据起点终点直接找到某边的权值。 缺点:在稀疏图(边数接近点数)空间占用过多,浪费过大。 二、邻接表 定义:用一个指针数组 struct node *b ...
分类:
其他好文 时间:
2017-10-06 11:37:53
阅读次数:
182
本文作者frankchenfu,blogs网址http://www.cnblogs.com/frankchenfu/,转载请保留此文字。 在数学上,图是表示物件与物件之间联系的数学对象;而在计算机中,每个物件可以抽象成一个节点,而关系就是一条边。 这里主要介绍图的一些较关键的性质以及邻接矩阵、邻接表 ...
分类:
其他好文 时间:
2017-10-04 15:17:13
阅读次数:
183
这是一道判断图中有没有奇环的问题,用dfs,二分图染色法即可。 图的存储用邻接表表示,用邻接矩阵会MLE。 需要注意的一点是图中点与点之间并不一定都是连通的,染色的时候不要漏点。 1 #include<iostream> 2 #include<map> 3 #include<vector> 4 #i ...
分类:
其他好文 时间:
2017-09-14 14:59:56
阅读次数:
214
十字链表 邻接表固然优秀,但也有不足,例如对有向图的处理上,有时候需要再建立一个逆邻接表~ 那我们思考了:有没有可能把邻接表和逆邻接表结合起来呢? 答案是肯定的,这就是我们现在要谈的十字链表(Orthogonal List) 为此我们重新定义顶点表结点结构: 十字链表 十字链表 接着重新定义边表结点 ...
分类:
其他好文 时间:
2017-09-03 12:26:17
阅读次数:
179