たとえば、次の問題があります。
適用できる唯一の演算子は次のとおりです。
- 構造物から一番上のブロックを下に置く
- ストラクチャーにないブロックをストラクチャーの一番上に配置する
私はヒューリスティック関数を持っています:
- h(n) = ブロックが正しく配置されている場合はサポート ブロックごとに +1、ブロックが正しく配置されていない場合はサポート ブロックごとに -1。
この例では、「A」ブロックが正しく配置されているため、A の下のサポート ブロックごとに +3 を取得します。「D」が正しく配置されていないため、-2 を取得します。C が正しく配置されている場合、別の +1 を取得します。したがって、ヒューリスティック関数は 3 + 1 - 2 = +2 の値を返すようになりました。
ここでのアルゴリズムに基づいて、アルゴリズムは目標状態に達したときにのみ終了し、より良いヒューリスティック値が得られた場合にのみ、現在の状態として次の状態を選択します。ただし、上記で作成したケースでは続行できなくなりました。構造から A を下に置くと、以前の値 (+2) よりも悪いヒューリスティック値 -1 が得られます。
例を変更した理由 Simple Hill Climbing アルゴリズムで極大問題に遭遇したときを示したいのですが、これは極大問題ですよね? 別の質問ですが、アルゴリズムは目標状態に達したときにのみ終了すると言っていますが、終了することはありません。それとも、近隣の他の州がもはやより良い結果を出さなくなったときに、それも終了すると仮定するのは正しいですか?