なぜCNFはDNFではなくSATに使用されるのですか?


22

ほとんどすべてのSATソルバーがDNFの代わりにCNFを使用する理由はよくわかりません。SATを解くのはDNFを使用する方が簡単だと思う。結局のところ、暗黙のセットをスキャンして、そのうちの1つに変数とその否定の両方が含まれていないかどうかを確認するだけです。CNFの場合、このような簡単な手順はありません。


5
すべての制約ソルバーが入力としてCNFを使用するわけではありません。元の制約セットの構造が保持されるため、一部の人は好まないことがあります。
デイブクラーク

1
この質問には誤った前提があり、現在のような高い評価に値するとは思わない。SATは、CNF式の解として定義されます。DNFを解決する問題があります(満足のいく割り当てを見つけると呼ぶこともできます)が、CSではSATと呼ばれていません。&imhoこれはcs.seに移行する必要があります...別の注意-CNFからDNFへの変換、またはその逆は、実際には特定のケースでひどく失敗する圧縮アルゴリズムに非常によく似ている、または見られる場合があります(指数関数的な爆発につながります)サイズ)
vzn

10
@vzn:実際には、「SAT」はブール式の満足のいく割り当てを見つける問題を指すために時々使用されます。CNF-SATは最も興味深い特別なケースであるため、「SAT」を使用して特にCNF-SATを一種のsynechdocheとして参照する傾向があります。もちろん、CNF-TAUTOLOGYが効率的に解けるのと同じように、DNF-SATは効率的に解ける。質問はそれを理解しないことを前提としているようです。
ニールドボードラップ

回答:


56

カープによる3SATにSATから教科書の低減は、任意のブール式変換「等価」CNFブール式にΦ '多項式サイズのように、Φがあれば充足され、場合にのみ、Φは充足可能です。(厳密には、Φ ′には追加の変数があるため、これら2つの式は同等ではありませんが、Φ の値は実際にはこれらの新しい変数に依存しません。)ΦΦ ΦΦΦΦ

任意のブール式からDNF式への同様の縮小は知られていない。すべての既知の変換は、式のサイズを指数関数的に増加させます。さらに、P = NPでない限り、そのような削減は不可能です!


DNFからCNFへの変換、およびその逆はPとNPとまったく同じではありませんが、おそらく重要な複雑さのクラス分離に関連しています(NPよりも「大きい」クラスの場合)...問題はサイズは...とCNFとDNFの間にどのような場合でも変換が指数関数的にブローアップが決定問題ではありません...決定問題にそれを回すために複数の方法があります...
vzn

10
JeffEのポイントは、DNF-SATがPにあるため、P = NPでない限りNP完全ではないことだと思います。
ルークマティソン

2
「すべての既知の変換」は現在の知識を考慮すると正しくありません。アルゴリズムに関係なく指数関数的な空間の爆発を必要とするDNF <=> CNFの式/変換があります...この質問とこの回答へのヒント...それは略語「DNF-SAT」が文献のどこでも使われているのですか?自分で見たことを思い出してはいけない...それは本質的に私を混乱させるようだ... DNF満足は決定問題であり、DNF <-> CNF変換は機能問題であり、答えはその区別をあまり明確にしない; 素晴らしい答えは
...-vzn

@Jɛff E:ここで「任意のブール式」が意味するものを明確にすることを気にしますか?Karpの論文、92ページを見ると、SATISFIABILITYはCNF式で定義されています。これは、OPの質問に対する答えには影響しませんが、任意のブール式(つまり、必ずしもCNFにあるとは限らない式)の一般的な結果がもうないようにしています。ありがとう
-lyes

22

重要なことのほとんどは言われましたが、私はいくつかの点を強調したいと思います。

  1. DNF式の充足可能性はP
  2. CNF式の充足可能性はNPです
  3. CNF式がトートロジーであるかどうかのテストはP
  4. DNFフォーミュラがトートロジーであるかどうかのテストはcoNPです
  5. DNFを否定するとCNFが得られ、逆も同様です。

したがって、SATソルバーは充足可能性を対象とし、線形時間で充足可能性を維持しながらCNFに変換できるため、CNFを使用します。



1
@TayfunPay彼らはそうします。例えば、。同じ変数を含む句を2回許可しない場合、トートロジーの単一の表現があります。これは句の空のセットです。{{¬xx}}
ミコラス

3
@Tayfunは、定義は通常、句の繰り返し変数を許可しないことに同意しますが、句の空のセットを禁止する定義を見たことはないと思います。(そして、なぜあなたがそれをしたいのかは明確ではありません)
ミコラス

