7图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A 5 B 6 9 0 2 1 C 2 8 3 D
A B C D
1 5 2 8 3 2 1 9
3 6
(顶点表) (出边表)
7.3 图的遍历
从已给的连通图中某一顶点出发,对图中所有 的顶点访问一次且仅被访问一次,就叫做图的 遍历 ( Graph Traversal )。

图的遍历的分类: 深度优先搜索 DFS (Depth First Search) 广度优先搜索 BFS (Breadth First Search)
深度优先搜索DFS

在访问图中某一起始顶点v 后,由v出发, 访问它 的任一邻接顶点w1;再从w1出发,访问与w1邻接但还 没有访问过的顶点w2; 然后再从w2出发, 进行类似 的访问, … 如此进行下去,直至到达所有的邻接 顶点都被访问过的顶点u为止。接着,退回一步, 退到前一次刚访问过的顶点,看是否还有其它没有 被访问的邻接顶点。如果有,则访问此顶点, 之后 再从此顶点出发,进行与前述类似的访问;如果没 有, 就再退回一步进行搜索。重复上述过程, 直 到连通图中所有顶点都被访问过为止。
7.2 图的存储结构
邻接矩阵 邻接表 十字链表 多重链表

图的存储结构
一、邻接矩阵(Adjacency Matrix)
所谓邻接矩阵存储结构,就是用一维数组存储图中顶 点的信息,用矩阵表示图中各顶点之间的相邻关系, 该矩阵称为邻接矩阵。 设图 G = (V, E)是一个有 n 个顶点的图,则 顶点信息V={v0,v1,…,vn-1} 邻接矩阵A为一个n×n的矩阵,A中的元素为:
第七章
Chapter 7

Graph
•图的基本概念 •图的存储结构 •图的遍历
7.1 图的基本概念
图定义 图是由一个非空的顶点集合(vertex)和 一个描述顶点之间关系——边(或者弧)的集 合组成。 G=( V, E ) 其中 V = { x | x 某个数据元素集合} -- 是顶点的有穷非空集合; E = {(x, y) | x, y V } --是顶点之间关系的有穷集合,也叫做边 (弧)集合。

深度优先搜索DFS (Depth First Search)
1
A
2
B C
3
7 D
6 F
E 5
H
G 4 I
9 前进 回退 深度优先搜索过程
8
练习--深度优先搜索
遍历结果:A、B、D、C
广度优先搜索BFS

在访问了起始顶点 v 之后, 由 v 出发, 依次访 问 v 的各个未被访问过的邻接顶点 w1, w2, …, wt, 然后再顺序访问 w1, w2, …, wt 的所有还未 被访问过的邻接顶点。再从这些访问过的顶点出 发,再访问它们的所有还未被访问过的邻接顶 点,… 如此做下去,直到图中所有顶点都被访问 到为止。 广度优先搜索是一种分层的搜索过程, 每向前走 一步可能访问一批顶点, 不像深度优先搜索那样 有往回退的情况。因此, 广度优先搜索不是一个 递归的过程。
•邻接顶点 若(vi,vj)是一条无向边,则称顶点 vi和vj互为邻接点,或称vi和vj相邻接,并称边 (vi,vj)关联于顶点vi和vj,或称(vi,vj)与顶 点vi和vj相关联。 A A C C B B
D
完全图
D
非完全图
顶点的度 一个顶点v的度是与它相关联的 边的条数。记作TD(v)。在有向图中, 顶点的 度等于该顶点的入度与出度之和。
7.3最小生成树 ( minimum cost spanning tree )
使用不同的遍历图的方法,可以得到不同的生成树;从 不同的顶点出发,也可能得到不同的生成树。 按照生成树的定义,n 个顶点的连通网络的生成树有 n 个顶点、n-1 条边。 构造最小生成树的准则: 必须只使用该网络中的边来构造最小生成树; 必须使用且仅使用 n-1 条边来联结网络中的 n 个顶 点; 不能使用产生回路的边。
12
8
6
A
30 D 75
80
C
35 E
16
45
路径 在图 G=(V, E) 中, 若从顶点vi出发有一组 边可到达顶点vj ,称顶点vi到vj的顶点序列为从顶 点vi到vj的路径。路径上所具有的边的数目称为该路 径的长度。 回路或环 从一个顶点出发又回到该顶点的路径。 简单路径 若一条路径上除了vi 和vj 可以相同外, 其余顶点均不相同,则称此路径为一条简单路径。
0
G1=( V1, E1 ) 1 2 V = { 0,1,2,3} 3 E = {(0,1) , (1,2),(1,3)}
无向图
0
1
G2=( V2, E2 ) V = { 0,1,2} 2 E = {<0,1> , <0,2>, 有向图 <1,0>,<1,2>}
完全图 对有n个顶点的图,若为无向图且边数为 n(n-1)/2,则称其为无向完全图;若为有向图且 边数为n(n-1) ,则称其为有向完全图。
算法思路
广度优先搜索BFS:
设置一个数组visited[]存放每个结点是否被访问过 (1)访问第一个顶点,置已访问标志; (2)初始顶点入队列; (3)队列非空时,出队列头元素; (4)取其第一个邻接顶点; (5)若未被访问过则访问之,并置已访问标志,同时结点入队列; (6)取下一个邻接顶点; 重复(4)(5)(6),直至所有邻接顶点取完 重复(3) (4)(5)(6)直至队列空为止。

