Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx

上传人:b****5 文档编号:19739386 上传时间:2023-01-09 格式:DOCX 页数:12 大小:71.85KB
下载 相关 举报
Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx_第1页
第1页 / 共12页
Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx_第2页
第2页 / 共12页
Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx_第3页
第3页 / 共12页
Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx_第4页
第4页 / 共12页
Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx

《Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

Floyd算法计算最短距离矩阵和路由矩阵查询最短距离和路由matlab实验报告Word格式文档下载.docx

n),求出其各个端点之间的最小距离以及路由

(1)尽可能用M函数分别实现算法的关键部分,用M脚本来进行算法结

果验证;

(2)

分别用以下两个初始距离矩阵表示的图进行算法验证:

分别求出W(7)和R(7)2、根据最短路由矩阵查询任意两点间的最短距离和路由

(1)最短距离可以从最短距离矩阵的3(i,j)中直接得出;

(2)相应的路由则可以通过在路由矩阵中查找得出。

由于该程序中使用的是前向矩

阵,因此在查找的过程中,路由矩阵中r(i,j)对应的值为Vi到Vj路由上的下一个端点,这样再代入r(r(i,j),j),可得到下下个端点,由此不断循环下去,即可找到最终

的路由。

(3)对图1,分别以端点对V4和V6,V3和V4为例,求其最短距离和路由;

图2,分别以端点对V1和V7,V3和V5,V1和V6为例,求其最短距离和路由。

3、输入一邻接权值矩阵,求解最短距离和路由矩阵,及某些点间的最短路径。

四、采用的语言

MatLab

源代码:

【funcl.m】

function[wr]=func1(w)

n=length(w);

x=w;

r=zeros(n,1);

%路由矩阵的初始化

fori=1:

1:

n

forj=1:

ifx(i,j)==inf

r(i,j)=O;

else

r(i,j)=j;

end,

end

end;

%迭代求出k次w值

fork=1:

a=w;

s=w;

w(i,j)=min(s(i,j),s(i,k)+s(k,j));

%根据k-1次值和k次w值求出k次r值

ifi==j

elseifw(i,j)<

a(i,j)

r(i,j)=r(i,k);

r(i,j)=r(i,j);

【func2.m】

function[Pu]=func2(w,k1,k2)

n=length(w);

U=w;

m=1;

whilem<

=n

fori=1:

n;

forj=1:

ifU(i,j)>

U(i,m)+U(m,j)

U(i,j)=U(i,m)+U(m,j);

m=m+1;

u=U(k1,k2);

P仁zeros(1,n);

k=1;

P1(k)=k2;

V=ones(1,n)*100;

kk=k2;

whilekk~=k1

n

V(1,i)=U(k1,kk)-w(i,kk);

ifV(1,i)==U(k1,i)

P1(k+1)=i;

kk=i;

k=k+1;

k=1;

wrow=find(P1~=O);

forj=length(wrow):

(-1):

1

P(k)=P1(wrow(j));

k=k+1;

P;

【m1.m】

w1=[01001001.29.21000.5;

100010051003.12;

100100010010041.5;

1.2510006.7100100;

9.21001006.7015.6100;

1003.1410015.60100;

0.521.51001001000];

w2=[00.521.5100100100;

0.501001001.29.2100;

2100010051003.1;

1.510010001001004;

1001.2510006.7100;

1009.21001006.7015.6;

1001003.1410015.60];

[W1R1]=func1(w1)

[W2R2]=func1(w2)

【m2.m】

w=input('

输入权值矩阵w='

);

k1=input('

输入端点1:

k1='

k2=input('

输入端点2:

k2='

[WR]=func1(w)

[Pu]=func2(w,k1,k2);

disp(['

k1、k2间最短路:

num2str(P)]);

k1、k2间最短距离:

num2str(u)]);

五、数据结构

1.主要函数

最短距离、路由函数:

function[wr]=func1(w)n=length(w);

ifx(i,j)==100

r(i,j)=0;

r(i,j)=j;

end,

%迭代求岀k次w值

w(i,j)=min(s(i,j),s(i,k)+s(k,j));

%根据k-1次值和k次w值求岀k次r值

r(i,j)=O;

最短路径函数:

function[Pu]=func2(w,k1,k2)

n;

forj=1:

P1=zeros(1,n);

whilekk〜=k1

ifV(1,i)==U(k1,i)P1(k+1)=i;

wrow=find(P1〜=0);

P;

2.算法的流程图

Floyd算法:

 

开始

六、实验结论与分析

匚omnnandWindow

>

n.1

W1-

2.5000

2.0000

2,5000

3.5000

2.OCOO

3-5000

L2000

3.7000

3-2000

7.9C00

10.4000

9.9000

5,6C00

3.1000

4.0000

0.5000

2.0000

1.5000

1.2000

7.9000

5.6000

0.5000

3.7000

10.4000

3.1000

3.2000

4.0000

1.5000

6,7000

5.8000

1.7000

6.7000

J3.5000

S.4000

6.S000

13.5000

5.1000

a.4000

R1

通过上图可知,

V4和V6之间最短距离是

6.8,最短路由是V4—>

V1—>

V7

—>

V2—>

V6,3和V4之间最短距离是3.2,最短路由是V3—>

V7—>

V4

CommandWindow

12=

C.5000

e,40QO

2.5000

7.9000

E.OODO

2,0000

£

5000

玄5000

3.1000

1,5000

2-0000

X5000

9,9000

L70C0

3.70<

30

3,2000

0€.70006.80C0

S.4000

二9000

9.9000

&

7000

13.5000

5.5000

4,0000

6.SOOO

】3.5000

F2

02

3

4

7

2

10

5

i

11

$

22

B5

33

通过上图可知,,

点对

V1

和V7

之间

最短距离是

5.1,最短路由疋

V3

端点对V3和V5之间最短距离是

3.7,

最短路由疋

V3—>

V2

V5

端点对V1和V6之间最短距离是

8.4,

V6

»

m2

輪人帜酋呃隆*=:

0irvfinf5infinf:

irfJ3infinftnf:

inf40l54AS4irrfOinfini:

infirrfI3infC

■入Mm2

ttXW^2:

k2=ft

112

b

LB

IS

56

j

_

18

c

23

15

e

8

11

i-

33

19

10

25

21

12

n■-

X・

■n

Ld

CommandV/indow

0日

1Z

$]«

2$

IB

D

y

I

6

d

]1

13

16

3$

27

lo

Et=

04I

t

3d3

420

fl

L』2

-

333

3^3

Q

kl.23

Al、k:

口骨担苗寢:

9

七、遇到的问题及解决方法

(1)图的等价表示方法;

(2)两点间的最短路径查询算法。

八、实验心得

通过本次实验实现了用计算机语言编写Floys本掌握了算法的实现方法,对

MatLab编程语言更加熟悉,培养了算法设计与优化能力。

此次实验我受益匪浅。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1