图及其应用(new).ppt
《图及其应用(new).ppt》由会员分享,可在线阅读,更多相关《图及其应用(new).ppt(204页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图及其应用图及其应用(new)第第10章章 图及其应用图及其应用 2 图图图图(Graph)(Graph):是一种网状数据结构。是顶点集:是一种网状数据结构。是顶点集V和连和连接这些顶点的弧集接这些顶点的弧集(边集边集)VR所组成的结构记为所组成的结构记为:G=(V,VR)有向图:有向图:有向图:有向图:若若图中的边是顶点的有序对图中的边是顶点的有序对图中的边是顶点的有序对图中的边是顶点的有序对,则称此图为则称此图为有向图。有向图。有向边又称为弧有向边又称为弧有向边又称为弧有向边又称为弧,通常用尖括弧表示一条有向通常用尖括弧表示一条有向边边,vi,vj表示从顶点表示从顶点vi到到vj的一段弧的
2、一段弧,vi称为边的始点称为边的始点(或弧尾或弧尾),vj称为边的终点称为边的终点(或弧头或弧头),vi,vj和和 vj,vi代表两条不同的弧。代表两条不同的弧。132第第10章章 图及其应用图及其应用 3无无无无向向向向图图图图:若若图图图图中中中中的的的的边边边边是是是是顶顶顶顶点点点点的的的的无无无无序序序序对对对对,则则称称此此图图为为无向图。无向图。通通常常用用圆圆圆圆括括括括号号号号表表表表示示示示无无无无向向向向边边边边,(vi,vj)表表示示顶顶点点vi和和vj间间相连的边。在无向图中相连的边。在无向图中(vi,vj)和和(vj,vi)表示同一条边表示同一条边.2341第第10
3、章章 图及其应用图及其应用 4完全图、稠密图、稀疏图完全图、稠密图、稀疏图完全图、稠密图、稀疏图完全图、稠密图、稀疏图 具具有有n个个顶顶点点,n(n-1)/2条条边边的的图图,称称为为完完完完全全全全无无无无向向向向图图图图,具具有有n个个顶顶点点,n(n-1)条条弧弧的的有有向向图图,称称为为完完完完全全全全有有有有向向向向图图图图。完全无向图和完全有向图都称为完全无向图和完全有向图都称为完全图完全图完全图完全图。对对于于一一般般无无向向图图,顶顶点点数数为为n,边边数数为为e,则则 0e n(n-1)/2。对对于于一一般般有有向向图图,顶顶点点数数为为n,弧弧数数为为e,则则 0en(n
4、-1)。当当一一个个图图接接近近完完全全图图时时,则则称称它它为为稠稠稠稠密密密密图图图图,相相反反地地,当一个图中含有较少的边或弧时,则称它为当一个图中含有较少的边或弧时,则称它为稀疏图稀疏图稀疏图稀疏图。第第10章章 图及其应用图及其应用 5子图:子图:子图:子图:对于图对于图G=(V,VR),G=(V,VR),若有若有V V,VR VR,则称图则称图G是是G的一个子图。的一个子图。下图给出了下图给出了G与其子图与其子图G。2435167图G435167图G 第第10章章 图及其应用图及其应用 6邻接点邻接点邻接点邻接点 对对于于无无无无向向向向图图图图 G=(V,VR),如如如如果果果果
5、边边边边(v(v,v)v)VRVR,则则则则称称称称顶顶顶顶点点点点v,v,vv互互互互为为为为邻邻邻邻接接接接点点点点,即即v,v相相邻邻接接。边边(v,v)依依附附于顶点于顶点v和和v,或者说边(,或者说边(v,v)与顶点)与顶点v和和v相关联。相关联。对对于于有有有有向向向向图图图图G=(V,VR)而而言言,若若若若弧弧弧弧vvVRVR,则则则则称称称称顶顶顶顶点点点点v v邻邻邻邻接接接接到到到到顶顶顶顶点点点点vv,顶顶顶顶点点点点vv邻邻邻邻接接接接自自自自顶顶顶顶点点点点v v,或或者者说说弧弧与顶点与顶点v和和v相关联。相关联。2341132如:顶点如:顶点1、2互为邻接点互为
6、邻接点如:顶点如:顶点1邻接到顶点邻接到顶点2 顶点顶点2邻接自顶点邻接自顶点1第第10章章 图及其应用图及其应用 7权与网权与网权与网权与网 在在实实际际应应用用中中,图图的的边边或或弧弧上上往往往往与与具具有有一一定定意意义义的的数数有有关关,即即每每每每一一一一条条条条边边边边都都都都有有有有与与与与它它它它相相相相关关关关的的的的数数数数,称称为为权权权权,我们将我们将这种带权的图这种带权的图这种带权的图这种带权的图叫做叫做赋权图赋权图赋权图赋权图或或网网网网,如图所示。,如图所示。第第10章章 图及其应用图及其应用 8路径和回路路径和回路路径和回路路径和回路路径:路径:路径:路径:所
7、谓顶点所谓顶点vp 到顶点到顶点vq之间的路径之间的路径,是指是指顶点序列顶点序列顶点序列顶点序列vp,vi1,vi2,vim,vq,其中(其中(vp,vi1),(vi1,vi2),(vim,vq)分别为图中的边。)分别为图中的边。路径长度:路径上边的数目路径长度:路径上边的数目路径长度:路径上边的数目路径长度:路径上边的数目称为路径长度。称为路径长度。简单路径:简单路径:简单路径:简单路径:序列中序列中顶点不重复出现的路径顶点不重复出现的路径顶点不重复出现的路径顶点不重复出现的路径称为简单路径。称为简单路径。回路或环:回路或环:回路或环:回路或环:如果如果路径的起点和终点相同路径的起点和终点
8、相同路径的起点和终点相同路径的起点和终点相同(即即vp=vq),则则称此路径为回路或环。称此路径为回路或环。第第10章章 图及其应用图及其应用 9 如图所示的无向图中如图所示的无向图中,顶点顶点顶点顶点v1v1到顶点到顶点到顶点到顶点v5v5的路径有两条的路径有两条的路径有两条的路径有两条,分别为分别为v1,v2,v3,v4与与v1,v5,v4,路径长度分别为路径长度分别为路径长度分别为路径长度分别为3 3和和和和2 2。v1到到v5的两条路径都为的两条路径都为简简简简单路径单路径单路径单路径。简单回路:简单回路:简单回路:简单回路:除第一顶点与最后一个顶点之外除第一顶点与最后一个顶点之外除第
9、一顶点与最后一个顶点之外除第一顶点与最后一个顶点之外,其它顶点不其它顶点不其它顶点不其它顶点不重复出现的回路重复出现的回路重复出现的回路重复出现的回路为简单回路或者简单环。为简单回路或者简单环。第第10章章 图及其应用图及其应用 10 连通图和强连通图连通图和强连通图连通图和强连通图连通图和强连通图 在在无向图无向图无向图无向图中,若从顶点中,若从顶点i到顶点到顶点j有路径,则称顶点有路径,则称顶点i和顶点和顶点j是连通的。若任意两个顶点都是连通的,则称是连通的。若任意两个顶点都是连通的,则称此无向图为连通图,否则称为非连通图。此无向图为连通图,否则称为非连通图。连通图和非连通图示例见图连通图
10、和非连通图示例见图:第第10章章 图及其应用图及其应用 11 对对于于有有有有向向向向图图图图来来说说,若若图图中中任任任任意意意意一一一一对对对对顶顶顶顶点点点点v vi i和和和和v vj j(ij)(ij)均均均均有有有有从从从从v vi i到到到到 v vj j及及及及从从从从 v vj j到到到到 v vi i的的的的有有有有向向向向路路路路径径径径,则则称称该该有有有有向向向向图图图图是是是是强连通的强连通的强连通的强连通的。强连通图和非强连通图示例见图强连通图和非强连通图示例见图:第第10章章 图及其应用图及其应用 12连通分量和强连通分量连通分量和强连通分量连通分量和强连通分量
11、连通分量和强连通分量 无无无无向向向向图图图图中中,极极大大的的连连通通子子图图为为该该图图的的连连通通分分量量。显显然然,任任何何连连通通图图的的连连通通分分量量只只有有一一个个,即即它它本本身身,而而非连通图有多个连通分量。非连通图有多个连通分量。24351672435167第第10章章 图及其应用图及其应用 13 有有向向图图中中的的极极极极大大大大强强强强连连连连通通通通子子子子图图图图称称为为该该有有向向图图的的强强强强连连连连通通通通分分分分量量量量。显显然然,任任何何强强连连通通图图的的强强连连通通分分量量只只有有一一个个,即即它本身,而非强连通图有多个强连通分量。它本身,而非强
12、连通图有多个强连通分量。下图不是强连通的下图不是强连通的,但它有两个强连通分量但它有两个强连通分量:132321第第10章章 图及其应用图及其应用 14顶点的度顶点的度顶点的度顶点的度2341如:顶点如:顶点1的度为的度为3132如:顶点如:顶点2的入度为的入度为2 出度为出度为1有向图有向图有向图有向图中中,要区别顶点的入度和出度的概念。要区别顶点的入度和出度的概念。顶点顶点v的的入度入度入度入度 是指是指以以以以v v为终点的弧的数目为终点的弧的数目为终点的弧的数目为终点的弧的数目记为记为ID(v)顶点顶点v的的出度出度出度出度 是指是指以以以以v v为始点的弧的数目为始点的弧的数目为始点
13、的弧的数目为始点的弧的数目记为记为OD(v)显然:显然:D(v)=ID(v)+OD(v)顶点的顶点的度度度度 是指是指依附于某顶点依附于某顶点依附于某顶点依附于某顶点v vi i的边数的边数的边数的边数,通常记通常记 为为D(v)第第10章章 图及其应用图及其应用 15 10.1 图的概念 10.2 图的存储 10.3 图的遍历 10.4 生成树和最小生成树 10.5 最短路径 10.6 有向无环图的应用第10章 图及其应用第第10章章 图及其应用图及其应用 16 10.2.1 邻接矩阵存储法 10.2.2 邻接表表示法 10.2.3 十字链表 10.2.4 邻接多重表 10.2 图的存储第第
14、10章章 图及其应用图及其应用 17邻接矩阵:邻接矩阵:邻接矩阵:邻接矩阵:用一个二维数组(矩阵)来表示图中顶点之间的相邻关系。设图设图G=(V,VR)有有n(n1)个顶点个顶点,则则G的邻接矩阵是按如的邻接矩阵是按如下定义的下定义的n阶方阵阶方阵:1 若若(vi,vj)或或VR(G)aij=0 反之反之第第10章章 图及其应用图及其应用 18例例例例:图图G1、G2的的邻邻接接矩矩阵阵分分别别表表示示为为A1和和A2,矩矩阵阵的的行、行、列号对应于图中结点的号。列号对应于图中结点的号。0 1 1 11 0 1 01 1 0 11 0 1 00 1 10 0 10 1 02341132G1G2
15、第第10章章 图及其应用图及其应用 19从无向图的邻接矩阵可以得出如下结论:从无向图的邻接矩阵可以得出如下结论:从无向图的邻接矩阵可以得出如下结论:从无向图的邻接矩阵可以得出如下结论:(1)矩阵是对称的,可压缩存储(上(下)三角)矩阵是对称的,可压缩存储(上(下)三角);(2)第)第i行或第行或第i 列中列中1的个数为顶点的个数为顶点i 的度的度;(3)矩阵中)矩阵中1的个数的一半为图中边的数目的个数的一半为图中边的数目;(4)很很容容易易判判断断顶顶点点i 和和顶顶点点j之之间间是是否否有有边边相相连连(看看矩阵中矩阵中i行行j列值是否为列值是否为1)。第第10章章 图及其应用图及其应用 2
16、0从有向图的邻接矩阵可以得出如下结论从有向图的邻接矩阵可以得出如下结论从有向图的邻接矩阵可以得出如下结论从有向图的邻接矩阵可以得出如下结论:(1)矩阵不一定是对称的矩阵不一定是对称的;(2)第第i 行中行中1的个数为顶点的个数为顶点i 的出度的出度;(3)第第i列中列中1的个数为顶点的个数为顶点 i的入度的入度;(4)矩阵中矩阵中1的个数为图中弧的数目的个数为图中弧的数目;(5)很容易判断顶点很容易判断顶点i 和顶点和顶点j 是否有弧相连是否有弧相连.第第10章章 图及其应用图及其应用 21 网的邻接矩阵表示:网的邻接矩阵表示:网的邻接矩阵表示:网的邻接矩阵表示:若图若图G是一个有是一个有n个
17、顶点的网,则它的邻接矩阵是具有个顶点的网,则它的邻接矩阵是具有如下性质的如下性质的nn矩阵矩阵A:若若或或(vi,vj)VR(G)反之反之 第第10章章 图及其应用图及其应用 22 5 7 4 8 5 234158475例:例:例:例:一个有向网一个有向网N及其邻接矩阵的示例。及其邻接矩阵的示例。第第10章章 图及其应用图及其应用 23 n n个顶点需要个顶点需要n*nn*n个单元存储边个单元存储边(弧弧););空间效率为空间效率为O O(n(n2 2)。对稀疏图而言尤其浪费空间。对稀疏图而言尤其浪费空间。对稀疏图而言尤其浪费空间。对稀疏图而言尤其浪费空间。邻接矩阵法邻接矩阵法优点:优点:邻接
18、矩阵法邻接矩阵法缺点:缺点:容易实现图的操作,如:求某顶点的度、判断顶点容易实现图的操作,如:求某顶点的度、判断顶点之间是否有边(弧)、找顶点的邻接点等等。之间是否有边(弧)、找顶点的邻接点等等。第第10章章 图及其应用图及其应用 24邻接矩阵表示法的邻接矩阵表示法的C语言类型描述如下:语言类型描述如下:define MAX_V_N 10 /最多顶点个数最多顶点个数最多顶点个数最多顶点个数define INFINITY 32768 /表示极大值,表示极大值,表示极大值,表示极大值,即即即即 typedef enumDG,DN,UDG,UDNenumDG,DN,UDG,UDN GraphKind
19、;/图图图图的的的的种种种种类类类类:DGDG表表表表示示示示有有有有向向向向图图图图,DNDN表表表表示示示示有有有有向向向向网网网网,UDGUDG表表表表示示示示无向图无向图无向图无向图,UDN,UDN表示无向网表示无向网表示无向网表示无向网第第10章章 图及其应用图及其应用 25typedef struct ArcNodestruct ArcNode AdjType adj;AdjType adj;/AdjTypeAdjType是是是是顶顶顶顶点点点点关关关关系系系系类类类类型型型型,对对对对无无无无权权权权图图图图,用用用用1 1或或或或0 0表表表表示是否相邻;对带权图,则为权值类型
20、示是否相邻;对带权图,则为权值类型示是否相邻;对带权图,则为权值类型示是否相邻;对带权图,则为权值类型 InfoType *info;InfoType *info;/该弧相关信息的指针该弧相关信息的指针该弧相关信息的指针该弧相关信息的指针 ArcNode;第第10章章 图及其应用图及其应用 26 typedef structstruct VertexData vexsMAX_V_N;VertexData vexsMAX_V_N;/顶点向量顶点向量顶点向量顶点向量 ArcNode arcsMAX_V_NMAX_V_N;ArcNode arcsMAX_V_NMAX_V_N;/邻接矩阵邻接矩阵邻接矩
21、阵邻接矩阵 int vexnum,arcnum;int vexnum,arcnum;/图的顶点数和弧数图的顶点数和弧数图的顶点数和弧数图的顶点数和弧数 GraphKind kind;GraphKind kind;/图的种类标志图的种类标志图的种类标志图的种类标志 AdjMatrix;/(Adjacency Matrix Graph)/(Adjacency Matrix Graph)第第10章章 图及其应用图及其应用 27int LocateVertex(AdjMatrix*G,VertexData v)/求顶点位置函数求顶点位置函数 int j=-1,k;for(k=0;kvexnum;k+)
22、if(G-vexsk=v)j=k;break;return(j);第第10章章 图及其应用图及其应用 28int CreateDN(AdjMatrix*G)/创建有向网创建有向网 int i,j,k,weight;VertexData v1,v2;scanf(%d,%d,&G-arcnum,&G-vexnum);/输入图的顶点数和弧数输入图的顶点数和弧数输入图的顶点数和弧数输入图的顶点数和弧数 for(i=0;ivexnum;i+)/初始化邻接矩阵初始化邻接矩阵初始化邻接矩阵初始化邻接矩阵 for(j=0;jvexnum;j+)G-arcsij.adj=INFINITY;for(i=0;ive
23、xnum;i+)scanf(%c,&G-vexsi);/输入图的顶点值输入图的顶点值输入图的顶点值输入图的顶点值第第10章章 图及其应用图及其应用 29 for(k=0;karcnum;k+)scanf(%c,%c,%d,&v1,&v2,&weight);/输入一条弧的两个顶点及权值输入一条弧的两个顶点及权值输入一条弧的两个顶点及权值输入一条弧的两个顶点及权值 i=LocateVex(G,v1);/求顶点位置函数求顶点位置函数求顶点位置函数求顶点位置函数 j=LocateVex(G,v2);G-arcsij.adj=weight;/建立弧建立弧建立弧建立弧 return(Ok);第第10章章
24、图及其应用图及其应用 30 10.2.1 邻接矩阵存储法 10.2.2 邻接表表示法 10.2.3 十字链表 10.2.4 邻接多重表10.2 图的存储第第10章章 图及其应用图及其应用 31 邻接表(邻接表(Adjacency List)表示法是图的一种链式存储)表示法是图的一种链式存储结构。它包括两个部分结构。它包括两个部分,一部分是一部分是链表链表链表链表,另一部分是另一部分是向量向量向量向量。在在链表部分中共有链表部分中共有链表部分中共有链表部分中共有n n个链表个链表个链表个链表(n为顶点数为顶点数),用来存放边用来存放边的信息。的信息。将将每个单链表的表头结点顺序存储在一个向量中每
25、个单链表的表头结点顺序存储在一个向量中每个单链表的表头结点顺序存储在一个向量中每个单链表的表头结点顺序存储在一个向量中。2341第第10章章 图及其应用图及其应用 32 这这样样,一一个个n个个顶顶点点的的图图的的邻邻接接表表表表示示由由表表表表头头头头结结结结点点点点表表表表与与边表边表边表边表两部分构成:两部分构成:(1)(1)表表表表头头头头结结结结点点点点表表表表:由由所所有有表表头头结结点点以以顺顺序序结结构构(向向量量)的形式存储的形式存储.。表表头头结结点点的的结结构构如如图图所所示示,由由两两部部分分构构成成:数数数数据据据据域域域域(vexdatavexdata)用用于于存存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 及其 应用 new
限制150内