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
   106   107   108   109   110   111   112   113   114   115   116