--- dijstra graph theory algorithms

1, target: non-directional or pointing the shortest path.

 

2, Matlab achieve:

weight = [ 0      2      8      1    Inf Inf Inf Inf Inf Inf Inf;
            2      0      6    Inf      1    Inf Inf Inf Inf Inf Inf;
            8      6      0      7      5      1      2    Inf Inf Inf Inf;
            1    Inf      7      0    Inf Inf      9    Inf Inf Inf Inf;
          Inf      1      5    Inf      0      3    Inf      2      9    Inf Inf;
          Inf Inf      1    Inf      3      0      4    Inf      6    Inf Inf;
          Inf Inf      2      9    Inf      4      0    Inf      3      1    Inf;
          Inf Inf Inf Inf      2    Inf Inf      0      7    Inf      9 ;
          Inf Inf Inf Inf      9      6      3      7      0      1      2 ;
          Inf Inf Inf Inf Inf Inf      1    Inf      1      0      4 ;
          Inf Inf Inf Inf Inf Inf Inf      9      2      4      0 ;];
[dis, path]=dijkstra(weight,1, 11)


dijkstra.m
function [min,path]=dijkstra(w,start,terminal)
n=size(w,1); label(start)=0; f(start)=start;
for i=1:n
   if i~=start
       label(i)=inf;
end, end
s(1)=start; u=start;
while length(s)<n
   for i=1:n
      ins=0;
      for j=1:length(s)
         if i==s(j)
            ins=1;
         end,  
      end
      if ins==0
         v=i;
         if label(v)>(label(u)+w(u,v))
            label(v)=(label(u)+w(u,v)); 
         f(v)=u;
         end, 
      end, 
   end   
V1 = 0 ;
   k=inf;
   for i=1:n
         ins=0;
         for j=1:length(s)
            if i==s(j)
               ins=1;
            end, 
         end
         if ins==0
            v=i;
            if k>label(v)
               the k = label (v); = v1 v;
            end,  
         end,  
   end
   s(length(s)+1)=v1;  
   u = v1;
end
min=label(terminal); path(1)=terminal;
i=1; 
while path(i)~=start
      path(i+1)=f(path(i));
      i=i+1 ;
end
path(i)=start;
L=length(path);
path=path(L:-1:1);

 

 

 

3, the input data format:

    [ 0      2      8      1    Inf Inf Inf Inf Inf Inf Inf;
     2      0      6    Inf      1    Inf Inf Inf Inf Inf Inf;
     8      6      0      7      5      1      2    Inf Inf Inf Inf;
     1    Inf      7      0    Inf Inf      9    Inf Inf Inf Inf;
   Inf      1      5    Inf      0      3    Inf      2      9    Inf Inf;
   Inf Inf      1    Inf      3      0      4    Inf      6    Inf Inf;
   Inf Inf      2      9    Inf      4      0    Inf      3      1    Inf;
   Inf Inf Inf Inf      2    Inf Inf      0      7    Inf      9 ;
   Inf Inf Inf Inf      9      6      3      7      0      1      2 ;
   Inf Inf Inf Inf Inf Inf      1    Inf      1      0      4 ;
   Inf Inf Inf Inf Inf Inf Inf      9      2      4      0 ;]


    [ 0      8    Inf Inf Inf Inf      7      8    Inf Inf Inf;
   Inf      0      3    Inf Inf Inf Inf Inf Inf Inf Inf;
   Inf Inf      0      5      6    Inf      5    Inf Inf Inf Inf;
   Inf Inf Inf      0      1    Inf Inf Inf Inf Inf     12 ;
   Inf Inf      6    Inf      0      2    Inf Inf Inf Inf     10 ;
   Inf Inf Inf Inf      2      0      9    Inf      3    Inf Inf;
   Inf Inf Inf Inf Inf      9      0    Inf Inf Inf Inf;
     8    Inf Inf Inf Inf Inf Inf      0      9    Inf Inf;
   Inf Inf Inf Inf      7    Inf Inf      9      0      2    Inf;
   Inf Inf Inf Inf Inf Inf Inf Inf      2      0      2 ;
   Inf Inf Inf Inf     10    Inf Inf Inf Inf Inf      0 ;];

 

Guess you like

Origin www.cnblogs.com/lilei0128/p/11099368.html