最短路径问题实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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