数据结构:第六章图1-课件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
B 7 21
E
3
C2 F
弧或边带权的 图分别称作有向
网或无向网。
假设图中有 n 个顶点,e 条边,则
含e=n(n-1)/2 条边的无向图称作 无向完全图;
含 e=n(n-1) 条弧的有向图称作 有向完全图;
若边或弧的条数 e < nlogn,则称作稀 疏图,否则称作稠密图。
对于无向图:顶点v 和w 之间存在一条边(v,w), 则称顶点v 和w 互为邻接点,称边(v,w)依附于顶 点v 和w ,边(v,w)与顶点v 和w相关联。
数据结构:第六章图 1
6.1 图的定义与基本术语 6.2 图的存储结构
6.1 图的定义与基本术语
一、定义:图是由顶点集 V 和弧集 R构成的
Graph = (V , R ) 其中: V={x|x∈dataobject} R={VR}
VR={<x,y>| P(x,y)且(x,y∈V)} <x,y>表示从 x 到 y 的一条弧,
称 x 为弧尾,y 为弧头。 P(x,y) 定义了弧 <x,y>的意义或信息,
表示x和y间的特定关联属性。
有向图
由于“弧”是有方向的,因此称由顶
点集和弧集构成的图为有向图。
例如:
G1 = (V1, {VR1})
A
其中
V1={A, B, C, D, E}
B
E VR1={<A,B>, <A,E>,
<B,C>, <C,D>, <D,B>,
该极小连通子图为此连通图的生成树。
B A
F
C D
E
对非连通图, 则称由各个连通分 量的生成树构成的 集合为此非连通图
的生成森林。
顶点在图中的位置
在图中,我们可以将任一顶点看成是图 的第一个顶点,同理,对于任一顶点而言, 它的邻接点之间也不存在顺序关系。为了 操作的方便,我们需要将图中的顶点按任 意序列排列起来。顶点在这个人为的随意 排列中的位置序号称为顶点在图中的位置。
顶点的度(TD)=
ID(B) = 2
出度(OD)+入度(ID)
TD(B) = 3
设在图G=(V,{VR}) 的顶点序列{ u=vi,0,vi,1, …, vi,m=w} 中, 有 (vi,j-1,vi,j)VR ,1≤j≤m, 则称从顶 点u到顶点w之间存在一条路径。路径上边的数
目称作路径长度。 有向图的路径也是有向的。
与顶点v 相关联的边的条数定义为v的度。
来自百度文库
例如:
BC
ID(B) = 3 ID(A) = 2
A F
D E
对于有向图
若顶点v 和w 之间存在一
A
条弧<v,w>,则称顶点v邻
接到顶点w,顶点w邻接自
B
E 顶点v,称弧<v,w>与顶点v
CF
和w 相关联。
顶点v的出度:以v为尾的弧的数目 例如:
顶点v的入度:以v为头的弧的数目 OD(B) = 1
(6)NextAdjV (G,v,w):已知w是图G中顶 点v的某个邻接点,求顶点v的下一个邻接点 (紧跟在w后面)。若w是v的最后一个邻接点, 则函数值为“空”(-1)。
(7)InsertVertex(G,u):在图G中增加一个 顶点u。
(8)DeleteVertex(G,v):删除图G的顶 点v及与顶点v相关联的弧。
一、图的邻接矩阵存储表示
定义: 行列数等于顶点数,下标为顶点序号
矩阵的元素为
Aij={
0 1
(i,j)VR (i,j)VR
B
C
010010
100011
A
D 000101
001001
F
E
110000 011100
则称此图为连通图。 A
C D
B A
F
C
F
E
若无向图为非连
D 通图,则图中各个极
大连通子图称作此图
E
的连通分量。
对有向图, 若任意两个顶点之间都存在一条
有向路径,则称此有向图为强连通图。
否则,其各极大强连通子图称作它的强连通分量。
A
A
B C
E F
B C
E F
假设一个连通图有 n 个顶点和 e 条边, 其中 n-1 条边和 n 个顶点构成一个极小连通子图, 称
如图: A
B
E
CF
路径{A,E,C,F,B,C,F} 的路径长度为6
回路: 首尾顶点相同 的路径。{B,C,F,B} {A,E,C,F,B,C,F,A}
简单路径:顶点不重复 的路径。{A,E,C,F} 简单回路:中间顶点不 重的回路{A,E,C,F,A}
若无向图G中任意两个
顶点之间都有路径相通,
B
(9)InsertArc(G,v,w):在图G中增加 一条从顶点v到顶点w的弧。
(10)DeleteArc(G,v,w):删除图G中 从顶点v到顶点w的弧。
(11)TraverseGraph(G):按照某种次序, 对图G的每个结点访问一次且最多一次。
6.2 图的存储结构
一、图的邻接矩阵存储表示 二、图的邻接表存储表示 三、有向图的十字链表存储表示 四、无向图的邻接多重表存储表示
F
E
二、基本术语
子图、网 完全图、稀疏图、稠密图
邻接点、相关联、度
入度、出度
路径、路径长度、简单路径、简单回路 连通图、连通分量、 强连通图、强连通分量
生成树、生成森林
设图G=(V,{VR}) 和 B
图 G=(V,{VR}),
A
且 VV, VRVR,
B
则称 G 为 G 的子图。
C
15 A 9
E F
CD
<D,A>, <E,C> }
无向图
由顶点集和边
若 <v,w>VR 必有 <w,v>VR, 集构成的图称
则以(v,w)代替这两个有序对, 作无向图。
称v 和 w之间存在一条边。
例如: G2=(V2,{E2})
BC
V2={A,B,C,D,E,F} A
D
E2={(A,B),(A,E),(B,E),
(C,D),(D,F),(B,F),(C,F)}
(3)LocateVertex(G,v):确定顶点v在图G中 的位置。若图G中没有顶点v,则函数值为“空”(1).
(4)GetVertex(G,I):取出图G中的第i个顶点 的值。若i>图G中顶点数,则函数值为“空”.
(5)FirstAdjV (G,v):求图G中顶点v的第一 个邻接点。若v无邻接点或图G中无顶点v,则 函数值为“空”(-1)。
三、图的抽象数据类型定义:
ADT Graph { 数据对象V:一个集合,该集合中的所有元素
具有相同的特性。 数据关系R:R={VR}
VR={<x,y>∣P(x,y)∧(x,y∈V)} 基本操作: }
基本操作
(1)GreateGraph(G):创建图G。 (2)DestoryGraph(G):销毁图G。
相关文档
最新文档