常用数据结构及其运算——图、算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于n个顶点的图G=(V,E),可用n×n的矩阵来表 示,矩阵中每个元素定义为:
A[i,j]=
1,若(ui 0,反之
,
u
)或
j
ui , u j
是E中的边或弧
无向图的邻接矩阵为对称矩阵。
1
2
3
12 34 5
1 01110 2 10100 3 11001
4
5
4 10000 5 00100
2.6.2 图的存储结构
1
3
2
4
2.6.1 图的定义及基本术语
(4)连通图和连通分量
在无向图中,若从ui到uj存在路径,则称ui和uj是连通 的。若在顶点集合V中每一对不同顶点ui和uj都连通,则称G 为连通图。
14
3 6
5 2
7 G
15 G1 7
6 4
8
23
9
G3
11 10
12
G2
2.6.2 图的存储结构
1 邻接矩阵
3^
邻接表中每个链表对应于邻接矩阵中的一行,链表中结 点个数等于一行中非零元素的个数。
2.6.2 图的存储结构
若图中有n个顶点和e条边,如果该图是无向图,则需要用到 n个顶点结点和2e个边结点;
若是有向图时,只需要n个顶点结点和e个边结点; 当边数很少,顶点多时,邻接表可以节省大量的存储空间; 当边数很大, 顶点较少时,邻接矩阵更为适合; 边表中表目顺序往往按照顶点编号从小到大排列。
这些表头结点通常以顺序存储结构(向量)存储,称 为邻接向量,以便随机访问任一顶点的链表。
2.6.2 图的存储结构
adjvex data nextarc
表结点
01110 ve1xd0ata1 f0ira0rc 11001
10000 0 0头结1 点0 0
1
2
3
4
5
1
2
3
4^
2
1
3^
3
1
2
5^
4
1^
5
2.6.3 图的遍历
1 深度优先遍历 2 广度优先遍历
2.6.3 图的遍历
1 深度优先搜索(depth-first search,简称DFS)
基本思想 首先选取一个顶点开始搜索。设v0∈V是源点,访问顶点v0并 标记为VISITED,然后访问v0邻接到的未被访问过的顶点v1 再从v1出发递归地按照深度优先的方式搜索 当遇到一个所有邻接顶点都被访问过了的顶点w时,则回到已 访问顶点序列中最后一个拥有未被访问的相邻顶点的顶点u 再从u出发递归地按照深度优先的方式周游 重复上述过程直至从v0出发的所有边都已检测过为止,此时, 图中所有由源点有路径可达的顶点都已被访问过 。
第2章 常用数据结构及其运算
2.1 概述 2.3 栈与队 2.5 树与二叉树 2.7 查找
2.2 线性表 2.4 数组 2.6 图 2.8 排序
2.6 图
2.6.1 图的定义及基本术语
1. 定义:
图是由顶点集合V和顶点之间关系集合 R组成,记作G=(V,R)
其中V是图中顶点的非空有穷集合,
V u1,u2 , ,un ;R是两个顶点之间关系的集 合,它是顶点的有序或无序对,记
对于n个顶点的网G,矩阵中每个元素定义为:
A[i,j]=
w ij,若(ui 0, 反之
,
u
Fra Baidu bibliotek
)或
j
ui
,
u
j
是E中的边或弧
无向网的邻接矩阵为对称矩阵。
19
5
1
21
17
3
27
2
12
6
4
1 23 4 5
1 0 27 21 0 19 2 27 0 12 0 0 3 21 12 0 6 17 400600 5 19 0 17 0 0
3. for j=1 to n
4.
if (A[v,j]=1) and(not VISITED[j])
2.6.2 图的存储结构
2 邻接表
图的一种链式存储结构。对图中每个顶点建立一个单 链表,第i单链有中的结点表示依附于顶点ui的边(在有向 图中是以ui为尾的弧)。每个链结点由三域组成:
邻接域指示与顶点ui邻接的点的序号; 链域指示下一条边或弧的结点; 数据域存储和边或弧相关的信息,如权值等。 每个链表上附设一个表头结点,在表头结点中设有链 域指向链表中第一个结点。
路径上边的数目称为路径长度。 在有向图中,则由顶点的弧组成有向路径。路径上边或弧
的数目称为路径长度。网的路径长度定义为路矩上权值的和。 除第一个和最后一个顶点外,序列中其余顶点各不相同的
路径称为简单路径。第一个顶点和最后一个顶点相同的简单路 径称为简单回路。
2.6.1 图的定义及基本术语
1
2
3
4
5
2. 有关图的基本术语 (1)子图
设有两个图G和G’: G=(V,E),G‘=(V’,E’) 如满足 V ' V , E ' E ,则称G’为G的子图。 (2)度、入度和出度 在无向图中,与某个顶点相连的边的数目称 为该顶点的度。在有向图中,以某个顶点为初始 点的弧的数目称为该顶点的出度,以某个顶点为 终端点的弧的数目称为该顶点的入度。
作 ui ,u j
。
2.6.1 图的定义及基本术语
当图中顶点之间关系为无序对时称为无向图。无序对
ui ,u j ui ,u j 称为边E(edge)。无向图记作 G=(V,E)
当图中顶点间的关系为有序对时称为有向图。 ui ,u j 称 为有向图中一条弧。有向图记作 G=(V,A)
1
2
1
2.6.1 图的定义及基本术语
G1
2
H
1
3
3
2
4
5
G’
1
2
3
4
H’
1
3
2
4
2.6.1 图的定义及基本术语
(3)路径和回路 在无向图中,从顶点up到顶点uq的路径是顶点序列,
u p , ui1 , ui2 , , uik , uq 且 u p , ui1 , ui1, ui2 , , uik , uq 均是E中的边。
2.6.3 图的遍历
3 2
1
6 5
4 9
8
7
搜索次序: 3 2 4 9 1 6 5 8 7
2.6.3 图的遍历
以邻接矩阵作为存储结构,深度优先搜索算法如下:
DFS1 (A,n,v)//A[1:n,1:n]为邻接矩阵,v为起始顶点// 1. VISIT(v)//访问顶点v//
2. VISITED[v] = true //置顶点已被访问标志//
3
3
2
4
5
4
2.6.1 图的定义及基本术语
网:若图中每一条边附有一个对应的数,这些 数称为权,它可以表示两顶点之间的距离或花 费的代价。弧上带权的有向图称为有向网。
1
27
19
5
18
7
11 2
17
6
6
5
4
3
70
1
80
5
69
64
6
6 21
18
58
7
45
4
2
32 32
3
44
2.6.1 图的定义及基本术语