合同会社小村ソフト
第 6 章

行き詰まりを見抜き、別の場所から再開する

最小歩幅でどの方向にも進めなくなったら、そこを最終解と決めつけず、最高点を記録して別の場所から試す。

「動けない」と「最高である」は別のこと

Score
100                     /\
                       /  \
 80       /\          /    \
         /  \________/      \
        ↑
     ここで停止

どちらへ動いても悪化する地点は、その近所ではいちばん高い場所——局所的な山頂です。しかし、全体でいちばん高いとは限りません。ブラックボックス相手では地形が見えないので、一回の山登りの結果だけで「これが最高だ」と判断しない仕組みが必要になります。それが再出発です。

再出発してよいのは、3条件がそろったとき

  1. 歩幅を最小まで縮めた。
  2. 軸方向と、追加した斜め方向を一巡した。
  3. どの候補も現在地を改善しなかった。

3つそろって初めて、その試行は終了です。逆に言えば、大きな歩幅を残したまま、数方向の失敗だけで再出発するのは早すぎます。まだこの場所でやれることが残っています。

それまでの最高点は、試行記録へ移す

再出発するとき、前の最高点を現在地カードに残したままにすると、新しい場所のScoreが前より低いというだけで一歩も動けなくなります。そこで、試行そのものを区切ります。

置き場所そこに残すもの
試行記録終了した試行の最高入力と最高Score
新しい盤面新しい現在地とそのScore、初期歩幅

新しい試行の中では、持ち歩く状態はまた「現在地・最高点・歩幅」の3つだけに戻ります。どの試行の結果を最終的に採用するかは、すべて終わってから試行記録どうしを比べて決めます。

新しい開始点は、前の山から遠くに置く

前の最高点のすぐ隣から再開すると、高い確率で同じ山に登り直すだけになります。各変数の範囲を大きく区切り、まだ調べていない側から開始点を選びます。

  • 左下で終わったなら、右上から始める
  • どの変数も低めで終わったなら、高めの値を含む点を選ぶ
  • 何回も行うなら、開始点をあらかじめ問題カードに書いておく

厳密な乱数は要りません。「前と明らかに違う場所」を選べれば、紙の演習としては十分です。

紙上課題

紙の上で答えを出してから、ここで採点できます。

Q1. Δ=4で二方向が失敗しただけでは再出発しないのはなぜですか。

Q2. 最小歩幅で全方向が失敗しました。盤面から試行記録へ移すものはどれですか。

Q3. 前回の最高点が(2,2)だったとき、(3,2)ではなく(8,8)を開始点に選ぶ利点は何ですか。

Q4. 二回の試行でScore 80と96を得ました。最終的に残す入力はどう決めますか。