web-dev-qa-db-ja.com

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

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

380
Claudiu

NP非決定的多項式時間を表します。

これは、問題が非決定論的チューリング機械を使用して多項式時間で解くことができることを意味します(通常のチューリング機械のように、しかし非決定論的な「選択」関数も含みます)。基本的に、解決策は テスト可能 ポリ時間で。その場合、既知のNP問題は入力を修正した与えられた問題を使って解決できます(NP問題は 減少 与えられた問題に対して)問題はNP completeです。

NP完全問題から離れる主なことは、それが既知の方法では多項式時間で解くことができないということです。 NP-Hard/NP-Completeは、ある種の問題が現実的な時間では解決できないことを示す方法です。

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

191
Sam Hoice

NP とは何ですか?

NPは、すべてのセットです 決定問題 (「はい」または「いいえ」の回答を含む質問)で、「はい」の回答はverified多項式時間(O(nk)ここで、nは問題のサイズ、kは定数) 決定論的チューリングマシン 。多項式時間は、fastまたはquicklyの定義として使用されることがあります。

P とは何ですか?

Pはsolved多項式時間によって決定論的チューリングマシン。多項式時間で解くことができるため、多項式時間で検証することもできます。したがって、PはNPのサブセットです。

NP-Complete とは何ですか?

NPにある問題xもNP-Completeにあり、NPにある他のすべての問題がすばやくできる場合すなわち、多項式時間で)xに変換されます。

言い換えると:

  1. xはNPにあり、
  2. NPのすべての問題は reducible to x

したがって、NP-Completeが非常に興味深いのは、NP-Completeの問題のいずれかを迅速に解決する場合、すべてNP問題は迅速に解決できます。

投稿も参照してください 「P = NP?」とは何ですか、なぜこれほど有名な質問なのですか?

NP-Hard とは何ですか?

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

398
grom

NP-Completeは非常に具体的なものを意味するため、注意する必要があります。そうしないと、定義が間違ってしまいます。まず、NP問題はyes/no問題であり、次のようになります。

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

問題Xは、NP完全です。

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

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

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

31
David Nehme

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

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

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

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

NP-Completeは、問題が少なくともで、NPの問題と同じくらい難しいことを意味します。

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

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

22

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

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


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


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

NP:多項式時間を参照して解決策を見つけます。多項式時間解が存在しないかどうかはわかりませんが、一度解を入力すると、この解は多項式時間で検証できます。

NP Complete:多項式時間でまだ解決策を見つけることができませんが、多項式時間で検証できます。 NPCの問題NPはもっと難しい問題なので、NPC problemのP解があると証明できればNP P解に見られる問題.

NP Hard:多項式時間はまだ解決策を見つけるためのものではありませんが、多項式時間で検証することはできません。 NP難しい問題はNPCを上回ります。

20
Marcus Thornton

最適な解決策があることを確認するためにあらゆる可能性をシミュレートする必要があるのは、ある種の問題です。

いくつかのNP完全問題には良い発見的方法がたくさんありますが、それらはせいぜい教育的な推測にすぎません。

18
Eric Wendelin

NP完全問題の例を探しているのであれば、 -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ドル となり、世界中のコンピュータ科学者や数学者の尊敬と称賛はもちろんのことです。

18
Kyle Cronin

正直なところ、 Wikipedia これに対する答えを探すのに最適な場所かもしれません。

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

14
jjnguy

アルゴリズムと問題を分ける必要があります。私達は問題を解決するためのアルゴリズムを書き、そしてそれらはある方法で拡大縮小します。これは単純化されていますが、スケーリングが十分であればアルゴリズムに 'P'、そうでなければ 'NP'とラベルを付けましょう。

解決に使用するアルゴリズムではなく、解決しようとしている問題に関することを知っておくと便利です。だから私達はよくスケーリングするアルゴリズムを持っているすべての問題が "in P"であると言うつもりです。そして、スケーリングのアルゴリズムが良くないものは "in NP"です。

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

すべて同じですが、NPには多くの問題があり、誰もが良いアルゴリズムを知っているわけではありません。それで、もし私が証明 Xがある種の問題であることを証明できれば、Xを解決するための良いアルゴリズムが、ある意味でまた良いことを与えるために使われることができます。 everyその他のNPの問題に対するアルゴリズム。さて今、人々はXが本当にトリッキーな問題であることをもう少し確信しているかもしれません。そしてこの場合、我々はX NP-Completeと呼ぶ。

9
Tom

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

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

しかし、あなたが遭遇する問題がNP Completeであるならば、すべてが失われるわけではありません。人々が近似アルゴリズムを研究する広大で非常に技術的な分野があり、それはNP完全問題の解に近いことの保証をあなたに与えるでしょう。これらのいくつかは信じられないほど強い保証です - 例えば、3satのために、あなたは本当に明白なアルゴリズムを通して7/8の保証を得ることができます。さらに良いことに、実際には、Excelがこれらの問題に対して素晴らしい答えを出してくれる(しかし保証はしていません!)非常に強力なヒューリスティックがあります。

2つの非常に有名な問題 - グラフ同型性と因数分解 - がPまたはNPであるとは知られていないことに注意してください。

5
Ying Xiao

「NP完全性は、おそらくアルゴリズムの研究における最も謎めいた考えの1つです。「NP」は、「非決定性多項式時間」を表し、複雑性クラスと呼ばれるものの名​​前です。 NP複雑度クラスについての重要なことは、そのクラス内の問題が多項式時間アルゴリズムによって確認できることです。テーブルの上にたくさんのりんごがあるとすると、問題は「りんごはいくつあるの?」という答えが出てきます8。この答えは多項式時間で検証できます。りんごの数え方はO(n)(それはBig-oh記法です)時間の間に起こります、なぜならそれは各りんごを数えるのに一歩かかるからです。この問題はNP複雑度クラスにあります。

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

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

作者:ApoxyButt投稿者: http://www.everything2.com/title/NP-complete

4
leizisdu

NP問題: -

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

Np問題の種類

  1. NP完了
  2. NPハード

NP完全問題: -

1決定問題Aが以下の2つの特性を持つ場合、NP completeと呼ばれます。

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

いくつかの例: -

  • ナップザック問題
  • 部分集合和問題
  • 頂点被覆問題
2
HeadAndTail

NP完全問題は、それぞれが他のNP問題を多項式時間で減らすことができ、その解決策が多項式時間で検証される可能性がある一連の問題です。つまり、NP問題はすべてNP完全問題に変換できます。 - 非公式に言えば、NP完全問題はNP問題で、NPの他の問題と少なくとも同じくらい「難しい」ものです。

1
Jamal Hussain

私が理解する限りでは

Pは、決定論的なTMで多項式時間で解くことができる問題の集合です。

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

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

NP-Completeは、NPとNP-Hardの交差セットです。すべてのNP問題は、多項式時間でNP完全問題に変換できます。つまり、NPコンプリートのいずれかが効率的な解決策を持つことができれば、NPの問題はすべて同じ効率で解決できます。

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

0
Revolver