3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【図解】A*アルゴリズムで最短経路問題を解く方法

Last updated at Posted at 2020-10-31

本稿では,A*アルゴリズムによって最短経路を求める方法を,沢山の図を使って分かりやすく説明していきます.(厳密な説明ではないことにご注意ください)

早速,以下のような迷路でスタートとゴールを結ぶ最短経路を求めていきます.
この迷路では,一辺の長さが1の正方形が並べられており,各正方形の上を1マスずつ移動していきます.
ここでは一つの正方形をノードと呼ぶことにします.
移動できる方向は,基本的に縦横斜めの8方向ですが,黒塗りのノード(障害物)には移動できません.
1.PNG
それぞれのノードに対して,g, h, f という3つのパラメータを個別に割り当てていきます.
g はノードとスタートとの直線距離を表しており,h はノードとゴールとの直線距離を表しています.
f は g と h の和です.

全体の流れは以下のようになります.

  1. スタートから順に,各ノードの探索を始める.
  2. 一度通過したノードを封鎖していく.
  3. 上記 1, 2 をゴールに到達するまで繰り返す.
  4. 今までの探索結果を頼りに,ゴールからスタートへ逆走すると最短経路が求まる.

まずは,スタートの周辺を探索していきます.探索済みのノードには,g, h, f の値が割り当てられます.
2.PNG
そして,探索済みのノード(黄色)の中で,最も f の値が小さいノードに移動します.ここでは,f=6 が最小です.


現在のノードから,さらに周辺のノードを探索し,さっきまで自分が居たノードを封鎖します.
3.PNG
そして,探索済みのノード(黄色)の中で,最も f の値が小さいノードに移動します.


現在のノードから,さらに周辺のノードを探索し,さっきまで自分が居たノードを封鎖します.
4.PNG
そして,探索済みのノード(黄色)の中で,最も f の値が小さいノードに移動します.


現在のノードから,さらに周辺のノードを探索しようとしますが,ここでは周辺に探索できるノードが無いため,探索は一旦諦めます.さっきまで自分が居たノードを封鎖します.
5.PNG
そして,探索済みのノード(黄色)の中で,最も f の値が小さいノードに移動します.最も小さい f が複数あった場合は,どれか1つを適当に選びます.


現在のノードから,さらに周辺のノードを探索しようとしますが,ここでは周辺に探索できるノードが無いため,探索は一旦諦めます.さっきまで自分が居たノードを封鎖します.
6.PNG
そして,探索済みのノード(黄色)の中で,最も f の値が小さいノードに移動します.


現在のノードから,さらに周辺のノードを探索しようとしますが,ここでは周辺に探索できるノードが無いため,探索は一旦諦めます.さっきまで自分が居たノードを封鎖します.
7.PNG
そして,探索済みのノード(黄色)の中で,最も f の値が小さいノードに移動します.最も小さい f が複数あった場合は,どれか1つを適当に選びます.


前と同じ処理を繰り返します.
8.PNG
そうすると,スタートの右側にある6つのノードが封鎖されます.
9.PNG


現在のノードから,さらに周辺のノードを探索し,さっきまで自分が居たノードを封鎖します.
10.PNG
そして,探索済みのノード(黄色)の中で,最も f の値が小さいノードに移動します.


ここから先は,探索範囲が広がっていく過程をしばらく無言で並べていきます.

13.PNG

14.PNG

15.PNG

16.PNG

17.PNG


現在のノードから,さらに周辺のノードを探索した結果,ゴールを発見したのでゴールに移動し,さっきまで自分が居たノードを封鎖します.
18.PNG


最後に,ゴールからスタートに逆走することで最短経路が得られます.
逆走するための準備として,各ノードごとに親ノードの位置を記録しておく必要があります.

last2.jpg

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?