ヒューリスティック関数として使用すると、マンハッタン距離は単調になりますか?


25

正方形ベースのマップがあります。水平方向と垂直方向の移動のみが許可されます(対角線は不可)。移動コストは常に1です。

マンハッタン距離を距離ヒューリスティックとして使用して、そのマップにA *アルゴリズムを実装しています。このヒューリスティックな一貫性はありますか?g(node)CLOSEDセットにあるノードに対するチェックを回避できますか?

編集:一貫して私は単調という意味です。


1
移動コストがすべてのタイルで均一である場合、A *をジャンプポイント検索
ニックキャプリンガー

ねえ、いいね!
エミリアーノ

回答:


10

実際にあなたの質問に答えるには、重みのないグリッドに沿って垂直/水平に移動するように制約されている場合、マンハッテン距離は一定です(これはウィキペディアの定義によって簡単に表示できます)。そうです、あなたの場合、閉じたセットのノードを再チェックすることを避けることができます。

ただし、斜めまたは任意の角度の移動を許可すると、斜めのコストを過大評価するため、マンハッテン距離は許容できなくなります。これは、必ずしも一貫性がないことを意味します。


はい、これはまさに私が探していた種類の答えです。ヒューリスティック関数がどのような場合に起こるかを知っておくといいでしょうh(x) = min(manhattan(p1), manhattan(p2))(つまり、p1またはp2が適切な終了点であり、最も近い終了点に到達したい)これはh(x)まだ単調ですか?
エミリアーノ

1
@happy_emi:はい、一貫性がある場合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))すべてのノードのためにxy、それらの間のエッジと今では想定しています。h(x, p1)最小であり、あなたはそれが間違いだということを示すことができる<=という事実を利用して、右側両方のヒューリスティックは一貫していますか?)
BlueRaja-ダニーPflughoeft

31

はい、2点間のマンハッタン距離は常に同じであり、2点間の通常の距離と同じです。マンハッタン距離は、2点間を走る線のXおよびY成分と考えることができます。

この画像(Wikipediaから)は、これをよく示しています。

マンハッタン距離

緑色の線は、実際の距離です。

および黄色の線はすべて同一のマンハッタン距離(12単位)を表します。動きのどのような組み合わせに関係なくアップしてあなたは右下の左下の点から描画は、あなたが同じ総マンハッタン距離を取得します。


2
すばらしい答え:短くて、甘い、要点まで、きれいな絵で。
トム「ブルー」ピドック

1
この答えは近いですが、間違っています。この画像は、マンハッタンの距離が一貫 していることを示していません(実際、緑の線を距離とみなすと、一貫していません!)、および「マンハッタンの距離が「2つのポイントは常に同じ」ではありません(ステートメントはtrueでありh(x) = 1000、明らかに一貫性がありません)。彼ノードの再チェック避けることができますが、これはManhatten距離が一貫しているためです。この答えは示していません。
BlueRaja-ダニーPflughoeft

2
リンクした定義から、マンハッタン距離は一貫していると思います。緑の線の距離は、異なるヒューリスティックを使用しています。赤、青、黄色の線は、2つのノード間の距離が同じままであることを示しています(同じヒューリスティックを使用する場合)。近くに移動するとヒューリスティックが減少し、遠くに移動するとヒューリスティックが増加します。これは、OPの単調な要件を満たしています。各「交差点」にノードがあるグラフが構築されると、マンハッタン距離は一貫します。別のシナリオ(斜め方向の移動を許可するなど)である場合、ヒューリスティックは不適切です。
マイケルハウス

2
Manhatten Distanceは一貫していると既に述べましたが、あなたが言及した理由ではありません。あなたの答えは一貫性を示さず、コメントの議論も示しません。「一貫性のある/単調なヒューリスティック」には正確な定義があり(上記のリンクで示した)、これは混同していると思われる単調な関数とは異なります。述べる「近づくと、ヒューリスティックを低減し、遠くに移動すると、ヒューリスティックが増加」、それは例えば、一貫性のある表示するには十分ではありません。2*manhattenそれを満たしますが、一貫していません。
BlueRaja-ダニーPflughoeft

3
あなたはなぜそれが間違っていると言うのか分かりません、あなたはこの答えが不完全だと主張しているようです。あなたの答えの証拠は、「マンハッテン距離が一貫している...」と同じくらい弱いように見えます。その後、シナリオの違いがどのように受け入れられないかについて、質問の元の仕様を繰り返します。 。その答えが完全な数学的証明を必要とするようには感じませんでした。この質問にそれが必要だと思われる場合は、回答にそれを含めてください。私は投票します。建設的な批判をありがとう。
マイケルハウス

6

Byte56の答えの延長で、私はあなたの特定のデータセットで、使用していることを、指摘したいのマンハッタン距離をあなたのヒューリスティック機能としては、実際には常になります完璧なヒューリスティックそれは常に返されるという意味で、実際のパスコストを(そこにあると仮定しますパスを「ブロック」するものはありません)。

また、正しい方向(水平方向または垂直方向)のすべてのノードが同じ予想距離をもたらすことに注意する必要があります(目標までの距離が等しく短いため)。優先順位キュー(オープンセット)は、優先順位が同じ場合、最後に追加されたノード(LIFO-後入れ先出し)を最初にデキューする必要があることに注意してください。そうすることで、最適なパスに到達するノードのみを調べます。FIFO(先入れ先出し)方式で同等に適切なノードを調べると、最適なパスの一部であるすべてのノードを効果的に調べることになります。この問題は、目標ノードへの複数の同等に良好なパスがあるために発生します。


「(パスをブロックするものが何もないと仮定して)」 -それはかなり大きな仮定です。パスをブロックするものが何もない場合、最初にパス検索アルゴリズムを使用する必要はありません!
BlueRaja-ダニーPflughoeft

@ BlueRaja-DannyPflughoeft:それは本当です。Byte56の画像を見ると思い浮かびました。それでも残りは真実です。
トールキルホルムヤコブセン

4

「常に」一貫しているとはどういう意味かわかりません。固定グリッド上のマンハッタン距離は、とられる経路とは無関係ですか?はい、Byte56の答えが言ったように。

ただし、たとえば、マンハッタン距離は回転下で不変ではありません。たとえば、原点と点の間のマンハッタン距離(L1-norm(10,10)|10-0| + |10-0| = 20です。ただし、座標を45度回転すると(固定点はグリッドの方向の1つに沿って配置されます)、同じ点がになり(10sqrt(2),0)、マンハッタンの原点からの距離がになり10sqrt(2)~14.14ます。


これを指摘したことに対して+1。OTOH、マンハッタンの距離 90度の回転の下で不変です。これは実際、離散グリッド上で「一貫して」作成できる唯一の距離です
スティーブンスタドニッキー

1
良いキャッチですが、彼は水平と垂直の動きのみが許可されていると述べました。
トールキルホルムヤコブセン

1
元の質問は、単調な場合とほぼ同じでした。
エミリアーノ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.