良い方向を追い、一巡して確かめる
良くなった方向は続け、悪くなったら戻る。一方向の失敗ではなく、一巡の結果で次の判断をする。
良くなった方向は、すぐもう一度試す
(4,7,2,8) → 63
X1を+1歩 → (6,7,2,8) → 71 採用
同じ方向 → (8,7,2,8) → 76 採用
同じ方向 → (10,7,2,8) → 72 不採用・戻る
ある方向で改善したら、別のカードに移る前に、まず同じ方向をもう一度試します。改善が続くかぎり繰り返します。せっかく見つけた良い傾向を、一歩だけで手放さないためです。
「戻る」とは、候補を現在地にしないこと
上の例の最後で、Scoreは76から72に下がりました。このとき「戻る」といっても、消しゴムで何かを消す必要はありません。悪化した候補(10,7,2,8)は記録票に履歴として残し、現在地カードを(8,7,2,8)のまま動かさない。それだけです。
盤面の候補欄と現在地欄を分けておけば、前の値を記憶しておく必要はなくなります。探索を支えるのは記憶力ではなく、手順を再現できる記録です。
行き詰まりは「一巡」で判定する
一巡 = いま使っている方向カード全部を、
同じ現在地・同じ歩幅で一度ずつ試すこと
一つの方向で失敗しただけでは、行き詰まりとは言えません。手持ちの方向カードをすべて一度ずつ試し、どれも改善しなかったときに、初めて「この歩幅では行き詰まった」と判定します。歩幅を小さくするのは、そのあとです。
ただし、一巡の途中で改善が出たら、その候補が新しい現在地です。残りのカードを消化する必要はなく、一巡はそこで打ち切って、新しい現在地から仕切り直します。
方向カードの順番は固定しておく
軸方向なら、たとえば+X1, -X1, +X2, -X2, …のように、カードを並べる順番を決めておきます。順番が固定されていれば、まだ試していない方向がひと目で分かり、同じ方向を重複して試す事故も防げます。
例外は、改善した方向です。そのカードだけは列から抜き出し、改善が止まるまで連続で使います。止まったら、また列の先頭から一巡を始めます。
紙上課題
紙の上で答えを出してから、ここで採点できます。
Q1. Scoreが63→71になった直後、次に試すべき方向はどれですか。
改善が出た方向は、別のカードに移る前にもう一度試します。改善が続くかぎり繰り返し、止まったら列の先頭から一巡に戻ります。
Q2. 同じ方向を続けて71→68になりました。現在地はどこに置きますか。
悪化した候補は記録票に履歴として残すだけで、現在地カードは動かしません。「戻る」とは、候補を現在地にしないことです。
Q3. 8枚の軸方向カードのうち3枚が失敗しただけの段階で、歩幅を縮めてはいけないのはなぜですか。
行き詰まりの判定単位は「一巡」です。残りの方向のどれかで改善するかもしれないうちは、この歩幅を見限る根拠がありません。
Q4. 一巡の途中で改善が出たとき、残りのカードを続けずに新しい現在地からやり直すのはなぜですか。
一巡は「同じ現在地・同じ歩幅で全カードを試すこと」です。現在地が動いた時点で、それまでの一巡の前提が変わるので、新しい現在地から仕切り直します。