を使用することを計画している場合にも、consistenヒューリスティックを提供しなければならない、言ったようにあなたがまだこの問題に悩まされている場合、他の答え/コメントはあなたに部分的な答えを与えるだけです - ここでは問題空間に亀裂があります。
実際には、(ほとんど)並べ替えられていないMポイントパスをキャプチャするために、いくつかの変更を加えてA *を使用することができます。変更する必要があるのは、ヒューリスティックおよび終了基準だけです。
まず、M点を通る経路を考慮してヒューリスティックを変更する必要があります。ヒューリスティックは許容可能で一貫性がなければならないため、真のパスコスト以下の値に等しくなければならず、目標に近づくにつれて減少する(単調増加でなければならない)。
ここでは、あなたが完了しなければならないM個のサブパスとして考えることができます。それぞれのサブパスは、通常のパスとして機能します。したがって、単一の点グラフ(終端スペースのみ)では、ユークリッド距離のような標準的なヒューリスティックを使用することができます。これは、直線的な経路が最適であり、理想的な状況(それは容認できる)の下ではうまく行かないことを示唆する貪欲な推定値です。
2つ以上のパスの場合、欲張りのアプローチでは同様に、ポイント間のブロックされていない直線パスが最も速いと言います。それは、あなたがさらに遠ざかり、さらに良いスコアを持つことができないので、やはり一貫したヒューリスティックです。難しい部分は、許容可能なヒューリスティックを維持するために、M点の順序が障害なしで最も速いピッキングです。すべてのタイルが現在のタイルからM個のポイント、M-1個の残りのポイント、...、〜までのユークリッド距離を最初に検索することで、すべてのタイルが歩行可能であるグラフ内のMポイントの最適な選択を見つけることができます終端の四角。この操作は、到達する正方形ごとに行う必要があるため高価ですが、動的プログラミングまたは検索キャッシングを使用して、必要な償却計算を1ステップあたりO(M)に減らすことができます。
障害物なしで最速になるMポイントのパスを取得すると、そのパスの各ポイントと現在の位置の間のユークリッド距離をヒューリスティックとして使用できます。これは貪欲な動きの推定値なので、常に許容されます(推定コストを上回ることはできません)。次の貪欲な最適点から離れて現在のタイルとは異なる欲張り点を選ぶことができないため、容認できないだろう。
最後に、終了点をMポイントに達するまで変更する必要があります。最後のポイントは終了するタイルです。これは、Mを構築する必要なしにMグラフを歩くことを模倣する。可能なグラフを歩く。提供されたヒューリスティックは、基本的なアルゴリズムを変更することなくA *に魔法をさせ、ジェネリックグリッド上のヒューリスティックに必要な制約を維持しながら、あなたが得られるほど効果的でなければなりません。
ダイクストラのアルゴリズムを見ましたか? – Caesar
同じタイルのポイントを複数回拾うことはできますか?言い換えれば、グリッドにポイントを持つタイルを含むループがある場合、有効なパスに最終的な目的地に到着する前に必要な数のポイントを提示するループを含めることができますか? – dasblinkenlight
@Caesar「プレーン」ダイクストラ(またはFloyd-Warshall)は、最適化タスクに2番目の次元があるため、助けにはなりません。 – dasblinkenlight