我真的很困惑为什么2-CNF SAT在P中,而3-CNF SAT在NPC中。 我读了CLRS,我理解他们如何证明3-CNF SAT在NPC中。 我不能使用从SAT到2-CNF-SAT相同的可还原性来证明2-CNF-SAT在NPC中。 我不明白为什么2-CNF SAT在P.

===============>>#1 票数:13 已采纳

为什么2-CNF SAT在P.

因为有一个多项式算法来解决它。

证明的草图:

请注意,2-CNF中的任何子句都采用A => B的形式,其中AB是变量或它们的否定。 因此,我们可以告诉该条款说当A为真时,它强制B为真。 这也意味着B是虚假的力量A是假的。 我们以后必须考虑。

现在,您可以逐个获取变量,并搜索它是否过渡性地强制自身为负值(A => B => C => ... =>非A),反之亦然(非A =>。 .. => A)。 如果第一个是真的,A必须是假的; 如果第二个,A是真的。 如果两者兼而有之,公式是不可满足的。

如果您没有找到任何使公式不可满足的变量,那么它是可以满足的。

请注意,这种“野蛮”算法并不是使用图中强连接组件的实际算法,我建议您继续阅读。 然而,它是多项式的(搜索一个变量显然是O(N ^ 2),因为你考虑O(N)子句一次强制一个变量,你考虑O(N)变量,这意味着算法是多项式) 。 请注意,我们在子句中最多包含两个文字是至关重要的。 如果条款是A => B or C或其他东西,它将无法正常工作。

===============>>#2 票数:3

从CNF SAT到3-CNF SAT的规范缩减是采用类似lit_1或lit_2或......或lit_n的条款,并将其替换为两个子句lit_1或lit_2或......或者lit_ {floor(n / 2)}或者var,lit_ {floor(n / 2)+ 1} OR ... OR lit_n OR NOT var。 如果你试图以这种方式破解一个带有三个文字的子句,你将得到另一个带有三个文字的子句,因此相同的证明不适用于2-CNF SAT(并且可能是有充分理由的)。

  ask by Rave translate from so

未解决问题?本站智能推荐:

2回复

有些排序可以是P,NP和NP-Complete吗?

我很困惑,经过一番阅读后,这是我的想法: P在NP中,NP在NP完全中。 因此,所有P都可以在NP和NP-Complete中? 这是否意味着存在可以是NP和NP-Complete的排序算法? 希望这听起来不是太愚蠢。
1回复

是否存在不是NP完全或P的NP问题?

我试图了解P,NP,NP-Complete和NP-Hard之间的关系。 我相信我已经开始理解一般想法,但是,我对这个问题很挂念(见标题)。 是什么,是不是在P个时间来解决的问题的一个例子,是在P个时间核查的,但不是 NP完全? 如果我缺少某种了解,请填写。 提前致谢
4回复

如何证明概率是np完整的并且在np中?

给定一个部门需要一个委员会来选择部门的负责人。 委员会不能包括有利益冲突的人。 输入包括: 所需的委员会人数 所有人的清单 有冲突的所有人的清单。 目的是确定是否有这样规模的无冲突委员会。 如何证明这个问题是NP完全的并且在NP中?
1回复

任务调度中的NP完全性

因此,这是一个引人深思的问题,可以让我的教授了解NP-Completeness的概念。 我知道为什么应该有一个解决方案,由于NP-Completeness的规则,但我不知道如何找到它。 所以这是问题所在: 问题是两个处理器的简单任务调度问题。 每个处理器可以处理n任务中的一个,并且任
4回复

是否必须“在多项式时间内完成问题的减少”才能完成NP?

对于NP完全的问题,它必须属于NP类,并且必须有多项式时间算法将其减少为NP完全问题。 现在如果我们只有一个指数时间算法来减少。 这个问题仍然会被称为NP完全吗? 还是没有这样的问题? 编辑:还请告诉我是否有任何这样的问题,如果它存在,那么它属于哪个类?
1回复

NP和3-SAT与事实

任何专家都可以帮助我为什么这句话是对的? 如果L∈NP和L≤ 第 3 页 -SAT(即:减少L至3-SAT在聚时间),则L是NP完全问题。
1回复

在非P中证明是NP难而不是NP完全的问题

如果A不是NP硬的,但不是NP完整的,则证明A在P中不存在。 如果存在一个NP完全问题B,使得B在多项式时间内可简化为A,则A是NP难的。 如果A在NP中并且所有NP问题都可以在多项式时间内简化为A,则A是NP完全的。 但是A不是NP完全的,因此这些条件中的一个或两个必须为假。 如果
2回复

子集大小为k的子集总和是否为NPC?

我有一个Subset-Sum问题的变体,其中子集的大小为k ,所有整数均为正(不为零)。 从网上可以看到,使用伪多项式时间的动态编程可以公平地解决这个问题。 我需要确定这个问题是NPC还是P (假设P!=NP )。 我试图减少子集和问题,但是遇到了一个约束,即所有整数必须大于零
1回复

NP硬但不是NPC

我已经看到了几个调度问题,它说问题很难解决。 我的问题是1)当我们说一个问题是NP困难时,这是否意味着它不在NP中?因为如果是NP,我们就说该问题是NP完整的。 我知道如果a)在NP中b)它在NP中很困难,那么NPC就会出现问题。
1回复

P NP和NP是否完全澄清?

这是我在堆栈溢出时找到的答案 NP是一个复杂性类,代表所有决策问题的集合,对于这些问题,答案为“是”的实例具有可以在多项式时间内验证的证明。 这意味着,如果有人给我们一个问题的实例,并且答案为是的证明(有时称为见证人),我们可以检查它在多项式时间内是否正确。 我的问题是