回答:
DPLLのようなコアアルゴリズムとCDCLのようなその改良は完全に確定的です。
非決定性は、アルゴリズムが誤った結果をもたらす可能性があることを必ずしも意味しないことに注意してください。たとえば、
モンテカルロアルゴリズム。ランダム化されたアルゴリズムであり、その出力はある確率で正しくない場合があります。
ラスベガスのアルゴリズムは、出力が常に正しいランダム化アルゴリズムですが、アルゴリズムは、計算で使用されるリソースと「ギャンブル」します。たとえば、同じ入力での実行時間は異なる場合があります。
もう1つの極端な例は、モンテカルロであるSchöningの[1]などの -SAT を解くための確率論的アルゴリズムであり、その単純さを考えると、実際には非常に効果的です。興味深いことに、Schöningのアルゴリズムは、その有効性(のほとんど)を失うことなく完全にランダム化解除できます[2]。
実際には、工業用SATソルバーは常にある程度のランダム性を使用して、DPLLベースのアルゴリズムの悪い(=指数関数的な)最悪の場合の動作から「脱出」します。MiniSatは、高度に構成可能で進化するソフトウェアです。とは言っても、MiniSatは完全には確定的ではありません。コマンドラインオプションによっては、分岐変数の選択がランダム化される場合があります。(デフォルトでは、分岐変数の2%がランダムに選択されますIIRC。)同様に、MiniSATには、VSIDSスコアをランダムに初期化するオプションがあります。(VSIDSは、変数が持つ影響を「測定」するためのヒューリスティックです。)
U.Schöning、用A確率的アルゴリズム -SATリミテッドローカル検索や再起動に基づいて。
RA Moser、D。Scheder、Schöningの -SATアルゴリズムの完全なランダム化解除 。
そのとおりです。DPLLはスペースを徹底的に探索します。それが「unsat」を返す場合、確かに満足のいく割り当ては存在しません。
最近では、研究者が認定SATソルバーを開発し、「不満」を返したときに不満足の証明(できれば短い)を追加で返します。この証明は他の誰でも確認できます。これにより、他の人がSATアルゴリズムを再実行せずに数式が満足できないことを確認できます。これは、状況によっては役立ちます。
MiniSATは、アルゴリズムではなく実装です。その動作はコードに依存します。私はコードが何をするか話すことができません。
SATソルバーは、それらがどのように実装されているかによって、決定論的である場合とそうでない場合があります。ここでの非決定性は、ソルバーの回答(SATまたはUNSAT)ではなく、生成されたモデルにのみ影響を与える可能性があることに注意してください!多様化などの目的で、SATソルバーは通常、特定の時点でランダム性を導入します。たとえば、変数のアクティビティを初期化したり、ランダムな決定を行ったりします。たとえばminisatでは、同じランダムシードを使用すると常に同じ乱数を返す関数を呼び出すことによってランダムな決定が行われます。したがって、ソルバーの構成を変更しないこの時点では、常に同じ答えと同じモデルが得られます。たとえば、ランダムシードを変更しても、回答(SATまたはUNSAT)には影響しませんが、モデルと実行時間を変更できます。