套装封面子盒的硬度


10

如果元素的数量受某个函数(例如)限制,那么Set Cover问题有多难,其中n是问题实例的大小。正式地,lognn

˚F = { s ^ 1小号Ñ } 其中š Ù= Ö 登录Ñ 。确定以下问题有多难U={e1,,em}F={S1,,Sn}SiUm=O(logn)

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

如果m=O(n)

任何基于众所周知的猜想(例如,Unique Games,ETH)的结果都是好的。

编辑1:这个问题的动机是找出问题随着增加而变得困难的时候。显然,如果m = O 1 ,则问题出在P中;如果m = O n ,则问题在于NP-hard 。问题的NP硬度阈值是多少?mm=O(1)m=O(n)

编辑2:存在一个简单的算法来决定它在时间(其中列举的尺寸所有子集˚F)。因此,如果m = O log n,那么问题就不是NP-hard问题,因为ETH隐含着在时间O 2 n o 1 中没有任何NP-hard问题的算法(其中n是NP难题)。O(nm)mFm=O(logn)O(2no(1))n


2
存在一种更好的算法来确定时间(更精确地讲是m的贝尔数)的问题:对于将元素划分为子集的每个分区,测试是否存在覆盖每个子集的输入集。因此,对于m = O log n / log log n ,可以在多项式时间内解决问题。但是,这并不能完全回答您关于m = O log n )的问题mO(m)mm=O(logn/loglogn)m=O(logn)
David Eppstein

Answers:


11

,可以使用动态编程来找到多项式时间的最佳值。该表包含布尔值细胞Ť X为每个&Element; { 0 ... ķ }X ü,指示是否有覆盖在元件集合Xm=O(logn)T,X{0,,k}XUX

,说Çm=O(n),问题仍然是NP难题。给定SET-COVER的实例,添加m个新元素x1xm2C1 m2个新集合,其中包括新元素的非空子集,包括{x1xm}(当m足够大时,2C1 m2<2m)。也增加kmCnmx1,,xm(2C1m)2{x1,,xm}m(2C1m)2<2mk一个。新' = 2 Ñ ' = ñ + 2 c ^ - 12ç - 1' 2m,nm=2mn=n+(2C1m)2(C1m)2


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

11

m=clognnO(c)k=O(1)O(nkm)NO(N)2No(N)时间),从以下意义上讲,这两个时限是我们可以期望的多项式时间的“极限”。

knknkεk2ε>02N(1ε/2)poly(M)NM 条款。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.