%w為此圖的距離矩陣
%start為起始端點下標(從1開始)
%MAX是數據輸入時的∞的實際值
%2011年6月19日17:02:03
len=length(w);
flag=zeros(len,2);
index=zeros(1,len);
index(1)=start;
%根據路由類型初始化路由表
R=ones(len,2)*MAX;
R(1,1)=0;
R(1,2)=start;
port=zeros(1,len);
port(start)=0;
%處理端點有權的問題
for i=1:len
tmp=w(i,i)/2;
if tmp~=0
w(i,:)=w(i,:)+tmp;
w(:,i)=w(:,i)+tmp;
flag(i,1)=1; %表示端i點有權值
flag(i,2)=tmp; %存儲端點權值的一半
end
w(i,i)=MAX;
end
s=sprintf('\tv%d',1:len);
s_tmp=sprintf('\t|%s\t%s\t',' 置定端',' 距離');
s=strcat(s,s_tmp);
s_tmp=sprintf('%s\t',' 路由 ');
s=strcat(s,s_tmp);
s_tmp=sprintf('\n----------------------------------------------------\n\t0');
s=strcat(s,s_tmp);
for i=1:len-1
s_tmp=sprintf('\t∞');
s=strcat(s,s_tmp);
end
s_tmp=sprintf('\t|\t%d\t%4.1f\t%d',start,0,start);
s=strcat(s,s_tmp);
disp(s);
%Dijkstra算法具體實現過程
count=1;
while count<len
s="";
N=MAX; %暫存每次距離比較的較大值
x=1; %暫存每次距離比較的較大值的下標
for i=1:len
if isempty(find(index==i,1)) %將沒有在置定點的i值跳過
continue
end
for j=1:len
if ~isempty(find(index==j,1)) %將在置定點的j值跳過
continue
else
port(j)=R(i,1)+w(i,j); %新距離
end
if port(j)<R(j,1) %新舊路由距離比較,如果小,則更新
R(j,1)=port(j);
R(j,2)=i;
else
port(j)=R(j,1);
end
if port(j)<N %通過比較,得出一次循環中,最小的距離,將相應點置定
N=port(j);
x=j;
end
end
end
for k=1:len %輸出格式設定(考慮端權值)
if isempty(find(index==k,1))
if port(k)==MAX
s_tmp=sprintf('\t%s','∞');
else
if flag(k,1)
port(k)=port(k)-flag(k,2);
end
s_tmp=sprintf('\t%2.1f',port(k));
end
else
s_tmp=sprintf('\t%s','_');
end
s=strcat(s,s_tmp);
end
if flag(x,1)
R(x,1)=R(x,1)-flag(x,2);
end
s_tmp=sprintf('\t|\t%d\t%4.1f\t%d',x,R(x,1),R(x,2));
s=strcat(s,s_tmp);
disp(s);
%為下次的循環設定條件——更新置定點列表+count加1
count=count+1;
index(count)=x;
end
end
示例:
輸入:
b=[
0,9.2,1.1,3.5,100,100;
1.3,0,4.7,100,7.2,100;
2.5,100,0,100,1.8,100;
100,100,5.3,0,2.4,7.5;
100,6.4,2.2,8.9,0,5.1;
7.7,100,2.7,100,2.1,0
];
Dijkstra(b,1,100
相關詞條
-
中介成分體系
中介成分是通過原語語法分析和語義分析並考慮到向譯語的轉換而得出的,它們屬於“深層結構”的範圍。中介成分不僅能表示成分的功能意義,而且還能表示成分的分布關...
中介成分體系 正文 配圖 相關連線 -
程式公正
在進行訴訟活動中,司法工作人員及訴訟參與人普遍比較重視的是實體法上的公正,而對於程式法上的不公正現象則比較寬容。實際上,無論是實體公正,還是程式公正,其...
定義 模式 基本功能 基本特徵 制約因素 -
主曲線算法
是Hastie[14]於1984年提出的。主曲線是通過數據分布“中央”並滿足“自相合”的光滑曲線,其目的是根據給定的數據集合求出一條曲線,使得這條曲線對...
概念 定義 主曲線算法研究 初始化工作 研究動機與意義 -
工作分析[方法]
現代管理學將工作分析定義為一種確定完成各項工作所需技能、責任和知識的系統過程。工作分析是人力資源管理工作的基礎,其分析質量對其他人力資源管理模組具有舉足...
類型方法 其他資料 -
《當代分析哲學》
《當代分析哲學》是全面介紹當代分析哲學的簡明讀物。近十年來,分析哲學正在發生著“靜悄悄的革命”。這種變化不是來自外部的批評,而是來自內部的反省,來自分析...
圖書出版信息 內容簡介 當代分析哲學的基本特徵 當代分析哲學簡史 -
當代分析哲學
《當代分析哲學》是全面介紹當代分析哲學的簡明讀物。
圖書出版信息 內容簡介 當代分析哲學的基本特徵 -
主曲線
主曲線概念是Hastie於1984年提出的。主曲線是通過數據分布“中央”並滿足“自相合”的光滑曲線,其目的是根據給定的數據集合求出一條曲線,使得這條曲線...
主曲線概念 主曲線的定義 主曲線算法研究 利用主曲線實現分段線性骨架的方法 -
植物群落分析
植物群落分析(analysis of plant community)是一類生態學方法,即對植物群落(及其環境)的觀測數據進行數學分析以求揭示其內在的生...
植物群落分析 正文 配圖 相關連線 -
工作分析
現代管理學將工作分析定義為一種確定完成各項工作所需技能、責任和知識的系統過程。工作分析是人力資源管理工作的基礎,其分析質量對其他人力資源管理模組具有舉足...
類型方法 其他資料