マンハッタン距離とは?新人エンジニアにやさしく解説!ヒューリスティックとの関係もバッチリ理解
こんにちは。ゆうせいです。
今回は「マンハッタン距離」という距離の概念と、それがヒューリスティック(Heuristic)とどう関わってくるのかを、新人エンジニア向けにやさしく、そして丁寧に解説していきます。
「距離ってユークリッド距離(直線距離)じゃないの?」と思った方、いるかもしれませんね。実は距離の考え方は一つではないんです。
さあ、一緒に学んでいきましょう!
マンハッタン距離とは?
そもそも「距離」って何?
まず「距離」と聞くと、ふつうは「直線で測った長さ」を思い浮かべますよね。これはユークリッド距離と呼ばれるもので、定規で測った長さのようなものです。
でも、たとえば下のような状況を考えてみてください。
例え話:ブロックで囲まれた街での移動
ニューヨークのマンハッタンでは、道が碁盤の目(グリッド)になっています。
ある交差点から2ブロック右、3ブロック上に行きたいとき、斜めにショートカットはできませんよね?
このとき通る距離は「右に2+上に3=5ブロック」です。
この「縦と横だけで移動したときの距離」が「マンハッタン距離(Manhattan Distance)」です。
マンハッタン距離の数式
2次元平面で2点 (x₁, y₁) と (x₂, y₂) のマンハッタン距離は、次のように計算します。
数式(記号バージョン):
D = |x₁ − x₂| + |y₁ − y₂|
数式(日本語バージョン):
「X座標の差の絶対値」+「Y座標の差の絶対値」
絶対値(ぜったいち)というのは「マイナスを取ってプラスにする」ことですね。
ヒューリスティックとの関係
では、なぜこのマンハッタン距離が重要なのか?
それは「ヒューリスティック関数」との深い関係があるからです。
ヒューリスティックとは?
ヒューリスティックとは、「経験則に基づいた近道を見つける方法」のことです。
たとえば、迷路を解くアルゴリズムの一つであるA*(エースター)探索では、今いる場所からゴールまでの「予想される距離」を使って、できるだけ早くゴールにたどり着こうとします。
この「予想される距離」にマンハッタン距離が使われるんです。
A*探索とマンハッタン距離
A*探索では、次のような関数を使います。
数式(記号):
f(n) = g(n) + h(n)
数式(日本語):
「スタートから今の点nまでの実際の距離」+「nからゴールまでの予想距離」
この h(n) の部分がヒューリスティック関数で、ここにマンハッタン距離を使うことが多いんです。
なぜマンハッタン距離が使われるの?
それは、グリッド状のマップでは最短経路の推測としてちょうど良いからです。
たとえば、上下左右にしか動けないロボットがあったら、斜めの距離は考えられませんよね。
その場合、マンハッタン距離を使うのが合理的です。
メリットとデメリット
メリット
- 計算が速い(平方根を使わない)
- グリッド状マップに合っている
- A*探索などに自然に組み込める
デメリット
- 斜め移動を考慮できない
- 状況によっては「過小評価」になってしまう(最短ではない可能性)
まとめ:なぜ知っておくべきか?
マンハッタン距離は、アルゴリズムの効率化やパス探索において基本かつ重要な概念です。特にゲーム開発やロボット制御など、「マス目上の移動」が発生する場面では大活躍します。
この距離の考え方がわかってくると、「なぜこの経路探索が速いのか?」という仕組みまで理解できるようになります。
今後の学習の指針
これからもっと深く学びたい方は、以下のステップを踏んでみましょう!
- A*探索のしくみを学ぶ(g(n), h(n), f(n) の関係)
- 他のヒューリスティック関数(ユークリッド距離やチェビシェフ距離)との違いを比較する
- 実際にコードで書いてみる(Pythonなどで簡単な迷路を解くプログラムを書いてみましょう)
いかがでしたか?
「距離」とひとことで言っても、使い方によって意味がガラッと変わるんです。まずは自分のアルゴリズムが「どんなルールで動くか」を理解することから始めてください。
またいつでも質問してくださいね!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。