08图

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

8.2 图的存储结构
8.2.1 图的邻接矩阵存储结构 假设图G = (V, E)有n个结点,即V={v0,v1,…,vn-1},E可用 假设图 有 个结点, , 可用 个结点 如下形式的矩阵A描述,对于A中的每一个元素 中的每一个元素a 满足: 如下形式的矩阵 描述,对于 中的每一个元素 ij,满足: 描述
在有n个结点的无向图中 若有n(n-1)/2 个结点的无向图中, 完全图 在有 个结点的无向图中,若有 条边,即任意两个结点之间有且只有一条边, 条边,即任意两个结点之间有且只有一条边,则称此 图为无向完全图。在有 个结点的有向图中 若有n(n个结点的有向图中, 图为无向完全图。在有n个结点的有向图中,若有 1)条边,即任意两个结点之间有且只有方向相反的两 条边, 条边 条边,则称此图为有向完全图。 条边,则称此图为有向完全图。
第八章 图
8.1 概述 8.2 图的存储结构 8.3 邻接矩阵图类 8.4 图的遍历 8.5 最小生成树 8.6 最短路径
本章主要知识点: 本章主要知识点: ● 图的基本概念 ● 图的存储结构,主要是邻接矩阵存储结构和邻 图的存储结构, 接表存 储结构 ● 图的遍历,主要是深度优先算法和广度优先遍 图的遍历, 历算法 ● 最小生成树的基本概念,以及普里姆算法和克 最小生成树的基本概念, 鲁斯卡尔算法 ● 最短路径的基本概念,狄克斯特拉算法思想 最短路径的基本概念,
设有图G1={V1, E1}和图 和图G2={V2, E2},若V1包含 2且E1 包含V 子图 设有图 和图 , 包含E2,则称图G2是图G1的子图。 包含 则称图 是图 的子图。 在无向图中,若从结点v 到结点v 有路径, 连通图和强连通图 在无向图中,若从结点 i到结点 j有路径, 则称结点v 和结点v 是连通的。 则称结点 i和结点 j是连通的。如果图中任意一对结点都是连通 的,则称该图是连通图。在有向图中,若对于任意一对结点vi 则称该图是连通图。在有向图中,若对于任意一对结点 和结点v 都存在路径,则称图G是强连通图 是强连通图。 和结点 j(vi≠vj)都存在路径,则称图 是强连通图。
0 0 A = 0 0 0
1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
邻接矩阵特点
无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需 存储空间为n(n+1)/2 有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间 为n² ² 无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和 有向图中:
1 若( vi , v j ) ∈ E 或 < vi , v j >∈ E aij = 0 否则
由于矩阵A中的元素 表示了结点v 和结点v 之间边的关系, 由于矩阵 中的元素aij表示了结点 i和结点 j之间边的关系, 中的元素 或者说, 中的元素 表示了结点v 和结点v 中的元素a 或者说,A中的元素 ij表示了结点 i和结点 j(0≤j≤n-1) ) 的邻接关系,所以矩阵 称作邻接矩阵。 称作邻接矩阵 的邻接关系,所以矩阵A称作邻接矩阵。
例 2 1 4 3 5 连通图 6
例 3
5 强连通图 6
例 2 1 4 3 5 6 非连通图 连通分量
生成树 一个连通图的最小连通子图称作 该图的生成树。 该图的生成树。有n个结点的连通图的生成树 个结点的连通图的生成树 个结点和n-1条边 有n个结点和 条边。 个结点和 条边。 若路径上各结点v 简单路径和回路 若路径上各结点 1, v2, …, vm,互不重复,则称这样的路径为简单路径; 互不重复, 互不重复 则称这样的路径为简单路径; 若路径上第一个结点v1与最后一个结点 m重合, 若路径上第一个结点 与最后一个结点v 重合, 则称这样的路径为回路或环。 则称这样的路径为回路或环。
图的深度优先遍历( 图的深度优先遍历( DFS ) 深度优先遍历 方法:假设初始状态是图中所有顶点都没被访问 假设初始状态是图中所有顶点都没被访问 DFS可从图中某一顶点v0出发 访问v0 可从图中某一顶点v0出发, v0, 过,则DFS可从图中某一顶点v0出发,访问v0,然 后去访问与邻接但未被访问过的任一顶点v1 v1, 后去访问与邻接但未被访问过的任一顶点v1,之 后再去访问与v1邻接但未被访问过的任一顶点v2 v1邻接但未被访问过的任一顶点 后再去访问与v1邻接但未被访问过的任一顶点v2 重复这一过程, 时,重复这一过程,当达到一个所有邻接顶点被 访问过的顶点时,则依次退回到最近被访问过的 访问过的顶点时, 顶点,若它还有邻接点未被访问过, 顶点,若它还有邻接点未被访问过,从这些被访 问过的顶点中, 问过的顶点中,取其中的一顶点开始重复这一过 若所有邻接顶点被访问过,则依次回退,..., 程;若所有邻接顶点被访问过,则依次回退,..., 直到所有顶点被访问过为止。 直到所有顶点被访问过为止。
–顶点Vi的出度是A中第i行元素之和 –顶点Vi的入度是A中第i列元素之和
带权图及其邻接矩阵
1 2 3 V = 4 5 6
0 20 30 ∞ ∞ ∞ 20 0 ∞ 40 ∞ ∞ 30 ∞ 0 50 ∞ ∞ A= ∞ 40 50 0 70 80 ∞ ∞ ∞ 70 0 ∞ ∞ ∞ ∞ 80 ∞ 0
(a) 有向图G1 G1 (b)无向图G2 (b) G2 (b) 图 6.1 图的示例 (a)
2
G1=(V1, 其中: G1=(V1,E1) 其中: G2=(V2, 其中: G2=(V2,E2) 其中:
V1={v1,v2,v3,v4} E1={<v1,v2>,<v1,v3>,<v3,v4>,<v4,v1>} V2={v1,v2,v3,v4,v5} E2={(v1,v2),(v1,v4),(v2,v3),(v2,v5),(v3, v4),(v3,v5)}
结点v的度是与它相关联的边的 结点的度 结点 的度是与它相关联的边的 条数,记作 条数,记作TD(v)。 。 在图G=(V, E)中,若从结点 i出发有 路径 在图 中 若从结点v 一组边使可到达结点v 则称结点v 到结点v 一组边使可到达结点 j,则称结点 i到结点 j的 结点序列为从结点v 到结点v 结点序列为从结点 i到结点 j的路径
8.1 概述
8.1.1 图的基本概念 图 是由结点集合及结点间的关系集合组成 的一种数据结构。 的一种数据结构。 图中的顶点称作结点, 结点和边 图中的顶点称作结点,图中的第 i个结点记做 i。 个结点记做v 个结点记做
在有向图中,结点对< 有向图 在有向图中,结点对<x, y>是有 > 序的,结点对< 到结点y的 序的,结点对<x, y>称为从结点 到结点 的 >称为从结点x到结点 一条有向边,因此,<x, > 一条有向边,因此,< y>与<y, x>是两条 ,< > 不同的边。有向图中的结点对< 不同的边。有向图中的结点对<x, y>用一对 > 尖括号括起来, 是有向边的始点 是有向边的始点, 是有向边 尖括号括起来,x是有向边的始点,y是有向边 的终点,有向图中的边也称作弧. 的终点,有向图中的边也称作弧
在无向图G中 邻接结点 在无向图 中,若(u, v)是E(G)中的 ) 中的 一条边,则称 和 互为邻接结点 并称边( 互为邻接结点, 一条边,则称u和v互为邻接结点,并称边(u, v)依 ) 附于结点u和 在有向图 在有向图G中 附于结点 和v。在有向图 中,若<u, v>是E(G)中 > 中 的一条边,则称结点 邻接到结点 邻接到结点v,结点v邻接自结 的一条边,则称结点u邻接到结点 ,结点 邻接自结 和结点v相关联 点u,并称边<u, v>和结点 和结点 相关联。 ,并称边< >和结点u和结点 相关联。
无向图及其邻接矩阵
1 2 V = 3 4 5
0 1 A = 1 1 1
1 0 0 1
1 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0
有向图及其邻接矩阵
A B V = C D E
8.4 图的遍历
8.4.1 图的深度和广度优先遍历算法 图的遍历算法设计需要考虑三个问题: 图的遍历算法设计需要考虑三个问题: (1)图的特点是没有首尾之分,所以算法的参数要指 )图的特点是没有首尾之分, 定访问的第一个结点; 定访问的第一个结点; (2)对图的遍历路径有可能构成一个回路,从而造成 )对图的遍历路径有可能构成一个回路, 死循环, 死循环,所以算法设计要考虑遍历路径可能出现的死 循环问题; 循环问题; (3)一个结点可能和若干个结点都是邻接结点,要使 )一个结点可能和若干个结点都是邻接结点, 一个结点的所有邻接结点按照某种次序被访问。 一个结点的所有邻接结点按照某种次序被访问。
例 2 1 4 3 G1 5 6
路径:1,2,3,5,6,3 路径长度:5 简单路径:1,2,3,5 回路:1,2,3,5,6,3,1 简单回路:3,5,6,3
例 1 3 2 G2 5 4 7 6 路径:1,2,5,7,6,5,2,3 路径长度:7 简单路径:1,2,5,7,6 回路:1,2,5,7,6,5,2,1 简单回路:1,2, 1
2 3
有向完全图 4 3 5 6
无向完全图 5 3 例 2 4 3 G1 顶点2入度:1 出度:3 顶点4入度:1 出度:0 5 6 6
图与子图 例 1 3 2 G2 顶点5的度:3 顶点2的度:4 5 4 7
1 6
有些图的边附带有数据信息, 权 有些图的边附带有数据信息,这些附带的 数据信息称为权。第i条边的权用符号 i表示。 数据信息称为权。 条边的权用符号w 表示。 条边的权用符号 对于不带权的图, 路径长度 对于不带权的图,一条路径的路径长 度是指该路径上的边的条数;对于带权的图, 度是指该路径上的边的条数;对于带权的图,一条 路径的路径长度是指该路径上各个边权值的总和。 路径的路径长度是指该路径上各个边权值的总和。
8.1.2 图的抽象数据类型 数据集合:由一组结点集合{v 和一组边 集合组 和一组边{e 数据集合:由一组结点集合 i}和一组边 j}集合组 当为带权图时每条边上权w 还构成权集合{w 。 成。当为带权图时每条边上权 j还构成权集合 j}。 操作集合: 操作集合: (1)初始化 )初始化initiate(n) (2)插入结点 insertVertex(vertex) ) (3)插入边 )插入边insertEdge(v1, v2, weight) (4)删除边 )删除边deleteEdge(v1, v2) (5)删除结点 )删除结点deleteVertex(vertex) (6)第一个邻接结点 )第一个邻接结点getFirstVex(v) (7)下一个邻接结点 )下一个邻接结点getNextVex(int v1, v2) (8)遍历 )遍历depthFirstSearch(vs)
在无向图中,结点对( 无向图 在无向图中,结点对(x, y)是无序 ) 和结点y相关联 的,结点对(x, y)称为与结点 和结点 相关联 结点对( )称为与结点x和结点 的一条边。( 的一条边。(x, y)等价于<x, y>和<y, x>。 。( )等价于< > >
图基本术语
1 2 1 3 4 3 4 5
8.2.2 图的邻接表存储结构 图的邻接矩阵存储结构的主要特点是把图的边信息存 储在一个n× 矩阵中 其中n为图中的结点个数 矩阵中, 为图中的结点个数。 储在一个 ×n矩阵中,其中 为图中的结点个数。

∧ ∧


8.3 邻接矩阵图类
1 2 邻接矩阵图类AdjMWGraph的设计 的设计 邻接矩阵图类 邻接矩阵图类AdjMWGraph的测试 的测试 邻接矩阵图类
相关文档
最新文档