2
@Tayfun 1)CNFにはトートロジーが存在しない、または空の句セットがCNFではないという出版物を教えていただけますか?2)空の句のセットを禁止する場合、空の句も禁止する必要があり、falseを表すことはできません3)CNFでtrueおよび/またはfalseを許可しない場合、表すことができるという特性を失いますすべてのブール関数、なぜそれをしたいのですか?
ミコラス

1
「どの句にも変数やリテラルの繰り返しがあってはなりません。」---それは空の数式や句を禁止しません。ところで、空の句を許可しない場合、自動推論のかなり重要な部分を構成する解決の反論の証拠を行うことができなくなります。
ミコラス

18

SATソルバーはCNFを「使用」しません。(しばしば)入力としてCNFが与えられ、与えられたCNFを解くために最善を尽くします。あなたの質問が指摘しているように、表現がすべてです-DNFが同じサイズのCNFよりも満足できるかどうかを見分けるのははるかに簡単です。

これは、なぜSATソルバーが与えられたCNFをDNFに変換し、結果のDNFを解決できないのかという問題につながります。


11

7 番目の 2013年9月:追加さらに答え、ページのチェック下


基本的に、DNF式は、句の論理和であるそれぞれ句、C iは = LをIを1L I kはリテラルの接続詞です。レッツ・コール節C iの場合は矛盾すると、それは文字通りの両方が含まれている場合にのみリットルとその否定¬ リットルを。競合しない各句は2 n kをエンコードするだけであることが簡単にわかります。c1...cmci=li,1...li,kcil¬l2nk式の解。したがって、DNF全体はソリューションの単なる列挙です。数式には指数関数的に多くの解が含まれる場合があるため、対応するDNF数式には指数関数的に多くの句が含まれる場合があります。このCNF式を変換してみてください:

l1l2l3l4

l5l6l7l8

l9l10l11l12

l13l14l15l16

l17l18l19l20

対応するDNF数式に追加すると、句が多すぎます。一言で言えば、CNFはコンパクトですが、DNFはコンパクトではありません。CNFは暗黙的ですが、DNFは明示的です。

次の問題はNP完全です:DNFインスタンスが与えられた場合、すべての句を偽造する変数の割り当てがありますか?


4
正しいLaTeXフォーマットを取得するには、\ andと\ orを\ landと\ lor(または\ wedgeと\ vee)に置き換えます。
ジェフ

2
通常のCNFへの変換について本質的にコンパクトなものは何もありません。OPの問題の本当の鍵は、補助変数を使用してこれらの「同等の」CNF関数を作成できるという事実です。充足可能性をテストする代わりに、DNFを使用して別の問題を解決できる類似の方法がおそらくあります。(等不充足関数?...)
Dividebyzero

1
Giorgio Cameraniによるこの洞察は良くありません。何かをCNFに変換すると、節の数が同じように指数関数的に増加する可能性があります。この同じ例を選んで、「and」を「or」に置き換えます。この小さなDNF式からCNFへの変換は、まったく同じように巨大になります。彼らは彼らと少し陰陽関係を持っています。
除算ゼロ

@dividebyzero:あなたのコメントに対処するために別の回答を捧げました。
ジョルジオカメラニ

6

私はもう一つのことに気づきました。これは別の答えに値することを願っています。質問の推定は完全に真実ではありません。二分決定図(BDD)は、DNFのコンパクトな/洗練された表現として見ることができます。BDDを使用するSATソルバーがいくつかありましたが、それらはもう表示されないと思います。

ブール関数のさまざまな表現の異なる特性を研究しているDarwicheとMarquisによる素晴らしい論文があります。


4

この追加の回答は、前回の回答に対するdividebyzeroのコメントへのフィードバックとして意図されています。

splitbyzeroが言うように、CNFとDNFが同じコインの2つの側面であることは確かに真実です。

あなたが満足の割り当てを見つけなければならない場合には、DNFはそれmanifestedly示すように、明示的であるあなたの満足の割り当て(DNF充足が属する)それはラップしてあなたの目からその満足割り当てを隠すために巻くように、CNFのに対し、暗黙的である(CNF充足があるN P c o m p l e t e)。CNF式を展開して、指数関数的なサイズではないいくつかの同等のDNF式に戻すことができる手順はわかりません。これは私の以前の答えのポイントでした(その例は指数関数的な爆発を示すことを意図していましたが、明らかにこのような例は最良の選択ではありませんでした)。PNPcomplete

逆に、偽造割り当てを見つける必要がある場合、CNFは偽造割り当てを明示的に示すため明示的です(CNF偽造可能性は属します)。はN P c o m p l e t e)です。DNF式を展開し、指数関数的なサイズではない等化可能なCNF式に戻すことができる手順はわかりません。PNPcomplete

一方の端には矛盾、つまり不満足な式があります。反対側の端には、トートロジー、つまり偽造不可能なフォーミュラがあります。中間には、充足可能かつ偽造可能な式があります。

