数据结构——第7章 图和广义表1.ppt
《数据结构——第7章 图和广义表1.ppt》由会员分享,可在线阅读,更多相关《数据结构——第7章 图和广义表1.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构的内容数据结构的内容1图的特点图的特点 顶点的前驱和后继个数无限制顶点的前驱和后继个数无限制 图的应用图的应用顶点之间的关系是任意的顶点之间的关系是任意的 图中任意两个顶点之间都可能相关图中任意两个顶点之间都可能相关 图(图(Graph)是一种)是一种非线性结构非线性结构。语语 言言 学学逻逻 辑辑 学学物物 理理化化 学学电信工程电信工程 数数 学学 计算机科学计算机科学 多对多多对多多对多多对多 北京北京 西安西安 南京南京 杭州杭州 开封开封 洛阳洛阳 27.1 7.1 基本术语基本术语7.2 7.2 存储结构存储结构7.3 7.3 图的遍历图的遍历7.4 7.4 连通网的最小连
2、通网的最小生生成树成树7.57.5 单源单源最短路径最短路径7.6 7.6 拓朴排序拓朴排序7.7 7.7 关键路径关键路径7.8 7.8 广义表广义表第第7 7章章 图和广义表图和广义表37.1 7.1 图的基本术语图的基本术语图:图:记为记为 G(V,E)其中:其中:V 是是G的顶点集合,是有穷非空集;的顶点集合,是有穷非空集;E 是是G的边的边集合,是有穷集。集合,是有穷集。问:当问:当E(G)E(G)为空时,图为空时,图G G存在否?存在否?答:还存在!但此时图答:还存在!但此时图G G只有顶点而没有边。只有顶点而没有边。有向图:有向图:无向图:无向图:完全图:完全图:图图G G中的每
3、条边都是有方向的;中的每条边都是有方向的;图图G G中的每条边都是无方向的;中的每条边都是无方向的;图图G G任意两个顶点都有一条边相连接;任意两个顶点都有一条边相连接;vv若若若若 n n 个顶点的无向图有个顶点的无向图有个顶点的无向图有个顶点的无向图有 n n(n n-1)/2-1)/2 条边条边条边条边,称为称为称为称为无向完全图无向完全图无向完全图无向完全图vv若若若若 n n 个顶点的有向图有个顶点的有向图有个顶点的有向图有个顶点的有向图有n n(n-n-1)1)条边条边条边条边,称为称为称为称为有向完全图有向完全图有向完全图有向完全图V=vertex E=edge4例:例:判断下列
4、判断下列4种图形各属什么类型?种图形各属什么类型?无向图无向图 无向图无向图(树树)有向图有向图有向图有向图n n(n n-1)/2-1)/2 条边条边条边条边n n(n n-1)-1)条边条边条边条边 完全图完全图 完全图完全图5设有两个图设有两个图 G(V,E)和和 G(V,E)。若若 V V 且且 E E,则称则称 图图G 是是 图图G 的子图。的子图。子子 图:图:带权图:带权图:即边上带权的图。其中即边上带权的图。其中权权是指每条边可以标上是指每条边可以标上具有某种含义的数值(即与边相关的数)。具有某种含义的数值(即与边相关的数)。带权图(带权的有向图与无向图)带权图(带权的有向图与
5、无向图)网网 络:络:6顶点顶点v v的度的度是与它相关联的边的条数。记作是与它相关联的边的条数。记作TD(v)TD(v)。在在有向图有向图中中,顶点的度等于该顶点的顶点的度等于该顶点的入度入度与与出度出度之和。之和。顶点顶点 v v 的入度的入度是以是以 v v 为终点的有向边的条数为终点的有向边的条数,记作记作 ID(vID(v););顶点顶点 v v 的出度的出度是以是以 v v 为始点的有向边的条数为始点的有向边的条数,记作记作 OD(v)OD(v)。问:问:当有向图中仅当有向图中仅1 1个顶点的入度为个顶点的入度为0,0,其余顶点的其余顶点的入度均为入度均为1 1,此时是何形状?,此
6、时是何形状?答:答:是树!而且是一棵有向树!是树!而且是一棵有向树!度度入度入度出度出度7简单路径:路径上各顶点路径上各顶点 v v1 1,v,v2 2,.,.,v vm m 均不互相重复。均不互相重复。回 路:例:例:若路径上第一个顶点若路径上第一个顶点 v v1 1 与最后一个顶点与最后一个顶点v vm m 重合,重合,则称这样的路径为则称这样的路径为回路或环回路或环。路径:在图在图在图在图 GG(V V,E E)中中中中,若从顶点若从顶点若从顶点若从顶点 v vi i 出发出发出发出发,沿一些边经过一些沿一些边经过一些沿一些边经过一些沿一些边经过一些顶点顶点顶点顶点 v vp p1 1,
7、v vp p2 2,v vpmpm,到达顶点到达顶点到达顶点到达顶点v vj j。则称顶点序列则称顶点序列则称顶点序列则称顶点序列 (v vi i v vp p1 1 v vp p2 2.v vpmpm v vj j )为从顶点为从顶点为从顶点为从顶点v vi i 到顶点到顶点到顶点到顶点 v vj j 的的的的路径路径路径路径。它经过的边。它经过的边。它经过的边。它经过的边(v vi i,v vp p1 1)、(v vp p1 1,v vp p2 2)、.、(v vpmpm,v vj j)应当是属于应当是属于应当是属于应当是属于E E的边。的边。的边。的边。路径长度:非带权图的路径长度是指此
8、路径上非带权图的路径长度是指此路径上非带权图的路径长度是指此路径上非带权图的路径长度是指此路径上边的条数边的条数边的条数边的条数;带权图的路径长度是指路径上带权图的路径长度是指路径上带权图的路径长度是指路径上带权图的路径长度是指路径上各边的权之和。各边的权之和。各边的权之和。各边的权之和。8在在在在无向无向无向无向图中图中图中图中,若从顶点若从顶点若从顶点若从顶点v v1 1到顶点到顶点到顶点到顶点v v2 2有路径有路径有路径有路径,则称顶点则称顶点则称顶点则称顶点v v1 1与与与与v v2 2是是是是连通连通连通连通的。如果图中任意一对顶点都是连通的的。如果图中任意一对顶点都是连通的的。
9、如果图中任意一对顶点都是连通的的。如果图中任意一对顶点都是连通的,则称此图是则称此图是则称此图是则称此图是连通图连通图连通图连通图。非连通图的极大连通子图非连通图的极大连通子图非连通图的极大连通子图非连通图的极大连通子图叫做叫做叫做叫做连通分量连通分量连通分量连通分量。在在在在有向有向有向有向图中图中图中图中,若对于每一对顶点若对于每一对顶点若对于每一对顶点若对于每一对顶点v vi i和和和和v vj j,都存在一条都存在一条都存在一条都存在一条从从从从v vi i到到到到v vj j和和和和从从从从v vj j到到到到v vi i的路径的路径的路径的路径,则称此图是则称此图是则称此图是则称此
10、图是强连通图强连通图强连通图强连通图。非强连通图的极大强连通子图非强连通图的极大强连通子图非强连通图的极大强连通子图非强连通图的极大强连通子图叫做叫做叫做叫做强连通分量强连通分量强连通分量强连通分量。强连通图:连通图:生成树:生成树:是一个是一个是一个是一个极小连通子图极小连通子图极小连通子图极小连通子图,它含有图中全部顶点,但只有,它含有图中全部顶点,但只有,它含有图中全部顶点,但只有,它含有图中全部顶点,但只有n n-1-1条边条边条边条边。vv如果在生成树上添加如果在生成树上添加如果在生成树上添加如果在生成树上添加1 1条边,必定构成一个环。条边,必定构成一个环。条边,必定构成一个环。条
11、边,必定构成一个环。vv若图中有若图中有若图中有若图中有n n个顶点,却少于个顶点,却少于个顶点,却少于个顶点,却少于n n-1-1条边,必为非连通图。条边,必为非连通图。条边,必为非连通图。条边,必为非连通图。生成森生成森林:林:由若干棵生成树组成,含全部顶点,但构成这些树由若干棵生成树组成,含全部顶点,但构成这些树由若干棵生成树组成,含全部顶点,但构成这些树由若干棵生成树组成,含全部顶点,但构成这些树的边是最少的。的边是最少的。的边是最少的。的边是最少的。97.2 7.2 图的存储结构图的存储结构图的特点:非线性结构(图的特点:非线性结构(m:n m:n)邻接表邻接表邻接多重表邻接多重表十
12、字链表十字链表设计为邻接矩阵设计为邻接矩阵链式存储结构:链式存储结构:顺序存储结构:顺序存储结构:无!无!(多个顶点,无序可言)(多个顶点,无序可言)但可但可用用数组数组数组数组描述元素间关系。描述元素间关系。可用多重链表可用多重链表重点介绍:重点介绍:邻接矩阵邻接矩阵(数组数组)表示法表示法邻接表邻接表(链式链式)表示法表示法107.2.1 7.2.1 邻接矩阵(数组)表示法邻接矩阵(数组)表示法邻接矩阵(数组)表示法邻接矩阵(数组)表示法vv一个有一个有一个有一个有 n n 个顶点的图,可用个顶点的图,可用个顶点的图,可用个顶点的图,可用两个数组两个数组两个数组两个数组存储。其中一个存储。
13、其中一个存储。其中一个存储。其中一个 一维数一维数一维数一维数组存储数据元素组存储数据元素组存储数据元素组存储数据元素(顶点)(顶点)(顶点)(顶点)的信息,另一个的信息,另一个的信息,另一个的信息,另一个二维数组二维数组二维数组二维数组(邻接矩(邻接矩(邻接矩(邻接矩阵)存储数据元素之间的阵)存储数据元素之间的阵)存储数据元素之间的阵)存储数据元素之间的关系关系关系关系(边或弧)的信息。(边或弧)的信息。(边或弧)的信息。(边或弧)的信息。vv设图设图设图设图 G=(G=(V V,E E)有有有有 n n 个顶点,则图的邻接矩阵是一个二维数个顶点,则图的邻接矩阵是一个二维数个顶点,则图的邻接
14、矩阵是一个二维数个顶点,则图的邻接矩阵是一个二维数组组组组 A A n n n n,定义为:定义为:定义为:定义为:v1v2v3v5v4v4G例例例例1 1:邻接矩阵:A=(v1 v2 v3 v4 v5 )v1v2v3v4v50 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0分析分析分析分析1 1:无向图的邻接矩阵是无向图的邻接矩阵是无向图的邻接矩阵是无向图的邻接矩阵是对称对称对称对称的;的;的;的;分析分析分析分析2 2:顶点顶点顶点顶点i i 的的的的度度度度第第第第 i i 行行行行(列列列列)中中中中1 1 的个数的个数的个数的个数;特别:特别:
15、特别:特别:完全图完全图完全图完全图的邻接矩阵中,对角元素为的邻接矩阵中,对角元素为的邻接矩阵中,对角元素为的邻接矩阵中,对角元素为0 0,其余全,其余全,其余全,其余全1 1。0 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 10 1 1 1 00 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 10 1 1 1 0顶点表:11例例2:有向图的邻接矩阵有向图的邻接矩阵分析分析分析分析1 1 1 1:有向图的邻接矩阵有向图的邻接矩阵可能是不对称可能是不对称的。的。分析分析分析分析2 2 2 2:顶点的顶点的出度出度=第第i行元素之和行元素之和,OD(Vi)
16、=A i j 顶点的顶点的入度入度=第第i列元素之和列元素之和。ID(Vi)=A j i 顶点的顶点的度度=第第i行元素之和行元素之和+第第i列元素之和列元素之和,即:即:TD(Vi)=OD(Vi)+ID(Vi)v1v2v3v4G G G G邻接矩阵:A=(v1 v2 v3 v4)v1v2v3v40 0 0 00 0 0 0 0 0 0 0 0 0 0 0 注:注:在有向图的邻接矩阵中,在有向图的邻接矩阵中,第第i i行含义:以结点行含义:以结点v vi i为尾的弧为尾的弧(即出度边);即出度边);第第i i列含义:以结点列含义:以结点v vi i为头的弧为头的弧(即入度边)。即入度边)。顶点
17、表:0 1 1 00 0 0 0 0 0 0 1 1 0 0 0 0 1 1 00 0 0 0 0 0 0 1 1 0 0 0 12 容易实现图的操作,如:求某顶点的度、判断容易实现图的操作,如:求某顶点的度、判断顶点之间是否有边(弧)、顶点的邻接点等等。顶点之间是否有边(弧)、顶点的邻接点等等。n n个顶点需要个顶点需要n*nn*n个单元存储边个单元存储边(弧弧););空间效率空间效率为为O(nO(n2 2)。对对稀疏图稀疏图而言尤其浪费空间。而言尤其浪费空间。特别讨论特别讨论:网(即有权图)的邻接矩阵网(即有权图)的邻接矩阵定义为:定义为:A i j=Wij 或(或(vi,vj)VR 无边
18、(弧)无边(弧)v1v2v3v4Nv5v65489755613以有向网为例:以有向网为例:邻接矩阵:N=(v1 v2 v3 v4 v5 v6 )邻接矩阵法邻接矩阵法优点:优点:邻接矩阵法邻接矩阵法缺点:缺点:顶点表:5 7 4 8 9 5 6 5 3 1 5 7 4 8 9 5 6 5 3 1 13数据结构数据结构 第七章第七章 图和广义表图和广义表韶关学院数信学院韶关学院数信学院图的数组(邻接矩阵)存储表示:图的数组(邻接矩阵)存储表示:#define INFINITY INT_MAX/最大值最大值#define MAX_VERTEX_NUM 20/最大顶点个数最大顶点个数 typedef
19、enum DG,DN,AG,AN GraphKind;/有向图有向图,有向网有向网,无向图无向图,无向网无向网 typedef struct ArcCell VRType adj;/VRType是顶点关系类型。对无权图用是顶点关系类型。对无权图用1或或0表示相邻否;表示相邻否;/对带权图,则为权值类型。对带权图,则为权值类型。InfoType *info;/该弧相关信息的指针该弧相关信息的指针 ArcCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef struct VertexType vexsMAX_VERTEX_NUM;/顶点向量顶点向量
20、AdjMatrix arcs;/邻接矩阵邻接矩阵 int vexnum,arcnum;/图的当前顶点数和弧图的当前顶点数和弧(边边)数数 GraphKind kind;/图的种类标志图的种类标志 MGraph;数据结构数据结构 第七章第七章 图和广义表图和广义表韶关学院数信学院韶关学院数信学院7.2.2 图的邻接表存储表示法(图的邻接表存储表示法(链式存储链式存储 )头结点头结点 data firstarc 表结点表结点 adjvex nextarc info v2 v1 v3 v4 v5 G2 v1 v3 v4 v2 v5 0 1 2 3 4 3 1 4 2 0 4 3 1 2 0 2 1
21、链域链域链域链域,指示下一条边或弧。,指示下一条边或弧。特点:特点:若无向图中有若无向图中有 n 个顶点、个顶点、e 条边,则其邻接表需条边,则其邻接表需 n 个头个头 结点和结点和 2e 个个表结点。适宜存储稀疏图表结点。适宜存储稀疏图。无向图中顶点无向图中顶点 vi 的度为第的度为第 i 个单链表中的结点数。个单链表中的结点数。邻接点域邻接点域邻接点域邻接点域,存放与,存放与 vi 邻接的邻接的 顶顶点在表头数组中的位置。点在表头数组中的位置。数据结构数据结构 第七章第七章 图和广义表图和广义表韶关学院数信学院韶关学院数信学院v2 v1 v3 v4 G1 0 1 2 3 2 1 3 0 v
22、1 v3 v4 v2 0 1 2 3 3 0 2 v1 v3 v4 v2 0 邻接表邻接表 逆邻接表逆邻接表 顶点顶点 vi 的的出度出度出度出度为第为第 i 个个 单链表中的结点个数。单链表中的结点个数。特点:特点:顶点顶点 vi 的的入度入度入度入度为整个为整个单单 链表中邻接点域值是链表中邻接点域值是 i-1 的结点个数的结点个数。找出度易,找出度易,找入度难。找入度难。找入度易,找入度易,找出度难。找出度难。顶点顶点 vi 的的入度入度入度入度为第为第 i 个个 单链表中的结点个数。单链表中的结点个数。顶点顶点 vi 的的出度出度出度出度为整个为整个单单 链表中邻接点域值是链表中邻接点
23、域值是 i-1 的结点个数的结点个数。数据结构数据结构 第七章第七章 图和广义表图和广义表韶关学院数信学院韶关学院数信学院图的邻接表存储表示:图的邻接表存储表示:#define MAX_VERTEX_NUM 20 typedef struct ArcNode int adjvex;/该弧所指向的顶点的位置该弧所指向的顶点的位置 struct ArcNode *nextarc;/指向下一条弧的指针指向下一条弧的指针 InfoType *info;/该弧相关信息的指针该弧相关信息的指针 ArcNode;typedef struct VNode VertexType data;/顶点信息顶点信息 A
24、rcNode *firstarc;/指向第一条依附该顶点的弧指向第一条依附该顶点的弧 VNode,AdjListMAX_VERTEX_NUM;typedef struct AdjList vertices;int vexnum,arcnum;/图的当前顶点数和弧数图的当前顶点数和弧数 int kind;/图的种类标志图的种类标志 ALGraph;例例例例1 1:无向图的邻接表无向图的邻接表无向图的邻接表无向图的邻接表v1v2v3v5v4v4例例例例2 2:有向图的邻接表有向图的邻接表有向图的邻接表有向图的邻接表v1v2v3v4V4V3V2V12301邻接表邻接表(出边出边)V4V3V2V130
25、20逆邻接表逆邻接表(入边入边)注:注:注:注:邻接表不唯一,因各个边结点的链入顺序是任意的。邻接表不唯一,因各个边结点的链入顺序是任意的。邻接表不唯一,因各个边结点的链入顺序是任意的。邻接表不唯一,因各个边结点的链入顺序是任意的。邻接表邻接表4321013341420v5v4v3v2v123142018例例例例3 3:已知某网的邻接(出边)表,请画出该网络。已知某网的邻接(出边)表,请画出该网络。已知某网的邻接(出边)表,请画出该网络。已知某网的邻接(出边)表,请画出该网络。当邻接表的存储当邻接表的存储结构形成后,图结构形成后,图便唯一确定!便唯一确定!19分析分析1:对于对于n n个顶点个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构第7章 图和广义表1 数据结构 广义
限制150内