チェスのナイトの動きだけを使って、どの2つのポイント間をすばやく見つける方法を探している問題があります。私の最初の考えは、A*
アルゴリズムまたはDijkstra's
アルゴリズムでしたが、私は騎士の動きだけが使用されていることを確認する方法がわかりません。より良いアルゴリズムを提案できれば助けてくれるでしょう。ありがとうございました。あなたが始めるどのソース広場、そしてあなたは、パズルを解決するために上陸する必要がある場所である先の広場、: チェスナイトの動きだけを使って1つのタイルから別のタイルに移動する単純なアルゴリズム
は、2つのパラメータを取り込み答え(SRC、DEST)と呼ばれる関数を記述します。この関数は、チェスナイトの動き(つまり、任意の方向の2つの正方形の直後にその方向に垂直な1つの正方形が続いている)を使用して、ソーススクエアからデスティネーションスクエアに移動するために必要な最小の移動数を表す整数を返します、またはその逆、「L」字形)。送信元と宛先の両方の正方形は0と63までの整数となり、以下の例のチェス盤のように番号が付けられている:あなたが与えられたノードのためのすべてのネイバーを見つける必要があるアルゴリズムについては
------------------------- | 0| 1| 2| 3| 4| 5| 6| 7| ------------------------- | 8| 9|10|11|12|13|14|15| ------------------------- |16|17|18|19|20|21|22|23| ------------------------- |24|25|26|27|28|29|30|31| ------------------------- |32|33|34|35|36|37|38|39| ------------------------- |40|41|42|43|44|45|46|47| ------------------------- |48|49|50|51|52|53|54|55| ------------------------- |56|57|58|59|60|61|62|63| -------------------------
ジョセフ、面白い問題をありがとう。答えに私のアプローチを追加しますが、すぐにいくつかのことを言いたいと思っています。 (1)問題に対する複数の最短解決策がある。 (2)xとyのオフセットを与えられた代数解が存在する。 (3)対称対称が8面あり(実際には4 x 2)、x> yとxとyの両方が正またはゼロの場合を調べることができます。 – xxyzzy