% 两点间最短路的 Dijkstra 算法
function = Dijkf(a)
% a表示图的权值矩阵
% b表示所有最短路的权和
% index1表示标号顶点顺序
% index2表示标号顶点索引
% 参数初始化
M = max(max(a));
pb(1:length(a)) = 0;
pb(1) = 1;
index1 = 1;
index2 = ones(1,length(a));
d(1:length(a)) = M;d(1) = 0;temp = 1;
% 更新l(v),同时记录顶点顺序和顶点索引
while sum(pb) < length(a)
tb = find(pb == 0);
d(tb) = min(d(tb),d(temp)+a(temp,tb));
tmpb = find(d(tb) == min(d(tb)));
temp = tb(tmpb(1));
pb(temp) = 1;
index1 = ; % 记录标号顺序
index = index1(find(d(index1) == d(temp) a(temp,index1)));
if length(index) >= 2
index = index(1);
end
index2(temp) = index; % 记录标号索引
end
d;
index1;
index2; Valentiner 发表于 2013-4-29 08:35 static/image/common/back.gif
你是从哪儿到哪儿啊
你刷我屏 坏人 zhangc_ningbo 发表于 2013-4-29 11:57 static/image/common/back.gif
这是用MATLAB做的
% 两点间最短路的 Dijkstra 算法
function = Dijkf(a)
O(∩_∩)O谢谢谢谢
页:
1
[2]