数据结构第六章(一)
图
一、图的基本概念
感觉要想怎么定义图,图就是顶点和边组成的集合。完了图中有一些比较容易混淆的概念,这些都得有个印象。
先总体给个图的定义:
图G由顶点集V (Vertex)和边集E (Edge)组成,记为G={V,E}
,其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。
若V={v1,v2,...,vn},则用|V|
表示图G中顶点的个数
,也称图G的阶
,E={(u,v) | u∈V,v∈V},用|E|
表示图G中边的条数
。
注意:线性表可以是空表,树可以是空树,但图不可以是空,即V一定是非空集。
有点干,上个图;

当然,由上面可知,一个图也可以只有顶点没有边,也就是有V,但E=∅。
1.图的分类、度、权等
我们根据图的边有没有方向可以把图分为有向图和无向图,即:
-
若E是
无向边
(简称边
)的有限集合时,则图G为无向图
。边是顶点的无序对,记为(v,w)或者(w,v),因为(v,w)=(w,v)
,其中v,w是顶点,可以说顶点w和顶点v互为邻接点。边(v,w)依附于顶点w和v,或者说边(v,w)和顶点v,w相关联。 -
若E是
有向边
(也称弧
)的有限集合时,则图G为有向图
。弧是顶点的有序对,记为<v,w>,其中v,w是顶点,v称为弧尾
,w称为弧头
,<v,w>称为从顶点v到w的弧,也称v邻接到w,或w邻接自v。<v,w>≠<w,v>
一个箭头 v ------>w,弧尾就是v,弧头就是w,就把箭头的头当成弧头的头就行了。
图还分为简单图和多重图:
简单图:不存在重复边,不存在顶点到自身的边。
多重图:图G中某两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联,则G为多重图。
什么意思呢?就是说你看看这个图里面有没有自己指向自己的,有没有俩顶点有两个同样的边的,有就是多重图,没就是简单图,咱们未来只讨论简单图。
顶点的度、入度、出度
无向图

对于无向图而言,顶点v的度是指依附于该顶点的边的条数,记为TD(v)。
在具有n个顶点、e条边的无向图中,所有顶点的度之和=2e,即无向图的全部顶点的度的和等于边数的2倍
。
有向图

