图论知识整理(1)定义、存储及遍历
=====================================
发现以前图论学的很不好,什么都不会,现在开始整理图论知识了
作者就是个蒟蒻,ORZ各位大神们
=====================================
首先,定义(最恶心的了)
点集:图中点的集合,用V表示。
边集:图中边的集合,用E表示。
图:点集与边集的结合,用G表示,通常写作G=(V,E)。
图的阶:点集的大小,等于|V|,如上图,这张图的阶为10。
度:图中与某个顶点相关联的边的数目,称作顶点的度。。
度为奇数的称为奇点,度为偶数的称为偶点。
容易得知,上面的图中全部是奇点。
有向图中,路径通向这个顶点的数目叫做入度,从这个顶点出发的路径的数目叫出度。
(原谅我语文不太好,描述的并不是特别清楚)
带权图:每条边都有一个权值。
完全图:任意两个顶点间都有一条边相连的图,我们记作G0=(V,E)。
补图:设G=(V,E)的补图为G',那么G'=G0-G。
特别的,完全图的补图为空(这句话我并不确定)。
子图:设原图为G=(V,E),那么从V中选出任意x个元素组成V’,由E中选出任意y个元素组成E',那么G'=(V',E')为G=(V,E)的子图。
其中,x最多为|V|,y最多为原图的边数。
重边:设当前有一条边(u,v)(u、v为顶点),如果又添加进一个(u,v),那么就是重边。
当无向图的时候,若添加进(v,u)也视作重边。
路径:一般是指一条链,v1->v2->v3->...->vn为一条路径。
环:v1->v2->v3->...->vn->v1就是一条环了。
自环:如果一个环只包含一个元素v,那么这个环为v1的自环。
简单图:没有环(包括自环),没有重边的图。
连通:从vi到vj有一条路径,那么vi、vj是连通的,有向图需要考虑方向。
连通图:任意两个顶点都有路径相连
强连通图:有向图,任意两个顶点x、y间,x、y是联通的,同时y、x也是连通的,那么就是强连通图。
作者发现了一些东西:对于无向图,只要他是连通的,就必定是强连通的。不过对于定义的前提貌似………………
(你们还是省略上面那句话好了)
强连通分量:极大的强连通子图,对于强连通图,强连通分量只有一个,为本身。
非强连通的有向图可能会有多个强连通分量
你现在找到了一个强连通分量,你可以删去一些点,再加入一些另外的点,让它仍然保持是一个强连通图,那么就会有多个强连通分量
点割集:点集V’∈V,若G删除了V’后不连通,但删除了V’的任意真子集后G仍然连通。则称V’为点割集。若某一结点就构成了点割集,则称此结点为割点。
边割集:边集E’∈E,若G删除了E’后不连通,但删除了E’的任意真子集后G仍然连通。则称E’为边割集。若某一条边就构成了边割集,则称此边为割边或桥。
呼~终于写完定义了。
下面来看---图的存储方法:
1. 邻接矩阵(我觉得这个已经够清楚了,不必多说)
2. 邻接表(同上)
3. 边集数组 SPFA会用到,可以参照http://blog.fishc.com/2535.html#prettyPhoto,这里面还有其他数据结构。
图的遍历分两种:
1. DFS
2. BFS
这个大家应该都挺了解的吧,就不展开了