この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式サイトにアクセスして許可を申請してください。 幅優先探索、ダイクストラ法、A* 法は、グラフ上の 3 つの典型的なパス プランニングアルゴリズムです。どちらもグラフ検索に使用できますが、違いはキューとヒューリスティック関数という 2 つのパラメータにあります。 このプロジェクトでは、選択されたパラメータに基づいてさまざまなアルゴリズムがグラフ検索を実行する方法を調査し、視覚化します。 アルゴリズムの一般原則は次のとおりです。 開始ノードを含むキューへのフロンティアを初期化します。 フロンティア キューが空でない場合、「現在の」ノードが「訪問」されてキューから削除され、訪問されたノードの各隣接ノードがキューに追加されます。そのコストは、現在のノードに到達するコスト、現在のノードから隣接ノードを訪問するコスト、隣接ノードとターゲット ノードのヒューリスティック関数値の合計です。ヒューリスティック関数は、2 つのノード間のパス コストを推定します。 アクセス パス (通常は cameFrom グラフ) を保存すると、後でパスを再構築できるようになります。隣接ノードがすでにリスト内にあり、新しいパスのコストが低い場合は、そのコストを変更します。 ターゲット パスが見つかった場合 (早期終了)、またはリストが空の場合、アルゴリズムは停止します。 BFS先入れ先出しキューを使用して BFS を実装します。このキューは、パス内のリンクのコストを無視し、ホップ数に応じてスケーリングするため、ホップ関連のコストが最小の最短パスが確実に見つかります。ヒューリスティック関数の選択は任意であり、このプロセスでは役割を果たしません。 配列を使用すると、要素が末尾に追加され、先頭から削除される先入れ先出しアプローチを実装できます。
ダイクストラグラフ上の優先キューと常に 0 を返すヒューリスティック関数を使用すると、ダイクストラのアルゴリズムが得られます。 BFS と比較した場合、Dijkstra の最大の違いはコストを考慮していることです。このアルゴリズムを使用すると、ノード間のコストに基づいて最短パスを見つけることができます。 優先キューは配列を使用して実装され、新しいノードが挿入されるたびにソートされます。優先キューを実装するより効率的な方法は他にもありますが、このシナリオでは、配列は十分に高速で実装も簡単です。
A*A*アルゴリズムを実装するには、2 つのノード間のユークリッド距離などの実際のヒューリスティック関数を渡す必要があります。ノードは「ノード コスト」+「ノードからターゲット ノードまでの推定コスト」によって重み付けされ、より可能性の高いノードを優先することで検索が高速化されます。
許容されないヒューリスティック関数A* は、許容されるヒューリスティック関数を適用することによってのみ最短経路を見つけることができます。つまり、アルゴリズムが実際の経路の長さを過大評価することは決してありません。ユークリッド距離は 2 点間の最短距離/経路であるため、ユークリッド距離を超えることはできません。 しかし、定数 k>0 を掛けるとどうなるでしょうか?これにより、距離が過大評価され、許容されないヒューリスティック関数になります。
アルゴリズムの実装このプロジェクトは、読者が Web 上でアクセスできるようにJavaスクリプトを通じて実装されています。また、UI のレンダリングには react を使用し、グラフィックのレンダリングには react-konva を使用しています。 パス検出は、キュー タイプとヒューリスティック関数を受け入れ、実際のパス検出 (カリー化と呼ばれる) という別の関数を返すものです。 この方法では、ユーザーが設定を変更するたびに、決定されたパラメータを使用して新しいパス検出関数が作成され、グラフ検索に使用されます。 パス検出の手順を視覚化するために、JavaScript ジェネレーターを使用します。つまり、関数は値だけでなく反復子を返します。したがって、各ステップで、訪問者はアルゴリズムの状態全体を生成し、それを配列に保存し、ページ上部のスライダーを介して特定の状態を表示できます。 このリンクをクリックすると、インタラクティブなデモ ページに移動します: https://interactive-pathfinding.netlify.com/ |
<<: ガートナーなど権威ある組織:人工知能、国内外のどのAI技術が強いのか?
>>: ハーバード大学のロボット魚は、知的に協力し、集団で「泳ぎ」、サイエンス誌の表紙に登場しました。
AlphaGoがイ・セドルに勝利したことで世界は人工知能に再び親しむようになったが、アップグレード...
多項式回帰は線形回帰の改良版です。線形回帰を知っていれば、簡単に理解できるでしょう。そうでない場合は...
オンライン マイクロクレジットの一般的なリスク管理シナリオは、融資前、融資中、融資後の段階に分けられ...
人物画像のビデオレンダリングは、AR/VR、映画、医療などの分野で広く使用されています。単眼カメラか...
これらは互いに大きく異なっており、すべてのデータ サイエンティストはその理由と方法を理解する必要があ...
みなさん、こんにちは!昨日、プログラミング面接の準備をしていて、アルゴリズムの基礎を学ぼうとしている...
再度調査中! 世界最大の半導体設計ソフトウェア(EDA)サプライヤーであるシノプシスは、中国に重要な...
ドローン技術は、都市計画がスマートシティを形成する方法を再定義するでしょう。都市計画は変化しており、...
誇大宣伝されているかどうかは別として、人工知能アルゴリズムの可能性は依然として有望です。しかし、今日...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
[51CTO.com からのオリジナル記事] 推奨システムは登場以来、さまざまな商用製品の問題を解決...
今日、業界や部門に関係なく、私たちは皆、エネルギーと燃料のコスト上昇、原材料費の増加、営業利益率と利...
2回の会期は3月20日に終了した。今年の全国人民代表大会では、政府活動報告に「人工知能」が再び記載...