web-dev-qa-db-ja.com

NP、NP-Complete、NP-Hardの違いは何ですか?

_ np _ NP-Complete 、および NP-Hard の違いは何ですか?

私はウェブ上の多くのリソースを知っています。私はあなたの説明を読みたいのですが、その理由はそこにあるものと違うかもしれないし、あるいは私が気付いていないことがあるからです。

1024
DarthVader

私は見回していて、長い説明をたくさん見てきました。要約するのに役立つかもしれない小さい図表はここにあります:

難易度が上から下へどのように上がるかに注意してください。any NPはNP-Complete に減らすことができ、any NP-CompleteはNP-Hard に減らすことができますP(多項式)時間です。

P時間でもっと難しいクラスの問題を解くことができれば、それはあなたがP時間ですべてのより簡単な問題を解く方法を見つけたことを意味するでしょう。 P時間)。

 ____________________________________________________________ 
 |問題のタイプP時間で検証可能P時間で解ける難易度の増加
 ___________________________________________________________ | | 
 | P |はい|はい| | 
 | NP |はい|はいまたはいいえ| 
 | NPコンプリート|はい|不明| | 
 | NP-ハード|はいまたはいいえ不明*** | | [
 ____________________________________________________________ V 

YesまたはNoエントリーに関する注意事項

  • * PであるNP問題は、P時間で解くことができます。
  • ** NP完全問題でもあるNP困難問題は、P時間で検証可能です。
  • *** NP-Complete問題(それらすべてはNP-hardのサブセットを形成します)はそうかもしれません。 NP hardの残りの部分はそうではありません。

私はまた このダイアグラム これらすべてのタイプが互いにどのように対応しているかを見るのに非常に便利です(ダイアグラムの左半分にもっと注意を払う)。

235
Johnson Wong

これは、質問に対する非常に非公式の回答です。

3233は、1より大きい2つの他の数値の積として記述できますか?すべての ケーニヒスベルクの7つの橋 を2回渡らずにすべての道を歩く方法はありますか?これらは、共通の特徴を共有する質問の例です。答えを効率的に決定する方法は明らかではないかもしれませんが、答えが「はい」の場合、証拠を確認するための短い迅速な方法があります。最初のケースでは、51の非自明な因数分解。 2番目は、橋を歩くためのルートです(制約に適合します)。

意思決定問題は、1つのパラメータのみが異なるyesまたはnoの答えを持つ質問の集まりです。問題を言うCOMPOSITE = {"nコンポジット":nは整数です}またはEULERPATH = {"グラフにGはオイラーパスを持っていますか?":G有限グラフです}。

現在、いくつかの決定問題は、明らかではないにしても、効率的なアルゴリズムに向いています。オイラーは、250年以上前に「ケーニヒスベルクの7つの橋」のような問題に対する効率的なアルゴリズムを発見しました。

一方、多くの意思決定問題では、答えを得る方法は明らかではありませんが、追加の情報を知っている場合、答えが正しいことを証明する方法は明らかです。 COMPOSITEは次のようなものです。試行分割は明らかなアルゴリズムであり、遅いです。10桁の数字を因数分解するには、100,000の可能な除数のようなものを試す必要があります。しかし、たとえば、61が3233の約数であると誰かに言われた場合、単純な長い除算はそれらが正しいことを確認する効率的な方法です。

複雑度クラスNPは、「はい」の回答が状態に不足しており、迅速に証拠をチェックできる決定問題のクラスです。コンポジットのように。重要な点の1つは、この定義では、問題の難しさについて何も述べていないことです。意思決定の問題を解決するための正しい効率的な方法があれば、ソリューションのステップを書き留めるだけで十分です。

アルゴリズムの研究は継続されており、常に新しい巧妙なアルゴリズムが作成されています。今日、効率的に解決する方法を知らないかもしれない問題は、明日、効率的な(明らかではないにしても)解決策になることがあります。実際、コンポジットの効率的な解決策を見つけるには 2002 まで研究者が必要でした!これらのすべての進歩で、人は本当に疑問に思う必要があります。これは短い証拠を持っていることについてのこのビットは単なる幻想ですか?多分every効率的な証明に役立つ決定問題には効率的な解決策があるのでしょうか? 誰も知らない

おそらく、この分野への最大の貢献は、NP問題の特異なクラスの発見によるものです。計算用の回路モデルをいじることで、Stephen Cookは、every other NPの問題よりも難しいまたは難しいNP多様性の決定問題を発見しました。 boolean satisfiability problem の効率的なソリューションを使用して、NPのany other問題の効率的なソリューションを作成できます。まもなく、リチャード・カープは、他の多くの決定問題が同じ目的に役立つことを示しました。これらの問題は、ある意味でNPの「最も難しい」問題であり、NP-complete問題として知られるようになりました。

もちろん、NPは意思決定の問題のクラスにすぎません。 「Nの因子を見つける」、「すべての頂点を訪れるグラフGの最短パスを見つける」、「次のブール式を真にする変数割り当てのセットを与える」など、多くの問題は自然にこの方法で述べられません。そのような問題が「NP内」にあることを非公式に話すかもしれませんが、技術的にはあまり意味がありません-決定の問題ではありません。これらの問題のいくつかは、NP完全問題と同じ種類の力を持っている場合もあります。これらの(非決定)問題の効率的な解決策は、NP問題の効率的な解決策に直接つながります。このような問題はNP-hardと呼ばれます。

74
Managu

他のすばらしい答えに加えて、ここに 典型的なスキーマ がNP、NP-Complete、およびNP-Hardの違いを示すために使用します。

enter image description here

55

P(多項式時間):名前が示すように、これらは多項式時間で解決できる問題です。

NP(非決定的多項式時間):これらは多項式時間で検証できる決定問題です。つまり、特定の問題に対して多項式時間解があると主張した場合、それを証明するように依頼してください。それでは、多項式時間で簡単に検証できる証明書をお渡しします。この種の問題はNP問題と呼ばれます。ここでは、この問題に対する多項式時間解があるかどうかについては話していません。しかし、我々は多項式時間で与えられた問題に対する解を検証することについて話しています。

NP困難:これらは少なくともNPで最も困難な問題と同じくらい困難です。これらの問題を多項式時間で解くことができれば、存在する可能性があるすべてのNP問題を解決できます。これらの問題は必ずしもNP問題ではないことに注意してください。つまり、多項式時間でこれらの問題の解決策を検証することができます。

NP-Complete:これらはNPとNP-Hardの両方の問題です。つまり、これらの問題を解くことができれば、他のNP問題を解くことができ、これらの問題の解決策を多項式時間で検証することができます。

52

P v。NPなどを専門的な知識を持たずに説明する最も簡単な方法は、 "単語の問題"と "複数選択問題"を比較することです。

あなたが "Wordの問題"を解決しようとしているとき、あなたは最初から解決策を見つけなければなりません。あなたが「多肢選択問題」を解決しようとしているとき、あなたは選択があります:あなたが「Word問題」と同じようにそれを解決するか、あなたに与えられた答えの各々を差し込むことを試みてください。

多くの場合、「複数選択問題」は対応する「単語問題」よりもはるかに簡単です。候補の答えを置き換えて、それが適合するかどうかを確認することは、最初から正しい答えを見つけるよりもはるかに少ない労力で済みます。

さて、多項式時間 "easy"をとる努力に同意するなら、クラスPは "easy Word problems"から成り、クラスNPは "easy multiple choice problem"から成るでしょう。

P v。NPの本質は、「Wordの問題と同じくらい簡単ではない、簡単な複数選択問題はありますか」という質問です。つまり、与えられた回答の妥当性を検証するのは簡単ですが、その回答を最初から見つけるのが難しい問題はありますか。

NPが何であるかを直感的に理解できたので、直感に挑戦しなければなりません。ある意味でそれらのすべての中で最も難しい「多肢選択問題」があることがわかります。それらのうちの1つの問題に対する解決策が見つかれば、ALLの解決策を見つけることができます。 NP問題!クックがこの40年前に発見したとき、それは完全な驚きとして来ました。これらの「最も難しい」問題は、NP困難として知られています。あなたがそれらのうちの1つに「Word問題解決策」を見つけるならば、あなたは自動的にそれぞれの「簡単な複数選択問題」に「Word問題解決策」を見つけるでしょう!

最後に、NP完全問題は同時にNPそしてNP困難な問題です。私たちのアナロジーに従うと、それらは同時に「多肢選択問題としては簡単」であり、「それらはすべてWord問題として最も困難です」。

43
Michael

私たちはもっと簡潔にそれに答えることができると思います。 に関連する質問 に答え、そこから自分の答えをコピーします

しかし、最初に、NP困難問題は、多項式時間解が存在することを証明できない問題です。ある「問題P」のNP困難性は通常、すでに証明済みのNP困難問題を多項式時間で「問題P」に変換することによって証明されます。

残りの質問に答えるには、最初にどのNP困難問題もNP完全問題であるかを理解する必要があります。 NP困難問題が集合NPに属する場合、それはNP完全である。集合NPに属するためには、問題は

(i)決定問題
(ii)問題の解の数は有限でなければならず、各解は多項式長でなければなりません。
[iii。](iii)多項式長さの解が与えられると、問題に対する答えがイエス/ノーであるかどうかを言うことができるはずです。

さて、set NPに属さず、解決するのがより難しいNP困難な問題がたくさんある可能性があることは簡単にわかります。直感的な例として、実際のスケジュールを見つける必要がある巡回セールスマンの最適化バージョンは、長さ<= kのスケジュールが存在するかどうかを判断するだけでよい決定バージョンの巡回セールスマンよりも困難です。

18
Sushant Sharma

NP完全問題は、NP困難であると同時に複雑さクラスNPでもある問題です。したがって、与えられた問題がNP完全であることを示すには、その問題がNPにあることと、NP困難であることの両方を示す必要があります。

NP複雑度クラスにある問題は、多項式時間で非決定論的に解くことができ、NPの問題に対する可能な解決策(すなわち証明書)は、次の式で正確さを検証できます多項式時間.

Kクリーク問題に対する非決定的な解の例は、次のようになります。

1)グラフからk個のノードをランダムに選択する。

