--15puzzle問題の探索結果--

-15puzzleの探索-

ここでは、15パズル問題を実際に探索した結果についてまとめる。 探索方法としては、幅優先探索、A*探索について行い、 ヒューリスティック関数はマンハッタン距離を用いた。

-幅優先探索-

幅優先探索は、ツリーの深さによって探索を行っていく方法である。 よって、盤面の状態として空白の位置が同じであれば生成されるツリー は同じである。
測定では空白のタイルの位置が角にある場合(状態1)、
空白のタイルの位置が角ではない4辺にある場合(状態2)、
空白のタイルの位置が中心4マス場合(状態3)
のそれぞれで行った。
以下に、深さごとの状態の数、及び、その深さまでの合計数を示す。

状態1 状態2 状態3
深さ 状態数状態数の合計 状態数状態数の合計 状態数状態数の合計
0 1 1 1 1 1 1
1 2 3 3 4 4 5
2 4 7 6 10 10 15
3 10 17 14 24 20 35
4 24 41 32 56 38 73
5 54 95 66 122 80 153
6 107 202 134 256 174 327
7 212 414 280 536 372 699
8 446 860 585 1121 762 1461
9 946 1860 1214 2335 1540 3001
10 1948 3754 2462 4794 3072 6073
11 3938 7692 4946 9743 6196 12269
12 7808 15500 9861 19604 12356 24625
13 15544 31044 19600 39204 24516 49141
14 30812 61865 38688 77892 48719 97320
15 60842 122707 76086 153978 94356 191676
16 119000 241707 148435 302413 183432 375180
17 231844 473551 288098 590511 355330 730438
18 447342 920893 554970 1145481 682250 1412688
19 859744 1780673 1062628 2208109 1301874 2714562
20 1637383 3418020 2016814 4224923 2460591 5175153

-A*探索-

A*探索はヒューリスティック関数を用いて探索を行うため、盤面の状態によって ヒューリスティック関数から求められる値が変わる。よって、幅優先探索と違い、 初期状態ごとに探索する状態が違うことになる。以下に解くために必要な手数と そのときにかかった探索数の値の一例を示す。

深さ 状態数 深さ 状態数
1 1 11 166
2 5 12 716
3 11 13 2303
4 19 14 3050
5 49 15 5180
6 53 16 37398
7 58 17 37400
8 81 18 37726
9 89 19 37796
10 130 20 37981

以上の結果から分かるように、A*探索はヒューリスティック関数を用いて 探索を行うため、幅優先探索と比べて探索数が大幅に減少していることが 分かる。
15puzzle_A*探索プログラム


戻る