数据结构09图

第七章 图 Graph

 

7.1 图的定义和术语

顶点 Vertex 
V 是顶点的有穷非空集合,顶点数 |V| = n
VR 两个顶点之间关系的集合,边数 |VR| = e

有向图 Digraph
<v, w> Arc
v Tail / Inital node
w Head / Terminal node

无向图 Undigraph
<v, w> 必有 <w, v> Edge

完全图(Completed graph):有 n(n-1)/2 条边的无向图
有向完全图:有 n(n-1) 条弧的有向图
稀疏图(Sparse graph):很少边或弧,如 e < nlogn
稠密图(Dense graph)
权(Weight):边或弧的相关数
子图(Subgraph)V'\subseteq V and\ E'\subseteq E
邻接点(Adjacent)(v, v')\in E,则称顶点 v 和 v' 互为邻接点
 Arc\ <v, v'> \in A,则称顶点v邻接到顶点v',顶点v'邻接自顶点v
依附(Incident):边(v, v')依附于顶点 v 和 v',或者说 相关联。
度(Degree):顶点v相关联的边数,记为TD(V)
入度(InDegree):以顶点v为头的弧数,ID(v)
出度(OutDegree):以顶点v为尾的弧数,OD(v)
TD(v)=ID(v)+OD(v)
e=\frac{1}{2}\sum_{i=1}^{n}TD(v_{i})

路径(Path):从顶点 v 到 v' 的一个顶点序列
环(Cycle):第一个顶点和最后一个顶点相同的路径
简单路径:序列中顶点不重复出现的路
简单回路 / 简单环:除第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路

连通:在无向图G中,如果顶点v 到顶点v' 有路径,则称v 和 v' 连通
连通图(Connected Graph):无向图中,任意两个顶点有路径
连通分量(Connected Component):无向图中的极大连通子图
强连通图:有向图G中,任意两个顶点之间有路径
强连通分量:有向图中,极大强连通子图

生成树:连通图的一个极小连通子图,包含全部顶点,n-1条边
如果一个图有n个顶点,小于n-1条边,则是非连通图
如果大于n-1条边,一定有环。
有n-1条边的图不一定是生成树。

如果一个有向图恰有一个顶点入度为0,其余顶点入度均为1,则是一棵有向树。
生成森林:一个有向图的生成森林,由若干棵有向树组成,含图中全部顶点,最少条边。

图中的顶点不存在全序关系,即无法排成一个线性序列。
任何一个顶点都可以被看成是第一个顶点;任一顶点的邻接点之间也不存在次序关系。

 

7.2 图的存储结构

邻接矩阵、邻接表、邻接多重表、十字链表

7.2.1 邻接矩阵

7.2.2 邻接表

总在表头插入结点,所以邻接表的存储结构还与弧的输入顺序有关。

图的邻接表存储结构适合存储弧相对较少的稀疏图。

 

7.3 图的遍历

对图的搜索就是对图中顶点的遍历。

为了不重复访问顶点,需要为顶点向量设立一个访问标志数组visit[],并将初值置为FALSE,即未被访问。
遍历时,在访问后,将标志的值改为TRUE。

两种搜索原则:

  1. 深度优先搜索;
  2. 广度优先搜索。

7.3.1 深度优先搜索

7.3.2 广度优先搜索

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章