コンピュータサイエンスのNPコンプリートとは何ですか?


429

NP完全問題とは何ですか?なぜそれがコンピュータサイエンスでそれほど重要なトピックなのでしょうか。


5
この質問への回答に興味がすることができる。stackoverflow.com/questions/111307/...
ダン・ダイアー

1
さて、受け入れられた回答の提示方法が気に入らず、P = NP質問へのリンクを含めたので、自分で回答を書くことにしました。
グロム

1
NP完全問題が何であるかを説明する離散数学に関する非常に優れたarsdigita講義があります。最初の50分は主にブール代数です。したがって、P、NP、NP完全性、ブール充足可能性の問題と削減の概念のみに関心がある場合は、53分の最初に直接ジャンプします。
davitenio 2009年

1
nが大きいと完了しないので、私たちは決してわかりません;)
ピートアルビン14

1
私はこのビデオの説明を確認することを非常に気に入っており、本当に推奨しています:youtube.com/watch
v=YX40hbAHx3s

回答:


209

NPNon-deterministicの略です多項式時間の。

これは、問題が非決定性チューリングマシン(通常のチューリングマシンのように、非決定性「選択」関数も含む)を使用して多項式時間で解決できることを意味します。基本的に、ソリューションはポリタイムテスト可能でなければなりません。これが当てはまる場合、既知のNP問題は、入力を変更した特定の問題を使用して解決できます(NP問題は、与えられた問題に還元)、問題はNP完了です。

NP完全問題から取り除かなければならない主なことは、既知の方法で多項式時間で解くことができないことです。NP-Hard / NP-Completeは、特定のクラスの問題が現実的な時間では解決できないことを示す方法です。

編集:他の人が指摘したように、NP完全問題の近似解はしばしばあります。この場合、近似解は通常、近似がどれほど近いかを示す特別な表記法を使用して近似限界を与えます。


2
「... NP問題は与えられた問題に還元できる...」-還元に対する重要な制約は、それが決定論的に多項式でなければならないということです。
ラファウDowgird

2
O()表記は、至る所で使用されている一般的な数学的表記です。近似アルゴリズムは確かにO()の精度に与えられています。arxiv.orgの近似アルゴリズムペーパーを参照してください
Ying Xiao

1
少し明確にするために、NP問題は非決定性チューリングマシンを参照しています。NP完全問題が決定論的チューリングマシンの多項式時間で解決できるかどうかはまだ不明です。
rjzii 2009

1
@ユヴァル:明確にするために。以前に持っていたものは完全に間違っていました(P = NPを除く)。あなたのコメントから、両方のバージョンが正しかったと感じているように感じます。そうでない場合は、お詫び申し上げます。

33
この答えは完全で理解できるものにはほど遠く、なぜそれがそれほど多くの賛成票を持っているのか理解できません。
nbro

428

NPとは?

NPはすべてのセットです決定問題「yes'-回答ができるため(はい・オア・ノーの答えと質問)検証多項式時間(O(nはK)ここで、nは、問題の大きさであり、kはあります定数)決定論的チューリングマシンによる。多項式時間は時々の定義として使用され、高速または迅速

Pとは?

Pは、可能な全ての決定問題の集合であり、解決には多項式時間決定性チューリングマシン。それらは多項式時間で解くことができるので、多項式時間で検証することもできます。したがって、PはNPのサブセットです。

NP-Completeとは何ですか?

NPにある問題xは、NPの他のすべての問題を迅速に(つまり、多項式時間で)xに変換できる場合に限り、NP-Completeにもあります。

言い換えると:

  1. xはNPにあり、
  2. NPのすべての問題はxに還元可能です

したがって、NP-Completeを非常に興味深いものにしているのは、NP-Completeの問題のいずれかをすばやく解決する必要がある場合、すべてのNPの問題をすばやく解決できることです。

「P = NPとは」という投稿も参照してください。なぜこのような有名な質問なのですか。

NP-ハードとは?

