书签 分享 收藏 举报 版权申诉 / 41
上传文档赚钱

类型数据结构与算法图课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3325468
  • 上传时间:2022-08-20
  • 格式:PPT
  • 页数:41
  • 大小:1.24MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《数据结构与算法图课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据结构 算法 课件
    资源描述:

    1、数据结构与算法数据结构与算法第第7 7章章 图图通信工程教研室通信工程教研室 要点回顾要点回顾n图的基本概念及存储方式图的基本概念及存储方式n图的遍历图的遍历通信工程教研室通信工程教研室 7.5 最小生成树最小生成树v基本概念基本概念vPrim算法算法vKruskal算法算法通信工程教研室通信工程教研室 7.5 最小生成树最小生成树v问题提出问题提出 13149181921123389顶点城市,边 两城市之间的公路,权相应的代价,希望找到使n个城市连通的总造价最低的方案构造最小生成树。ABCDEF12139891418332119通信工程教研室通信工程教研室 v问题分析问题分析 7.5 最小生

    2、成树最小生成树pn个城市间,最多可修建n(n-1)/2条公路。pn个村镇间建立公路网,只需n-1条公路。问题转化为:如何在可能的公路中选择n-1条,能把所有 村镇(顶点)均连起来,且总耗费(各边权 值之和)最小。通信工程教研室通信工程教研室 一、基本概念一、基本概念 若G 是连通图G的子图,并有:V(G)=V(G),E(G )E(G),还满足:G 是连通图,且所有顶点不存在回路;G 图G的生成树是一棵包含G的所有顶点的树,树上所有权值总和表示代价,那么在G的所有的生成树中,代价最小的生成树称为图G的最小生成树最小生成树(minimum-cost spanning tree,简称MST)。通信工

    3、程教研室通信工程教研室 例:下图例:下图(b),(c),(d)为为(a)所示连通图的不同生成树。所示连通图的不同生成树。(a)BCFDAEBCFDAE(b)BCFDAE(c)BCFDAE(d)一、基本概念一、基本概念通信工程教研室通信工程教研室(a)连通图连通图(b)边权值总和边权值总和 37(d)边权值总和边权值总和 26(c)边权值总和边权值总和 23BFDE6CA4510122BCFDAE438626BCFDAE45810123D62BCFAE5310一、基本概念一、基本概念通信工程教研室通信工程教研室 n必须使用且仅使用该网络中的n-1条边来连接网络中的n个顶点;n不能使用产生回路的边

    4、;n各边上的权值总和达到最小。一、基本概念一、基本概念通信工程教研室通信工程教研室 oMST性质性质 设G=(V,E)是一个连通网,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值的边,其中uU,vV-U,则必存在一棵包含边(u,v)的最小生成树。o用反证法证明如下:n 由于T是生成树,T中必存在不同于边(u,v)的另一条边(u,v ),使得u U,v V-U,且u和u 之间,v和v 之间均有路径相连通。n 假设网G的任何一棵最小生成树都不包含边(u,v),显然当把边(u,v)加入到G的一棵最小生成树T中时,由生成树的定义,将产生一个含有边(u,v)的回路。n 将边(u ,v )删除

    5、,这样就消除了上述回路,并得到了另一棵生成树T。由于W(u,v)W(u,v),所以生成树T 的耗费不大于树T的耗费。于是T 是一棵包含边(u,v)的最小生成树,这与假设矛盾。v普里姆普里姆(Prim)算法算法 v克鲁斯卡尔(克鲁斯卡尔(Kruskal)算法)算法 一、基本概念一、基本概念通信工程教研室通信工程教研室 二、二、Prim算法算法o设G=(V,E)是连通网,TE是G上最小生成树中边的集合,则Prim算法通过以下步骤得到最小生成树:n 初始状态:U=u0,TE=。其中u0是顶点集合V中的某一个顶点;n 在所有uU,vV-U的边(u,v)E中找一条权值最小的边(u0,v0),将这条边加进

    6、集合TE中,同时将此边的另一顶点v0并入U;n 如果U=V,则算法结束;否则重复步骤2;n 算法结束时,TE中包含了G中的n-1条边。经过上述步骤选取到的所有边恰好就构成了图G的一棵最小生成树。v算法思想算法思想 通信工程教研室通信工程教研室 例165432651356642516543265135664251364256516465352 Prim算法构造最小生成树的过程算法构造最小生成树的过程14253二、二、Prim算法算法通信工程教研室通信工程教研室 ABCDEF12139891418332119A 练习练习BCDFE89121318边权值总和:边权值总和:8+9+12+13+18=6

    7、0二、二、Prim算法算法通信工程教研室通信工程教研室 三、三、Kruskal算法算法o设图G=(V,E)其生成树T的顶点集合为V,边集合为TE。n 初始状态:只有n个顶点而无边的非连通图T=(V,),每 个顶点自成一个连通分量;n 在E中选取代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中;否则,舍去此边,选取下一条代价最小的边;n 依此类推,直至T中所有顶点都在同一连通分量上为止。v算法思想算法思想 通信工程教研室通信工程教研室 例165432651356642516543212345三三、Kruskal算法算法通信工程教研室通信工程教研室 ABCDEF12139

    8、891418332119A 练习练习BCDFE89121318边权值总和:边权值总和:8+9+12+13+18=60三三、Kruskal算法算法通信工程教研室通信工程教研室 iClosedgei12345UV-UkadjvexlowcostV16V11V15V1V1V1V2,V3,V4,V5,V62adjvexlowcostV350V15V36V34V1,V3V2,V4,V5,V65adjvexlowcostV350V62V360V1,V3,V6V2,V4,V53adjvexlowcostV3500V360V1,V3,V6,V4V2,V51adjvexlowcost000V230V1,V3,V

    9、6,V4,V2V54adjvexlowcost00000V1,V3,V6,V4,V2,V5 Prim算法各参量的变化算法各参量的变化 四、四、Prim算法的计算机实现算法的计算机实现通信工程教研室通信工程教研室 设置辅助数组closedge,记录从U到V-U具有最小权值的边。对每个顶点viV-U,在辅助数组中存在一个相应的分量closedgei-1,它包括两个域:closedgei-1.lowcost=Mincost(u,vi)|u U:各顶点的边中,权值最小的边的权值;closedgei-1.vex:表示上述权值最小的边所依附的U集中的顶点。0 0 0 0 0 0 0 0 0 0 0 0 0

    10、 60 6 1 1 5 max 5 max maxmax iVexilowcosti 0 1 2 3 4 5 ivexilowcosti 0 1 2 3 4 5U=v0U=v0,v2V-U=v1,V2,V3,V4,V5 V-U=v1,V3,V4,V5 V V2 2V V0 0V V3 3V V5 5V V4 4V V1 13652165546U UV V2 2V V0 0V V3 3V V5 5V V4 4V V1 13652165546U U 0 2 0 0 2 2 0 2 0 0 2 2 0 5 0 5 60 5 0 5 6 4 4四、四、Prim算法的计算机实现算法的计算机实现通信工程教

    11、研室通信工程教研室 v算法分析算法分析 oPrim算法的时间复杂为O(n2),与网中的边数无关,因此适用于求边稠密的网的最小生成树。四、四、Prim算法的计算机实现算法的计算机实现通信工程教研室通信工程教研室(0)用顶点数组和边数组存放顶点和边信息;)用顶点数组和边数组存放顶点和边信息;(1)初始时,令每个顶点的)初始时,令每个顶点的jihe互不相同;每个边的互不相同;每个边的flag为为0;(2)选出权值最小且)选出权值最小且flag为为0的边的边;(3)若该边依附的两个顶点的)若该边依附的两个顶点的jihe 值不同,即非连通,则令该边的值不同,即非连通,则令该边的flag=1,选中该边;再

    12、令该边依附的两顶点的选中该边;再令该边依附的两顶点的jihe 以及两集合中所有顶点以及两集合中所有顶点的的jihe 相同相同;若该边依附的两个顶点的若该边依附的两个顶点的jihe 值相同,即连通,则令该值相同,即连通,则令该 边的边的flag=2,即舍去该边即舍去该边;(4)重复上述步骤,直到选出)重复上述步骤,直到选出n-1条边为止条边为止。顶点结点:typedef struct int data;/顶点信息 int jihe;VEX;边结点:typedef struct int vexh,vext;/边依附的两顶点 int weight;/边的权值 int flag;/标志域EDGE;五、

    13、五、Kruskal算法的计算机实现算法的计算机实现v算法实现算法实现 通信工程教研室通信工程教研室 例1654326513566425datajihe124536124536124536vexhweight112213233544vextflag6153550000000134256789334556666426000011111421112222216543212345v算法描述算法描述 五、五、Kruskal算法的计算机实现算法的计算机实现通信工程教研室通信工程教研室 oKruskal算法的时间复杂度为O(eloge)。这个算法的时间复杂度主要取决于边数,因此Kruskal算法适合于构造稀

    14、疏图的最小生成树。五、五、Kruskal算法的计算机实现算法的计算机实现通信工程教研室通信工程教研室 7.6 最短路径最短路径o7.6.1 单源最短路径单源最短路径o7.6.2 每对顶点之间的最短路径每对顶点之间的最短路径通信工程教研室通信工程教研室 BAEDC7.6 最短路径最短路径通信工程教研室通信工程教研室 7.6 最短路径最短路径通信工程教研室通信工程教研室 v问题提出问题提出 n用带权的有向图表示一个交通运输网,图中:p顶点表示城市;p边表示城市间的交通联系;p权表示此线路的长度或沿此线路运输所花的时间 或费用等。问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和

    15、最小的一条路径最短路径最短路径。7.6 最短路径最短路径v单源最短路径单源最短路径迪杰斯特拉(迪杰斯特拉(Dijkstra)算法算法v每对顶点之间的最短路径每对顶点之间的最短路径弗洛伊德(弗洛伊德(Floyd)算法算法通信工程教研室通信工程教研室 7.6.1 单源最短路径单源最短路径o给定一个带权图G 和源点V,求从V到G中其余各顶点的最短路径,这个问题通常称为单源最短路径单源最短路径(single-source shortest paths)问题。516432085623013717329权值最短路径13813192120p迪杰斯特拉(Dijkstra)提出了一个按路径长度递增的 次序产生最

    16、短路径的算法Dijkstra算法。通信工程教研室通信工程教研室 7.6.1 单源最短路径单源最短路径oDijkstra算法基本思想:n 把V分成两组:pS:已求出最短路径的顶点的集合。pT=V-S:尚未确定最短路径的顶点集合。n 将T中顶点按最短路径递增的次序加入到S中,保证:p从源点V0到S中各顶点的最短路径长度都不大于从V0到T中任何顶点的最短路径长度。p每个顶点对应一个距离值:uS中顶点:从V0到此顶点的最短路径长度。uT中顶点:从V0到此顶点的只包括S中顶点作中间顶点的最短路径长度。通信工程教研室通信工程教研室 ABAEDC1050301010020607.6.1 单源最短路径单源最短

    17、路径通信工程教研室通信工程教研室 ABAEDC105030101002060B7.6.1 单源最短路径单源最短路径通信工程教研室通信工程教研室 ABAEDC105030101002060BD7.6.1 单源最短路径单源最短路径通信工程教研室通信工程教研室 ABAEDC105030101002060BDC7.6.1 单源最短路径单源最短路径通信工程教研室通信工程教研室 138 30 32V0,V213-1330 32V0,V1,V2-13302220V0,V1,V2,V3-192220V0,V1,V2,V3,V4终点终点 从从V0到各终点的最短路径及其长度到各终点的最短路径及其长度V1V2V3V

    18、4V5V6S516432085623013717329通信工程教研室通信工程教研室 终点终点 从从V0到各终点的最短路径及其长度到各终点的最短路径及其长度V1V2V3V4V5V6S-21-V0,V1,V2,V3,V4,V5,V6516432085623013717329-2120V0,V1,V2,V3,V4,V6-通信工程教研室通信工程教研室 7.6.1 单源最短路径单源最短路径o对于n个顶点e条边的图,图中的任何一条边都可能在最短路径中出现,因此最短路径算法对每条边至少都要检查一次。o如果采用最小堆来选择权值最小的边,那么每次改变最短特殊路径长度时需要对堆进行一次重排,此时的时间复杂度为O(

    19、n+e)loge),适合于稀疏图。通信工程教研室通信工程教研室 n方法一:每次以一个顶点为源点,重复执行Dijkstra算法n次 T(n)=O(n)。n方法二:弗洛伊德(Floyd)算法。pFloyd算法用相邻矩阵adj来表示带权有向图,该算法的基本思想是:逐个顶点试探法。求最短路径步骤:u初始时设置一个n阶方阵,令其对角线元素为0,若存在弧,则对应元素为权值;否则为。u逐步试着在原直接路径中增加中间顶点,若加入中间点后路径变短,则修改之;否则,维持原值。u所有顶点试探完毕,算法结束。7.6.2 每对顶点之间的最短路径每对顶点之间的最短路径通信工程教研室通信工程教研室 例例ACB2643110

    20、 4 116 0 23 0初始:初始:路径:路径:AB ACBA BCCA0 4 66 0 23 7 0加入加入V2:路径:路径:AB ABCBA BCCA CAB0 4 116 0 23 7 0加入加入V1:路径:路径:AB ACBA BCCA CAB0 4 65 0 23 7 0加入加入V3:路径:路径:AB ABCBCA BCCA CAB7.6.2 每对顶点之间的最短路径每对顶点之间的最短路径通信工程教研室通信工程教研室 o算法实现n 图用邻接矩阵存储。n length存放最短路径长度。n pathij是从Vi到Vj的最短路径上Vj前一顶点序号。7.6.2 每对顶点之间的最短路径每对顶点

    21、之间的最短路径通信工程教研室通信工程教研室 算法描述例例132264311初始:初始:0 4 116 0 23 0length=0 1 12 0 23 0 0path=加入加入V1:0 4 116 0 23 7 0length=0 1 12 0 23 1 0path=加入加入V2:0 4 66 0 23 7 0length=0 1 22 0 23 1 0path=加入加入V3:0 4 65 0 23 7 0length=0 1 23 0 23 1 0path=p算法分析:T(n)=O(n)7.6.2 每对顶点之间的最短路径每对顶点之间的最短路径通信工程教研室通信工程教研室 7.6.2 每对顶点之间的最短路径每对顶点之间的最短路径(0)(1)00adj=path=00adj=path=(2)(3)00adj=path=0adj=0path=通信工程教研室通信工程教研室 The EndThe End

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数据结构与算法图课件.ppt
    链接地址:https://www.163wenku.com/p-3325468.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库