ソルバーと解法

スライドパズル ソルバー — アルゴリズム比較

A*とIDA*、マンハッタン距離とウォーキング距離、加法的パターンデータベース。スライドパズルを解く6つのアルゴリズム、それぞれの得意なこと、限界について。

更新日 2026-05-20 8 分で読めます

スライドパズル ソルバー

「シャッフル」でランダムな盤面、「編集」で自分の盤面を入力できます。「解く」を押すと手順を1手ずつ再生します。3×3 の解は最短手順です。

スライドパズルのソルバーを実装しようとしていて、どのアルゴリズムを使うか迷っている場合、この記事では6つの代表的なアルゴリズムを、速度・メモリ・実装の複雑さ・快適に扱える盤面サイズの観点で比較します。3×3、4×4、5×5では答えが異なります。

1. 幅優先探索(BFS)

最も単純な正しいアルゴリズムです。ゴールが見つかるまで状態をレベル順に探索します。

2. A* + マンハッタン距離

最初の本格的なアルゴリズムです。BFSと同じ構造ですが、状態は f = g + h(hはマンハッタン距離ヒューリスティック)で並べた優先キューから取り出されます。

3. A* + マンハッタン距離 + 線形衝突

同じ行にある2つのタイルが、互いにゴール行に入っているが順序が逆の場合(列も同様)、ヒューリスティックに2手を加算します。この2つは互いをすり抜けなければならず、マンハッタン距離ではそれが見えません。

4. IDA* + マンハッタン距離 + 線形衝突

反復深化A*です。f-コストを深さの基準として深さ制限DFSを行い、各イテレーションでしきい値を引き上げます。再探索によって時間とメモリをトレードオフします。

5. IDA* + ウォーキング距離

ウォーキング距離はより厳密なヒューリスティックです。各タイル配置を行のみに射影した状態に対して、各タイルを正しい行に入れるために必要な行スワップ操作の最小数を事前計算します。列も同様に。両者を足します。

マンハッタンが見逃している「同じ行のタイルが同じスロットを争っている」状況を捉えます。

6. IDA* + 加法的分離パターンデータベース

スライドパズルで知られている最強のヒューリスティックです。タイルを分離したグループに分割します(15パズルの一般的な分割は7+8、または5+5+5)。各グループについて、そのグループのタイルをゴール位置に並べるためのコストを、そのグループの全配置に対して事前計算します。探索時には各グループの値を参照して合計します。

推奨まとめ

今日ソルバーを書くなら:

機械学習はどうか

2026年時点で妥当な質問です。ニューラルネットワークのヒューリスティックは少なくとも2014年から研究されており、スライドパズルに対して高速なヒューリスティックを生成できます。問題は、通常許容的でないこと — 過大評価が可能で、その結果アルゴリズムが最適解を保証しなくなります。難易度調整のために保証された最適解が必要なアプリ開発者には、古典的なパターンデータベースが依然として正しいツールです。

研究への興味としては、ニューラルネットワークで訓練されたパターンデータベースが最も難しい15パズルインスタンスでわずかな高速化をもたらします。学術論文には有用ですが、製品リリースには些末な改善です。

実際のアプリに搭載されるもの

ヒント生成のためにソルバーが必要なモバイルアプリは、ほぼ常に次の構成に行き着きます:

これが落ち着いたスマホアプリのための適切なスタックです。Slide Puzzleのヒントボタンはまさにこの方法で動作しています。