NP-Hardは、少なくともNPで最も難しい問題と同じくらい難しい問題です。NP完全問題もNP困難であることに注意してください。ただしNP、接頭辞として持っているにもかかわらず、すべてのNPハード問題がNP(または決定問題でさえ)であるとは限りません。つまり、NP-hardのNPは、非決定的多項式時間を意味しません。はい、これは混乱を招きますが、その使用法は定着しており、変更される可能性はほとんどありません。


4
「それはNP-hardのNPは非多項式を意味しない」<-NP-complete(または他の場所)のNPも非多項式を意味しない。
sepp2k 2010年

1
修正してくれたsepp2kに感謝します。私はそれがNP(すなわち、非決定論的多項式時間)を意味しないと言うつもりでした。
グロム'16

1
私はあなたの答えがこのスレッドの他のものと同じくらいまたはそれ以上に単純化すると思います。しかし、これは私が把握するのが非常に難しい問題です...彼らがアルゴリズムに大金を払っているのはそのためだと思います。
SoftwareSavant

3
NPについて:そうあるべきだと思います:問題は非決定性チューリングマシンで解決できます。(皮膚科学的ではなく非決定論的)
hqt

2
@hqt私が書いたものは正しいです。「確認済み」という単語に注目してください。あなたも正解です。NPは、非決定性チューリングマシンによって多項式時間で解くことができます
グロム

32

NP-Completeは非常に具体的なものを意味し、注意しなければ定義が間違ってしまいます。まず、NP問題は、はい/いいえの問題です。

  1. 答えが「はい」である「はい」の答えを持つ問題のすべてのインスタンスには、多項式時間の証明があり、または(同等)
  2. 問題のインスタンスへの回答が「はい」である場合に「はい」と答える確率がゼロ以外であり、次の場合に100%の場合「いいえ」と答える多項式時間アルゴリズム(確率変数を使用する可能性があります)が存在します。答えはノーだ。" 言い換えると、このアルゴリズムでは、100%未満の偽陰性率があり、偽陽性がないことが必要です。

問題XがNP完全である場合

  1. XはNPにあり、
  2. NPの問題Yの場合、YからXへの「削減」があります。YのインスタンスをXのインスタンスに変換する多項式時間アルゴリズムです。 Xインスタンスの答えが「はい」の場合。

XがNP完全であり、Xのすべてのインスタンスを正しく解決できる確定的多項式時間アルゴリズムが存在する場合(0%偽陽性、0%偽陰性)、NPの問題は確定的多項式で解決できます。時間(Xに削減)。

これまでのところ、そのような決定論的多項式時間アルゴリズムを考え出す人はいませんが、これが存在しないことを証明した人はいません(どちらかを実行できる人には100万ドルあります。これはP = NP問題です)。これは、NP-Complete(またはNP-Hard)問題の特定のインスタンスを解決できないという意味ではありません。これは、整数のリストを確実にソートできるのと同じように、問題のすべてのインスタンスで確実に機能するものを使用できないことを意味します。NP-Hard問題のすべての実用的なインスタンスで非常にうまく機能するアルゴリズムを思いつくことができるかもしれません。


1
私は自慢したくありませんが、私が証明した多項式時間アルゴリズムが存在しないことを証明した私の誇りに思っています。;)
カイル・クロニン、

20
私はこれの本当に素晴らしい証拠を発見しました。このコメントは狭すぎて含めることができません;)
quick_dry

条件#2はP =?NPのステートメントであり、NP完全性の標準的な定義ではありません。他の NPインスタンスXをこの問題のインスタンスYに変換できる確定的ポリタイムアルゴリズムが存在し、X の回答が「はい」の場合に限り、Yの回答は「はい」です。
Chris Conway、

「注意する必要があります。そうしないと、定義が間違ってしまいます」-このまさに答えによって証明されます。この答えは部分的に正しいですが、確かに受け入れられるべきではありませんでした。
Windowsプログラマー、

29

基本的に、この世界の問題は次のように分類できます

         1)解決できない問題2)扱いにくい問題3)NP問題4)P問題


         1)最初の問題は問題の解決策ではありません。2)2番目は、必要な指数時間です(つまり、上記のO(2 ^ n))。3)3番目はNPと呼ばれます。4)4番目は簡単な問題です。


