資源簡介
用matlab編寫的源代碼,附有一定的注釋,并且能夠輸出所有源點到終點的最短路徑。
代碼片段和文件信息
clc
clear
load?Distance.txt
D=Distance;
D(find(D==0))=inf;%為了處理方便,將每個頂點到自身的路徑長度設為inf
N=length(D)+6;%因為是為了找出所有的路徑所以路徑矩陣多加了幾個,可以改
R=zeros(NN);
s0=input(‘輸入起點‘);
k1=input(‘如果想求到指定點的最短路徑長度輸入0,否則輸入1‘);
if?k1==0
e0=input(‘輸入終點‘);
else
????e0=0;
end
S=s0;
V=[1:length(D)];
n=find(V==s0);
V(:n)=[];
g=1;
m=find(min(D(s0:))==D(s0:));%m表示開始時有幾個最小值
S=[S?m];
for?k=1:length(m)
????R(k1)=min(D(s0:));
????R(k2:3)=[s0?m(k)];
????temp=[R(k1:3)?s0?m(k)];
????R(k:)=[temp?zeros(1N-length(temp))];
????V(:find(V==m(k)))=[];
????g=g+1;
end
%第一次判斷結束
while?~isempty(V)
????m=length(S)-1;
????n=length(V);
????a=zeros(mn);
????b=zeros(1n);
????c=zeros(1n);
????t=1;
????while?t<=m
????????a(t:)=D(S(1)S(t+1))+D(S(t+1)V);
????????t=t+1;
????end
????b=D(s0V);
????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3614??2009-09-09?17:19??Dijkstra\Dijkstra.m
?????文件????????142??2009-09-08?21:05??Dijkstra\Distance.txt
?????目錄??????????0??2009-09-09?17:20??Dijkstra
-----------?---------??----------?-----??----
?????????????????3756????????????????????3
評論
共有 條評論