图Graph
图Graph
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.图的概述
1>.什么是图
经典定义:图Graph由顶点和边组成,顶点的有穷非空集合为V,边的集合为E,记作 G(V, E) 。 顶点Vertex,数据元素的集合,顶点的集合,有穷非空; 边Edge,数据元素关系的集合,顶点关系的集合,可以为空。
边可以有方向。 无向边记作(A,B) 或者 (B,A) ,使用小括号。 有向边记作<A,B> ,即从顶点A指向顶点B。 <B,A> 表示顶点B指向顶点A。使用尖括号。
有向边也叫做弧,边表示为弧尾指向弧头。
2>.无向图
Undirected Graph
无方向的边构成的图。 G=(V,E) V={A,B,C,D} E={(A,B),(A,C),(B,C),(B,D),(C,D)}
3>.有向图
Directed Graph
有方向的边构成的图。 G=(V,E) V={A,B,C,D} E={<A,B>,<A,C>,<C,B>,<B,D>}
4>.稀疏图
Sparse Graph
图中边很少。最稀疏的情况,只有顶点没有边,这就是数据结构Set。
5>.稠密图
Dense Graph
图中边很多。最稠密的情况,任意2个顶点之间都有关系。
6>.完全图
Complete Graph 包括了所有可能的边,达到了稠密图最稠密的情况,任意2个顶点之间都有边相连。 有向的边的完全图,叫做有向完全图。边数为n(n-1) 无向的边的完全图,叫做无向完全图。边数为n(n-1)/2 5边形,1+2+3+4,这就是1+2+...+(n-1) = n(n-1)/2
7>.子图
如果图G(V, E)和G'(V', E') 满足V'≤ V 且 E'≤E,则G'是G的子图。
换句话说,就是一个图的部分顶点和部分边组成的图为子图,有向图要注意边的方向。
8>.边的权Weight
给边赋予的值称为权。权可以表示距离、所需时间、耗费的时间等。
约定,后面默认说的图,都是不带权的。
9>.网network
图中的边有权,图被称为网
10>.自环Loop
若一条边的两个顶点为同一个顶点,则此边称作自环。
边中存在这样一个边 (u,v) 或者 <u,v> ,且 u=v 。
11>.简单图
无重复的边,或无顶点到自身顶点的边(自环)的图。
我们后面讨论的是简单图的性质。
12>.邻接
图的边集为E。
无向图,若 (u,v)∈ Ε,则称u和v相互邻接,互为邻接顶点。
有向图,若<u,v>∈ Ε,则称u邻接到v,或v邻接于u
简单说,就是2点之间有条边,2点邻接。这说的是点之间的关系。
13>.关联(依附)
若 (u,v) ∈ E 或者 若 <u,v> ∈ E ,则称边依附于顶点u、v ,或 顶点u、v与边相关联。
这说的是点和边的关系。
14>.度Degree
一个顶点的度是指与该顶点相关联的边的条数,顶点v的度记作TD(v)。
无向图顶点的边数叫做度。
有向图的顶点有入度和出度,顶点的度数为入度和出度之和TD(v)=ID(v)+OD(v)。
入度(In-degree):一个顶点的入度是指与其关联的各边之中,以其为终点的边数
出度(Out-degree):出度则是相对的概念,指以该顶点为起点的边数。
15>.路径Path
图G(V,E),其任意一个顶点序列,相邻2个顶点都能找到边或弧依次连接,就说明有路径存在。有向图的弧注意方向。所有顶点都要属于V,所有边都必须属于E。
路径长度
等于顶点数-1,等于此路径上的边数
简单路径 路径上的顶点不重复出现,这样的路径就是简单路径

16>.回路
路径的起点和终点相同,这条路径就是回路。
简单回路
除了路径的起点和终点相同外,其它顶点都不同。
如下图所示:
ABCD就是简单路径。
ACDBA就是简单回路。
ABCDBA是回路,但是不是简单回路。
二.连通
无向图中,顶点间存在路径,则两顶点是连通的。
注意:连通指的是顶点A、D间有路径,而不是说,这两个顶点要邻接。
1>.连通图
无向图中,如果图中任意两个顶点之间都连通,就是连通图。也就是任意2个顶点之间都有路可达。
2>.连通分量
无向图中,指的是“极大连通子图”。
无向图未必是连通图,但是它可以包含连通子图。
3>.强连通
有向图中,顶点间存在2条相反的路径,即从A到B有路径,也存在从B到A的路径,两顶点是强连通的。
下图就没有2个顶点是强连通的。
4>.强连通图
有向图中,如果图中任意2个顶点都是强连通,这个图称为强连通图。
5>.强连通分量
有向图中,指的是“极大强连通子图”。
有向图未必是强连通图,但是可以包含强连通的分量。
三.DAG
一个无环的有向图称做有向无环图(Directed Acyclic Graph),称为DAG。
一个有向图中,任意一个顶点,都找不到一条能回到该顶点的路径。
四.生成树
它是一个极小连通子图,它要包含图的所有n个顶点,但只有足以构成一棵树的n-1条边。 如果一个图有n个顶点,且少于n-1条边,那么一定是非连通图。因为至少要n-1条边才行啊
如果一个图有n个顶点,且多于n-1条边,那么一定有环存在,一定有2个顶点间存在第二条路径。但是不一定是连通图,但是一定有环。
如果一个图有n个顶点,且有n-1条边,但不一定是生成树。要正好等于n-1条边,且这些边足以构 成一棵树
五.有向树
一个有向图恰好有一个入度为0的顶点,其他顶点的入度都为1。注意,这里不关心出度。
生成树森林
若干有向树构成有向树森林
有向无环图不一定能转化为树(因为可能有交叉),但是树一定是有向无环图
六.领接矩阵
图是由vertex和edge组成,所以可以分成2个数组表示。
顶点用一维数组表示,例如v0、v1、v2、v3。
边使用二维数组表示,由顶点构成的二维数组
无向图表示,如下图所示,有4个顶点的无向图:
v0 |
v1 |
v2 |
v3 |
||
v0 |
0 |
1 |
1 |
1 |
|
v1 |
1 |
0 |
1 |
0 |
v1度数为2,2条边使用了这个顶点 |
v2 |
1 |
1 |
0 |
1 |
|
v3 |
1 |
0 |
1 |
0 |
如果对角线上数字为1,说明出现了自环。 如果除了对角线全是1,说明没有自环,且是一个无向完全图。 上面的矩阵,称为图的邻接矩阵。 顶点的度数,等于对应的行或者列求和。 邻接点,矩阵中为1的值对应的行与列对应的顶点就是邻接点。 无向图的邻接矩阵是一个对称矩阵。
本文来自博客园,作者:尹正杰,转载请注明原文链接:https://www.cnblogs.com/yinzhengjie/p/11870219.html,个人微信: "JasonYin2020"(添加时请备注来源及意图备注,有偿付费)
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。