セットカバーのサブケースの硬さ


10

要素の数が何らかの関数(たとえば、)によって制限されている場合、Set Cover問題はどれほど難しいか。ここで、nは問題のインスタンスのサイズです。正式にはlog⁡nn

LET とF = { S 1、⋯ 、S N } ここで、S iが ⊆ UとM = O (ログN )。次の問題を決めるのはどれくらい難しいですかU={e1,⋯,em}F={S1,⋯,Sn}Si⊆Um=O(log⁡n)

SET-COVER'={<U,F,k>: there exists at most k subsets  Si1,⋯,Sik∈F that cover U}.

どのような場合は?m=O(n)

よく知られている推測(例:Unique Games、ETH)に基づく結果はすべて良好です。

編集1:この問題の動機は、が増加するにつれて問題が困難になるときを見つけることです。明らかに、問題はm = O (1 )の場合はPにあり、m = O (n )の場合はNP困難です。問題のNP硬度のしきい値は何ですか?mm=O(1)m=O(n)

編集2:時間でそれを決定する些細なアルゴリズムが存在する(サイズのすべての部分集合列挙MのFを)。したがって、問題は、NP困難されていない場合は、M = O (ログN) ETHはない時間にアルゴリズムが存在しないことを意味するので、O (2 N O (1 ))の任意のNP困難問題のためには、(ここで、Nの大きさNP困難な問題)。O(nm)mFm=O(log⁡n)O(2no(1))n


2
時間内に問題を決定するためのより良いアルゴリズムが存在します(より正確にはmのベル数):要素のサブセットへのパーティションごとに、各サブセットをカバーする入力セットが存在するかどうかをテストします。したがって、m = O (log n / log log n )の場合、問題は多項式時間で解決できます。ただし、これはm = O (log n )についての質問にはまったく答えません。mO(m)mm=O(log⁡n/log⁡log⁡n)m=O(log⁡n)
— David Eppstein 2013

回答:


11

場合は、多項式時間で最適を見つけるために、動的プログラミングを使用することができます。表は、ブール値の細胞含有Tのℓ 、Xそれぞれについてℓ ∈ { 0 、... 、K }及びX ⊆ Uが存在するか否かを示す、ℓの中の要素カバー組Xは。m=O(log⁡n)Tℓ,Xℓ∈{0,…,k}X⊆UℓX

場合、言うM≤C √m=O(n)、問題はNP困難のままです。SET-COVERのインスタンスを指定して、mの新しい要素x1、…、xmおよび(2C − 1 m)の2つの新しいセットを追加します。これは、{x1、…、xを含む、新しい要素の空でないサブセットで構成されます。m}(mが十分に大きい場合、(2C − 1 m)2<2m)。またkを増やすm≤Cnmx1,…,xm(2C−1m)2{x1,…,xm}m(2C−1m)2<2mk一つ。新しいであり、M ' = 2 、MおよびN ' = N + (2 C - 1 M )2 ≥ (C - 1 M ' )2。m,nm′=2mn′=n+(2C−1m)2≥(C−1m′)2


m=nO(1)m=no(1)poly(n,2m)

11

m=clog⁡nnO(c)k=O(1)O(nk⋅m)NO(N)2N−o(N)時間)、これら2つの時間範囲は、次の意味で、多項式時間で期待できるものの「限界」です。

knknk−εk≥2ε>02N(1−ε/2)poly(M)NM 条項。

knmnk−ε⋅f(m)MN2N(1−ε/2)⋅f(M)M=O(N)nk−ε⋅2m/α(m)α(m)

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