【ばっくとらっきんぐ】
バックトラッキング とは?
💡 行き止まりなら「引き返して」別の道を試す
📌 このページのポイント
全探索と何が違うの?
全探索はすべての組み合わせを試す。バックトラッキングは途中で「この先は条件を満たさない」と判断したら、その枝を丸ごとスキップ(枝刈り)する。数独で1マスに数字を入れてルール違反なら即座に戻って別の数字を試す。全パターンを試すより大幅に速くなるんだよ
どうやって実装するの?
枝刈りのコツは?
①できるだけ早い段階で不可能な枝を切る(制約伝播)、②選択肢が少ないものから先に決める(Most Constrained Variable)、③対称性を利用して重複探索を避ける。N-Queen問題なら行ごとに1つずつクイーンを置くことで探索空間を減らせる。枝刈りの良し悪しで実行時間が桁違いに変わるよ
実務で使う場面は?
まとめ:ざっくりこれだけ覚えればOK!
「バックトラッキング」って出てきたら「ダメなら戻って別を試す探索アルゴリズム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Backtracking」 = 後戻り
💬 Back(戻る)+ Tracking(追跡)。ダメなら後戻りして別の道を探すんだよ