【发布时间】:2010-11-27 22:30:50
【问题描述】:
我的日程安排有问题。我需要证明这个问题是NP完全的。有什么方法可以证明它是NP完全的?
【问题讨论】:
-
阅读 Karp 的“组合问题中的可约性”。
标签: algorithm
我的日程安排有问题。我需要证明这个问题是NP完全的。有什么方法可以证明它是NP完全的?
【问题讨论】:
标签: algorithm
要显示一个问题是 NP 完全的,你需要:
换句话说,给定一些信息C,您可以创建一个多项式时间算法V,该算法将为每个可能的输入X验证X是否在您的域中。
证明 顶点覆盖问题(即,对于某些图 G,它是否具有大小为 k 的顶点覆盖集,使得 @987654328 中的每条边@ 在覆盖集中至少有一个顶点?)在 NP 中:
我们的输入 X 是一些图形 G 和一些数字 k(这是来自问题定义)
将我们的信息C 视为“图G 中任何可能的顶点子集k”
然后我们可以编写一个算法V,给定G、k 和C,将在多项式中返回该顶点集是否是G 的顶点覆盖时间。
那么对于每个图G,如果存在一些“G 中可能的顶点子集,大小为k”,这是一个顶点覆盖,那么G 在NP 中。
注意我们确实不需要需要在多项式时间内找到C。如果可以的话,问题就出在`P。
注意算法V 应该适用于每个 G,对于某些C。对于每个输入,都应该存在信息,这些信息可以帮助我们验证输入是否在问题域中。也就是说,不应该有不存在信息的输入。
这涉及到一个已知的 NP 完全问题,例如 SAT,布尔表达式集的形式为:
(A or B or C) and (D or E or F) and ...
表达式是可满足的,即这些布尔值存在一些设置,这使得表达式为真。
然后将 NP 完全问题简化为多项式时间内的问题。
也就是说,给定SAT 的一些输入 X(或您正在使用的任何 NP 完全问题),为您的问题创建一些输入 Y,这样X 在 SAT 中当且仅当Y 是你的问题。函数f : X -> Y 必须在多项式时间内运行。
在上面的示例中,输入 Y 将是图形 G 和顶点覆盖的大小 k。
对于完整证明,您必须同时证明两者:
X 在SAT => Y 在你的问题中
和Y 在你的问题中 => X 在SAT。
marcog 的答案与其他几个 NP 完全问题有链接,您可以将其归结为您的问题。
脚注:在步骤 2(证明它是 NP-hard)中,将另一个 NP-hard(不一定是 NP-完全)问题简化为当前问题即可,因为 NP-完全问题是NP 难题的一个子集(也在 NP 中)。
【讨论】:
您需要将 NP-Complete 问题简化为您遇到的问题。如果减少可以在多项式时间内完成,那么您已经证明您的问题是 NP 完全的,如果问题已经在 NP 中,因为:
它并不比 NP 完全问题更容易,因为它可以在多项式时间内简化为它,这使得问题 NP-Hard。
更多信息请参见http://www.ics.uci.edu/~eppstein/161/960312.html 的末尾。
【讨论】:
为了证明一个问题L是NP完全的,我们需要做以下步骤:
【讨论】:
首先,你证明它完全存在于 NP 中。
然后您会发现另一个您已经知道是 NP 完全问题的问题,并展示您如何多项式地将 NP Hard 问题简化为您的问题。
【讨论】:
【讨论】: