クリークのSATへの一般的な削減を改善しますか?


10

インスタンスをそれほど大きくせずに -CliqueをSAT に削減することに興味があります。k

クリークはNPなので、対数空間を使用してSATに換算できます。簡単なGarey / Johnson教科書削減は、インスタンスを立方体サイズに爆破します。ただし、 -Cliqueはすべての固定 Pであるため、少なくとも固定に対して効率的な削減が「あるはず」です。k kkkk

リダクションを作成する1つの方法は、SAT変数を特性ベクトルとして使用することです。変数がtrueに設定されている場合、関連する頂点がクリーク内にあることを示します。この削減は自然ですが、グラフがスパースの場合、2次サイズのSATインスタンスを作成します。スパースグラフの場合、隣接していない頂点のすべてのペアで、せいぜい1つの頂点がクリークにある可能性があることを強制するために、2次的に多くの句が必要です。

より上手にやってみましょう。O(n2)

Cook / Schnorr / Pippenger / Fischerの一般的な削減は、最初に言語を決定する多項式時間制限NDTMを取り、忘却型DTMによってNDTMをシミュレートし、回路によって忘却型DTMをシミュレートし、次に3によって回路をシミュレートします。 -SATインスタンス。これにより、NDTMタイムバウンドが場合、サイズ 3-SATインスタンスが作成されます。ログファクターは、忘却マシンによるシミュレーション時のオーバーヘッドのために避けられないようです。 -Cliqueの場合、があり、固定された準線形であるサイズの3-SATインスタンスが生成されるようです。t n k t n = O n k O n k log n + log k O(t(n)logt(n))t(n)kt(n)=O(nk)O(nk(logn+logk))k。彼の1988年の論文で、クックはNPの言語に対してより一般的な削減が存在するかどうかを尋ねました。私が知る限り、これはまだオープンです。しかし、クリークは多くの構造を持っているので、おそらくこの場合はもっとうまくいくでしょう。

クリークからSATへのより良い削減が知られていますか?

特に、インスタンスサイズの増加を線形に保ちながら、固定が -CliqueをSAT に削減することは可能ですか?または、既存の結果を使用して、これが可能性が低いと主張することはできますか?私はFortnow / SanthanamDell / van Melkebeekを使用してみましたが、オーバーヘッドが大きすぎるため、これらの結果から特定のことを示唆することはできません。kkk

(私はログファクターを回避するように見える削減で作業してきましたが、その正確さを確認するために残酷な詳細にもっと時間を費やす前に、そのような削減がすでに知られているかどうか、またはそれが起こりそうにないかどうか知りたいです存在します。)


幾分関連の質問を参照mathoverflow.net/q/224898/440について定量化ブール式の小型た、MathOverflow上を -cliqueは、ランダムグラフの0-1法律の遅い収束速度に直接変換します。質問にはすでに2次サイズの公式が含まれています。受け入れられた答えは、クリークの存在を示唆する線形サイズの式を与えますが、クリークが存在する場合でもそれは誤っている可能性があります。kkk
David Eppstein、2015

ログスペースでも実行される削減が必要ですか?ご指摘のとおり、 -cliqueは定数多項式時間で解くことができるため、多項式時間削減は実際に -cliqueをチェックし、定数サイズのSATインスタンスを出力できます。k kkkk
Joe Bebel

@JoeBebel:スペースを使用すると、変数をしてSATインスタンスを出力することも可能です。その解決策は、グラフ内のクリークのすべての場所です。潜在的なクリークごとに、存在しない場合、そのクリークを禁止する句を出力します。これはソリューションを正確に1対1に削減するので、Kavehの質問に答えますが、提案と同じように、削減する方法を決定する前にインスタンスを解決することは、ごまかしのように思えます。k log n k kklognklognkk
アンドラス・サラモン

回答:


8

-cliqueは、変数と句を使用してSATインスタンスとして表現できます。固定場合、これはで線形です。O n k kO(nk)k nO(nk2)kn

ましょう場合ある(辞書ソートされた順序によって)クリークに番目頂点。言い換えれば、はクリークのi番目の頂点の「ワンホット」エンコーディングです(1つの要素を持つセットの特性ベクトルです)。これにより、n k個の変数が導入されます。v i x ixiv=1vixiink

ここで、各に対してn句を使用して、対応する2つの頂点がエッジで接続されるように強制できます。例えば、1節である¬ X I UX J V 1X j個のV MV 1... Vのmは頂点に隣接する頂点であるUを。頂点uごとに1つの句を取得します。これにより、合計O n k(i,j)n¬バツあなたバツjv1バツjvメートルv1vメートルあなたあなた句。Ok2

各について、句を使用して、がハミング重み1のベクトルであり、であることを強制できます。これにより、合計句が追加されます。x i x i < x i + 1バツバツ<バツ+1O n k OOk


変数を使用してクリーク内の頂点を表現し(ビットはクリーク内の番目の頂点を表現するのに十分です)、頂点のセットがクリークに対応します。このような回路を構築する1つのアプローチは、これらの頂点のすべてのペアのリストを並べ替えられた順序で作成し、それをMergesortのMergeプロシージャを使用してエッジのリストと比較するなどです。それ。 size回路のようなものが得られる可能性があります。これは、同じサイズのSATインスタンスに変換されます(lg n i k k k 1 / 2 O n + m + k 2poly lg n m =klglgkkk1/2O+メートル+k2ポリlgメートル=グラフのエッジの数)。ただし、実際にそれが可能かどうかを確認するために詳細を検討することはしていません。

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