求两点间最短路的改进的Dijkstra算法

    技术2022-05-20  66

    %% *********求两点间最短路的改进的Dijkstra算法*********** % 输入: a表示图的邻接矩阵                                   // % 输出: a表示所求最短路的距离矩阵                           // %% function a = dij2_m(a) % 建立邻接矩阵,若不是邻接矩阵,则变为邻接矩阵 n = length(a); for i =2:n     for j= 1:(i-1)         a(i,j) = a(j,i)     end end for k = 1:(n-1)     b = [1:(k-1),(k+1):n];     kk = length(b);     a_id = k;     b1= [(k+1):n];     kk1= length(b1);         while kk>0         for j=1:kk1             te= a(k,a_id) + a(a_id,b1(j));             if te<a(k,b1(j))                 a(k,b(j))=te;             end         end         miid = 1;         for j = 2:kk             if a(k,b(j)) <a(k,b(miid))                 miid = j;             end         end         a_id = b(miid);         b = [b(1:(miid-1)),b((miid+1):kk)];         kk = length(b);         if a_id > k             miid1= find(b1 == a_id);             b1 = [b1(1:(miid1-1)) b1((miid1+1):kk1)];             kk1 = length(b1);         end     end     for j = (k+1):n         a(j,k) = a(k,j);     end end


    最新回复(0)