もちろん、主な参照アルゴリズム ドキュメントは「http://www.vckbase.com/document/viewdoc/?id=1422」ですが、実際のソース コードはここには示されていません。 A* アルゴリズムのコードを検索したところ、そのほとんどが ActionScript ソースコードでした。結局のところ、Flash を使用してデモを作成する方がはるかに便利です。しかし、Visual Studio が開いているので、C# 実装を記述してみましょう。 A* アルゴリズムで最も重要なことは、パスのスコアリング関数です。実際のアプリケーションでは、この機能の設計によって異なる結果が生成されます。上記の文書から、スコア F の式を簡単に理解できます。 F = H + G もちろん、記事に記載されている簡単な方法に基づいて、H と G を計算するための次のコードを記述することもできます。 1プライベート int G(int 親) PathNode クラスは、PathNode リストをソートするために IComparable インターフェイスを実装します。上記の記事の文章を思い出してください。「開いたリストの中で F 値が最も低いグリッドを見つけます。これを現在のグリッドと呼びます。」はい、これがこの条件の準備です。 F 値が最も低い「グリッド」を見つけるには、開いているリストを並べ替えるだけです。 実際のアルゴリズムを実装するときは、次の 3 つのコンテナ オブジェクトも準備する必要があります。 プライベートリスト コメントはありませんが、考え方は上記の「A*メソッドのまとめ」と同じです。ここに再度貼り付けることはしません。ここでもう少し説明する必要があります。閉じたリストは辞書を使用します。実際、閉じたリストの目的は、次のポイントが閉じたリスト内にあるかどうかを確認することです。辞書の ContainsKey メソッドを使用する方が簡単です。結局のところ、リスト内の要素を検索するよりも、ハッシュテーブル内のキーを検索する方が高速です。 C# 実装アルゴリズムを簡略化するために、ここでは現在のポイントの上、下、左、右の 4 つの隣接するポイントのみが走査されます。上記では 8 つのポイントを移動する状況を紹介しましたが、これはそれほど複雑ではありません。唯一の問題は、斜めに移動しているかどうかを判断する必要がある G メソッドにあります。さらに、隣接する 4 つのポイントをトラバースする方法は、オフセット配列を使用して 8 つのオフセットを保存する、以前に見た AS コードの一部から取得されます。ここでは 4 つのオフセットのみが保存されます。実際のアルゴリズムでは、オフセット配列をループするのが非常に便利です (以前、この方法を使用せず、8 つの短い同様の関数呼び出しコードをコピーしたコードを見たことがありますが、これはロジックがこれほど明確ではありませんでした)。デルタ配列は次のとおりです。 プライベートint[][]デルタ = 新しいint[][]{ C# 実装で注意すべきもう 1 つの点は、4 つのオフセットの新しいポイントがオープン リストに含まれている場合、オープン リスト内の対応する PathNode の G 値を更新する必要があることです。新しい PathNode が作成され、オープン リストに追加されると、アルゴリズムに問題が発生し、無限ループに陥る可能性があります。 パス検索の結果を取得するには、PathNode リンク リスト内の各 PathNode をトラバースし、それをリストに入れて、それを逆にするだけです。マップには、ここでは int 配列が使用されます。要素が 0 未満の場合、渡すことができないことを意味します。 A* アルゴリズムによって計算された結果は最適な結果ではない可能性がありますが、スコアリング関数の助けを借りて、より少ないノードを走査できるため、その効率は依然として比較的高くなります。 最後に、デモ プロジェクト全体のファイルを投稿します。構造とコードは見栄えがよくないかもしれません。 |
<<: LRUキャッシュの実装アルゴリズムについて議論しましょう
>>: Web 2.0 のソーシャル関連性ランキング アルゴリズムの探究
UiPath は、世界的なロボティック プロセス オートメーション (RPA) 分野の主要プラットフ...
科学技術の急速な発展に伴い、人工知能(AI)はさまざまな分野にますます統合されつつあり、農業分野も例...
最近の多くの研究では、主に人工知能や自動化における技術の進歩が、男性よりも女性の雇用に大きな影響を与...
セキュリティにおける人工知能の応用は、人々に 4 つの独自のセキュリティ上の利点をもたらします。この...
[[379872]] 【はじめに】「遠く離れた親友は遠い国を近づける」これは、Shi Tou兄弟が私...
6 つの一般的なソート アルゴリズムの GIF アニメーションがあり、ソートの考え方をより簡単に理解...
ニューラル ネットワークでは、活性化関数によって、指定された入力セットからノードの出力が決定されます...
Microsoft は、特定の限定されたテストにおいて人間の精度を上回る新しい画像キャプション作成...
一般的に、AIGC とは、人間が作成したコンテンツに非常によく似た画像、音楽、テキストなどのコンテン...
2017年6月30日、第一回世界知能大会で上汽大通の「RVスマートモビリティビジョン」が盛大に発表さ...
OpenAIは史上初の買収を正式に発表した。先ほど、OpenAIが「Minecraft」のオープンソ...
[[260578]]海外メディアの報道によると、グーグルは以前の取り組みが失敗した後、ロボット工学プ...
近年、AIをどのように監督するかについての議論はますます白熱しており、有力者の意見も大きく異なってい...