模糊数学15单源最短路问题.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络流的概念 最小费用流问题 * * 一、最短路径问题 设一个带权的图表示一交通运输网络,以图的各个顶点代表一些城市,图的各条边表示城市之间的交通运输路线,每条边的权值则表示此路线的长度或表示沿此路线运输所需花费的时间或运费等。运输路线往往是有方向性的,例如汽车运输有时会遇到单行路,而且不同的方向所花费的时间或尺价可能不同,例如汽车的上山和下山、水路的顺水和逆水花费的时间或代价就不相同,所以交通运输网络一般是有向图,所谓最短路径(Shortest path)问题指的是:如果从图中某顶点出发(此点称为源点),经图的边到达另一顶点(称之为目的点)的路径不止一条,如何找到一条路径使沿此路径上各边的权值之和为最小。 1.单源最短路径 给定一个带权有向图G=(V,E),其中每条边的权是一个非负实数。另外,还给定V中的一个顶点,称为源。现在我们要计算从源到所有其他各顶点的最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。 Dijkstra于1959年提出了解决此问题的一般算法,此算法可按边的权值由小到大的次序,通过贪婪选择,逐步得到由给定源点到图的其余各点间的最短路径。其基本作法是,设置一个顶点集合S,一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。设vi是G的某一个顶点,我们把从源到vi且中间只经过S中顶点的路称为从源到vi的路径,并用数组dist来记录当前S中每个顶点所对应的最短路径长度。 例shorest path model: SETS: CITIES /S,A1,A2,A3,B1,B2,C1,C2,T/: L; !属性L(i)表示城市S到城市i的最优行驶路线的路长; ROADS(CITIES, CITIES)/ !派生集合ROADS表示的是网络中的道路(弧); S,A1 S,A2 S,A3 !由于并非所有城市间都有道路直接连接,所以将弧具体列出; A1,B1 A1,B2 A2,B1 A2,B2 A3,B1 A3,B2 B1,C1 B1,C2 B2,C1 B2,C2 C1,T C2,T/: D; !属性D( i, j) 是城市i到j的直接距离(已知); ENDSETS DATA: D = 6 3 3 6 5 8 6 7 4 6 7 8 9 5 6; L= 0, , , , , , , , ; !因为L(S)=0; ENDDATA @FOR( CITIES( i)|i#GT#@index(S): !这行中@index(S)可以直接写成1; L( i) = @MIN( ROADS( j, i): L( j) + D( j, i)); ); !这就是前面写出的最短路关系式; end 定义稀疏集合方法:枚举法 CITIES(i)中的 i 指元素在集合中的位置顺序, @index(S)即:@index(CITIES,S),S在CITIES中的索引值。 没有目标函数是允许的 ① 赋初值. 给v0以P标号,记P(v0)=0,其余各点vi以T标号, T(vi)= a(v0 , vi),并将vi的父点设为v0,记录u = v0, S = {u}, 转向②. ② 更新所有的T标号和其父点. ? v∈V \ S, 如果T ( v )P ( u ) + a (u, v) , 则令T ( v ) = P ( u ) + a (u, v) , 并重新记录v的父点为u, 转向③. ③ 给出下一个P标号并更新记录u和S. 设T ( v* ) = min{T( v ), v∈V \ S }, 给v* 以P标号, P ( v* ) = T ( v* ), 重新记录u = v*, S = S + {u}, 转向④. ④ 终止判断. 若V \ S非空, 转向②; 否则终止. 求赋权图中单源最短路的Dijkstra算法: Dijkstra算法的几点说明: ① 算法具有终止性. 对一个p, q图G来说, 只要p步迭代, 就可以求出v0到其它各点的最短路. 若只求从v0到vm的最短路, 则一旦vm获得P标号即结束. ② 如果点v在第k步获得P标号P (v)为有限值, 则说明从v0到v的最短路存在, 最短路权为P (v), 最短路径通过逐次查找v的父点得到. 如果P ( v ) = +∞, 则说明从v0到v的路不

文档评论(0)

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

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

1亿VIP精品文档

相关文档