• 大小: 4KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-11
  • 语言: Matlab
  • 标签: MATLAB  dijkstra  

资源简介

MATLAB中的dijkstra(迪杰斯特拉)最短路径算法。求最短路径的普遍算法

资源截图

代码片段和文件信息

clc;
clear all;
disp(‘DIJKISTRA ALGORITHM‘);
n=input(‘Enter the no. of nodes: ‘);

for i=1:n
    %initialize
    for j=i:n       
        if(i==j)
    m(ij)=0;
        else
            m(ij)=randint(119);% fill matrix
            m(ji)=m(ij);% equal upper and lower triangular matrix
        end
    end
end
disp(m);
 i=1;
 x=1;
 temp=triu(m); %for coloring of the lines after computing path
 for i=1:n
     for j=1:n
         if(temp(ij)~=0)
             lc(ij)=x;      %just numbering in sequence for line count
             lc(ji)=lc(ij);
             x=x+1;      
         end
     end
 end
bg=biograph(triu(m)[]‘showarrows‘‘off‘‘ShowWeights‘‘on‘‘EdgeTextColor‘[0 0 1]);
view(bg);

over=0;
while(over==0)
from=input(‘Enter the source node no.: ‘);   %get inputs
to=input(‘Enter the destination node no.: ‘);
v=zeros(1n);%visited matrix
d=randint(1n100);%distance to node matrix
p=zeros(1n);%previous node matrix
s=from;
v(s)=1;%mark from as visited and initialixe d and p with 0
d(s)=0;
p(s)=0;
stop=0;

while(stop~=n)
stop=0;
for i=1:n
    if(v(i)~=1&&m(si)~=0)
        if(d(s)+m(si)            d(i)=m(si)+d(s);
            p(i)=s;
        end
    else
        stop=stop+1;
    end
end
tempmat=d;
for i=1:n
    if(v(i)==1)
        tempmat(i)=100;%to find the next minimum
    end
end
[k z]=min(tempmat);
s=z;% next minimum node as source node
v(s)=1; % mark as visited
end
%%%%%%%%%%%%%%%%%%%%%%%%%computation over%%%%%%%%%%%%%%%%%
no=1:n;
fprintf(‘\nNodes:   ‘);
disp(no);
fprintf(‘Visited: ‘);
disp(v);
fprintf(‘Previous:‘);
disp(p);

i=1;
out=2;
dest(1)=to;
while(i==1)     %backtrace from destination to source
     to=p(to);
     dest(out)=to;
     out=out+1;
     if(to==from)
         i=0;
     end
end
bg=biograph(triu(m)[]‘showarrows‘‘off‘‘ShowWeights‘‘on‘‘EdgeTextColor‘[0 0 1]);
for i=1:out-1
set(bg.nodes(dest(i)) ‘color‘ [1 0 0]);
set(bg.nodes(dest(1))‘color‘[0 1 0]);
if(iset(bg.edges(lc(dest(i+1)dest(i)))‘linecolor‘[1 0 0]);
end
end
view(bg);
sample=input(‘Check Minimum distance for next instance y/n: ‘‘s‘);
if(sample==‘n‘)
    over=1;  
end
end


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-07-24 16:03  dijkstra\
     文件        2265  2014-10-02 18:19  dijkstra.m
     文件        2261  2018-07-24 16:06  dijkstra\dijkstra.m
     文件        1310  2014-10-02 18:19  dijkstra\license.txt
     文件        1310  2014-10-02 18:19  license.txt

评论

共有 条评论