29


17

すべての単一言語で、A *パスファインディングアルゴリズムの単純で最適化された実装のコードを人々に投稿させることはできますか?

これは主に楽しみのためであり、stackoverflow自体が可能であるもので遊んでいます…​ 私は実際にこれのActionScript 3バージョンを入手することに興味を持っていますが。

しかし、異なる「プログラミング言語」が作成されたとしても、この「質問」は今後も永遠に更新され続けるのです。

私はあなたが疑似コードを多くの(はるかに少ないすべての)異なる言語に「翻訳」しているのを見ることができる他の場所をオンラインで知りません。 それは価値があるリソースのように思えます、そして必ずしもこのサイトがそのために設計されたものであるというわけではありませんが、それを試して、それがstackoverflowがそのために使われることができる価値があるものであることがわかるかどうか見ることに害はありません!

11 回答


11


http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript/[Javascriptの実装]はhttp://www.briangrinstead.com/blog/astar-search-algorithm-と一緒です。 in-javascript / [ソースコード]と http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript/[オンラインデモ]私は趣味/研究プロジェクトとしてやった。

それはとても簡単ですが、いくつかのパラメータ(グリッドサイズ、壁の数、デバッグ情報のオン/オフ)を変更することができます。 検査された各ノードについて計算されたf(x)、g(x)、およびh(x)の値が表示されます。

デモページの実装はjQueryを使用します。


9


これがCの実装です。 それは今ではかなりよくテストされていて、そして商用のビデオゲームや様々なAIプロジェクトで使われています。

そして私が実際に最初に書いたチュートリアルがあります。


5


これは C#の実装で、言語を構築している人の一人によって行われました。


3


異なるプログラミング言語のソースコードとデモ:

各言語のデモのリスト

C:1 Java:3処理:1 ActionScript 3(Flash):4 Flex(Flash):1 Javascript:6 C#:1 Ruby:1プロローグ:1 Unity:1 Lua:1

http://theory.stanford.edu/~amitp/GameProgramming / ImplementationNotes.html#source-code-and-demos [さまざまな言語のPathfindingデモ]

楽しい :)


1


http://www.fatvat.co.uk/2009/07/searching-graphs.html[Clojure]の実装で、大きくhttp://norvig.com/paip.html[PAIP]で与えられた例に基づいています。


1


実装ではありませんが、http://theory.stanford.edu/~amitp/GameProgramming / AStarComparison.htmlがアルゴリズムの特に明確な説明であることがわかりました。 実装を容易にするための擬似コードと、openを実装するために使用できるさまざまなデータ構造の詳細なレビューがあります。 限られた移動角度しかサポートしないシステムで直線の近似を得ること、一般的な落とし穴(例: 実際の移動コストとは異なるスケールのヒューリスティックを使用すること、およびいくつかの最適化(例: グリッドではなく一定のコストの地域で作業する


1


http://www.redblobgames.com/pathfinding/a-star/introduction.html[interactiveチュートリアルと一緒にhttp://www.redblobgames.com/pathfinding/a-star/implementation.html[PythonおよびCのソースコード] ]。 このコードは一般にグラフで機能するように書かれており、グリッドに固有のものではありません(Web上のA *の多くの例に見られるように)。 プライオリティキューにバイナリヒープを使用します(PythonとCの両方が標準ライブラリにバイナリヒープを持っています)。 私はそのページにBreadth First Search、Dijkstraのアルゴリズム、そしてA *を持っています。 コードはかなり短いです(私が見つけるほとんどのA *サンプルコードよりも短いです)。


0


VB6の実装

プロセスを段階的に進めて、アルゴリズムがどのように機能するかをよく理解できるため、これは特に便利です。 これは、アルゴリズムを他の言語に変換するときに非常に有益です。


0


最適化されたhttps://github.com/graphhopper/graphhopper/blob/master/core/src/main/java/com / graphhopper / routing / AStar.java [Java実装]がGraphHopperで利用可能です。