- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§3最短路问题讲述
解 第一步:首先赋予点v1标号“0”, 第二步:考察从已得到标号的点v1到未得到标 号的点的最短路长,得:v1→v3为最短。因此赋予点v3标号“2” ; 第三步:继续寻找从v1到未得到标号的点的最短路,得:v1→v2为最短。因此赋予点v2标号“5” ; 第四步:继续寻找从v1到未得到标号的点的最短路,得:v1→v3→v6为最短。因此赋予点v6标号“6” ; 第五步:继续寻找从v1到未得到标号的点的最短路,得: v1→v2→v4及v1→v3→v6→v5均为最短。因此赋予点v4和v5标号“7” ; 第六步:继续寻找从v1到未得到标号的点的最短路,得:v1→v3→v6→v5→v7为最短。因此赋予点v7标号“10” ; 1.建立矩阵: ,其中 表示从点 直接到达点 的最短距离,若 与 不相邻,则 ,对于图6-5,有 2.建立矩阵: ,其中 表示从点 可以经过一个中间点到达点 的最短距离, 例如: 3.建立矩阵: ,其中 表示从点 可以经过最多三个中间点到达点 的最短距离, 经计算得 4.建立矩阵: ,其中 表示从点 可以经过最多7个中间点到达点 的最短距离, 一般地 , ,其中 表示从点 可以经过最多 个中间点到达点 的最短距离, 如此操作,当发现 时 ,计算即可停止, 如本例中 ,计算就结束了。 * §3最短路问题 设G=(V, E)为连通图,图中各边(vi , vj)有权lij (lij =∞表示vi , vj间无边),vs , vt为图中任意两点,求一条道路μ,使它是从vs到vt的所有道路中总权最小的道路,即 最小。 一、Dijkstra方法用于求解指定两点vs , vt间的最短路,或指定点vs 到其余各点的最短路,目前被认为是求无负权网络最短路问题的最好方法。基本原理 若序列{vs, v1, … , vn-1, vn}是从vs到的vn 最短路,则序列{vs, v1, … , vn-1}必为从vs到vn-1的最短路。 该方法采用标号法。点vi 的标号就是从起点vs 到点vi 的最短路权,计算过程中始终将图中的点分为两类:已得到标号点的集合与未得到标号点的集合,每步增加一个得到标号的点,直至终点vt 得到标号。具体操作方法如下面的例子。对于有n个顶点的图,最多经n-1步就可以得到从始点到终点的最短路。 例6-3 求图6-5中从v1到v7的最短路。 图6-5 (a) 0 (b) 2 0 (c) 2 0 5 (d) 2 0 5 6 (e) 2 0 5 6 (f) 2 0 5 6 二、求任意两点间最短距离的矩阵算法Dijkstra算法提供了从网络图中某一点到其它点的最短距离,但实际问题中往往要求网络中任意两点的最短距离,如果仍采用算法对各点分别计算,就显得非常麻烦,此时用所谓矩阵算法更为合适。下面以计算图6-5各点间最短距离为例,介绍这种矩阵算法。 * * *
文档评论(0)