2)これらのk個のノードがクリークを形成することを検証する。

上記の方法は入力グラフのサイズが多項式であるため、kクリーク問題はNPにあります。

多項式時間で決定論的に解くことができる問題はすべてNPにもあります。

問題がNP困難であることを示すには、通常、多項式時間マッピングを使用して、他のNP困難問題からあなたの問題に帰着させる必要があります。 http://en.wikipedia.org/wiki/Reduction_(complexity)

16
awesomo

この質問には本当にいい答えがあるので、私自身の説明を書く意味はありません。だから私は計算の複雑さの異なるクラスについての優れたリソースで貢献しようとします。

計算の複雑さはPとNPについてだけであると思う人のために、 これが最も徹底的なリソースです /異なる計算の複雑さの問題について。 OPによって求められた問題を別にして、それはニースの記述とそのクラスを記述する基礎研究論文のリストで計算問題のおよそ500の異なるクラスをリストしました。

5
Salvador Dali

私が理解しているように、 np-hard 問題は np-complete 問題より「難しい」わけではありません。実際、定義上、すべてのnp-complete問題は次のとおりです。

  1. nPで
  2. nPハード

enter image description here

- イントロ。 Cormen、Leiserson、Rivest、およびSteinによるアルゴリズム(3ed)pg 1069

3
MrDrews

興味深い定義を見つけてください:

enter image description here

1
sendon1982