图定义
A
B
G=( V, E ) C V = { A,B,C,D} E = {(A , B) , (A,C),(A,D), D (B,C),(B,D),(C,D) }

无向图 若图G中任意两顶点构成的偶对(vi , vj ) 是无序的,即顶点之间的连线没有方向性,则该 图为无向图。

有向图 若图G中任意两顶点构成的偶对(vi , vj )是 有序的,则称G为有向图。有向图中顶点之间的 连线有方向性,称为弧(或有向边)。表示成 <vi,vj>,其中vi称为弧尾或始点,vj称为弧头或 终点。

1, 如果 < vi , vj > E 或者 (vi , vj ) E aij 0, 否则
0
1
3
0 1
0 1 2A 2 3
0 1 B 0 1
1 0 1 0
0 1 0 1
1 0 1 0
2

0 1 A 2
子图 设有两个图 G=(V, E) 和 G'= (V', E')。若V' V 且 E'E, 则称图G' 是 图G 的子图。

图的连通 在无向图G中,若两个顶点vi和vj之间有
路径存在,则称vi 和vj 是连通的。若G中任意两 个顶点都是连通的,则称G为连通图。无向图中的 极大连通子图叫做该图的连通分量。

最小生成树: 所有生成树中,边的权值总和最小。
7.4最短路径 (Shortest Path) 最短路径问题(概念):如果从图中某一顶 点(称为源点)到达另一顶点(称为终点)的路 径可能不止一条,如何找到一条路径使得 沿此路径上各边上的权值总和达到最小。
总结:
1.基本概念:图,无向图,有向图,邻接点, 完全图,顶点的度,路径,回路,连通图,强连 通图,权,网络 2.存储结构:邻接矩阵,邻接表 3.遍历:深度优先搜索,广度优先搜索


广度优先搜索BFS ( Breadth First Search ) 1
A
2
B C 3
5
E G 7
4 D
6 F
H
I
8 9 广度优先搜索过程
练习--深度优先搜索
遍历结果:A、B、C、D
算法思路
深度优先搜索DFS:
设置一个数组visited[]存放每个结点是否被访问过 (1)访问第一个顶点,置已访问标志; (2)取第一个邻接点; (3)若未被访问过,则对其进行DFS; (4)取下一个邻接点; 重复(3)、(4)直至所有邻接顶点取完
1
0 1 0
3
2
D
同一个顶点发出的边链接在同一个边链表中, 每一个链结点代表一条边(边结点)。

有向图的Baidu Nhomakorabea接表和逆邻接表
1
0 2 邻接表 (出边表)
A 数组下标 0 A 1 B B 2 C C
数组下标 0 A 1 B 2 C
1
0 1 逆邻接表 (入边表)
网络 (带权图) 的邻接表
0 1 0 1 0 1 B 0 0 0

无向图的邻接矩阵是对称的; 有向图的邻接矩阵可能是不对称的。
邻接矩阵
1 2 A 3 4 5
2 1 4
3
5
0 1 B 1 1 1
1 1 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0
连通图 非连通图 3 H1连通分量 1 4 2 5 6 7
H2连通分量
1 3 强连通图
2 3
1 4 非强连通图 1 2 4
2 5
5
3 强连通分量H1
强连通分量H2
生成树 一个连通图的生成树是它的极小连通子图,在n
个结点的情形下,有n-1条边。

不予讨论的图 包含结点到其自身的边;一条边在
图中重复出现
0 1 4 1 9 2 6 A B 3 9 5 2 2 3 5 8 4 3 6 0 1 1
2 3 8
二、邻接表(Adjacency List)

无向图的邻接表
A
B
数组下标 0 A 1 B C 2 C 3 D adjvertex nextarc
强连通图与强连通分量 在有向图中, 若对于每一 对顶点vi和vj, 都存在一条从vi到vj和从vj到vi的路径, 则称此图是强连通图。有向图中的极大强连通子图 叫做该图的强连通分量。

无向图
1 3 4 2 5 3
有向图
1 4 2 5
V={1,2,3,4,5}
V={1,2,3,4,5}
E={(1,2),(1,3),(1,4), E={<1,2>,<1,3>,<3,1>, <2,4>,<4,1>,<4,5>} (2,4),(4,5)}
邻接矩阵


在无向图中, 统计第 i 行 (列) 1 的个数可 得顶点i 的度。 在有向图中, 统计第 i 行 1 的个数可得顶 点 i 的出度,统计第 j 列 1 的个数可得顶 点 j 的入度。
网的邻接矩阵
W( i , j ), 若i j且 i, j E或( i, j ) E aij 0或 , 若i j且 i, j E或( i, j ) E

顶点v 的入度 是以 v 为终点的有向边的条 数, 记作ID(v); 顶点 v 的出度是以 v 为始 点的有向边的条数,记作 OD(v)。

A
B
D
C
10 1 6 15 4
2 3
7 12 7
5 9
8
6 3 7 6
16
图的基本概念
权 某些图的边具有与它相关的数, 称 之为权。这种带权图叫做网络。
10 1 6 15 4 2 3 7 6 3 7 7 5 9 60 B 40
相关文档
最新文档