最短路径问题实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

徐州工程学院

管理学院实验报告

实验课程名称:最短路径问题

实验地点:南主楼七楼机房经济管理实验中心 2015 年 5 月至 2015 年 6 月

}

,n;

之间最短路时,每次都要计算

i V 经过节点r V 到达点j V 的路长不会比原来的短,于是不用再计(1)1k k ir rj

d d --+,进入下一个节点的搜索。

对于问题(2),构造一个序号矩阵()()k k ij A a =,(0,1,)k =,记录算法第二步中第k次迭

代插入节点的情况.优化后的Floyd 算法(记为算法2)如下:

第一步,作初始距离矩阵(0)(0)()ij D d =和序号矩阵(0)0)()ij A a =(,其中:

(0),,(,1,2,3,),ij ij W i j d i j n i j ⎧==⎨∞⎩

相邻对,,不相邻或无路时, (0)0,,,1,2,,,ij i j a i j n i j ⎧==⎨Φ⎩相邻时,()

,不相邻或无路

, 此时距离矩阵(0)D 中的元素(0)ij d 表示任意两点i V 、j V 不经过其它节点的路长。

第二步,构造迭代矩阵()()()k k ij D d =和序号矩阵(0))()k ij A a =(。

① 对于迭代矩阵()k D 的元素()k ij d : r 从1到n ,且,r i j ≠时,如果(1)(1)k k ir ij

d d --≥或(1)(1)k k ri ij d d --≥,说明插入点r V 后路长(1)k ij d -不会变短,此时无须计算(1)1k k ir rj

d d --+。否则{}()(1)(1)(1)min ,k k k k ij ij ir rj d d d d ---=+。

② 相应地,序号矩阵()k A 的各元素变化为:若()(1)(1)k k k ij il lj d d d --=+,且(1)(1)k k ir rj

d d --<,则记下点l V ,并在序号矩阵中()k A 对应的元素)k ij a (变为:

{}()(1)(1),,k k k ij il l lj a a V a --=。

表明经过该次迭代后从节点i V 出发到节点j V 的最短路长经过节点l V 路长变短.否则, ()(1)k k ij ij

a a -=。 第三步,若(1)()k K D D ++,迭代终止.否则,返回第二步。

针对以上算法本文用改进后的Floyd 算法利用Matlab 编程对实例进行试验。

实例

已知网络如图1所示,计算所有节点之间的最短路。

图1

相关文档
最新文档