首页 > 编程语言 > 详细

全局路径规划算法Dijkstra

时间:2019-02-19 13:29:55      阅读:257      评论:0      收藏:0      [点我收藏+]

参考博客链接:https://www.cnblogs.com/kex1n/p/4178782.html

 

matlab代码:包含测试数据

DefultMaxValue=1e3;
NodesMap=[0 1 12 DefultMaxValue DefultMaxValue DefultMaxValue;
DefultMaxValue 0 9 3 DefultMaxValue DefultMaxValue;
DefultMaxValue DefultMaxValue 0 DefultMaxValue 5 DefultMaxValue;
DefultMaxValue DefultMaxValue 4 0 13 15;
DefultMaxValue DefultMaxValue DefultMaxValue DefultMaxValue 0 4;
DefultMaxValue DefultMaxValue DefultMaxValue DefultMaxValue DefultMaxValue 0];

% NodesMap=[0 6 3 DefultMaxValue DefultMaxValue DefultMaxValue;
% 6 0 2 5 DefultMaxValue DefultMaxValue;
% 3 2 0 3 4 DefultMaxValue;
% DefultMaxValue 5 3 0 2 3;
% DefultMaxValue DefultMaxValue 4 2 0 5;
% DefultMaxValue DefultMaxValue DefultMaxValue 3 5 0];

Distance=NodesMap(1,:);

%book结果初始化
SearchedFlag=zeros(1,length(Distance));
SearchedFlag(1)=1;

FootsResults=zeros(size(NodesMap));
FootsResults(:,1)=1;

Preview=zeros(1,length(Distance));
Preview(1)=1;

for i=2:length(SearchedFlag)
i
MinID=1;
MinValue=DefultMaxValue;
Distance
SearchedFlag
for j=1:length(SearchedFlag)
if SearchedFlag(j)==0 && Distance(j)<MinValue
MinID=j;
MinValue=Distance(j);
end
end
MinID
SearchedFlag(MinID)=1;

Preview
if i>2
FootsResults(i,i-1)=Preview(MinID);
for j=1:(i-1)
Temp=FootsResults(j,:);
FindFlag=0;
for k=1:length(SearchedFlag)
if Temp(k)==0
if Temp(k-1)==Preview(MinID)
FindFlag=1;
break;
end
end
end
if FindFlag==1
break;
end
end
Temp
FootsResults(i,:)=Temp;
FootsResults(i,k)=MinID;
else
FootsResults(i,i)=MinID;
end

FootsResults


for j=1:length(SearchedFlag)
if NodesMap(MinID,j)<DefultMaxValue && SearchedFlag(j)==0
if Distance(j)>(Distance(MinID)+NodesMap(MinID,j))
Distance(j)=Distance(MinID)+NodesMap(MinID,j);
% FootsResults(i,j)=MinID;
Preview(j)=MinID;
end
end
end

end
% Preview
Distance

 

全局路径规划算法Dijkstra

原文:https://www.cnblogs.com/geyanwu/p/10400446.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!