Page 111 - 数学建模算法与应用
P. 111
第三章 MATLAB 编程基础
T(:,q2) = inf;
end
E = [s1;s2];
end
2. 最短路的 Dijkstra 算法
function [d,path] = ShortPath(A,s,t)
% Dijkstra 最短路算法实现,A 为图的赋权邻接矩阵
% 当输入参数含有 s 和 t 时,求 s 到 t 的最短路
% 当输入参数含有 s 时,求 s 到所有顶点的最短路
% 当输入参数只有 s 时,求 s 到其他顶点的最短路
if nargin == 2
flag = 0;
elseif nargin == 3
flag = 1;
end
n = length(A);
for i = 1:n
A(i,i) = inf;
end
V = zeros(1,n);
D = zeros(n,1);
T = A + inf;
T(s,:) = A(s,:);
T(:,s) = A(:,s)’;
for k = 1:n-1
[p,q] = min(T);
while q <= k
[p,q] = min(T);
end
[p,q] = min(p);
101

