グローバルパス計画アルゴリズムDijkstra(ディジェストラアルゴリズム)-matlab
2737 ワード
ブログのリンクを参照:https://www.cnblogs.com/kex1n/p/4178782.html
Dijkstraは一般的なグローバルパス計画アルゴリズムであり、その本質的には最短パスの優れたアルゴリズムを探しています.アルゴリズムの詳細については、上記のリンクを参照してください.
本文は主に以下の二つの違いがあります.
1、開発言語をmatlabに変えて、コード部分を少し変えたらリアルタイムでコントローラに運行できます.
2、起点から各頂点に到達する最短経路で経験した頂点を求めます.
matlabコード:テストデータを含む
テストの計算例1 2で使ったデータは全部コードの中にあります.みんなは自分でプログラムを実行して、結果を確認してもいいです.
転載先:https://www.cnblogs.com/geyanwu/p/10400446.html
Dijkstraは一般的なグローバルパス計画アルゴリズムであり、その本質的には最短パスの優れたアルゴリズムを探しています.アルゴリズムの詳細については、上記のリンクを参照してください.
本文は主に以下の二つの違いがあります.
1、開発言語をmatlabに変えて、コード部分を少し変えたらリアルタイムでコントローラに運行できます.
2、起点から各頂点に到達する最短経路で経験した頂点を求めます.
matlabコード:テストデータを含む
% https://www.cnblogs.com/kex1n/p/4178782.html
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)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)(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
テストの計算例1 2で使ったデータは全部コードの中にあります.みんなは自分でプログラムを実行して、結果を確認してもいいです.
転載先:https://www.cnblogs.com/geyanwu/p/10400446.html