-SATから -SATに変換することで、句の数をどれだけ減らすことができますか?


8

k -SATのインスタンスから始めて、問題を(k+m) -SATのインスタンスに変換しようとすると、句ごとに(k+m)リテラルがあるため、条項の総量は?

投稿後、条項の数を減らすことは保証できないことを知りました。ただし、n句がある場合、「縮小」手法によってn/k+O(1)句のようなものを取得できるでしょうか。

もしそうなら、節の総数をどれだけ減らすことができることをどれだけ保証できますか?たとえば、n_k句を指定してk -SATで開始する場合、この句を(k + m) -SATに変換すると、新しい句の新しい量であるn_ {k + m}が保証されます。nknk+m(k+m)

さらに重要なのは、この変換をどのように実行するかです。

回答:


5

変換の1つのタイプは、k-sat-to-3-sat変換の逆です。

k-satから "j" -sat、への変換を思い出してください:j<k

(x1x2...xj...xk)(x1x2...xjd)(d¯xj+1xj+2...xk)

ここで、はダミー変数です。つまり、「この句は真ではありませんが、私が知っている別の句はそうです」のようなものです。もう1つの条項は、元の条項から分割された次の条項です。上記は例です。それ以外の場合、2番目の分割ノードはよりも大きいため、同じようにもう一度分割する必要があります。2 J dJ2jkj

変換を元に戻す

(x1x2...xj)(x¯jxj+1...xk)次に、句を次のように組み合わせることができます。

(x1x2...xj1xj+1xj+2...xk)

この新しい数式にがないことに注意してください。xj

もちろん、このような句を任意の式で見つけることは保証されていないため、最小保証はと等しくなります。 n knk+mnk

ただし、通常の数式では、変数とその否定が数式に表示されます。それ以外の場合は、純粋なリテラル消去を実行できます(ここで説明)。簡単にするために、と仮定します。次に、一方にリテラルを、もう一方にその否定を含む2つの句を組み合わせることができます。すべてのリテラルには否定のある別の句が必要であるため、句の数を約半分にできるはずであることを経験的に推測できます(すでに結合されている句でいくつかのリテラルとその否定に悩まされる可能性があるため、最後にいくつかの結合できない句;このような句を最適に結合することは、別の興味深い問題になる可能性があります)。k+m2k2

編集:

リフレクションの後、が属している2つの句を折りたたむためには、がフリーであり、数式の他の場所で使用されてはならないことに気付きました。したがって、これらの種類の句(1つはリテラルを含み、もう1つはその否定で、このリテラルは式の他の場所で使用されていません)は、以前考えたよりもはるかにまれです。したがって、実際の答えは、式の句の数をどれだけ減らすことができるかについての保証はありません。xj


どのようにしてその変換式を入手しましたか?不正確なようですが、真理値表で確認できます。
Matt Groff、2012

こんにちは、私はずっと前にそれを読みましたが、あなたはここでそれを見ることができます。入力を間違えたか、変換で何かが不明確になった可能性があります。もしそうなら、遠慮なく指摘してください。
Realz Slaw 2012

@MattGroff私の間違いを見つけることができないようです、あなたは反例を提供できますか?
Realz Slaw 2012

私がチェックした反対の例は、単一の句始めることでした。次に、これを2つの句に分割します。ここで、は「ない」ことを示します。真理値表でこれをチェックする場合、それらは等しくないはずです。同じ結果が出るかどうか、私は心配して待っています。また、元のk-SATから "j" -SATへの変換が正しくないことが判明した場合に機能するように、この回答を修正する方法を知っていると思います...A D ¯ DB ¯ D D(AB)(Ad)(d¯B)d¯d
Matt Groff

ABAB(Ad)(d¯B)0000|d={0,1}0111|d={1}1011|d={0}1111|d={1,0}
Realz Slaw 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.