P:多項式時間の問題の解を指します。

NP:解を見つけるまでに多項式時間を参照します。多項式時間解がないことはわかりませんが、いったん解を提供すると、この解は多項式時間で検証できます。

NP Complete:多項式時間でまだ解を見つけることができませんが、多項式時間で検証できます。NPの問題NPCはより難しい問題です。したがって、NPC問題のP解があることを証明できれば、P解で見つかるNP問題です。

NPハード:多項式時間はまだ解決策を見つけていないが、多項式時間では検証できないことを示します。NPハードの問題はNPCの問題を上回ります。


この回答を見てうれしいですが、分類の部分は、全体の概念に対して非常に表現力があります。相互作用可能な問題はNP問題だと思いました。
PeerNet

22

NP-Completeは一種の問題です。

クラスPは、多項式時間で解けるこれらの問題で構成されます。たとえば、定数kについてO(n k)で解くことができます。ここで、nは入力のサイズです。簡単に言えば、妥当な時間で実行されるプログラムを作成できます。

このクラスNPは、多項式時間で検証可能な問題で構成されています。つまり、潜在的な解が与えられた場合、与えられた解が多項式時間で正しいかどうかを確認できます。

いくつかの例は、ブール充足可能性(またはSAT)問題、またはハミルトニアンサイクル問題です。クラスNPにあることが知られている多くの問題があります。

NP-Complete問題は少なくとも NPの問題と同じくらい難しい。

NPの問題はNP完全の別の問題に変換できることが証明されているため、コンピューターサイエンスにとって重要です。つまり、1つのNP完全問題の解決策は、すべてのNP問題の解決策です。

セキュリティにおける多くのアルゴリズムは、NPのハード問題に対する既知の解決策が存在しないという事実に依存しています。ソリューションが見つかった場合、コンピューティングに大きな影響を与えることは間違いありません。


これは間違っています。NPの問題は、NPの問題ではなく、NP完全の問題に変換できます。それは大きな違いです。
David Nehme、2008年

また、「問題はNPの問題と同じくらい難しい」-正しいですが、より良い表現は「少なくとも同じくらい難しい」でしょう。全体として、この回答は私が見た他のどの回答よりも近く、残念ながら受け入れられた回答よりも近くなっています。
Windowsプログラマ、

ご覧いただきありがとうございます。修正を含めて回答を更新しました。
Vincent Ramdhanie、2008年

1
NP-Completeの定義は完全ではありません。NP-Completeの問題もNP(およびNP-hard)の問題であり、NPの問題ほど難しくないことも指定する必要があります。私が反対票を投じます。変更する場合は、私に知らせて、反対票を削除します。
nbro

20

これは、すべての可能性をシミュレーションして、最適なソリューションを確実に得る必要があるクラスの問題です。

一部のNP完全問題には多くの優れたヒューリスティックがありますが、それらはせいぜい知識に基づく推測にすぎません。


ほぼ正しい。問題は、本質的に多項式ではない非網羅的な解決策を持つ可能性があります。
マークベッシー

1
完全に正しくはありませんが、これは実際の使用には十分に近いです。OPはおそらくペンダティックな定義を望んでいますが、ペンダティックな定義は必要ありません。それは良い近似です!
doug65536 2013年

18

NP完全な問題の例を探している場合は、3-SATを確認することをお勧めします。

基本的な前提は、式が論理積の正規形であるということです。これは、すべて真でなければならないORで結合された一連の式があることを示す方法です。

(a or b) and (b or !c) and (d or !e or f) ...

3-SATの問題は、OR式のそれぞれが一致するブール値を正確に3つ持つ式を満たすソリューションを見つけることです。

(a or !b or !c) and (!a or b or !d) and (b or !c or d) ...

これに対する解決策は(a = T、b = T、c = F、d = F)かもしれません。ただし、多項式時間の一般的なケースでこの問題を解決するアルゴリズムは発見されていません。つまり、この問題を解決する最善の方法は、本質的にブルートフォースの推測とチェックを実行し、機能する組み合わせが見つかるまでさまざまな組み合わせを試すことです。

