求程序 在matlab上用Dijkstra和Floyd算法求出v1到v8的最短路径。。

 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
jimtien
2017-08-23 · TA获得超过7654个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1128万
展开全部
function [ distance, path] = Dijkstra( W,st,e )  
    n=length(W);
    D = W(st,:);  
    visit= ones(1:n); 
    visit(st)=0;  
    parent = zeros(1,n); 
    path =[];  

    for i=1:n-1  
        temp = [];  
        for j=1:n  
           if visit(j)  
               temp =[temp D(j)];  
           else  
               temp =[temp inf];  
           end
        end
        [~,index] = min(temp);  
        visit(index) = 0;  

         for k=1:n  
            if D(k)>D(index)+W(index,k)  
               D(k) = D(index)+W(index,k);  
               parent(k) = index;  
            end  
        end 
    end  

    distance = D(e);
    t = e;  
    while t~=st && t>0  
        path =[t,path];  
        p=parent(t);t=p;  
    end  
    path =[st,path];%最短路径 
end
W = [0   3    10  Inf Inf Inf Inf Inf;
     3   0    Inf 5   Inf Inf Inf Inf;
     10  Inf  0   6   Inf Inf Inf Inf;
     Inf 5    6   0   4   Inf Inf Inf;
     Inf Inf Inf  4   0   9   5   Inf;
     Inf Inf Inf  Inf 9   0   3   4;
     Inf Inf Inf  10  5   3   0   6;
     Inf Inf Inf  Inf Inf 4   6   0    ];
 [distance,path]=Dijkstra(W,1,8);
 
 
 >> distance
distance =
    23
>> path
path =
     1     2     4     5     7     8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yongfengm
2015-06-27 · TA获得超过300个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:129万
展开全部
网上有代码。其实有自带函数,graphshortestpath和 graphallshortestpath。floyd算法求任意两点的距离
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2f3950c
2015-06-21 · TA获得超过474个赞
知道小有建树答主
回答量:201
采纳率:33%
帮助的人:103万
展开全部
你这个是数学建模吗
更多追问追答
追问
是啊
追答
可惜我是纯计算机专业的,数学并不好,不能帮你了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式