行き詰まりを見抜き、別の場所から再開する
最小歩幅でどの方向にも進めなくなったら、そこを最終解と決めつけず、最高点を記録して別の場所から試す。
「動けない」と「最高である」は別のこと
Score
100 /\
/ \
80 /\ / \
/ \________/ \
↑
ここで停止
どちらへ動いても悪化する地点は、その近所ではいちばん高い場所——局所的な山頂です。しかし、全体でいちばん高いとは限りません。ブラックボックス相手では地形が見えないので、一回の山登りの結果だけで「これが最高だ」と判断しない仕組みが必要になります。それが再出発です。
再出発してよいのは、3条件がそろったとき
- 歩幅を最小まで縮めた。
- 軸方向と、追加した斜め方向を一巡した。
- どの候補も現在地を改善しなかった。
3つそろって初めて、その試行は終了です。逆に言えば、大きな歩幅を残したまま、数方向の失敗だけで再出発するのは早すぎます。まだこの場所でやれることが残っています。
それまでの最高点は、試行記録へ移す
再出発するとき、前の最高点を現在地カードに残したままにすると、新しい場所のScoreが前より低いというだけで一歩も動けなくなります。そこで、試行そのものを区切ります。
| 置き場所 | そこに残すもの |
|---|---|
| 試行記録 | 終了した試行の最高入力と最高Score |
| 新しい盤面 | 新しい現在地とそのScore、初期歩幅 |
新しい試行の中では、持ち歩く状態はまた「現在地・最高点・歩幅」の3つだけに戻ります。どの試行の結果を最終的に採用するかは、すべて終わってから試行記録どうしを比べて決めます。
新しい開始点は、前の山から遠くに置く
前の最高点のすぐ隣から再開すると、高い確率で同じ山に登り直すだけになります。各変数の範囲を大きく区切り、まだ調べていない側から開始点を選びます。
- 左下で終わったなら、右上から始める
- どの変数も低めで終わったなら、高めの値を含む点を選ぶ
- 何回も行うなら、開始点をあらかじめ問題カードに書いておく
厳密な乱数は要りません。「前と明らかに違う場所」を選べれば、紙の演習としては十分です。
紙上課題
紙の上で答えを出してから、ここで採点できます。
Q1. Δ=4で二方向が失敗しただけでは再出発しないのはなぜですか。
再出発の条件は「最小歩幅まで縮めた」「方向を一巡した」「どれも改善しなかった」の3つがそろったときです。大きな歩幅と未試行の方向が残っているうちは、まだこの場所を見限る根拠がありません。
Q2. 最小歩幅で全方向が失敗しました。盤面から試行記録へ移すものはどれですか。
残すのは「この試行でどこまで行けたか」、つまり最高入力と最高Scoreです。新しい盤面は、新しい現在地・そのScore・初期歩幅の3つだけで再スタートします。
Q3. 前回の最高点が(2,2)だったとき、(3,2)ではなく(8,8)を開始点に選ぶ利点は何ですか。
(3,2)から始めると、高い確率で同じ山に登り直すだけになります。前回と明らかに違う場所から始めることが、別の(もっと高いかもしれない)山を見つける唯一の手がかりです。
Q4. 二回の試行でScore 80と96を得ました。最終的に残す入力はどう決めますか。
試行が終わったら、試行記録どうしを最高Scoreで比べるだけです。新しいか古いか、何回問い合わせたかではなく、最も高いScoreを出した入力が最終解です。