回答:
強い指数時間仮説が偽でない限り、定数時間でそれを解くことはできません。
つまり、このようなアルゴリズムがあれば、時間で変数CNF充足可能性を解くことができ。その理由は、変数をそれぞれ変数の2つの等しい部分とに分割できるからです。各部分に対して、次の方法でそれぞれの節のサブセットのファミリーおよびを構築します。割り当てごとに、割り当てが満たされていない句で構成されるサブセットを追加します。この構築は、時間で実行されます。
構築を完了するために、元のCNFインスタンスにはサブセットがあり、それがサブセットとはある場合に解があることに注意してください。
各節の要素に加えて、いくつかの余分な要素をグラウンドセットに追加すると、セットのインクルージョンの問題としてこのばらばらの問題を組み込むことはそれほど難しくありません。基本的に、のサブセットの補集合を取得します。 2つのセットがインクルードとしてカウントされないようにするには、余分な要素にアンチチェーンからコードを追加します。(グランドセットの他の余分な要素で)別の抗鎖コードのサブセット上で使用されるからサブセットの確認なし一対作るないこと包含形成します。最後に、から形成されるすべてのセットには、のアンチチェーンコードのすべての要素が含まれます。
これは、グラウンドセット上のサブセットに関するセット包含質問です。議論は基本的に、Ryan Williamsの初期の論文に戻っています(どちらを覚えていないか)。
セットファミリに興味がある場合、Yuvalの答えで概説されているものと概念的に非常に似ている別のソリューションは、ゼータ変換を計算することです
ここで、は、入力ファミリーF = { S 1、S 2、… 、S n }のインジケーター関数です。すなわち、F (S )= 1ならばS ∈ FおよびF (Sの)= 0さもなければ。明らかにセットがありますS I ≠ SのJようにS I ⊆ S場合に限り、 F ζ (S )> 1いくつかのための S ∈ F。
ゼータ変換は、Yatesのアルゴリズムを使用して時間で計算できます。たとえば、KnuthのTAOCP、vol。2、§4.6.4。アルゴリズム自体はかなり単純な動的プログラミングであり、含まれているセットが存在する場合の例を示すために簡単に変更できます。
この問題は、高速な行列乗算のアルゴリズムを使用することで解決できます。また、計算上は行列乗算と同等であると考えられます(これを証明する方法はわかりませんが、これを証明する手法はないと思います) )。このソリューションでは、n = dの場合の実行時間はO(n ^ {2.373})になり、dとnの間の他の関係の実行時間は他になります。
行列の乗算を使用してそれを解決する方法は次のとおりです。n行d列の行列Aの行にセットの特性ベクトルを記述し、ad行n列の行列Bにセットの補数の特性ベクトルを記述します。次に、AにBを掛けます。交差するセットのペアは、ゼロに等しい積A * Bの位置です。
この問題で知られている最適な実行時間については、Huang and Panの主題に関する論文を参照してください。正しく覚えていれば、dが十分に大きくなると、実行時間は明らかに最適なO(nd)になります。n = dの場合、実行時間はO(n ^ {2.373})になります。nとdの他の関係については、他の値を取得します。長方形行列の乗算に最適なアルゴリズムが存在する場合、問題に対して実行時間O(n ^ 2 + nd)のアルゴリズムが得られます。あなたの問題を解決するこれ以上の方法はないと思いますが、私は確信していません。
これらのアルゴリズムの定数が大きすぎるため、このソリューションはおそらく実用的ではありません。Strassenのアルゴリズムは、nとdの合理的な値に対する単純なソリューションよりも改善される可能性がありますが、それについては確信がありません。ただし、行列乗算に非常に関連すると思われる問題には、ナイーブアルゴリズムよりも優れた組み合わせアルゴリズムがあることはめったにないようです(多対数的要因よりも多いため)。現在の技術を使用して、素朴なものよりも大幅に優れています。
n > ( dの場合、我々はセットがSpernerの補題によってantichainではないことを知っているし、問題の決定版は簡単になるように。しかし、nがその値に近い場合を考えると面白いかもしれません。
ErdKos-Ko-Radoの定理に関するFriedgutの研究は、[ m ]のサブセットのファミリーの特性ベクトルが与えられると、fが交差するファミリー(fの 2要素ごと)かどうかを時間O (m 2 m)交差する)。より一般的には、彼の方法は、米国を計算することができ Σ = Σ のx 、yは∈ fを S (X 、Y )、 ここで、S (X 、Y )≥ 0
(別に、我々我々は二つのファミリー与えられている場合、彼の方法はまた、動作することをコメントとして、及びに興味を持っているΣ = Σ X ∈ F 、Y ∈ G S (X 、Y )の両方の場合において、我々はする必要があります。計算pはのフーリエウォルシュ変換-skewed fは、G任意用のp ∈ (0 、1 / 2 )、そしてその後Σ = Σは、xは T (Xは)、T(xは)のみのハミング重みに依存X)。
これはすべて、目下の問題にどのように関係していますか?家族考える すべてのSはI ∪ { xは}すべてから互いに素である¯ S I ∪ { Y }。以来、S (X 、
時間におけるこのアルゴリズムの実行の多項式因子無視、dは。ときnは近くにある2 D、これは有意に良好であるよりも〜O(N 2)。一般に、n = ω (2 d / 2)であれば改善されます。
我々は満足のペアことを知っていることを考えると存在し、どのように我々はそれを見つけるのですか?すべてのセットS 1、… 、S nをランダムに2つのグループG 1、G 2に分割するとします。確率はおおよそで1 / 2、セットはS IとS jが同じグループで自分自身を見つけるでしょう。運が良ければ、G 1とG 2でアルゴリズムを実行できます、どれがこれらに属しているかを見つけ、検討する必要があるセットの数を半分にします。そうでない場合は、再試行できます。数の期待値であることを示し、このの決定版へのオラクル呼び出し、我々は実際に満たすペアを見つけることができますS I ⊆ Sのjは。
アルゴリズムのランダム化を解除することもできます。一般性を失うことなく、と仮定します。各ステップで、kビットのそれぞれに応じて分割します。これらのパーティションの1つは、極性が反対でない限り、常に同じ部分にxとyを配置します。O (n d )操作のみを使用してこれを明示的にテストできます。これにより、決定バージョンへのO (log 2 n )オラクル呼び出しを使用した決定論的アルゴリズムが得られます。