問題がNP完全であることを証明する方法は?


108

スケジュールに問題があります。問題がNP完全であることを証明する必要があります。それがNP完全であることを証明する方法は何ですか?


Karpによる「組み合わせ問題間の還元性」を読んでください。
ポールハンキン、2014年

回答:


146

問題がNP完全であることを示すには、次のことを行う必要があります。

NPであることを示す

言い換えると、いくつかの情報が与えられれば、ドメイン内にあるかどうかにかかわらず、すべての可能な入力を検証するC多項式時間アルゴリズムVを作成できます。XX

頂点カバー問題(つまり、あるグラフGk、すべてのエッジGのカバーセットに少なくとも1つの頂点があるようなサイズの頂点カバーセットがあるか)がNP であることを証明します。

  • 私たちの入力XはいくつかのグラフGといくつかの数値ですk(これは問題の定義からのものです)

  • 情報Cを「Gサイズのグラフの頂点の可能なサブセットk」とする

  • その後、我々は、アルゴリズム記述することができますV与えられた、ということをGkそしてC、頂点の集合は、頂点のためのカバーであるかどうかを返しますGではない、または多項式時間

次に、すべてのグラフについて、頂点カバーである「サイズのG可能な頂点のサブセット」が存在する場合は、にあります。GkGNP

多項式時間で見つける必要がないことに注意してくださいC。できれば、問題は `P.

アルゴリズムVすべての G場合、一部の場合に機能することに注意しくださいC。すべての入力には、入力が問題の領域にあるかどうかを確認するのに役立つ情報が存在する必要あります。つまり、情報が存在しない入力はありません。

NPハードであることを証明

これには、次の形式のブール式のセットであるSATなどの既知のNP完全問題を取得することが含まれます。

(AまたはBまたはC)および(DまたはEまたはF)および...

式が満足できる場合、つまり、これらのブール値に何らかの設定があり、式がtrueになります

次に、NP完全問題を多項式時間の問題に減らします

これは、いくつかの入力与えられているXためSAT(またはものは何でも使用しているNP完全問題を)、いくつかの入力作成しY、このような問題のため、X場合に限り、SATでありY、あなたの問題であるが。関数f : X -> Y多項式時間で実行する必要があります。

上記の例では、入力YはグラフGと頂点カバーのサイズになりますk

以下のための完全な証拠、あなたは両方を証明する必要があると思います。

  • それXはあなたの問題のSAT=> Yにあります

  • そしてYあなたの問題では=> XSAT

marcogの回答には、問題に還元できる他のいくつかのNP完全問題とのリンクがあります。

脚注:ステップ2(NP困難であることを証明)では、別のNP困難(必ずしもNP完全ではない)問題を現在の問題に削減します。 NPでも)。


7
これの背後にデータの欠落や循環的な推論があるのだろうか。「NPに既にある」他の問題に言及せずに、NPに問題があることを「証明」する方法を意味しますか?それは「一部が鉄であることが知られているので鉄でできている」と言うようなもので、それは鉄の証拠ではありません。
エルナンEche

6
私が覚えている限り、SATはNP完全であると述べているCook-Levinの定理と呼ばれる定理があります。その証明は、上で概説したものよりもかなり複雑であり、私自身の言葉でそれを説明することはできないと思います。
Laila Agaev 2014年

4
より正確には、Cook-Levinの定理はSATはNP完全であると述べています。NPの問題は、決定論的チューリングマシンによって多項式時間でブール式が満たされるかどうかを決定する問題(SAT)に削減できます。それがあなたが尋ねていた欠けている部分です。ウィキペディアで定理を調べれば証明があり、その定理を証明で参照できます。とはいえ、SATを特定の問題に削減することは、NPの完全性を証明するために私が教えられた方法です。
Laila Agaev 2014年

だから私の質問は、SATが多項式で解けるかどうかということになります。つまり、P = NP問題です。回答ありがとうございます。
エルナンEche

2番目のステップで、NP困難な問題を必要な問題に還元できない理由を説明していただけませんか?NP完全な問題である必要がありますか?
MLT 2014年

23

NP-Completeの問題をあなたが抱えている問題にまで減らす必要があります。削減が多項式時間で実行できる場合、問題がすでにNPにある場合、問題はNP完全であることを証明しました。

NP完全問題よりも簡単ではありません。問題をNP困難にする多項式時間で削減できるためです。

詳細については、http://www.ics.uci.edu/~eppstein/161/960312.htmlの最後を参照してください。


2
分かりやすく説明する人に+1する。キーワードへの参照をたくさん言う代わりに、私はほとんど理解できません。
ColacX 2013年

22
最初の文は裏返しです。既知のNP完全問題自分の問題に減らす必要があります。これは、問題が少なくとも既知のNP完全問題と同じくらい難しいことを示しています。パート(b)も正しくありません。削減が見つかった場合、問題はNP困難であることはすでにわかっています。唯一の問題は、それがNPにあるかどうかです(Halting Problemなどの一部の問題はそうではありません)。NPハードでNPの場合、NP完全です(つまり、「NP完全」は「NPハード」よりも具体的です)。
j_random_hacker 2013年

1
P!= NPであることを知らないため、a)は矛盾につながるとは言えません。
Chiel ten Brinke 2014年

8

問題LがNP完全であることを証明するには、次の手順を実行する必要があります。

  1. 問題LがNPに属していることを証明します(つまり、解が与えられれば多項式時間でそれを検証できます)
  2. 既知のNP完全問題L 'を選択してください
  3. L 'をLに変換するアルゴリズムfを説明する
  4. アルゴリズムが正しいことを証明します(正式には、f(x)∈Lの場合に限り、x∈L ')
  5. アルゴfが多項式時間で実行されることを証明

7

まず、それがNPにあることを示します。

次に、NPが完全であることをすでに知っている別の問題を見つけ、NPハード問題を多項式で削減する方法を示します。


いいえ。NP完全問題をNP問題に削減して、NP完全性を証明し、それがNPにあることを証明できることを示す必要があります。あなたがNPで証明できない限り、NPハードはこれには入りません。
mrmemio29

6
  1. NP Complete問題のサブセットに慣れる
  2. NP硬度の証明:NP完全問題の任意のインスタンスを問題のインスタンスに減らします。これはパイの最大の部分であり、NP Completeの問題に精通していることでメリットが得られます。選択したNP Completeの問題に応じて、削減は多少難しくなります。
  3. 問題がNPにあることを証明します。インスタンスがソリューションであるかどうかを多項式時間で検証できるアルゴリズムを設計します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.