超强数据结构教学 图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
7.1 图的定义和术语
例1
245
1
3
G1
例2
1
57
路径:1,2,3,5,6,3 路径长度:5 简单路径:1,2,3,5 6 回路:1,2,3,5,6,3,1 简单回路:3,5,6,3 路径:1,2,5,7,6,5,2,3 路径长度:7
简单路径:1,2,5,7,6
32
4
G2
回路:1,2,5,7,6,5,2,1
7.1 图的定义和术语
图G1中: V(G1)={1,2,3,4,5,6}
E(G1)={<1,2>, <2,1>, <2,3>, <2,4>, <3,5>, <5,6>, <6,3>}
例 245
例 1
57
1
3
6
32 4 6
G1
G2
无向图 若图中的边是顶点的无序对,则称此图为无向图。通
常用园括号表示无向边。(v,w)或(w,v),并且(v,w)=(w,v)
4
7.1 图的定义和术语
7、路径 在无向图 G=(V, E) 中, 若存在一个顶点序列 vp1, vp2, …, vpm,
使得(vi, vp1)、(vp1, vp2)、 ...、(vpm, vj)均属于E,则称顶点vi到vj 存在一 条路径。路径长度定义为路径上边或弧的数目。 若一条路径上除了vi 和vj 可以相同外, 其余顶点均不相同,则 称此路径为一条简单路径 。 起点和终点相同的路径称为简单回路或简单环。
TD(V)=ID(V)+OD(V)
例1
例2
245
1
57
1
3
6
G1 顶点2入度:1 出度:3
顶点4入度:1 出度:0
32
46
G2 顶点5的度:3
顶点2的度:4
3
7.1 图的定义和术语
6、子图 设有两个图 G=(V, E) 和 G‘=(V’, E‘)。若 V’ V 且
E‘E, 则称 图G’ 是 图G 的子图。
每个结点有三个域组成: adjvex nextarc info
邻接结点域(adjvex):指示与顶点Vi邻接的点在图 中的位置。
链域(nextarc):指示下一条边或弧的结点。 数据域(info):存储和边相关的信息,如权值等
14
二、图的邻接表存储表示
头结点
data firstarc
2
2
1
3
1
3
有向完全图
无向完全图
4、相邻顶点、相关联弧或边
若<V1,V2> E或(V1,V2) E ,则V1,V2是相邻顶点,弧 <V1,V2>或边(V1,V2)是与顶点V1和V2相关联弧或边。
2
7.1 图的定义和术语
5、度 一个顶点V的度是与该顶点相关联的边的数目,记为TD(V)。
对于有向图,则把以顶点V为弧尾的数目称为点V的出度, 记为OD(V),把以顶点V为头的弧的数目称为顶点V的入 度,记为ID(V)。 顶点V的度为:
6
简单回路:1,2,3,1
6
7.1 图的定义和术语
8、图的连通 在无向图G中,若两个顶点vi和vj之间有路径存 在,则称vi 和vj 是连通的。若G中任意两个顶点都是连通的, 则称G为连通图。
非连通图的极大连通子图叫做连通分量。
9、强连通图与强连通分量 在有向图中, 若对于每一对顶点vi 和vj, 都存在一条从vi到vj和从vj到vi的路径,则称此图是强连通 图。非强连通图的极大强连通子图叫做强连通分量。
例
1
2
3
4
5
G2
0 1 0 1 0
1 0 1 0 1
0 1 0 1 1
1 0 1 0 0
0 1 1 0 0
11
一、数组表示法(邻接矩阵)
借助邻接矩阵容易判定任意两个顶点之间是否有边(或弧)相 连,并容易求得各个顶点的度。
对于无向量,顶点Vi的度是邻接矩阵中第i行(或第i列)的元
素之和,即
例
例
例
5
245
245
1
3
连通图
3
6
61
3
6
强连通图
非连通图,连通分量
7
7.1 图的定义和术语
10、带权图或网
若给图中每一条边附加一个实数作为权,则该图称 为带权图或网。
这些权可以表示从一个顶点到另一个顶点的距离或
花费的代价。
7
10 2
5 9
1
12
63
8
15
76
6
3
4
16
7
60
A
B 40 80 C
图G2中: V(G2)={1,2,3,4,5,6,7}
E(G1)={(1,2), (1,3), (2,3), (2,4),(2,5), (5,6), (5,7)}
1
7.1 图的定义和术语
3、有向完全图、无向完全图
有向完全图:具有n(n-1)条弧的有向图称为有向完全图。
无向完全图:n个顶点的无向图最大边数是n(n-1)/2,具有 n(n-1)/2条边的无向图称为无向完全图。
30
75
35
D
E
45
8
7.2 图的存储结构
一、图的数组(邻接矩阵)存储表示 二、图的邻接表存储表示 三、有向图的十字链表存储表示 四、无向图的邻接多重表存储表示
9
一、数组表示法(邻接矩阵)
用两个数组分别存储数据元素(顶点)的信息和数据元素 之间的关系(边或弧)的信息。
在图的邻接矩阵表示中,有一个记录各个顶点信息的顶点 表,还有一个表示各个顶点之间关系的邻接矩阵。
网的邻接矩阵可定义为:
A[i,
j]
wij , 若(vi , v j)或 ,其它
vi ,
vj
E(G)
例Βιβλιοθήκη Baidu
1
52
3
7
8 5
4
1
6
3
4
2
5 7 5 7 4 2 3 8 1
3
4 8
2
1
6
6
13
二、图的邻接表存储表示
邻接表是图的一种链式存储结构。在邻接表中,对 图中每个顶点建立一个单链表,第i个单链表中的 结点表示依附于顶点Vi的边(对有向图中指以顶点 Vi为尾的弧)。
设图 A = (V, E)是一个有 n 个顶点的图,则图的邻接矩阵
定义:
A[i,
j]
1,若(vi , v j )或 0,其它
vi , v j
E(G)
无向图的邻接矩阵是对称的,有向图的邻接矩阵可能是不
对称的。
10
一、数组表示法(邻接矩阵)
0 1 1 0
例
1
2
0
0
0
0
3
4
G1
0 0 0 1 1 0 0 0
n1
TD(Vi ) A[i][ j]
(n MAX _VERTEX _ NUM )
对于有向图,第i行的j元0 素之和为顶点Vi的出度OG( Vi ),
第j列的元素之和为顶点Vj的入度ID(Vj)。
例
1
2
3
4
G1
0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0
12
一、数组表示法(邻接矩阵)
7.1 图的定义和术语
例1
245
1
3
G1
例2
1
57
路径:1,2,3,5,6,3 路径长度:5 简单路径:1,2,3,5 6 回路:1,2,3,5,6,3,1 简单回路:3,5,6,3 路径:1,2,5,7,6,5,2,3 路径长度:7
简单路径:1,2,5,7,6
32
4
G2
回路:1,2,5,7,6,5,2,1
7.1 图的定义和术语
图G1中: V(G1)={1,2,3,4,5,6}
E(G1)={<1,2>, <2,1>, <2,3>, <2,4>, <3,5>, <5,6>, <6,3>}
例 245
例 1
57
1
3
6
32 4 6
G1
G2
无向图 若图中的边是顶点的无序对,则称此图为无向图。通
常用园括号表示无向边。(v,w)或(w,v),并且(v,w)=(w,v)
4
7.1 图的定义和术语
7、路径 在无向图 G=(V, E) 中, 若存在一个顶点序列 vp1, vp2, …, vpm,
使得(vi, vp1)、(vp1, vp2)、 ...、(vpm, vj)均属于E,则称顶点vi到vj 存在一 条路径。路径长度定义为路径上边或弧的数目。 若一条路径上除了vi 和vj 可以相同外, 其余顶点均不相同,则 称此路径为一条简单路径 。 起点和终点相同的路径称为简单回路或简单环。
TD(V)=ID(V)+OD(V)
例1
例2
245
1
57
1
3
6
G1 顶点2入度:1 出度:3
顶点4入度:1 出度:0
32
46
G2 顶点5的度:3
顶点2的度:4
3
7.1 图的定义和术语
6、子图 设有两个图 G=(V, E) 和 G‘=(V’, E‘)。若 V’ V 且
E‘E, 则称 图G’ 是 图G 的子图。
每个结点有三个域组成: adjvex nextarc info
邻接结点域(adjvex):指示与顶点Vi邻接的点在图 中的位置。
链域(nextarc):指示下一条边或弧的结点。 数据域(info):存储和边相关的信息,如权值等
14
二、图的邻接表存储表示
头结点
data firstarc
2
2
1
3
1
3
有向完全图
无向完全图
4、相邻顶点、相关联弧或边
若<V1,V2> E或(V1,V2) E ,则V1,V2是相邻顶点,弧 <V1,V2>或边(V1,V2)是与顶点V1和V2相关联弧或边。
2
7.1 图的定义和术语
5、度 一个顶点V的度是与该顶点相关联的边的数目,记为TD(V)。
对于有向图,则把以顶点V为弧尾的数目称为点V的出度, 记为OD(V),把以顶点V为头的弧的数目称为顶点V的入 度,记为ID(V)。 顶点V的度为:
6
简单回路:1,2,3,1
6
7.1 图的定义和术语
8、图的连通 在无向图G中,若两个顶点vi和vj之间有路径存 在,则称vi 和vj 是连通的。若G中任意两个顶点都是连通的, 则称G为连通图。
非连通图的极大连通子图叫做连通分量。
9、强连通图与强连通分量 在有向图中, 若对于每一对顶点vi 和vj, 都存在一条从vi到vj和从vj到vi的路径,则称此图是强连通 图。非强连通图的极大强连通子图叫做强连通分量。
例
1
2
3
4
5
G2
0 1 0 1 0
1 0 1 0 1
0 1 0 1 1
1 0 1 0 0
0 1 1 0 0
11
一、数组表示法(邻接矩阵)
借助邻接矩阵容易判定任意两个顶点之间是否有边(或弧)相 连,并容易求得各个顶点的度。
对于无向量,顶点Vi的度是邻接矩阵中第i行(或第i列)的元
素之和,即
例
例
例
5
245
245
1
3
连通图
3
6
61
3
6
强连通图
非连通图,连通分量
7
7.1 图的定义和术语
10、带权图或网
若给图中每一条边附加一个实数作为权,则该图称 为带权图或网。
这些权可以表示从一个顶点到另一个顶点的距离或
花费的代价。
7
10 2
5 9
1
12
63
8
15
76
6
3
4
16
7
60
A
B 40 80 C
图G2中: V(G2)={1,2,3,4,5,6,7}
E(G1)={(1,2), (1,3), (2,3), (2,4),(2,5), (5,6), (5,7)}
1
7.1 图的定义和术语
3、有向完全图、无向完全图
有向完全图:具有n(n-1)条弧的有向图称为有向完全图。
无向完全图:n个顶点的无向图最大边数是n(n-1)/2,具有 n(n-1)/2条边的无向图称为无向完全图。
30
75
35
D
E
45
8
7.2 图的存储结构
一、图的数组(邻接矩阵)存储表示 二、图的邻接表存储表示 三、有向图的十字链表存储表示 四、无向图的邻接多重表存储表示
9
一、数组表示法(邻接矩阵)
用两个数组分别存储数据元素(顶点)的信息和数据元素 之间的关系(边或弧)的信息。
在图的邻接矩阵表示中,有一个记录各个顶点信息的顶点 表,还有一个表示各个顶点之间关系的邻接矩阵。
网的邻接矩阵可定义为:
A[i,
j]
wij , 若(vi , v j)或 ,其它
vi ,
vj
E(G)
例Βιβλιοθήκη Baidu
1
52
3
7
8 5
4
1
6
3
4
2
5 7 5 7 4 2 3 8 1
3
4 8
2
1
6
6
13
二、图的邻接表存储表示
邻接表是图的一种链式存储结构。在邻接表中,对 图中每个顶点建立一个单链表,第i个单链表中的 结点表示依附于顶点Vi的边(对有向图中指以顶点 Vi为尾的弧)。
设图 A = (V, E)是一个有 n 个顶点的图,则图的邻接矩阵
定义:
A[i,
j]
1,若(vi , v j )或 0,其它
vi , v j
E(G)
无向图的邻接矩阵是对称的,有向图的邻接矩阵可能是不
对称的。
10
一、数组表示法(邻接矩阵)
0 1 1 0
例
1
2
0
0
0
0
3
4
G1
0 0 0 1 1 0 0 0
n1
TD(Vi ) A[i][ j]
(n MAX _VERTEX _ NUM )
对于有向图,第i行的j元0 素之和为顶点Vi的出度OG( Vi ),
第j列的元素之和为顶点Vj的入度ID(Vj)。
例
1
2
3
4
G1
0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0
12
一、数组表示法(邻接矩阵)