NP硬度には(少なくとも)2つの異なる概念があります。Karpリダクションを使用する通常の概念は、NP Karpのすべての言語がLに還元される場合、言語はNP困難であると述べています。カープ削減をクック削減に変更すると、別の概念が得られます。Karp-NP-hardであるすべての言語はCook-NP-hardでもありますが、逆はおそらく誤りです。NPはcoNPとは異なると仮定し、お気に入りのNP完全言語Lを使用します。そして、Lの補数はCook-NP-hardですが、Karp-NP-hardではありません。LLLL
その理由クック-NP困難で次のようになります。すべての言語取るMを NPに。以来、Lは NP困難であり、polytime関数が存在するFようにX ∈ M IFF F (X )∈ L IFF F (X )∉ ¯ Lは。Aクック低減Mへ¯ LはかかるX計算し、F (X )、チェックをするかどうか、F (X )∈ ¯L¯¯¯¯MLfx∈Mf(x)∈Lf(x)∉L¯¯¯¯ML¯¯¯¯xf(x)、およびその逆を出力します。f(x)∈L¯¯¯¯
理由(仮定NPがCONP異なる)NP困難ではないが以下の通りです。仮定¯ Lが NP困難でした。次いで、すべての言語のためのM CONPにおいて、polytime減少あるFようにそのX ∈ ¯ M IFF F (X )∈ ¯ L、換言すれば、X ∈ M IFF F (X )∈ L。以来、Lは NP、このことを示しているMは NPであり、CONPよう⊆L¯¯¯¯L¯¯¯¯Mfx∈M¯¯¯¯¯f(x)∈L¯¯¯¯x∈Mf(x)∈LLM⊆NP。これはすぐに意味そのNP CONP、およびNP = CONPそう。⊆
Cook-NP-hard言語がPにある場合、P = NP:NPの言語Mに対して、LへのCook縮約を使用して、Mのポリタイムアルゴリズムを提供します。その意味で、Cook-NP-complete言語は「NPで最も難しい」言語でもあります。クックの削減:一方、クック-NP-ハード=クック-CONP-ハードいることを確認することは容易であるLは、クックの削減に変換することができ¯ L。そのため、Cookリダクションを使用すると精度がいくらか失われます。LMLMLL¯¯¯¯
Cookリダクションの使用にはおそらく他にも欠点がありますが、他の回答者にはそれを任せます。