回答:
実際にあなたの質問に答えるには、重みのないグリッドに沿って垂直/水平に移動するように制約されている場合、マンハッテン距離は一定です(これはウィキペディアの定義によって簡単に表示できます)。そうです、あなたの場合、閉じたセットのノードを再チェックすることを避けることができます。
ただし、斜めまたは任意の角度の移動を許可すると、斜めのコストを過大評価するため、マンハッテン距離は許容できなくなります。これは、必ずしも一貫性がないことを意味します。
h(x) = min(manhattan(p1), manhattan(p2))
(つまり、p1またはp2が適切な終了点であり、最も近い終了点に到達したい)これはh(x)
まだ単調ですか?
h(x, p1)
、h(x, p2)
一貫性min(h(x,p1), h(x,p2))
もあります。これは、ウィキペディア上の定義から示すことは容易である(我々がいることを表示する必要があるmin(h(x, p1), h(x, p2)) <= distance(x,y) + min(h(y, p1), h(y, p2))
すべてのノードのためにx
とy
、それらの間のエッジと今では想定しています。h(x, p1)
最小であり、あなたはそれが間違いだということを示すことができる<=
という事実を利用して、右側両方のヒューリスティックは一貫していますか?)
はい、2点間のマンハッタン距離は常に同じであり、2点間の通常の距離と同じです。マンハッタン距離は、2点間を走る線のXおよびY成分と考えることができます。
この画像(Wikipediaから)は、これをよく示しています。
緑色の線は、実際の距離です。
青、赤および黄色の線はすべて同一のマンハッタン距離(12単位)を表します。動きのどのような組み合わせに関係なくアップして右あなたは右下の左下の点から描画は、あなたが同じ総マンハッタン距離を取得します。
h(x) = 1000
、明らかに一貫性がありません)。彼はノードの再チェックを避けることができますが、これはManhatten距離が一貫しているためです。この答えは示していません。
2*manhatten
それを満たしますが、一貫していません。
Byte56の答えの延長で、私はあなたの特定のデータセットで、使用していることを、指摘したいのマンハッタン距離をあなたのヒューリスティック機能としては、実際には常になります完璧なヒューリスティックそれは常に返されるという意味で、実際のパスコストを(そこにあると仮定しますパスを「ブロック」するものはありません)。
また、正しい方向(水平方向または垂直方向)のすべてのノードが同じ予想距離をもたらすことに注意する必要があります(目標までの距離が等しく短いため)。優先順位キュー(オープンセット)は、優先順位が同じ場合、最後に追加されたノード(LIFO-後入れ先出し)を最初にデキューする必要があることに注意してください。そうすることで、最適なパスに到達するノードのみを調べます。FIFO(先入れ先出し)方式で同等に適切なノードを調べると、最適なパスの一部であるすべてのノードを効果的に調べることになります。この問題は、目標ノードへの複数の同等に良好なパスがあるために発生します。
「常に」一貫しているとはどういう意味かわかりません。固定グリッド上のマンハッタン距離は、とられる経路とは無関係ですか?はい、Byte56の答えが言ったように。
ただし、たとえば、マンハッタン距離は回転下で不変ではありません。たとえば、原点と点の間のマンハッタン距離(L1-norm)(10,10)
は|10-0| + |10-0| = 20
です。ただし、座標を45度回転すると(固定点はグリッドの方向の1つに沿って配置されます)、同じ点がになり(10sqrt(2),0)
、マンハッタンの原点からの距離がになり10sqrt(2)~14.14
ます。