ChaffのようなDPLLベースのアルゴリズムに純粋なリテラル除去が存在しないのはなぜですか?


7

私はさまざまなSATソルバーを調べて、それらがどのように機能し、なぜ特定の方法で設計されているのかを理解しようとしています。(しかし、私は今のところ大学にいないので、教授をしている人を知りません。誰かが助けてくれることを願ってここに投稿します。本当に感謝します。)

チャフBCP(ブール制約伝播)が異なる原稿から実現されるDPLL:これは、2つの見て、それをしないリテラル時間(最初に提案ものからわずかに異なる技術でSATO:効率的な命題証明者)2001紙によれば、チャフ:エンジニアリング効率的なSATソルバー。ただし、このホワイトペーパーでは、純粋な文字の削除については触れていません。

ピュアリテラル撤廃の複雑さ、ヤンJohannsenが書きました

ChaffやBerkMinのようなDLLタイプのSATソルバーの現在の最良の実装では、ユニットの伝播で効率を上げるためにこのヒューリスティックを犠牲にします。

ここで、「このヒューリスティック」は、純粋な文字消去を指します。純粋な文字消去が何をするかについての私の理解は、

  1. すべての単極(または純粋)リテラルを検索します
  2. ブール値を割り当てて、それぞれが True
  3. その場合、それらを含むすべての句を削除できます。

これが私の質問です:

犠牲はどのように必要ですか?ChaffのようなDPLLベースのアルゴリズムで純粋なリテラル除去が欠けている正当な理由はありますか?各決定レベルで純粋な文字削除を行うことはできませんか(または少なくとも分岐前の最初に行うことはできません)。


"single-polar" =ストレートリテラルのみのインスタンスまたは否定されたインスタンスのいずれか?他の用語のいくつかを定義することも役立つかもしれません(たとえば、質問の自己完結など)、それらはフィールドでstdであると理解しています
vzn

@vzn確かに。さらにリンクとサブテキストを追加しました
吖奇说ArchVlog-何魏奇

回答:


7

2ウォッチリテラルアルゴリズムを使用してユニットの伝播を実装するソルバーは、現在の部分割り当てによって暗示される部分式を生成するために(暗黙的に)削除された節を追跡しません。この情報を追跡しないことにより、ソルバーは割り当て中にほとんどの句に触れ、バックトラック中にいずれの句に触れないようにすることができます。数式で現在純粋な変数を特定することは、これらの大幅な効率向上を失うことを意味します。一方、純粋なリテラル削除が、重い追跡コストを補うのに十分早い段階で競合または満足のいく割り当てを生成することを示唆するものは何もありません。

検索手順を開始する前に式の簡略化を行うソルバーには、前処理ステップとして実行するのが非常に安価であり、多くの句が削除される可能性があるため、通常、純粋なリテラル削除が含まれます。

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