最小制約値とは何ですか?


11

制約充足問題では、ヒューリスティックを使用してbactrackingソルバーのパフォーマンスを改善できます。単純なバックトラッキングソルバーに一般的に与えられる3つのヒューリスティックは次のとおりです。

  • 最小残り値(この変数にまだ有効な値の数)
  • 度ヒューリスティック(この変数の影響を受ける他の変数の数)
  • 最小制約値(他の変数に対して他のほとんどの値を残す値)

最初の2つはかなり明白で、実装は簡単です。最初に、ドメイン内に残っている値が最も少ない変数を選択します。タイがある場合は、他のほとんどの変数に影響を与える変数を選択します。このようにして、ソルバーの親ステップが不適切な割り当てを選択した場合、他の多くの要素に影響を与える最小の値が残っている変数を選択すると、より早く発見できるため、時間を節約できます。

これらはシンプルで明確に定義されており、実装も簡単です。

最小制約値は、どこを見ても明確に定義されていません。人工知能:現代のアプローチ(ラッセル&ノーヴィグ)は次のように述べています。

制約グラフ内の隣接する変数の選択が最も少ない値を優先します。

「最小制約値」を検索すると、この教科書に基づいた多くの大学のスライドショーが表示されただけで、アルゴリズムでこれを行う方法についての詳細はありませんでした。

このヒューリスティックの唯一の例は、値の1つの選択が隣接する変数のすべての選択を排除し、もう1つの値は排除しない場合です。この例の問題は、これが取るに​​足らないケースであり、潜在的な割り当てが問題の制約との整合性がチェックされるとすぐに排除されることです。したがって、私が見つけたすべての例で、最小の制約値のヒューリスティックは、冗長なチェックを追加することによる小さな悪影響を除いて、実際にはソルバーのパフォーマンスにまったくメリットがありませんでした。

私が考えることができる他の唯一のことは、各割り当ての隣接する変数の可能な割り当てをテストし、この変数の可能な割り当てごとに存在する隣接の可能な割り当ての数を数え、この変数の値を並べることですその値が選択された場合に使用可能なネイバー割り当ての数に基づく。ただし、これによりランダムな順序よりも改善されるかどうかはわかりません。これには、多数の変数の組み合わせのテストと、カウントの結果に基づく並べ替えの両方が必要になるためです。

誰でも最小制約値のより有用な説明を提供し、その最小制約値のバージョンが実際にどのように改善をもたらすかを説明できますか?


AI:AMA(pp。228)は、最小の制約値ヒューリスティックがハラリックとエリオット(1980)によって提案されたと述べています。論文(ここにあります)はAI:AMAで使用されているものとはかなり異なる言語を使用しており、どのセクションがLCVヒューリスティックを参照しているかを判断するのに問題があります。
ライアン、

回答:


3

このリンクを参照してください:

https://people.cs.pitt.edu/~wiebe/courses/CS2710/lectures/constraintSat.example.txt

最初に変数 "O"を選択し、次にすべての有効な値 "i"で "O"をテストして、 "O"の隣接する "N"の削減数を確認します。それらすべてを追加します。削減の少ない「i」を選択します。

   sums = {0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0}
   For i from 0 to 9:  
     plug "o=i" into the constraint formulas
     For each neighbor "N" of "o" in the constraint graph:
       sums[i] += the number of values remaining for "N"

次のように「i」を選択します。

sums[i] = MAX{sums[i] | for all "i" that is a member of "O",s valid values}

これがあなたの答えを見つけるのに役立つことを願っています!


1
これは応答しませんexplain how that version of least-constraining-value would actually yield an improvement?
skrtbhtngr

1

ここでの主なことは、これらのヒューリスティックはソルバーが記述されているタスクに応じて適用されるということです。そして、変数の選択された値が別の変数のドメインに単一の値を残さない可能性がある場合(1つのソリューションのみで非常に制約された問題があるとしましょう)、ソリューションは停止します。 。そして、ランダムな検索は、正しい道をたどって、決定と間違った道につながる可能性があります。そして、それがうまくいかない場合は、バックトラックを実行する必要があり(競合によるバックジャンプを参照)、計算時間がかかります。しかし、LCVヒューリスティックを使用するアルゴリズムは、より正確なパスをたどる可能性が高く、リターンは必要ありません。しかし、制約の少ない問題がある場合、ランダム検索のようになると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.