至少有两种不同的NP硬度概念。通常的概念,它使用卡普减少,指出语言是NP难如果NP每一种语言卡普-降低到。如果将Karp缩减量更改为Cook缩减量,则会得到不同的概念。每种对Karp-NP较难的语言也对Cook-NP较难,但是相反可能是错误的。假设NP是CONP不同,走自己喜欢的NP完全语言。那么的补码是Cook-NP-hard,而不是Karp-NP-hard。LLLL
之所以是库克-NP难的是以下情况:利用任何语言的NP。由于是NP硬的,因此存在一个多重时间函数,使得 iff iff。从到的Cook约简取,计算,检查,并输出相反的值。L¯¯¯¯MLfx∈Mf(x)∈Lf(x)∉L¯¯¯¯ML¯¯¯¯xf(x)f(x)∈L¯¯¯¯
之所以说是不NP困难(假设NP是从不同CONP)如下。假设是NP-hard。然后,对于coNP中的每种语言,都有一个多重时间约简,使得 iff,换句话说, Miff。由于在NP中,这表明在NP中,因此coNP NP。这立即意味着NP coNP,因此NP = coNP。¯ 大号中号˚FX∈ ¯ 中号 ˚F(X)∈ ¯ 大号 X∈中号˚F(X)∈大号大号中号⊆⊆L¯¯¯¯L¯¯¯¯Mfx∈M¯¯¯¯¯f(x)∈L¯¯¯¯x∈Mf(x)∈LLM⊆⊆
如果某些Cook-NP-hard语言在P中,则P = NP:对于NP中的任何语言M,使用Cook归约到L给出M的多时算法。因此,从这个意义上说,库克-NP完全语言也是“ NP中最难的”。在另一方面,很容易地看到,库克-NP-硬=库克-CONP硬:一个库克还原为大号可以被转换为一个库克还原为¯ 大号。因此,通过使用Cook约简,我们损失了一些精度。LMLMLL¯¯¯¯
使用Cook归约法可能还有其他缺点,但我将其留给其他答复者。