《基于有效路径的Dial算法改进》
[1]刘志祥,陈明明,顾金伟. 基于有效路径的Dial算法改进[J]. 徐州工程学院学报(自然科学版),2017,(01):49-53.
说明:此文为《基于有效路径的Dial算法改进》的程序实现过程,参照原文请按以下连接下载。
下载地址:点击此处
1 经典Dial算法程序及算例
fprintf(' 《经典Dial算法》\n');
disp('=========================================================================================');
%% 数据输入
T=[ 0 20 18 19 Inf
Inf 0 5 Inf 20
Inf Inf 0 5 20
Inf Inf Inf 0 27
Inf Inf Inf Inf 0];
Q=1;thita=1;r=1;s=5;
n=size(T,1);
fprintf('起点: r=%2d\n终点: s=%2d\n',r,s);
%% 初始化
L=zeros(n,n);
W=zeros(n,n);
X=zeros(n,n);
%% 求最短距离矩阵
disp('step1->:求最短距离,其中');
disp('------------------------------------------------------------------------------------------');
disp(' R—起点r到其他点的最短距离');
disp(' S—其他点到终点s的最短距离');
for i=1:n
for j=1:n
if T(i,j)==inf
T(i,j)=0;
end
end
end
T=sparse(T);
Tmin=graphallshortestpaths(T);
[dist,path]=graphshortestpath(T,r,s);
disp('------------------------------------------------------------------------------------------');
R=Tmin(r,:)
S=Tmin(:,s)'
%% 求上下游节点矩阵
for i=1:n
for j=1:n
if T(i,j)~=0&&T(i,j)~=inf
down(i,j)=1;
up(j,i)=1;
else
down(i,j)=0;
up