3-SAT問題の特別な点は、すべてのNP完全問題を3-SAT問題に還元できることです。つまり、この問題を解決するための多項式時間アルゴリズムを見つけることができれば、世界中のコンピューター科学者や数学者の尊敬と称賛は言うまでもなく、1,000,000ドルを手に入れることができます。


おそらく、ここにある他の説明に混乱しているかもしれませんが、「NPの問題はすべて多項式時間での3 SATの問題に還元できる」と読むべきではありません。それが3-SAT NP-Completeを作るものではないのですか?
DubiousPusher 2017年

@DubiousPusherいいえ。答えはそれを正しく述べています。この画像の明確化は、それがstackoverflow.com/a/7367561/2686502
jayeshsolanki93を

14

正直、ウィキペディアはこれに対する答えを探すのに最適な場所かもしれません。

NP = Pの場合、非常に難しい問題を以前よりもはるかに早く解決できます。P(多項式)時間でNP完全問題を1つだけ解く場合、それはNP完全カテゴリの他のすべての問題に適用できます。


6
「NP = Pであれば、非常に難しい問題を以前よりもはるかに早く解決できます。」-いいえ。NP = Pの場合、解は存在します(それらを解くための決定論的アルゴリズムが存在します)が、それが何であるかを知ることができるという保証はありません。
Windowsプログラマー、

公正なポイント。私の推測は、P = NPが建設的である可能性が高いことの証明(たとえば、3-SATの多項式アルゴリズムの公開)です。
Chris Conway、

10

アルゴリズムと問題を分離する必要があります。問題を解決するためのアルゴリズムを作成し、特定の方法でスケーリングします。これは簡略化ですが、スケーリングに十分な場合はアルゴリズムに「P」のラベルを付け、そうでない場合は「NP」のラベルを付けましょう。

解決に使用するアルゴリズムではなく、解決しようとしている問題について知ることは役に立ちます。したがって、適切なスケーリングアルゴリズムを持つすべての問題は「P内」であると言います。そして、貧弱なスケーリングアルゴリズムを持つものは「NP内」です。

つまり、簡単な問題を解決するために悪いアルゴリズムを書くことができるので、単純な問題の多くは「NP内」にもあるということです。NPのどの問題が本当にトリッキーな問題であるかを知るのは良いことですが、「良いアルゴリズムを見つけられなかった問題だ」と言いたくないだけです。結局のところ、私は超驚くべきアルゴリズムが必要だと思う問題(Xと呼ぶ)を思いつくことができました。私は、Xをうまく解くために思いつくことができる最良のアルゴリズムを世界に告げるので、Xは本当に難しい問題だと思います。しかし、明日、私より賢い誰かがXを解いてPにあるアルゴリズムを発明するかもしれません。したがって、これは難しい問題の非常に良い定義ではありません。

それでも、NPには良いアルゴリズムを知らない問題がたくさんあります。だから私は、できれば証明する良いアルゴリズムがXは、可能性が解決する1:Xは、問題の特定の一種であることのために良いアルゴリズムを与えるために、いくつかの回り道では、使用するすべての NP内の他の問題が。さて、Xは本当にトリッキーな問題だと人々はもう少し確信しているかもしれません。この場合、X NP-Completeと呼びます。


5

上記のNP完全問題の定義は正しいですが、私はそれらの哲学的重要性について叙情的で、誰もまだその問題に取り組んでいないので、私は叙情的であるかもしれないと思いました。

直面するほとんどすべての複雑な問題はNP Completeです。このクラスには非常に基本的なものがあり、これは計算上、簡単に解決できる問題とは異なるようです。彼らは一種の独自の風味を持っており、それらを認識することはそれほど難しくありません。これは基本的に、適度に複雑なアルゴリズムを正確に解くことが不可能であることを意味します-スケジューリング、最適化、パッキング、カバーなど。

ただし、発生する問題がNP Completeである場合、すべてが失われるわけではありません。人々が近似アルゴリズムを研究する広大で非常に技術的な分野があり、NP完全問題の解に近いことを保証します。これらのいくつかは信じられないほど強力な保証です。たとえば、3satの場合、本当に明白なアルゴリズムによって7/8の保証を得ることができます。さらに良いことに、実際には、非常に強力なヒューリスティックがあり、これらの問題に対して優れた回答を提供します(ただし保証はありません)。

