最短路模型最短路模型.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最短路模型最短路模型

* 一、引例 例1:已知如图所示的单行线交通网,每弧旁的数字表示通过这条单行线所需的费用。现在某人要从v1出发通过这个交通网到v8 ,求使总费用最小的旅行路线。 对于有向图G 或无向图G 的每一条边e ,附加一个实数w(e),则称w(e)为边e 上的权,当e=(vi,vj)时,w(e)也可记为wij 。G 连同其各边上的权称为带权图,带权图常记为G=V,E,W。 最短路问题:设G 是带权图,vs,vt是G 的两个顶点,P是G 中从vs到vt的一条通路,定义路P 的权为P 中所有边的权之和,记为w(P)。最短路就是在所有从vs到vt的路中,求一条权最小的路,即求一条从vs到vt的路P0,使 v6 v5 v4 v3 v2 v1 v9 v8 v7 3 10 4 6 10 2 2 1 6 1 2 3 4 2 6 3 上式中对G 中所有从vs到vt的路P 取最小,称P0为从vs到vt的最短路。路P0的权称为从vs到vt的距离,记为d(vs,vt),显然d(vs,vt)与d(vt,vs)不一定相等。 二、最短路算法 设G=V,E,W为n阶带权图,wij?0,若vi与vj 不相邻,令wij=∞ 标号法:标号法是由E.W.Dijkstra于1959年提出来的,其基本思想是:从vs出发,逐步地向外探寻最短路。在执行过程中,与每点对应,记录下一个数(称为这个点的标号),它或者表示从vs到该点的最短路的权(称为P 标号),或者表示从vs 到该点的最短路的权的上界(称为T 标号),方法的每步是去修改T 标号,并把某个T 标号的点改变为具有P 标号的点,从而使G 中具有P 标号的顶点数多一个,这样,至多经过p-1步,就可以求出从vs到各点的最短路。 以引例为例,说明标号法的基本思想。 s =1,因所有wij?0,故d(v1,v1)=0, 这时v1 是具有P 标号的点。 v6 v5 v4 v3 v2 v1 v9 v8 v7 3 10 4 6 10 2 2 1 6 1 2 3 4 2 6 3 考察从v1出发的三条弧(v1,v2), (v1,v3), (v1,v4) 。如果从v1出发沿(v1,v2)到达v2,则需要d(v1,v1)+w12=6单位费用;如果 从v1出发沿(v1,v3)到达v3 ,则需要d(v1,v1)+w13=3单位费用;类似地若沿(v1,v4)到达v4 , 则需要d(v1,v1)+w14=1单位费用。由于 min {d(v1,v1)+w12 , d(v1,v1)+w13 , d(v1,v1)+w14}= d(v1,v1)+w14=1 所以从v1出发到达v4所需要的最小费用必定是1单位,即从v1到v4的最短路是(v1,v4) ,d(v1,v4)=1 。v4 变成具有P 标号点。 考察从v1及v4指向的其余点的弧,由上已知,从v1出发分别沿(v1,v2),(v1,v3) 到达v2,v3, 所需6 ,3单位费用,而从v1出发沿(v1,v4)和(v4,v6)到达v6 ,所需费用是d(v1,v4)+w46=1+10=11单位。因为 min {d(v1,v1)+w12 , d(v1,v1)+w13 , d(v1,v4)+w46}= d(v1,v1)+w13=3 所以从v1出发到达v3所需要的最小费用必定是3 单位,即从v1到v3的最短路是(v1,v3) ,d(v1,v3)=3 。v3变成具有P 标号点。如此重复此过程,可以求出从v1到任意一点的最短路。 几个记号:用P ,T 分别表示某点具有P 标号,T 标号,用Si 表示第i 步时具有P 标号点的集合。在每个点v 处给一个?值? (v) 。如果算法结束时, ?(v) =m ,表示从vs 到v 的最短路上,v 的前一个点是vm ;如果?(v) =M ,则表示G 中不含从vs 到v 的最短路;如果 ?(v) =0,则表示v =vs 。 Dijkstra方法的步骤: 开始(i =0)令S0 ={vs },P(vs )=0 , ?(vs) =0 ,对每个v ≠vs ,令T(v)=+?, ? (v)=M ,令k = s 。 (1)如果Si =V ,算法终止,这时,对每个v ?Si ,d(vs ,v) =P(v);否则转(2) (2)考察每个使(vk ,vj)? E ,且vj ?Si 的点vj 。 如果T(vj)P(vk) +wkj ,则把T(vj) 修改为P(vk) +wkj ,把? (vj) 修改为k;否则转入(3) 。 v6 v5 v4 v3 v2 v1 v9 v8 v7 3 10 4 6 10 2 2 1 6 1 2 3 4 2 6 3 i=0 : S0={v1} , P(v1) = 0 , ? (v1) =0 , T(vi)=+?, ? (v) =M ,(i =2,3, …,9) , k=1 (

您可能关注的文档

文档评论(0)

tazhiq2 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档