入度是以顶点v为终点的有向边的数目,记为ID(v);
出度是以顶点v为起点的有向边的数目,记为OD(v);
顶点V的度
等于其入度和出度之和
,即TD(v)=ID(v)+OD(v).
在具有n个顶点、e条边的有向图中,所有顶点的入度之和=所有顶点的出度之和=e
2.路径、回路、连通等
-
路径 ------顶点vp到顶点vq之间的一条路径是指顶点序列vp,vi1,vi2,...,vim,vq;
-
回路------第一个顶点和最后一个顶点相同的路径称为回路或环;
-
简单路径------在路径序列中,顶点不重复出现的路径称为简单路径;
-
简单回路------除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路;
-
路径长度------路径上边的数目;
-
点到点的距离 ------从顶点u出发到顶点v的
最短路径
若存在,则此路径的长度称为从u到v的距离
。 -
若从u到v根本不存在路径,则记该距离为无穷(∞)。
注意:有向图的路径也是有向的。
-
无向图
中,若从顶点v到顶点w有路径存在,则称v和w是连通
的; -
有向图
中,若从顶点v到顶点w和从顶点w到顶点v之间都有路径,则称这两个顶点是强连通
的。
注意:连通指的是无向图,强连通指的是有向图。
-
若
无向图
图G中任意两个顶点都是连通的,则称图G为连通图
,否则称为非连通图
; -
若
有向图
图G中任何一对顶点都是强连通的,则称此图为强连通图
。
那这就有点要说的东西了,要开始问了:如果对于n个顶点的无向图G,若图G是连通图,则最少有多少条边?
既然是最少,那就是除了让它们这些顶点有一丝连接外其他的没必要的都没有,所以以一个顶点为基点,去向外连接各个其他顶点,这就是最少的情况,也就是n-1条边。(形状大概是一个爪型,最少嘛,再少就不是连通图了)
那再问一个,如果对于n个顶点的无向图G,若图G是非连通图,则最多有多少条边?
既然是最多,那就是先把一个顶点刨出来,让其他的顶点尽可能地多连,这个刨出来的顶点不和他们连(因为连了就是连通图,人家说要非连通图),所以最多可能有C2n-1条边。
那么有向图也有要问一个,如果对于n个顶点的有向图G,若图G是强连通图,则最少有多少条边?
有向图,又要是强连通图,强连通图就是所有顶点之间都有路径(能走通就行,不一定是非得一个两顶点直连),那么最简便的方式就是直接一个接一个按照同方向串起来,所以最少有n条边(也就是形成回路的情况)。
3.连通分量、生成树等
在说图的局部 之前,先说个子图是啥玩意儿:
设有两个图G=(V,E),和G'=(V',E'),若V'是V的子集,且E'是E的子集,则称G'是G的子图
。
若有满足V(G')=V(G)的子图G',则称其为G的生成子图
。
其实生成子图就是顶点不能少,一个都不能少。而且子图首先得是个图,如果不是图那也不是子图。
无向图
中的极大连通子图称为连通分量。
这句话,什么是极大连通子图?就是图中最大的连通子图,不能被包含在更大的连通子图中。在连通图中,整个图即为一个极大连通子图;在不连通图中,极大连通子图对应各个独立的连通分量。

有向图
中的极大强连通子图称为强连通分量。

同理,只不过多了个强,它以后再也不用要强了,因为它的强来了。
连通图的
生成树
是包含图中全部顶点的一个极小连通子图。
注意,这里说的是连通图,也就是无向图
!!!
这个极小连通子图的极小是啥意思呢?意思就是说边要尽可能地小,但要保持连通。那又回到我们之前说的,边尽可能地小的话,又要让它保持连通,我们怎么说来着?最少会有n-1条边(因为再少就不连通了)。但是要知道,一个图可能不止有一个生成树,上个图:

若图中顶点数为n,则它的生成树含有n-1条边。对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一条回路。
在非连通图
中,连通分量的生成树
构成了非连通图的生成森林
。
上个图就明白了:

-
边的权 ------在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的
权值
; -
带权图/网 ------边上带有权值的图称为带权图 ,也称网;
-
带权路径长度 ------当图是带权图时,一条路经 上所有边的权值之和,称为
该路径的带权路径长度
。
这个边的权值其实就是给各边赋予一个实际的意义。
二、几种特殊的图
1.完全图
无向完全图------无向图中任意两个顶点之间都存在边
若无向图的顶点数|V|=n,则 |E|∈[0,C2n] = [0,n(n-1)/2
]
有向完全图------有向图中任意两个顶点之间都存在方向相反的两条弧
若有向图的顶点数|V|=n,则 |E|∈[0,2C2n] = [0,n(n-1)
]
也不知道有什么意义,反正图很丑,不信看看:

2.稠密图、稀疏图
就字面意思,边数很少的图称为稀疏图 ,反之就是稠密图。
也没有绝对的界限,一般来说|E|<|V|log|V|时,可以将G视为稀疏图。这个不用记,就了解一下。
3.树、有向树
树呢该怎么和图联系一下?树
其实就是一个不存在回路,而且连通
的无向图
,把树横过来啥的不就是我们平常看到的图的样子了吗。
n个顶点的树,必有n-1条边。
想想也是了,每个结点都有双亲结点,但是根节点没有,所以必有n-1条边。
这个"n-1"是不是有点眼熟,什么来着?我们之前说过,如果要想让一个图连通,那么最少是n-1条边是吧。那其实也可以反之,如果有个n个顶点的图,若|E|>n-1,则一定有回路
。
有向树------一个顶点的入度为0,其余顶点的入度均为1的有向图,称为有向树。
(就是本来不直接连孩子吗,现在连孩子的那个线都有个箭头指向孩子。)
三、常见考点
对于n个顶点的无向图
G:
-
所有顶点的度之和=2|E|
-
若G是连通图,则最少 有n-1条边(树),若|E|>n-1,则一定有回路
-
若G是非连通图,则最多 可能有C2n-1条边
-
无向完全图共有C2n条边
对于n个顶点的有向图
G:
-
所有顶点的入度之和=所有顶点的入度之和=|E|
-
所有顶点的度之和=2|E|
-
若G是强连通图,则最少 有n条边(形成回路)
-
无向完全图共有2C2n条边
总结
就是说了一下图的一些常用的概念,这些概念在之后也会用到。要注意的就是连通图最少n-1条边,非连通图最多C2n-1条边,这些都是无向图。有向图的话强连通图最少有n条边,是一条回路。