- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在无(有)向图G=< V, E >中,若对任何两个顶点 v、u 都存在从v 到 u 的路径,则称G是连通图(强连通图)
连 通 图
V0 V2 V3 V0
V1
V0
V1 V4
V4 V1
V3
V0
V2 V5
V1
非 连 通 图 非 强 连 通 图
强 连 通 图
V2
V3
V2
V3
9. 连通分量和强连通分量
无向图中,极大的连通子图为该图的连通分量。显然,任何 连通图的连通分量只有一个,即它本身,而非连通图有多个 连通分量。 极大连通子图是:该子图是 G 连通子图,将G 的任何不在该 子图中的顶点加入,子图不再连通;
InsertVex(G,u) 插入顶点操作。在图c中增添一个顶点u为图G的第 n+1个顶点,其中n为插入之前图G中含顶点的个数。 InsertArc(G,v,w) 插入弧的操作。在图c中增添一条从顶点V到顶点w 的弧。 DeleteVex(G,v) 删除顶点操作。从图G中删除顶点v以及所有与顶点v 相关联的弧。 DeleteArc(G,v,w) 删除弧的操作。在图G中删去一条从顶点v到顶点w 的弧。 Traverse(G) :遍历
7.2
V0 V2 V3 V4 V1
图的存贮结构
V0 V1
V2
V3
图的存储结构至少要保存两类信息:
1)顶点的数据 2)顶点间的关系
如何表示顶点间的关系?
顶点的编号
约定:
G=<V, E>是图, V={v0,v1,v2, … vn-1 },设顶点 的角标为它的编号
7.2 图的存贮结构
在前面几章讨论的数据结构中,除了树以外,都可 以有两类不同的存储结构,它们是由不同的映象方法 (顺序映象和链式映象〕得到的。由于图的结构比较复 杂,任意两个顶点之间都可能存在关系,因此无法以数 据元素在存储区中的物理位置来表示元素之间关系,即 图没有顺序映象的存储结构,这是和前面所有数据结构 所不同的。 另一方面,用多重链表表示图是自然的事,它是一 种最简单的链式映象结构,即以一个由一个数据域和多 个指针域组成的结点表示图中一个顶点,其中数据域存 储该顶点的信息,指针域存储指向其邻接点的指针。但 是,由于图中各个结点的度数各不相同,最大度数和最 小度数可能相差很多,因此,若按度数最大的顶点设计 结点
2. 完全图、稠密图、稀疏图
(1)无向完全图:任意两顶点间都有边的图称为无向完全图。
或具有n个顶点,n(n-1)/2条边的图,称为无向完全图。
(2)有向完全图:任意两顶点之间都有方向互为相反的两条 弧相连接的有向图称为有向完全图。在一个含有n个顶点的有
向完全图中,有n(n-1)条弧。
无向完全图和有向完全图都称为完全图。 对于一般无向图,顶点数为n,边数为e,则 0≤e ≤n(n-1)/2。 对于一般有向图,顶点数为n,弧数为e, 则 0≤e≤n(n-1) 。 当一个图接近完全图时,则称它为稠密图,相反地,当一个图 中含有较少的边或弧时,则称它为稀疏图。
强连通分量 V0 V1 V0 V1
V2
V3
V2
V3
10. 生成树、生成森林
包含无向图G 所有顶点的的极小连通子图称为G 的生成树 极小连通子图意思是:该子图是G 的连通子图,在该子图中删除任 何一条边,子图不再连通, 若T是G 的生成树当且仅当T 满足如下条件 T是G 的连通子图 T包含G 的所有顶点 T中无回路 连通图的生成树包含图中全部n个顶点和n-1条不构成回路的边。非 连通图的生成树则组成一个生成森林。若图中有n个顶点,m个连通 分量,则生成森林中有n-m条边。
V3
V4
V2
V3
7.根和有根图
有向图中,若存在一顶点v,从该顶点有路径可以到 图中其他所有顶点,则称此有向图为有根图。v称为 图的根。
8. 连通图和强连通图
在无向图中,若从顶点i到顶点j有路径,则称顶点i和 顶点j是连通的。若任意两个顶点都是连通的,则称 此无向图为连通图,否则称为非连通图。 在有向图中,若从顶点i到顶点j有路径,则称从顶点i 和顶点j是连通的,若图中任意两个顶点都是连通的, 则称此有向图为强连通图,否则称为非强连通图。
非连通分图
V0
V1
V2
连通分量 非 连 通 图 V0 V3 V1 V2 V4 V5
有向图中,极大的强连通子图为该图的强连通分量。 显然,任何强连通图的强连通分量只有一个,即它本 身,而非强连通图有多个强连通分量。
极大强连通子图意思是:该子图是D强连通子图,将D的任 何不在该子图中的顶点加入,子图不再是强连通的;
图的抽象数据类型
LocateVex(G,v) 顶点定位函数。确定顶点v在图G中的位置。若图中无此 顶点,则函数值为零。 GetVex(G,i) 取顶点函数。求图G中第i个顶点。若i>图G中顶点数, 则函数值为“空”。 FirstAdjVex(Q,v) 求第一个邻接点函数。求图G中顶点v的第一个邻接点。 若v没有邻接点或图中无顶点v,则函数值为“零”。 NextAdjVex(G,v,w) 求下一邻接点函数。已知w为图G中顶点v的某个邻接点, 求点w的下一个邻接点。若w是v的最后一个邻接点,则 函数值为“零”。
OD(V0)=2 OD(V1)=0 OD(V2)=1 OD(V3)=1
D(V0)=3 D(V1)=1 D(V2)=2 D(V3)=2
4. 子图
若有两个图G1和G2, G1=(V1,E1), G2=(V2,E2), 满足 如下条件: V2V1 ,E2 E1,即V2为V1的子集,E2为 E1的子集,称图G2为图G1的子图。
结构,则会浪费很多存储单元。反之,若按每个顶点 自己的度数设计不同的结点结构,则会给操作带来不 便,在实际应用中不宜采用这种结构。这其实和树的 表示是很类似的。 我们一般采用一些改进的方式来存储图,常用的 有邻接矩阵、邻接表和十字链表等。不管哪一种方式, 它除了要存储图中各个顶点本身的信息外,同时还要 存储顶点与顶点之间的所有关系(边的信息)。存储 方法的选择,取决于具体的应用。下面分别讨论之。
第7章
二、教学要求:
图
1、理解图的基本概念,熟悉图的各种存储结构及其构造 算法; 2、熟练掌握图的两种搜索路径的遍历;
3、掌握构造最小生成树的方法,并理解算法;
4、理解用Dijkstra方法求解单源最短路径问题; 5、掌握求活动网络的拓扑排序的方法,并理解算法; 6、掌握求解关键路径的方法。
图(Graph)是一种较线性表和树更为复杂的数据 结构。在线性表中,数据元素之间仅有线性关系, 即每个数据元素只有一个直接前驱和一个直接后 继;在树形结构中,数据元素之间有着明显的层 次关系,虽然每一层上的数据元素可能和下一层 中多个元素(孩子) 相关,但只能和上一层中一 个元素(双亲)相关; 图形结构中,结点之间的关系可以是任意的,任 意两个数据元素之间都可能相关。 图的应用,如电路网络分析、交通运输、管理与线路 的铺设、印刷电路板与集成电路的布线等众多直接 与图有关的问题,它们必须用图的有关方法进行处 理;工作的分配、工程进度的安排、课程表的制订.
在图1中,V0,V1,V2,V3 是V0到V3的路径; V0,V1,V2,V3,V0是回路;在图2中,V0,V2,V3 是V0到V3的路径; V0,V2,V3,V0是回路;在图1中,V0,V1,V2,V3 是简单路径; V0,V1,V2,V4,V1不是简单路径;
例
V0
无向图G1
V1 V2
V0
V1
有向图G2
1 2 1 2 1 2
3
4
3
4
4
(a)图 G
(b)图 G 的两个子图 图与子图示意
V0 V2
V1图 7-2
V0
V1
V0 V2
V1
V2
V3
(a)
V4
V3
(b)
V4
V3
(c)
V4
5. 权
在图的边或弧上表示数字,表示与该边相关的数据 信息,称为权。 权可以代表一个顶点到另一个顶点 的距离,耗费等,带权图一般称为网。
1
1 4 5 2 5 8 7
2
A
2
B
6
3
3
4
4 1 3
C
5
(a) 无向网
(b)有向网
图 7-3 无向带权图和有向带权图
6.路径、回路
在无向图G中,若存在一个顶点序列Vp ,Vi1,Vi2,…,Vin, Vq, 使得(Vp,Vi1),(Vi1,Vi2),…..,(Vin,Vq)均属于E(G), 则称顶点Vp到Vq存在一条路径。 若一条路径上除起点和终点可以相同外,其余顶点均不相 同,则称此路径为简单路径。起点和终点相同的路径称为 回路,路径上经过的边的数目称为该路径的路径长度。
V2
V3 G2 图示
图的应用举例:
例1 交通图(公路、铁路) 顶点:地点 边:连接地点的公路 交通图中的有单行道双行道,分别用有向边、无向 边表示; 例2 电路图 V0 V1 顶点:元件 边:连接元件之间的线路 V2 例3 通讯线路图 V3 V4 顶点:地点 边:地点间的连线 V0 V1 例4 各种流程图 如产品的生产流程图 顶点:工序 V2 V3 边:各道工序之间的顺序关系
第7章 图
一、教学内容:
1、图的基本概念
2、图的存储结构(邻接矩阵、邻接表及有向图十字邻接表); 3、图的遍历(深度优先搜索、广度优先搜索); 4、最小生成树(kruskul算法、prim算法); 5、最短路径(dijkstra算法、floyd算法); 6、AOV网络与拓扑排序; 7、AOE网络与关键路径。
ri 为入度, ci为出度 设图G的顶点数为n,边数为e,第i个顶点的度为d, n 1 则有e= 2 di i 1