例如,已知集合覆盖决策问题是NP完全问题。这个问题的输入是宇宙U,U的子集的族S和整数k()。
我感到困惑的一件事是,如果我们让k = 1,那么显然问题可以通过简单地检查S中的每个元素在时间| S |中解决。更一般地,当k是常数时,问题可以在| S |的多项式时间内解决。以这种方式,只有当k也随| S |增加时,时间复杂度才成指数级增长,如| S | / 2,| S | / 3 ...
所以这是我的问题:
我目前的理解是,NP-complete问题的时间复杂度测量是根据最坏情况来衡量的。任何人都可以告诉我,如果理解是正确的吗?
我看到有人通过证明输入<U,S,|U|/3>
的集合覆盖问题可以减少到该问题,证明了另一个问题是NP难的。我只是想知道他为什么只证明<U,S,|U|/3>
,而不是<U,S,ARBITRARY k>
?这样的证据是否可靠?
非常感谢!
答案 0 :(得分:1)
时间复杂度是作为输入实例大小的函数来度量的。输入实例大小可以以位为单位进行测量。输入实例大小随着任何输入U
,S
和k
的增加而增加。因此,人们试图回答的问题是,解决实例大小问题需要多长时间,例如2n
位与实例大小n
的问题。
因此,简单地说整个输入实例的大小必须增加,在这种特殊情况下,它意味着增加U
和/或S
和/或k
的大小。
回答你的两个问题:
n
中最难的问题,并且您正确地注意到问题(相同大小)可能会因为增加更多参数而变得更难只有一个。最好看到你所指的证据,但想法可能就像:
我将大小为
n
的集合覆盖决策问题实例的多项式减少到我的问题的大小为m
的实例。如果集合覆盖决策问题的输入实例的大小增加到2n
,则减少的结果将是我的问题的大小2m
的实例,因为{{1}的输入大小之间存在直接对应关系。 1}},U
和S
以及问题的输入大小。
因此,所有大小为k
的集合覆盖决策问题实例都会映射到我的大小为n
的问题实例。因此,如果我正在寻找使用此减少的集合覆盖决策问题中最难的实例,我将找到我的大小m
问题中最难的实例。
修改强>
来自您的链接论文中的证据:
证明。我们减少了一个任意的3覆盖问题实例 - 我们在其中 给定宇宙U,U的子集的族S,使得每个子集 包含3个元素,我们被问到是否可以(完全)覆盖 所有的U使用S的U | / 3元素进行同类游戏 资源和时间表大小为3。
正如您所说,他们需要将所有设置覆盖问题的实例转换为他们的问题。但是他们正在使用一个不同问题的减少:在“计算机和难以处理--MG Garey,DS Johnson,1979”中证明是NP完全的精确3覆盖问题。
Exact 3-Cover问题与设置封面决策问题类似,但m
和|U| = 3t
是一组S
的3元素子集。