%floyd算法计算最短路径,输入a为赋权邻接矩阵
function [D,path]=floyd(a)
a={0,3,7,0,0,0
3,0,2,5,4,0
7,2,0,1,4,0
0,5,1,0,2,8
0,4,4,2,0,3
0,0,0,8,3,0};
n=size(a,1);
D=a;
path=zeros(n,n);
for i=1:n
for j=1:n
if D(i,j)~=inf
path(i,j)=j;
end
end
end
for k=1:n
for i=1:n
for j=1:n
if D(i,k)+D(k,j)<D(i,j)
D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k)
end
end
end
end
%配合floyd算法的后续程序,s为源点,t为宿点
%L为长度,R为路由
function [L,R]=router(D,path,s,t)
L=zeros(0,0);
R=s;
while 1
if s==t
L=fliplr(L);
L=[0,L];
return
end
L=[L,D(s,t)];
R=[R,path(s,t)];
s=path(s,t);
end
我是希望用GUI做个界面:用两个edit text框用来输入起点s和终点t,再用一个edit text框输出其途径的路径和路程,点击计算按纽开始计算。
貌似挺简单的,但是困扰我很久了,求教高手!
或者利用VB 和matlab混合编程也可以!
dzy8111@163.com