変数を含むCNF式では、長さkのすべての節は明らかに2 n kの偽装割り当てをエンコードします。nk2nk

変数を含むDNF式では、長さkのすべての項が2 n - kの割り当てを満たすことを明らかにエンコードします。nk2nk

節のないCNFフォーミュラは、改ざんの割り当てがないため、トートロジーです。空の句()はすべての2 nの代入が偽造されていることを示すため、空の句(他のすべての句を包含する)を含むCNF式は矛盾です。他のCNF式は、矛盾または中央の式のいずれかです(これら2つのケースを区別するのはN P c o m p l e t eです)。k=02nNPcomplete

用語のないDNF式は、満足のいく割り当てがないため、矛盾です。空の用語(1つおきの用語を含む)を含むDNF数式は、空の用語(を持つ)がすべての2 n割り当てが満たされていることを示すため、トートロジーです。他のDNFフォーミュラは、トートロジーまたは中央のそれらのフォーミュラのいずれかです(これら2つのケースを区別するのはN P - c o m p l e t eです)。k=02nNPcomplete

2n

2n

この観点から、CNFの充足可能性とDNFのFalsifiabilityが計算の難易度に関して同等である理由がより明確になります。基本的なタスクはまったく同じであるため、実際にはまったく同じ問題であるため、複数のセットの和集合がすべての可能性の空間に等しいかどうかを判断するためです。このようなタスクは、私たちをより広い範囲のカウントに導きます。これは、これらの問題について無視できない進歩を遂げることを望むために熱心に探求されるべき道の1つである私の謙虚な意見です(解像度ベースのソルバーに関するさらなる研究最終的に画期的な理論的進歩をもたらす可能性がありますが、驚くべき実用的進歩を確実にもたらし続けます。

このようなタスクの難しさは、それらのセットが包含-除外の形で激しく重なり合っていることです。

そのような重複の存在は、カウントの難しさが存在する場所です。さらに、これらのセットをオーバーラップさせているという事実は、解空間が指数関数的に大きいコンパクトな数式を作成できるまさにその理由です。


4

このスレッドのすべての回答(特にGiorgio Cameraniの回答)を素敵なテーブルに変えて、一目で双対性が見えるようにすることにしました。

DNFCNFトートロジー/不明瞭化coNP-completeP(各句にはPと¬Pのペアがあります)充足可能性P(土の割り当ては明示的です)NP完全偽証性NP完全P(誤り。割り当ては明示的です)不満P(各句にはPと¬Pのペアがあります)coNP-complete等価性を保持した、標準形式への変換充足可能性を保持した標準形への変換FP偽造性を保持した通常の形式への変換FP

:これらの検索の問題、およびDNFからCNFへの変換(またはその逆)は、出力のサイズが大きいため指数関数的な時間が必要です。それらはFPSPACEにあります。実際、それらは多項式時間ビットグラフを持つ関数によって解くことができます。これは指数サイズ出力関数の場合と同じくらい効率的ですが、このクラスに名前があることは知りません。ポリタイム削減の通常の概念は、多項式サイズの出力を持つ関数でのみ適切に機能します。現在のケースにそれらを盲目的に適用すると、出力のサイズが原因で、これらの検索問題がすべてFEXP完全になります。

:これらの検索問題は、次のような多項式時間ビットグラフを使用した指数時間関数によって解決できます。 。ただし、これらはFPNP[1]、逆に、ポリタイムチューリング削減ではNP困難です(検索問題と決定問題を比較しているため、ここでは多くの削減は意味がありません)。

質問に対する最短の答え:DNFを介した充足可能性の表示(SATの解決)は、上の表に従って指数関数的な時間でのみ実行できます。


1
「PLフォーミュラ」とは何ですか?「NF」とはどういう意味ですか?
ジョシュアグロチョフ

4
ここにはいくつかの問題があります。(1)「不正確さ」とは「トートロジー」を意味すると思います。(2)KNFはCNFである必要があります。
ハックベネット

2
「NF(stainsfiability)を保持する」とはどういう意味かまだ明確ではありません。それはアルゴリズムAを意味しますか?Aφ もし満足できる φ ですが、もし φ その時は不満です Aφ いずれかであり、さらにすべての充足可能な式について φAφ同じ出力がありますか?それはあなたの表記法から私が思うことですが、この問題はCNFのPにはありません。で、どういう意味ですか?
ジョシュアグロチョフ

1
(1)「述語論理」は「命題論理」でなければなりません。(2)通常の形式への変換は決定の問題ではなく、機能の問題(または、「標準の形式」は一意ではないため、検索の問題)です。したがって、表に示されている決定クラスは不適切です。
エミールイェジャベクはモニカをサポートします

1
何ですか 3P そこにいますか?
エミールイェジャベクはモニカをサポートします
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.