Valentiner 发表于 2013-4-29 08:35

你是从哪儿到哪儿啊

zhangc_ningbo 发表于 2013-4-29 11:57

这是用MATLAB做的
% 两点间最短路的 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;

珊珊魏 发表于 2013-5-17 15:17

Valentiner 发表于 2013-4-29 08:35 static/image/common/back.gif
你是从哪儿到哪儿啊

你刷我屏   坏人

珊珊魏 发表于 2013-5-17 15:17

zhangc_ningbo 发表于 2013-4-29 11:57 static/image/common/back.gif
这是用MATLAB做的
% 两点间最短路的 Dijkstra 算法
function = Dijkf(a)


O(∩_∩)O谢谢谢谢
页: 1 [2]
查看完整版本: 用lingo求解最短路径 求代码