- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构II5--第7章图.ppt
7.4 图的连通性问题 一、无向图的连通分量和生成树 对无向非连同图进行深度优先遍历 三次调用得到的访问序列为: ALMJBFC DE GKHI A B C D E F G H I J K L M A L J M B F C D E G K H I 生成树:所有顶点均由边连接在一起,但不存在回路的图。 深度优先生成树与广度优先生成树 生成森林:非连通图每个连通分量的生成树一起组成非连通图的生成森林。 说明 一个图可以有许多棵不同的生成树 所有生成树具有以下共同特点: 生成树的顶点个数与图的顶点个数相同 生成树是图的极小连通子图 一个有n个顶点的连通图的生成树有n-1条边 生成树中任意两个顶点间的路径是唯一的 在生成树中再加一条边必然形成回路 含n个顶点n-1条边的图不一定是生成树 建立非连通图G的深度优先生成森林 void DFSForest ( Graph G , CSTree T ) { T = NULL ; for ( v = 0 ; v G .vexnum ; ++v ) visited[ v ] = FALSE ; for ( v = 0 ; v G .vexnum ;++v ) if ( !visited[ v ] ) { p = ( CSTree ) malloc ( sizeof ( CSNode ) ) ; *p = { GetVex ( G , v ) , NULL , NULL } ; if ( !T ) T = p ; else q - nextsibling = p ; q = p ; DFSTree ( G , v , p ) ; } } 从第v个顶点出发深度优先遍历图G,建立以T为根的生成树 void DFSTree (Graph G , int v , CSTree T ) { visited[ v ] = TRUE ; first = TRUE ; for(w=FisrtAdjVex(g ,v) ; w ; w=NextAdjVex (G ,u ,w) ) if ( !visited[ w ] ) { p = ( CSTree ) malloc ( sizeof ( CSNode ) ) ; *p = { GetVex( G , w ) , NULL , NULL } ; if( first ) { T - lchild = p ; first = FALSE ;} else { q - nextsibling = p ; } q = p; DFSTree ( G , w , q ) ; } } 二、最小生成树 问题提出:要在n个城市间建立通信联络网,顶点表示城市, 边上的权值表示城市间建立通信线路所需花费代价,现希望找到一棵生成树,它的每条边上的权值之和(即建立该通信网所需花费的总代价)最小———最小代价生成树。 问题分析: 9 9 18 8 6 26 13 12 n个城市间,最多有n(n-1)/2条线路 n个城市间建立通信网,只需n-1条线路 问题转化为:如何在可能的线路中选择n-1条,能把所有城市(顶点)均连起来,且总耗费(各边权值之和)最小。 构造一个最小生成树 1 2 3 4 5 性质:假设N=(V,{E})是一个连通网,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值(代价)的边,其中u?U, v?V-U,则必存在一棵包含边(u,v)的最小生成树。 普里姆(Prim)算法 算法思想:设N=(V,{E})是连通网,TE是N上最小生成树中边的集合 初始令U={u0},(u0?V), TE=? 在所有u?U,v?V-U的边(u,v)?E中,找一条代价最小的边(u0,v0) 将(u0,v0)并入集合TE,同时v0并入U 重复上述操作直至U=V为止,则T=(V,{TE})为N的最小生成树 6 5 1 3 5 6 6 4 2 5 1 2 3 4 5 6 1 2 3 4 5 6 Struct { VertexType adjvex ; VRType lowcost ; }closedge[MAX_VERTEX_NUM]; 0 v1 6 v1 1 v1 5 ∞ ∞ adjvex lowcost 0 1 2 3 4 5 0 v3 5 0 v1 5 v3 6 v3 4 U={V1} V-U={V2,V3
您可能关注的文档
- 把握时代脉搏 积极.ppt
- 把握好心肺复苏术.ppt
- 技能比赛PPT.ppt
- 投影议培训LCD与DLP.ppt
- 投资博亚银选择银领潮鎏分析团队.ppt
- 投资银行业务与经营自营业务.ppt
- 报纸键盘.ppt
- 拒绝上网.ppt
- 报刊夹带简介116.ppt
- 招兵买马攻心为上(宋联可)中华讲师网.ppt
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试高频难、易错点备考题库及完整答案详解1套.docx
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试高频难、易错点备考题库及参考答案详解1套.docx
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试高频难、易错点备考题库及参考答案详解一套.docx
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试高频难、易错点备考题库及答案详解1套.docx
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试备考题库含答案详解.docx
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试备考题库及答案详解一套.docx
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试高频难、易错点备考题库含答案详解.docx
- 医疗设备租赁行业未来发展趋势.pptx
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试高频难、易错点备考题库参考答案详解.docx
- 云南曲靖市马龙区应急管理局招聘10名综合应急救援队员笔试备考题库及答案详解1套.docx
文档评论(0)