第三章最短路问题.pptx

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
会计学; 当然,这个问题不用图论也能解决.大家一眼就能看出,第一次应该带着羊过河,让狼和白菜留下,以下怎么渡法呢?;;;;例2: 某两人有一只8升的酒壶装满了酒,还有两只空壶,分别为5升和3升.现要将酒平分,求最少的操作次数.;于是问题转化为在该图中求 (8,0,0)到(4,4,0)的一条最短路(求最短路的算法在有向图中仍适用).结果如下:;;; 这一节介绍一种求有向图上最短有向路的方法,叫做标号法。;;;;;开始:令b(1)=0,v1为已标号点; 现在来讨论标号法好不好?要回答这个问题,首先应该明确一??什么叫“好”,什么叫“不好”.一般说来,主要的好坏标准是计算起来快不快不快(还有比的标准,例如容不容易拿上计算机计算;是否易于普及等等),或者说,用这个方法计算时,需要进行的运算次数多不多.当然,运算次数越少越好.; 大家也许会说,运算次数多少不完全决定于采用什么方法,还和要解决的问题有关.同样用标号法,解一个只有10个顶点的问题可能只要进行几千次运算,而解一个100个顶点的问题,就可能要进行几百万次运算了,这又怎么比较呢?; 上面讲的是怎样比较两种方法谁好谁坏.现在总共只讲了一个标号法,又怎么评论它的好坏呢?也有办法的.目前一般认为,如果一种方法所需要的运算次数能表示成n的多项式,例如n4,2n2+3n等等.这种方法就认为是好的,或者说是有效的.而如果一种方法的计算次数是某一个数的n次幂,例如2n,10n,即是n的指数函数,这种方法就认为是不好的,或者说是无效的.请看如下这张表:;上表中对一种需要进行n3次运算的方法A与另一种需要进行2n次运算的方法B进行了比较(关于2n的近似值,我们是以210=1024≈103来估算的,例如250=(210)5≈(103)5=1015).从上表可以看出,方法B的运算次数的增长速度是惊人的.也许有的人会认为,现在反正有大型计算机,计算次数多一些无所谓.其实不然.例如我们有一个每秒能计算一百万次的计算机,那么,在1000秒内可以进行1000×1000000=109次(即十亿次)运算,如果用方法A,则则可以解决一个1000个顶点的问题,而用方法B呢?却只能解决一个30个顶点的问题.如果想用方法B来解决一个100个顶点的问题,即使用的是每秒能计算一亿次的计算机,也需要1022秒,即要好几万亿年.; 从上面的简单比较久可以看出,为什么说计算次数是n的多项式的方法是有效的,而计算次数是n的指数函数的方法是无效的.另外,也可以看出,单靠提高计算机的速度还不够,还必须从数学上寻求有效的计算方法.; 另外,在每一轮计算中,在找使k(i,j)达到最小的弧<c,d>时,要用到比较大小的运算,一般说来,要从s个数中把最小的数找出来,要进行s-1次比较(例如有四个数a1,a2,a3,a4,那么可以先拿a1与a2比,然后拿这两个数中小的数与a3比,再拿小的数与a4比,比三次就能知道哪个数最小了).那么在每一轮的步骤1中,一般会选出几条弧呢?算得宽一些,至多n2条吧(事实上要少得多),因此至多进行n2次比较,整个计算的轮数不会超过n,因此,总起来说,至多进行n3次比较大小的运算.;问题:给定简单权图G = (V, E),并设G 有n个顶点,求G中点u0到其它各点的最短路.;并用 ui+1记达到最小值的某点.置S i+1= Si∪{u i+1},i = i+1(表示赋值语句,以后的算法中相同),转(2).;例3 求图 G 中 u0 到其它点的距离.;;(d)对与u1相邻的小圆点, 用 l (u1) + w (u1v) = 2+1 = 3 更新标号4; 2+5=7 更新两个∞;;u4 ;§3.5 图的距离表; 以下图为例:这个图有6个顶点,在图3.5.2的(a)到(f)中分别画了以为起点的计算结果.;;;;;;; 为方便起见,今后我们把从顶点vi到vj的最短路的长度叫做vi到vj的距离,记作d(vi,vj)或d(i,j).;;1.2.3 每对顶点之间的最短路 求每对顶点之间最短路的算法是Floyd算法: 1.算法的基本思路: 直接在图的带权邻接矩阵中用插入顶点的方法依次构造出p个矩阵D(1),D(2), …,D(p),使最后得到的矩阵D(p)成为图的距离矩阵,同时也求出插入点矩阵以便得到两点间的最短路径. 2.算法原理: (1)求距离矩阵的方法: 把带权邻接矩阵W作为距离矩阵的初值,即: D(0)=(dij(0))p×p=W;10 D(1)=(dij(1)) p×p,其中dij(1)=min{dij(0),di1(0)+d1j(0)},dij(1)是从vi到vj的只允许以

文档评论(0)

kuailelaifenxian + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档