3-最短路径算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《通信网理论基础》
实 验 指 导 书
适用专业—信息工程
实验三:端间最短路径算法
一、实验目的
通信网络中为传输信息,需要求网络中端点之间的最短距离和路由。此时网络可以用图,)G V E =(来表示,每条边(,)i j 的权,i j w 可为该边的距离、成本或容
量等物理意义。端间最短径问题主要分为两种情况:寻找指定端至其它端的最短距离和路由,可以使用Dijkstra 算法解决;寻找任意两端之间的最短距离和路由, 使用Floyd 算法解决。
Dijkstra 算法为标号置定法,通过依次置定指定端与当前端的最短距离和回溯路由来实现;Floyd 算法为标号修正法,通过初始化图的距离矩阵和路由矩阵、并在转接过程中不断刷新,直至算法结束才能求出任意两点间的最短距离矩阵和前向或反向路由矩阵。
本次实验要求利用MATLAB 分别实现Dijkstra 算法和Floyd 算法,可对输入的邻接距离矩阵计算图中任意两点间的最短距离矩阵和路由矩阵,且能查询任意两点间的最短距离和路由。
二、实验原理
2.1 Dijkstra 算法可描述如下:
D 算法的每个端点i v 的标号为(,)i l λ,其中i λ表示1v 到i v 的距离,而l 为端点是1v 到i v 最短路径的最后一个端点。
图G V E =(,)的每一边上有一个权()0w e ≥。
D0:初始(0)1{}X v =,记10λ=,设1v 的标号为1(,1)λ。
D1:对任一边()()()(,)()(,)k k k i l i l X v X v X ∈Φ∈∉反圈,计算i il w λ+的值。在()()k X Φ中选一边,设为00()()00(,)(,)k k i l i l v X v X ∈∉。使000()(,)()()min k i i l i il i l X w w λλ∈Φ+=
+,并令
0000l i i l w λλ=+,并且0l v 的标号为00,l i λ()。 D2:当出现下面情况之一时停止。
1)()k j v X ∈;2)()k j v X ∉但()(k X Φ=Φ)
2.2 Floyd 算法可描述如下:
给定图G 及其边(,)i j 的权,(1,1)i j w i n j n ≤≤≤≤
F0:初始化距离矩阵(0)W 和路由矩阵(0)R 。其中:
(0)
0ij ij ij ij w e E w e E i j ∈⎧⎪=∞∉⎨⎪=⎩ 若 若 若 (0)(0)w 0,
ij ij j r ⎧≠∞=⎨⎩ 若 其它 F1:已求得(-1)k W 和(-1)k R ,依据下面的迭代求()k W 和()k R
()(1)(1)(-1),,,,min(,)k k k k i j i j i k k j w w w w --=+
(1)()(1),,,(),(1)()(1),,,k k k i k i j i j k i j k k k i j
i j i j r w w r r w w ----⎧<⎪=⎨=⎪⎩ 若 若 F2:若k n ≤,重复F1;若k n >,终止。
三、实验内容
用MATLAB 仿真工具实现D 算法和F 算法:给定图G 及其边(,)i j 的权
,(1,1)
i j w i n j n ≤≤≤≤,可用D 算法和F 算法分别求出其各个端点之间的最小距离以及路由。
1、分别用以下两个初始距离矩阵表示的图进行算法验证:
(0)0 100 100 1.2 9.2 100 0.5 100 0 100 5 100 3.1 2 100 100 0 100 100 4 1.5 1.2 5 100 0 6.7 100 100 9.2 100 100 6.7 0 15.6 100 100 3.1 4 100 15.6 0 100 0.5 2 1.5 100 100 100 0]
W
⎡⎤
⎢⎥
⎢⎥
⎢⎥
⎢⎥
=⎢⎥
⎢⎥
⎢⎥
⎢⎥
⎢⎥
⎣⎦
(0)
0 0.5 2 1.5 100 100 100
0.5 0 100 100 1.2 9.2 100
2 100 0 100 5 100 3.1
1.5 100 100 0 100 100 4
100 1.2 5 100 0 6.7 100
100 9.2 100 100 6.7 0 15.6
100 100 3.1 4 100 15.6 0
W
⎡⎤
⎢⎥
⎢⎥
⎢⎥
⎢⎥
=⎢⎥
⎢⎥
⎢⎥
⎢⎥
⎢⎥
⎣⎦
分别利用D算法和F算法求出(7)
W和(7)
R。
2、根据最短路由矩阵查询任意两点间的最短距离和路由
(1)最短距离可以从最短距离矩阵的(),i j
ω中直接得出。
(2)相应的路由则可以通过在路由矩阵中查找得出。注意D算法应用回溯路由,F算法可应用回溯路由或正向路由
(3)对图1,分别以端点对V4和V6, V3和V4为例,求其最短距离和路由;对图2,分别以端点对V1和V7,V3和V5,V1和V6为例,求其最短距离和路由。
3、输入任一邻接权值矩阵,求解最短距离和路由矩阵,及某些点间的最短路径。
4、扩展的实验内容(选作部分)
(1)比较D算法和F算法在功能和算法复杂度上的性能;
(2)探讨可降低算法复杂度的算法。
四、实验难点
(1) 图的等价表示方法;
(2) 两点间的最短路径查询算法。
五、实验报告
请提交电子版实验报告,内容包括但不限于以下方面:
实验内容;
所采取的实验方法:采用的语言,数据结构,主要的函数,算法的流程图等;
实验数据与结论分析;