確定的SATソルバー


8

次の質問があります。SATソルバーは確定的ですか?

たとえば、miniSATアルゴリズムとDPLLアルゴリズムについてです。それらは完全に確定的ですか?

これらのアルゴリズムがunSATを返す場合、それは確かにソリューションが存在しないことを意味しますか?

回答:


14

DPLLのようなコアアルゴリズムとCDCLのようなその改良は完全に確定的です。

非決定性は、アルゴリズムが誤った結果をもたらす可能性があることを必ずしも意味しないことに注意してください。たとえば、

  • モンテカルロアルゴリズム。ランダム化されたアルゴリズムであり、その出力ある確率で正しくない場合があります。

  • ラスベガスのアルゴリズムは、出力が常に正しいランダム化アルゴリズムですが、アルゴリズムは、計算で使用されるリソースと「ギャンブル」します。たとえば、同じ入力での実行時間は異なる場合があります。

もう1つの極端な例は、モンテカルロであるSchöningの[1]などの -SAT を解くための確率論的アルゴリズムであり、その単純さを考えると、実際には非常に効果的です。興味深いことに、Schöningのアルゴリズムは、その有効性(のほとんど)を失うことなく完全にランダム化解除できます[2]。k

実際には、工業用SATソルバーは常にある程度のランダム性を使用して、DPLLベースのアルゴリズムの悪い(=指数関数的な)最悪の場合の動作から「脱出」します。MiniSatは、高度に構成可能で進化するソフトウェアです。とは言っても、MiniSatは完全には確定的ではありません。コマンドラインオプションによっては、分岐変数の選択がランダム化される場合があります。(デフォルトでは、分岐変数の2%がランダムに選択されますIIRC。)同様に、MiniSATには、VSIDSスコアをランダムに初期化するオプションがあります。(VSIDSは、変数が持つ影響を「測定」するためのヒューリスティックです。)


  1. U.Schöning、用A確率的アルゴリズム -SATリミテッドローカル検索や再起動に基づいてk

  2. RA Moser、D。Scheder、Schöningの -SATアルゴリズムの完全なランダム化解除 k


非常に素晴らしい参照。
adrianN 2017年

モンテカルロアルゴリズムは、充足可能性の解決なしで、またはunSATの場合にのみ、問題がSATである可能性がある場合、問題がSATであると言うことができますか?
Xavier Combelle 2017年

@XavierCombelleそれは特定のアルゴリズムに依存しますが、SATを誤らせる可能性のあるアルゴリズムについて考えるのは難しいです。Schöning'sはunSATだけを間違っています。
Martin Berger 2017年

マイナーな拡張機能の1つ-MiniSatはランダム性を使用していますが、「真の」ランダム性ではありません。ソルバーが実行されるたびに同じ「ランダム」な選択肢が選択されるため、MiniSatを実行するたびに同じ時間で同じ答えが生成されます(オプションを再構成しない場合)。
クリスジェファーソン

@ChrisJefferson MiniSATにはランダムシードを指定する方法がないのですか?
Martin Berger

6

そのとおりです。DPLLはスペースを徹底的に探索します。それが「unsat」を返す場合、確かに満足のいく割り当ては存在しません。

最近では、研究者が認定SATソルバーを開発し、「不満」を返したときに不満足の証明(できれば短い)を追加で返します。この証明は他の誰でも確認できます。これにより、他の人がSATアルゴリズムを再実行せずに数式が満足できないことを確認できます。これは、状況によっては役立ちます。

MiniSATは、アルゴリズムではなく実装です。その動作はコードに依存します。私はコードが何をするか話すことができません。


すべてのDPLL / CDCLソルバーを「拡張」して、不満足の証拠を作成できます。
Yuval Filmus

5

あなたが見逃しているかもしれないキーワードは完全性です。一般に、検索アルゴリズムは、それが存在する(十分な時間が与えられた)場合に解が見つかれば、完全であると言います。特に、DPLLは確定的で完全な検索方法の例です。


3

SATソルバーは、それらがどのように実装されているかによって、決定論的である場合とそうでない場合があります。ここでの非決定性は、ソルバーの回答(SATまたはUNSAT)ではなく、生成されたモデルにのみ影響を与える可能性があることに注意してください!多様化などの目的で、SATソルバーは通常、特定の時点でランダム性を導入します。たとえば、変数のアクティビティを初期化したり、ランダムな決定を行ったりします。たとえばminisatでは、同じランダムシードを使用すると常に同じ乱数を返す関数を呼び出すことによってランダムな決定が行われます。したがって、ソルバーの構成を変更しないこの時点では、常に同じ答えと同じモデルが得られます。たとえば、ランダムシードを変更しても、回答(SATまたはUNSAT)には影響しませんが、モデルと実行時間を変更できます。

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