【问题标题】:Subset sum decision problem -- how to verify "false" case in polynomial time?子集和决策问题——如何在多项式时间内验证“假”情况?
【发布时间】:2022-01-03 02:51:36
【问题描述】:

我很难理解如何在多项式时间内验证子集和问题的给定实例是否没有解决方案。

当然,您可以轻松验证肯定的情况:只需提供与目标总和相加的整数列表,并检查它们是否都在原始集合中。 (O(N))

你如何在多项式时间内验证答案“假”是正确的?

【问题讨论】:

  • 如果你能做到这一点,那么你可以通过尝试验证答案是否为假来在多项式时间内回答决策问题,如果验证失败,则答案必须为真。那么是什么让您认为这是可能的呢?
  • 我显然很困惑 :)
  • 也许你的困惑是关于 NP 的定义:引用维基百科,“NP 是一组决策问题,其中问题实例的答案是“是”,有可验证的证明多项式时间”。当答案为“否”时,不要求存在多项式时间内可验证的证明。 en.wikipedia.org/wiki/NP_(complexity)

标签: complexity-theory theory subset-sum


【解决方案1】:

实际上不知道如何做到这一点——而且确实推测不可能这样做!

NP 类包含可以在多项式时间内验证“是”实例的问题。子集和问题是 NP 问题的典型示例。重要的是,请注意,NP 的定义并没有说明如果答案为“否”会发生什么 - 也许很容易证明这一点,或者可能没有有效的算法来做到这一点。

NP 的对应物是 co-NP 类,它由可以在多项式时间内验证“无”实例的问题组成。这种问题的一个典型例子是重言式问题——给定一个命题逻辑公式,无论变量给出什么值,它总是正确的吗?如果公式不是重言式,很容易通过让某人告诉您如何将值分配给变量以使公式为假来验证这一点。但如果公式始终为真,那么您将如何有效地展示这一点就不清楚了。

正如 P = NP 问题尚未解决一样,NP = co-NP 问题也是开放的。我们不知道“是”答案具有快速验证的问题是否与“否”答案具有快速验证的问题相同。

我们所知道的是,如果任何 NP 完全问题在 co-NP 中,则 NP = co-NP。而且由于子集和是 NP 完全的,因此没有已知的多项式时间算法来验证子集和实例的答案是否为“否”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2021-03-30
    • 2015-01-30
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多