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

粗く探し、細かく詰める

最初は大きな歩幅で場所をあたり、良い場所に近づいてから小さな歩幅へ切り替える。

歩幅は、探索の解像度

歩幅Δは「一回にどれだけ動くか」であると同時に、探索の解像度でもあります。Δ=4なら少ない問い合わせで遠くまで探せますが、幅の狭い山頂は飛び越えてしまいます。Δ=0.5なら細かく詰められますが、遠くへ行くには何回も問い合わせが必要です。

だから、両方を順番に使います。

粗く探す:     Δ = 8 → 4
細かく詰める: Δ = 2 → 1 → 0.5

歩幅を縮める条件は、一つだけ

同じ現在地・同じ歩幅で、使える方向を一巡しても改善しなかったとき。これが歩幅を縮めてよい唯一の条件です。

カード1枚が失敗しただけで縮めてはいけません。早く縮めすぎると、いま居る場所の近所を細かく調べるだけになり、遠くにある良い場所に届かなくなります。

歩幅の列は、始める前に決めておく

探索の途中で「なんとなく3.7にしてみる」といった思いつきの変更はしません。使う歩幅の列を最初に決め、上から順に使います。

変数の刻み歩幅列の例
整数だけ8 → 4 → 2 → 1
0.5刻み4 → 2 → 1 → 0.5
割合で動かす20% → 10% → 5% → 2.5%

印刷キットの歩幅チップを一列に並べ、いま使っているチップだけを盤面に置けば、頭で状態を覚えておく必要がなくなります。

最小歩幅まで来たら、その試行は終わり

いちばん小さい歩幅も、最初に決めておきます。最小歩幅で一巡しても改善しなければ、その試行は終了です。さらに細かい歩幅を発明して続けるのではなく、最高点を試行記録に残し、必要なら別の場所から新しい試行を始めます(第6章)。

紙上課題

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

Q1. Δ=4+X1が失敗し、−X1が改善しました。次の候補に使う歩幅はいくつですか。

Q2. 8方向すべてで改善しませんでした。Δ=4を次にいくつへ更新しますか(歩幅列 8→4→2→1)。

Q3. 最初からΔ=0.5で探すと問い合わせ回数が増えるのはなぜですか。

Q4. 最小歩幅で一巡しても改善しませんでした。次にとる行動はどれですか。