バックトラッキング(Nクイーン)
女王を1行ずつ置き、効き筋が衝突したら1手戻る探索を可視化。盤面と再帰木を連動させ、枝刈りで探索木が刈られる様子を見ます。
6 × 6
8 手/秒
現在の行(深さ)
—
配置済みの女王
—
総試行数(置こうとした回数)
—
バックトラック回数
—
見つけた解
—
盤面(行ごとに女王を配置 / 赤=効き筋衝突で却下)
再帰探索木(緑=確定枝・赤=枝刈り・青枠=現在ノード)
バックトラッキングは「ダメな選択肢を試したらすぐ戻ってやり直す」深さ優先の探索法です。
Nクイーンでは 各行に女王を1つずつ置きます。新しい女王が既に置いた女王と同じ列・斜め(効き筋)に当たらないかを調べ、安全なら次の行へ進みます。
どの列も置けない(または最後まで進めない)と分かったら、1手戻って別の列を試します。これが「バックトラック」です。効き筋チェック=枝刈りにより、明らかにダメな枝を丸ごと探索せずに済むため、試行数が劇的に減ります。
Nクイーンでは 各行に女王を1つずつ置きます。新しい女王が既に置いた女王と同じ列・斜め(効き筋)に当たらないかを調べ、安全なら次の行へ進みます。
どの列も置けない(または最後まで進めない)と分かったら、1手戻って別の列を試します。これが「バックトラック」です。効き筋チェック=枝刈りにより、明らかにダメな枝を丸ごと探索せずに済むため、試行数が劇的に減ります。
いま何が起きている?
ここがポイント
- 深さ優先で1行ずつ ── 行 = 再帰の深さ。安全な列が見つかれば次の行へ潜る。
- 衝突したら戻る ── 同じ列・斜めに当たると却下(赤)。全列ダメなら親へバックトラック。
- 枝刈りが速さの源 ── 効き筋チェックでダメな枝を即切る。「なし」に切り替えると試行数が爆発する(N^N まで)。
- 木と盤は同じ探索 ── 再帰木の現在ノードが盤の現在行に対応。刈られた赤い枝=置けなかった列。