数据结构 图的基本知识点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章 图
8.1 图的基本概念 8.2 图的基本存储结构
8.2.1 邻接距阵及其实现 8.2.2 邻接表及其实现 8.3 图的遍历 8.3.1 深度优先搜索遍历 8.3.2 广度优先搜索遍历 8.4 图的应用 8.4.1 连通图的最小生成树 8.4.2 拓扑排序
8.1 图的基本概念
一、现实中的图
图最常见的应用是在交通运输和通信网络中找出造价 最低的方案。通信网络示例如下图所示:
(弧)数e和每个顶点的度di之间满足以下的关系式:
e
1 2
n i 1
D(vi )
即在有向图或无向图中: 所有顶点度数之和 :边数 = 2 :1
3.完全图、稠密图和稀疏图
在图G中:
若G为无向图,任意两个顶点之间都有一条边,称G为无 向完全图。顶点数为n,无向完全图的边数:
e=Cn2 =n(n1)/2
1.邻接点
在无向图中,若存在一条边(Vi, Vj),则称Vi和Vj 互为邻接点(Adjacent)
在有向图中,若存在一条弧<Vi, Vj >,则称Vi为此 弧的起点,称Vj为此弧的终点,称Vi邻接到Vj,Vj 邻接自Vi,Vi和Vj互为邻接点。
2.顶点的度、入度和出度
在无向图中,与顶点v相邻接的边数称为该顶点的 度,记为D(v)。
任何连通图的连通分量只有一个,即其自身,而非连通图有 多个连通分量。
在一个连通图中,含有全部顶点的极小(边数最少)连通子图, 称为该连通图的生成树。(包含图的所有 n 个结点,但只含 图的 n-1 条边。在生成树中添加一条边之后,必定会形成回 路或环)
图G1和G2为连通图
非连通图 G4
A
B
E FG
非连通图G4的三个连通分量
A
B
E
F
G
IJ
K
C
D
C
IJ
K D
连通图G5
A
B
连通图G5的两棵生成树
A
B
A
B
C
D
C
D
C
D
7.强连通、强连通分量和强连通图
在有向图G中:
存在从顶点Vi 到顶点Vj的路径,也存在从顶点Vj 到顶点Vi 的路径,则称Vi与Vj是强连通的。
如果图中任意两个顶点都是强连通,则称G为强连通图, 否则称为非强连通图。
8.2 图的基本存储结构
图需存储的信息:
V0
V1
各顶点的数据
V2
V3
V4
各个边(弧)的信息,包括:
哪两个顶点有边(弧)
V0
V1
若有权要表示出来
顶点数、边(弧)数
其中对偶可以表示成: ➢ (Vi, Vj)—无序的对偶称为边,即(Vi, Vj)=(Vj, Vi) ,其图称为 无向图 ➢ <Vi, Vj>—有序的对偶称为弧,即<Vi, Vj> ≠<Vj, Vi>,则称Vi 为弧尾,称Vj为弧头,该图称为有向图
有向图和无向图示例:
无向图G1的二元组表示: V(G1)={V1, V2, V3, V4} E(G1)={(V1, V2),(V1, V3),(V1, V4),(V2, V3),(V2, V4),(V3, V4)} 有向图G3的二元组表示: V(G3)={V1, V2, V3} E(G3)={<V1, V2>,<V1, V3>,<V2, V3>,<V3, V2>}
在有向图G3中: 顶点序列(V2, V3, V2)是一个长度为2的有向简单 环。
6.连通、连通分量和连通图、生成树
在无向图G中:
如果从顶点Vi 到顶点Vj至少有一条路径,则称Vi与Vj是连通 的。
如果图中任意两个顶点都连通,则称G为连通图,否则称为 非连通图。
在非连通图G中,任何一个极大连通子图称为G的连通分量。
若G为有向图,任意两个顶点Vi, Vj之间都有弧<Vi,Vj> 、 <Vj,Vi> ,称G为有向完全图。如顶点数为n,有向完全图 的弧数:
e=Pn2 =n(n1)
例如,无向图G1就是4个顶点无向完全图。 若一个图接近完全图,则称其为稠密图;反之,若一个图含
有很少条边或弧(即e<<n2),则称其为稀疏图。
在百度文库强连通图G中,任何一个极大强连通子图称为G的强连 通分量。
任何强连通图的强连通分量只有一个,即其自身,而非强 连通图有多个强连通分量。
有向图G和强连通分量示例:
8.权、带权图、有向网和无向网
在一个图中,各边(或弧)上可以带一个数值,这个数值称为 权。
这种每条边都带权的图称为带权图或网 有向网:带权有向图 无向网:带权无向图
路径长度定义为路径上的边数或者弧的数目。 若一条路径中不出现重复顶点,则称此路径为简单路径。 若一条路径的起点和终点相同(Vp=Vq)称为回路或环。 除了起点和终点相同外,其余顶点不相同的回路,称为简单
回路或简单环。
例如,在无向图G1中: 顶点序列(V1, V2, V3, V4)是一条从顶点V1到顶点 V4,长度为3的简单路径; 顶点序列(V1, V2, V4, V1, V3)是一条从顶点V1到 顶点V3,长度为4的路径,但不是简单路径; 顶点序列(V1, V2, V3, V1)是一条长度为3的简单 回路。
二、图的定义
图G是由一个顶点集V和一个边集E构成的数据结构。
记为二元组形式: G= (V, E) 其中:
➢ V是由顶点构成的非空有限集合,记为:V={V0, V1, V2, …Vn-1} ➢ E是由V中顶点的对偶构成的有限集合,记为:E={(V0, V2), (V3, V4), … },若E为空,则图中只有顶点而没有边。
在有向图中,顶点v的度又分为入度和出度两种:
以顶点v为终点(弧头)的弧的数目称为顶点v的入度,记 为ID(v);
以顶点v为起点(弧尾)的弧的数目称为顶点v的出度,记 为OD(v);
有向图顶点v的度为该顶点的入度和出度之和,即 D(v)=ID(v)+OD(v)
无论是有向图还是无向图,一个图的顶点数n、边
4.子图
若有图G=(V, E)和G′=(V′, E′)
且V′ 是V的子集,即V′V , E′是E的子集,即 E′ E
则称图G′为图G的子图。
5.路径、回路和路径长度
在无向图G中,若存在一个顶点序列(Vp , Vi1 , Vi2 , … , Vin , Vq), 使(Vp, Vi1),(Vi1, Vi2),…,(Vin, Vq)均为图G的边,则该称顶 点的序列为顶点Vp到顶点Vq的路径。若G是有向图,则路径 是有向的。
8.1 图的基本概念 8.2 图的基本存储结构
8.2.1 邻接距阵及其实现 8.2.2 邻接表及其实现 8.3 图的遍历 8.3.1 深度优先搜索遍历 8.3.2 广度优先搜索遍历 8.4 图的应用 8.4.1 连通图的最小生成树 8.4.2 拓扑排序
8.1 图的基本概念
一、现实中的图
图最常见的应用是在交通运输和通信网络中找出造价 最低的方案。通信网络示例如下图所示:
(弧)数e和每个顶点的度di之间满足以下的关系式:
e
1 2
n i 1
D(vi )
即在有向图或无向图中: 所有顶点度数之和 :边数 = 2 :1
3.完全图、稠密图和稀疏图
在图G中:
若G为无向图,任意两个顶点之间都有一条边,称G为无 向完全图。顶点数为n,无向完全图的边数:
e=Cn2 =n(n1)/2
1.邻接点
在无向图中,若存在一条边(Vi, Vj),则称Vi和Vj 互为邻接点(Adjacent)
在有向图中,若存在一条弧<Vi, Vj >,则称Vi为此 弧的起点,称Vj为此弧的终点,称Vi邻接到Vj,Vj 邻接自Vi,Vi和Vj互为邻接点。
2.顶点的度、入度和出度
在无向图中,与顶点v相邻接的边数称为该顶点的 度,记为D(v)。
任何连通图的连通分量只有一个,即其自身,而非连通图有 多个连通分量。
在一个连通图中,含有全部顶点的极小(边数最少)连通子图, 称为该连通图的生成树。(包含图的所有 n 个结点,但只含 图的 n-1 条边。在生成树中添加一条边之后,必定会形成回 路或环)
图G1和G2为连通图
非连通图 G4
A
B
E FG
非连通图G4的三个连通分量
A
B
E
F
G
IJ
K
C
D
C
IJ
K D
连通图G5
A
B
连通图G5的两棵生成树
A
B
A
B
C
D
C
D
C
D
7.强连通、强连通分量和强连通图
在有向图G中:
存在从顶点Vi 到顶点Vj的路径,也存在从顶点Vj 到顶点Vi 的路径,则称Vi与Vj是强连通的。
如果图中任意两个顶点都是强连通,则称G为强连通图, 否则称为非强连通图。
8.2 图的基本存储结构
图需存储的信息:
V0
V1
各顶点的数据
V2
V3
V4
各个边(弧)的信息,包括:
哪两个顶点有边(弧)
V0
V1
若有权要表示出来
顶点数、边(弧)数
其中对偶可以表示成: ➢ (Vi, Vj)—无序的对偶称为边,即(Vi, Vj)=(Vj, Vi) ,其图称为 无向图 ➢ <Vi, Vj>—有序的对偶称为弧,即<Vi, Vj> ≠<Vj, Vi>,则称Vi 为弧尾,称Vj为弧头,该图称为有向图
有向图和无向图示例:
无向图G1的二元组表示: V(G1)={V1, V2, V3, V4} E(G1)={(V1, V2),(V1, V3),(V1, V4),(V2, V3),(V2, V4),(V3, V4)} 有向图G3的二元组表示: V(G3)={V1, V2, V3} E(G3)={<V1, V2>,<V1, V3>,<V2, V3>,<V3, V2>}
在有向图G3中: 顶点序列(V2, V3, V2)是一个长度为2的有向简单 环。
6.连通、连通分量和连通图、生成树
在无向图G中:
如果从顶点Vi 到顶点Vj至少有一条路径,则称Vi与Vj是连通 的。
如果图中任意两个顶点都连通,则称G为连通图,否则称为 非连通图。
在非连通图G中,任何一个极大连通子图称为G的连通分量。
若G为有向图,任意两个顶点Vi, Vj之间都有弧<Vi,Vj> 、 <Vj,Vi> ,称G为有向完全图。如顶点数为n,有向完全图 的弧数:
e=Pn2 =n(n1)
例如,无向图G1就是4个顶点无向完全图。 若一个图接近完全图,则称其为稠密图;反之,若一个图含
有很少条边或弧(即e<<n2),则称其为稀疏图。
在百度文库强连通图G中,任何一个极大强连通子图称为G的强连 通分量。
任何强连通图的强连通分量只有一个,即其自身,而非强 连通图有多个强连通分量。
有向图G和强连通分量示例:
8.权、带权图、有向网和无向网
在一个图中,各边(或弧)上可以带一个数值,这个数值称为 权。
这种每条边都带权的图称为带权图或网 有向网:带权有向图 无向网:带权无向图
路径长度定义为路径上的边数或者弧的数目。 若一条路径中不出现重复顶点,则称此路径为简单路径。 若一条路径的起点和终点相同(Vp=Vq)称为回路或环。 除了起点和终点相同外,其余顶点不相同的回路,称为简单
回路或简单环。
例如,在无向图G1中: 顶点序列(V1, V2, V3, V4)是一条从顶点V1到顶点 V4,长度为3的简单路径; 顶点序列(V1, V2, V4, V1, V3)是一条从顶点V1到 顶点V3,长度为4的路径,但不是简单路径; 顶点序列(V1, V2, V3, V1)是一条长度为3的简单 回路。
二、图的定义
图G是由一个顶点集V和一个边集E构成的数据结构。
记为二元组形式: G= (V, E) 其中:
➢ V是由顶点构成的非空有限集合,记为:V={V0, V1, V2, …Vn-1} ➢ E是由V中顶点的对偶构成的有限集合,记为:E={(V0, V2), (V3, V4), … },若E为空,则图中只有顶点而没有边。
在有向图中,顶点v的度又分为入度和出度两种:
以顶点v为终点(弧头)的弧的数目称为顶点v的入度,记 为ID(v);
以顶点v为起点(弧尾)的弧的数目称为顶点v的出度,记 为OD(v);
有向图顶点v的度为该顶点的入度和出度之和,即 D(v)=ID(v)+OD(v)
无论是有向图还是无向图,一个图的顶点数n、边
4.子图
若有图G=(V, E)和G′=(V′, E′)
且V′ 是V的子集,即V′V , E′是E的子集,即 E′ E
则称图G′为图G的子图。
5.路径、回路和路径长度
在无向图G中,若存在一个顶点序列(Vp , Vi1 , Vi2 , … , Vin , Vq), 使(Vp, Vi1),(Vi1, Vi2),…,(Vin, Vq)均为图G的边,则该称顶 点的序列为顶点Vp到顶点Vq的路径。若G是有向图,则路径 是有向的。