最短路径matlab计算机仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机仿真期末作业
姓名:吴隐奎 班级:04601 学号:041751 日期:2007-6-15
题目:Floyd 算法实现和分析
内容:用MATLAB 仿真工具实现Floyd 算法,求任意两端间的最短路径。 要求:尽可能用M 函数分别实现算法的关键部分,用M 脚本来进行算法结果验证;分别用以下两个图(用初始距离矩阵表示)进行算法验证:
图一:(0)0 100 100 1.2 9.2 100 0.5100 0 100 5 100 3.1 2100 100 0 100 100 4 1.51.2 5 100 0 6.7 100 1009.2 100 100 6.7 0 15.6 100100 3.1 4 100 15.6 0 1000.5 2 1.5 100 100 100 0]W ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦
图二:(0)
0 0.5 2 1.5 100 100 1000.5 0 100 100 1.2 9.2 1002 100 0 100 5 100 3.11.5 100 100 0 100 100 4100 1.2 5 100 0 6.7 100100 9.2 100 100 6.7 0 15.6100 100 3.1 4 100 15.6 0W ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦
算法:给定图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 仿真: 用四个m 文件来实现仿真,其中main 为主函数,首先测试出矩阵的长度,然后赋给n ,作为循环的次数;然后调用func1实现路由矩阵的初始化,把第k-1次的值付给a 后,调用func2函数来迭代求出k 次的w 值,调用func3函数,根据a (实际上为k-1次w 值)值和k 次w 值来求出k 次r 值。迭代循环n 次。 主要程序: n=length(w); r=func1(w,n); for k=1:n a=w; w=func2(w,n,k); r=func3(a,w,r,n,k); end; Func1实现路由矩阵的初始化 主要程序 for i=1:1:n for j=1:1:n if x(i,j)==100 r0(i,j)=0; else r0(i,j)=j; end, end; end; Fuuc2该函数实现的功能是根据k-1次w 的值迭代求k 次w 的值 主要程序 for i=1:n for j=1:n w(i,j)=min(s(i,j),s(i,k)+s(k,j)); end end Func3来根据k-1次w 值和k 次w 值的大小求k 次R 的值 主要程序: for i=1:n for j=1:n if i==j r(i,j)=0;