之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M。对于稀疏图来说,M要远远小于N2。先上数据,如下。45 149 438 125 246 137第一行两个整数n m。n表示顶点个数(顶点编号为1~n),m表示边的条...
分类:
其他好文 时间:
2015-04-23 19:16:17
阅读次数:
218
描述图的表示除了邻接矩阵表示,还可以使用链表数组。对每个顶点(表头节点)建立一个单链表,第i个单链表中节点表示依附于顶点vi 的边(对有向图而言,是以顶点vi为尾的弧)。所以在邻接表中,除了节点外,还有表头节点。两种方法比较假设图有V个顶点,E条边。空间权衡方面,邻接矩阵使用的空间正比于V^2;而邻接表所使用的空间正比于V+E。如果边数较少(也叫稀疏图),则优先选用邻接表。若大多数顶点对都由边相接(...
分类:
其他好文 时间:
2015-04-17 11:44:43
阅读次数:
186
深夜来一发,裸的最小生成树,数据量还挺大,kruskal算法g++始终过不去,c++刚好飘过,这个时候就体现出kruskal和prim的适用范围的不同了,前者适用于稀疏图,后者适用于稠密图。kruskal算法: 1 #include 2 #include 3 using namespace st.....
分类:
其他好文 时间:
2015-04-06 00:52:57
阅读次数:
239
最小生成树最小生成树即用最少的边权将所有给定的点连在同一联通分量中,常用kruskal和prim算法kruskal算法(适合稀疏图)最小生成树的kruskal算法,稍带并查集的应用int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]); //不...
分类:
其他好文 时间:
2015-03-11 16:35:21
阅读次数:
170
图表示之前的博客里已经说过了图的两种表示方法,一个是邻接链表,一个是邻接矩阵的方法。前面适合稀疏图,后面自然就适合稠密图。图创建邻接矩阵邻接矩阵其实就是二维矩阵,在前面的图表示已经简单的说过了,直接建立一个int G[NumVertex][NumVertex]然后直接输入就好了。下面着重讲一下邻接链表的方法。邻接链表表示方法已经说过了,传送门:图表示。下面看下代码:struct Node{...
分类:
编程语言 时间:
2015-03-10 12:11:08
阅读次数:
144
上一篇中写了图的最小生成树求法一——Kruskal算法 http://blog.csdn.net/wtyvhreal/article/details/43526695
这一篇中用另外一种方法来求解图的最小生成树,Prim算法。
图中随便选一个顶点开始,看看这个顶点有哪些边,在它的边中找一条最短的。1号有1-2,1-3,其中1-2短,选择1-2.通过它把1和2连接在一起。接下来开始枚举1...
分类:
编程语言 时间:
2015-02-05 16:36:13
阅读次数:
135
图
之前学了链表,队列,堆栈等~
然后学树,二叉树~
现在学图,实际上就是结构看起来复杂了一点,点与点之间关系更多了。
图表示
图有两种表示方法:
邻接表邻接链表
这两种表示方法都可以表示所有图,他们之间的区别是所用的空间不一样。邻接表就是用二维数组来表示一个图。所需空间为O(N^2)。(M为边数量, N为点数量)。而邻接链表的表示方法更适合稀疏图(就是边比较少的...
分类:
编程语言 时间:
2015-02-04 00:38:28
阅读次数:
273
邻接矩阵和邻接表区别:
对于n个顶点,m条边,对于n阶有向完全图最大的m=2*( n-1+(n-2)+(n-3)+...+2+1 )= O(n^2) ,当边数远小于n^2的稀疏图来说用邻接表储存图的空间时间复杂度是O(M),而邻接矩阵储存是O(N^2).
邻接表的两种实现方式:
1.用数组实现:
int u[ ],v[ ],w[ ]; //分别储存u点,v点,和边权值。
int ...
分类:
其他好文 时间:
2015-01-15 09:29:00
阅读次数:
224
特点:适用于稀疏图,边比较少的图。如果顶点较少,且为稠密图,则用Prim算法。跟Prim算法的用途相同。时间复杂度为O(e*loge),其中e为边数。代码:#include #include #define MAXEDGE 20 //设定边的最大值#...
分类:
编程语言 时间:
2014-12-22 17:30:38
阅读次数:
142
模板题,学习一下最小生成树的Kruskal算法对于稀疏图来说按所给的边的权值从小到大排序,如果该边不与已经选的边形成环就选择它这里用并查集来实现第i条边的端点放在u、v数组中,权值保存在w中这里用的是间接排序,也就是排的是每条边的序号,放在rank数组中 1 //#define LOCAL 2 #i...
分类:
其他好文 时间:
2014-09-05 19:46:21
阅读次数:
186