AGVナビゲーションでは、パスの選択が重要なテーマです。最適パスに最短パスアルゴリズムが使用されている場合、使用できるアルゴリズムは多数あります。この記事では、現在人気のある最短パスアルゴリズム(主にダイクストラアルゴリズム、フロイドアルゴリズム、Aスター)を比較しますアルゴリズム、Bellman-Fordアルゴリズム、SPFAアルゴリズムなど
次の表は、さまざまなアルゴリズムの比較です。
アルゴリズム |
該当するシーン |
実装のしやすさ |
時間/空間の複雑さ |
負の重量問題 |
フロイドアルゴリズム |
マルチソースの最短経路、任意の2点間の最短距離を計算します。 図の密な効果が最もある優秀。 時間複雑性の高い、大量のに適していないデータ。 |
シンプルな |
時間の複雑さ:O(n ^ 3) スペースの複雑さ:O(n ^ 2) |
扱える |
ダイクストラアルゴリズム |
単一始点最短経路、図内の別の点に一点間の最短距離を計算します。 密な地図
|
ミディアム |
時間の複雑さ:O((N + M)logN) スペースの複雑さ:O(M) |
扱えない |
Aスターアルゴリズム |
単一始点最短経路、経路を見つけるための効率及び経路の品質、次善の検索アルゴリズムのバランスをとることができます。 これは、ダイクストラアルゴリズムの最適化と変換です。 |
複雑な |
時間の複雑さ:O((N + M)logN) スペースの複雑さ:O(M) |
扱えない |
Bellman-Fordアルゴリズム |
単一ソースの最短経路 スパースグラフ |
ミディアム |
時間の複雑さ:O(MN) スペースの複雑さ:O(M) |
扱える |
SPFAアルゴリズム |
単一ソースの最短経路 するために、ベルマン・フォード・アルゴリズムを最適化 スパースグラフ |
ミディアム |
最悪の時間の複雑さもO(MN)です。 スペースの複雑さ:O(M) |
扱える |
AGVナビゲーションは、私たちが必要とするので、任意の2点間の最短経路を計算する必要があるため、マルチソース最短-pathアルゴリズムを。フロイドアルゴリズムはこの要件を満たし、実装が簡単で理解しやすいです。時間の複雑さは高くなりますが、アプリケーションシナリオのナビゲーションポイントの数が天文学的でない場合は、許容できます。
参照:
Aスターアルゴリズムの原理分析:https : //blog.csdn.net/m0_37264516/article/details/88045568
フロイドアルゴリズム:https : //baike.baidu.com/item/Floyd%E7%AE%97%E6%B3%95/291990?fromtitle=%E5%BC%97%E6%B4%9B%E4%BC% 8A%E5%BE%B7%E7%AE%97%E6%B3%95&fromid = 5546207&fr =アラジン
ダイクストラの実装(ダイクストラアルゴリズム):https : //blog.csdn.net/qq_41923622/article/details/82082052
最短経路の問題:https : //cloud.tencent.com/developer/article/1525973
Bellman-Fordアルゴリズム:https : //baike.baidu.com/item/Bellman-Ford%E7%AE%97%E6%B3%95/1089090? fr= aladdin
SPFAの計算方法:https://baike.baidu.com/item/SPFA%E7%AE%97%E6%B3%95/8297411?fr=aladdin