第7章演示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
33
邻接矩阵
说明: ④无向图的邻接矩阵的第i行或第i列非零元素的个数正好
是第i个顶点的度TD(vi)。
⑤有向图的邻接矩阵的第i行和第i列非零元素的个数之和 正好是第i个顶点的度TD(vi)。
出度OD(vi) 第i行非零元素的个数 入度ID(vi) 第i列非零元素的个数
思考:邻接矩阵中“1”的个数跟图的边数有什么关系? 对于无向图,图中的边数是“1”的个数的一半; 对于有向图,图中弧数就是“1”的个数。
客运站,若只考虑直达班次,则某一天的各车站的
发车情况可以如右图所示。
问:
B车站发出的汽车共有几班?
C
B车站接收的汽车共有几班? B车站当天的汽车流量为多少? A
D B
F
E
18
5、度;出度和入度 (2)有向图顶点v的入度和出度
有向图中,以顶点v为终点的弧的数目称为v的入 度(Indegree),即以它为弧头的的弧的数目,记为 ID(v)。
图的形式化定义可以用一个二元组来表示,记为 G=(V,E)。 其中,
V为图中数据元素(顶点)的有限非空集合; E为顶点之间关系(边)的有限集合。
4
7.1 图的定义和术语
二、图的相关概念和术语 1、有向图、无向图、网 2、简单图、完全图;稀疏图、稠密图 3、子图 4、邻接;邻接自与邻接到 5、度;出度和入度 6、路径、回路 7、连通图和强连通图;连通分量和强连通分量 8、生成树
A C
FG
B H
I L
K M
非连通图
B
M
A
F CL
G
I
H
K
两个连通分量的生成树 生成森林
29
8、生成树 说明:
③生成树与连通分量的区别 <i>生成树是极小连通子图,它是在连通的前提下包 含图中最少的边;
连通分量是极大连通子图,它是在连通的前提下 包含图中最多的边。 <ii>生成树只对无向连通图而言;
说明: ①生成树只对无向连通图而言,而且生成树必是连
通的; ②某无向图中若有n个顶点, 边数e<n-1,则必为非连通图; 边数e>n-1,则必存在环; 边数e=n-1,不一定是生成树。
28
8、生成树
v1
v2
v3
v4
v5
连通图
v1
v2
v3
v4
v5
生成树
v1
v2
v1
v2
v3
v4
v5
v3
v4
v5
非生成树
连通分量对于非连通图也是有意义的。 ④生成树可以不唯一。
返回
30
7.2 图的存储结构 用邻接矩阵存储图 用邻接表存储图
31
邻接矩阵
1、图的邻接矩阵表示法 ①用邻接矩阵表示顶点间的相邻关系 ②用一个顺序表来存储顶点信息
2、图的邻接矩阵(Adacency Matrix) 设G=(V,E)是具有n个顶点的图,vi和vj是图中
6
1、有向图、无向图、网 (1)有向图 ②有向图的表示 例:左图中G1是一个有向图。
试将其表示出来。
G1=(V1,E1) V1={v1,v2,v3} E1={ <v1,v2>,<v2,v1>,<v2,v3> }
7
1、有向图、无向图、网 (2)无向图
若图G中的每条边都是无方向的,则称G为无向图 (Undigraph)。 ①无向边的表示
返回
36
邻接表 图的邻接表表示法类似于树的孩子链表表 示法。对于图G中的每个顶点vi,该方法把所 有邻接于vi的顶点vj链成一个带头结点的单链 表,这个单链表就称为顶点vi的邻接链表。
37
邻接表
1、邻接表的结点结构
(1)链表结点结构 邻接链表中每个表结点均有两个域: adjvex nextarc
网中权值较大的数值来表示。
35
邻接矩阵
4、用邻接矩阵存储的图类型
#define N 50
#define MAX 10000
typedef struct
{ int vexs[N];
存放顶点编号
int arcs[N][N];
邻接矩阵
int vexnum,arcnum; 图中顶点数,边数
int network; 值为1表示网,为0表示图 int digraph; 值为1表示有向图,为0表示无向图 }MGraph; 用邻接矩阵存储的图类型
或称边(vi,vj)与顶点vi和vj相关联。
例:在图G2中 ① 写出与顶点v1相邻接的顶点; v2,v3,v4 ② 写出关联于顶点v2的边。 (v2,v1),(v2,v3),(v2,v4)
15
4、邻接;邻接自、邻接到 (2)有向边和顶点关系
若<vi,vj>是一条有向边,则称顶点vi邻接到vj, 顶点vj邻接自顶点vi;
无向图中的边均是顶点的无序对,无序对通常用 圆括号表示。
vi和vj是无向图中的两个顶点,则(vi,vj)表示一 条无向边。 注意:(vi,vj)和(vj,vi)是表示同一条边。
8
1、有向图、无向图、网 (2)无向图 ②无向图的表示 例:左图中G2是一个无向图。
试将其表示出来。
G2=(V2,E2) V2={v1, v2, v3, v4} E2={ (v1,v2), (v1,v3), (v1,v4), (v2,v3), (v2,v4), (v3,v4), }
③路径可以不唯一。
21
6、路径和回路 (2)回路
首尾顶点相同的路径称为回路或环。
B
C
A
D
F
E
{A,B,E,A} {C,D,F,C}
C
D A
B
F
E
{C,A,B,C} {B,F,E,B}
返回
22
7、连通图和强连通图;连通分量和强连通分量 (1)顶点间的连通性
在无向图G中,若顶点vi和顶点vj之间有路径,则 称vi和vj是连通的。 注意:“顶点vi和顶点vj之间有路径”与“顶点vi和顶 点vj之间有边”的区别 (2)连通图和强联通图
间的边表示城市之间的省级公路。 A
D
问:
B城市到其它城市的公路数; 在这几个城市中,哪个城市的 交通最为便捷?
F
E
TD(B)=3
TD(F)=4
(1)无向图中顶点v的度
无向图中顶点v的度(Degree)是关联于该顶点的 边的数目,即以它为顶点的边的数目,记为TD(v)。
17
5、度;出度和入度
例:假设A、B、C、D、E和F代表六个城市的汽车
5
1、有向图、无向图、网 (1)有向图
若图G中的每条边都是有方向的,则称G为有向图 (Digraph)。 ①有向边的表示
在有向图中,一条有向边是由两个顶点组成的有 序对,有序对通常用尖括号表示。
有向边也称为弧(Arc),边的始点称为弧尾(Tail), 终点称为弧头(Head)。
vi和vj是有向图中的两个顶点,则<vi,vj>表示一 条有向边,vi是边的始点(起点),vj是边的终点。 注意:<vi,vj>和<vj,vi>是两条不同的有向边。
①对于无向图G,图中任意两个顶点之间都有路径, 则称G为连通图(Connected Graph)。
②对于有向图G,图中任意两个顶点之间都存在路 径,则称G为强连通图。
23
7、连通图和强连通图;连通分量和强连通分量 (2)连通图和强联通图
B A
F
C D
E
A
B
E
C
D
24
7、连通图和强连通图;连通分量和强连通分量 (3)连通分量和强连通分量
34
邻接矩阵
3、网(带权值的图)的邻接矩阵 若G是网络,则邻接矩阵可定义为:
arcs[i][j]= wij 若(vi,vj)或<vi,vj>是图中的边或弧 ∞ 若(vi,vj)或<vi,vj>不是图中的边或弧
其中: wij是(vi,vj)或<vi,vj>上的权值; ∞代表无穷大,在具体表示时可以用一个相对于
9
1、有向图、无向图、网 (3)网
若将图的每条边都赋上一个权,则称这种带权图 为网络(Network),简称网。 注意:权是表示两个顶点之间的距离、耗费等具有某 种意义的数。 【例】下图就是一个网络的例子。
返回
10
2、简单图、完全图;稀疏图、稠密图
(1)简单图:不含有顶点到自身的弧或边,且同一条边 不重复出现,称这样的图为简单图(Simple Graph)。
其中,TD(vi)表示图中顶点vi的度。
返回
20
6、路径和回路
(1)路径
图G=(V,E)中从顶点vi到顶点vj之间通路上的顶点
的序列,叫做路径(Path)。
C
例:如右图所示求C到E的路径。
{C,B,E}
A
D B
{C,A,B,E}
说明:
F
E
①路径中边或弧的数目表示路径的长度;
②有向图中,路径也是有向的;
并称弧<vi,vj>关联于vi和vj,或称弧<vi,vj>与顶 点vi和vj相关联。
例:在图G1中 ① 分别写出邻接自顶点v2的顶点; v1,v3 ② 写出与顶点v2相关联的弧。 <v1,v2>,<v2,v1>,<v2,v3>
返回
16
5、度;出度和入度
例:如右图所示,假设A、B、C、
B
C
D、E和F代表六个城市,它们之
第7章 图
7.1图的定义和术语 7.2图的存储结构 7.3图的遍历 7.4图的连通性问题 7.5有向无环图及其应用 7.6最短路径
1
哥尼斯堡
C A
B
C
A
D
B
D
2
公园缆车示意图
山顶
山腰
公园西门
公园东门
4
3
1
2
3
7.1 图的定义和术语
一、图的定义 图(Graph)是一种网状的数据结构,称图中的一
个数据元素为一个顶点;两个顶点之间的关系称为边 或弧。
arcs[i][j]=arcs[j][i],1≤i≤n,1≤j≤n 对有n个顶点的无向图则需存入上(下)三角形, 故只需n(n+1)/2个单位。 ③有向图的邻接矩阵不一定对称的; 因此用邻接矩阵来表示一个具有n个顶点的有向 图时需要n2个单位来存储邻接矩阵。
思考:什么时候有向图的邻接矩阵是对称矩阵?
v1
v2
v3
v4
v5
v1
v2
v3
v4
1返1 回
2、简单图、完全图;稀疏图、稠密图 (1)简单图
C
4
A
D
3
1
2
B
1返2 回
2、简单图、完全图;稀疏图、稠密图 (2)完全图
①无向图中具有最多的边数,即图中任意一对顶点间 均有边相连,称这样的图叫无向完全图。
②有向图中具有最多的弧数,即图中任意一对顶点间 都有方向相反的两条弧相连,称这样的图为有向完全图。 假设用n表示图中顶点的数目,用e表示边或弧的数目。
有向图中,以顶点v为始点的弧的数目,称为v的出 度(Outdegree),即以它为弧尾的弧的数目,记为 OD(v)。
有向图顶点v的度是它出度与入度之和,即 TD(v)= ID(v)+ OD(v)。
19
5、度;出度和入度 注意: 无论有向图还是无向图,顶点数n、边数e 和度数之间有如下关系: n
2e TD(vi) i 1
若G是有向完全图,则e=n(n-1); 若G是无向完全图,则e=n(n-1)/2。
(3)稀疏图和稠密图 有很少的边(如e<<n2)的图叫稀疏图,反之称为稠
密图。
1返3 回
3、子图
设G=(V,E)是一个图,若V'是V的子集,E'是E的 子集,且E'中的边所关联的顶点均在V'中,则 G' =(V',E')也是一个图,并称G'为G的子图。 例:请画出给有向图Gl和无向图G2的若干子图。
的任意两个顶点,则G的邻接矩阵(设为arcs[n][n]) 是具有如下性质的n阶方阵:
1 若(vi,vj)或<vi,vj>是图中的边或弧 arcs[i][j]=
0 若(vi,vj)或<vi,vj>不是图中的边或弧
32
邻接矩阵
说明: ①对于n个顶点的图,有arcs[i][i]=0,1≤i≤n; ②无向图的邻接矩阵是对称的,即
①无向图G中的极大连通子图,叫连通分量; ②有向图G中的极大强连通子图,叫强连通分量。 说明: ①极大(强)连通子图的“极大性” 体现在图G中任 何一个连通子图都不能包含它,即在连通的前提下应 尽可能多的包含图中存在的边。 ②(强)连通图的(强)连通分量就是它本身且唯一。
非(强)连通的图中必含有多个(强)连通分量。
思考题:有图G2,设G’=(V’,E’),V’={v1,v2,v3}, E’={(v1,v2),(v2,v4)},则G’是G2的子图吗?
返回
14
4、邻接;邻接自、邻接到
(1)无向边和顶点关系 若(vi,vj)是一条无向边,则称顶点vi和vj互为邻接
点(Adjacent),或称vi和vj相邻接; 称边(vi,vj)依附或关联(Incident)于顶点vi和vj,
①邻接点域adjvex:存放与vi相邻接的顶点vj的序号j。
②链域nextarc:指向vi邻接的另一个顶点,由此将邻 接链表的所有表结点链在一起。
25
7、连通图和强连通图;连通分量和强连通分量
(3)连通分量和强联通分量
B A
F
C D
E
A 连通分量
B
E C
D
F
返回
26
7、连通图和强连通图;连通分量和强连通分量 (3)连通分量和强联通分量
A
B
E
ห้องสมุดไป่ตู้
A
强连通分量
B
E
C
D
C
D
A
B
E
C
D
强连通分量
A
B
E
C
D
返回
27
8、生成树
一个连通图的生成树就是一个极小连通子图: <i> 包含图中全部n个顶点; <ii>包含顶点之间最少的(n-1)条边。
相关文档
最新文档