2つの非常に有名な問題-グラフ同型写像と因数分解-は、PまたはNPとして知られていません。


5

「NP完全性はおそらくアルゴリズムの研究における謎めいたアイデアの1つです。「NP」は「非決定論的多項式時間」の略で、複雑度クラスと呼ばれるものの名​​前です。どの問題が属している可能性があります。 NP性が複雑度クラスそのクラス内の問題が検証多項式時間アルゴリズムによる。例として、ものを数える問題を考えてみましょう。テーブルにリンゴがたくさんあるとしましょう。問題は「リンゴはいくつある?」です。可能な答えは8です。リンゴを数えるアルゴリズムを使用すると、多項式時間でこの答えを確認できます。リンゴのカウントはO(n)(Big-oh表記)の時間で行われます。これは、各リンゴのカウントに1ステップかかるためです。n個のリンゴの場合、nステップが必要です。この問題は、NP複雑度クラスにあります。

問題は、NPハードであり、多項式時間で検証可能であることを示すことができる場合、NP完全として分類されます。NP-Hardの議論に深く入り込むことなく、多項式時間解が見つからなかった特定の問題があると言えば十分です。つまり、nのようなものが必要です。それらを解決するための(n階乗)ステップ。ただし、NP完全問題の解決策が与えられた場合は、多項式時間で検証できます。

NP完全問題の典型的な例は、巡回セールスマン問題です。」

著者:ApoxyButt From:http ://www.everything2.com/title/NP-complete


2

NP問題:-

  1. NP問題は、非決定的多項式時間で解けるような問題です。
  2. 非決定論的アルゴリズムは2段階で動作します。
  3. 非決定論的推測段階&&非決定論的検証段階。

Np問題のタイプ

  1. NP完了
  2. NPハード

NP完全な問題:-

1決定問題Aは、次の2つの特性がある場合、NP完了と呼ばれます。

  1. クラスNPに属しています。
  2. NPの他のすべての問題は、多項式時間でPに変換できます。

いくつかの例:-

  • ナップザック問題
  • サブセット合計問題
  • 頂点カバーの問題

ステージに関する簡単な質問...検証ステージは確定的ではありませんか?PタイムでNPの問題は確認されていません
Branden Keck

1

NP完全問題は、他のNP問題を多項式時間で削減できる問題のセットであり、その解は多項式時間で検証できます。つまり、どのNP問題も、NP完全問題のいずれかに変換できます。–非公式には、NP完全問題は、少なくともNPの他の問題と同じくらい「厳しい」NP問題です。


1

私が理解する限りでは

Pは、決定論的TMを使用して多項式時間で解くことができる問題のセットです。

NPは、多項式時間で解くために非決定的TMを必要とする問題のセットです。これは、すべての可能な変数を並列にチェックすることを意味し、各インスタンスは多項式時間をとります。問題が解決可能な場合、これらの並列状態の少なくとも1つに問題の解決策がなければなりません。これは、解の変数について推測した場合、多項式時間で解の有効性をチェックすることだけが必要であることも意味します。

NP-ハードは、問題が少なくともNPと同じくらい難しいセットです。NPの問題は、多項式時間のNP-Hard問題に変換できます。これらの問題は、PがNPに等しくない場合、多項式時間では解決できません。これは、NPで最も難しい問題が多項式時間解ける場合であり、NPハード問題のみが多項式時間解けるときです。

NP-Completeは、NPとNP-Hardの交差集合です。NP問題は、多項式時間でNP完全問題に変換できます。つまり、いずれかのNPコンプリートで効率的なソリューションを実現できれば、どのNP問題でも同じ効率で解決できます。

間違えたら教えてください。


-17

NP問題は、解を検証するコンピューターアルゴリズムを多項式時間で作成できる問題です。

NP完全問題はNPですが、多項式時間(Pと呼ばれる)で解くことができる場合、すべてのNP問題はPです。

だからクラッキングを取得します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.