NP完全問題とは何ですか?なぜそれがコンピュータサイエンスでそれほど重要なトピックなのでしょうか。
NP完全問題とは何ですか?なぜそれがコンピュータサイエンスでそれほど重要なトピックなのでしょうか。
回答:
NPはNon-deterministicの略です多項式時間の。
これは、問題が非決定性チューリングマシン(通常のチューリングマシンのように、非決定性「選択」関数も含む)を使用して多項式時間で解決できることを意味します。基本的に、ソリューションはポリタイムでテスト可能でなければなりません。これが当てはまる場合、既知のNP問題は、入力を変更した特定の問題を使用して解決できます(NP問題は、与えられた問題に還元)、問題はNP完了です。
NP完全問題から取り除かなければならない主なことは、既知の方法で多項式時間で解くことができないことです。NP-Hard / NP-Completeは、特定のクラスの問題が現実的な時間では解決できないことを示す方法です。
編集:他の人が指摘したように、NP完全問題の近似解はしばしばあります。この場合、近似解は通常、近似がどれほど近いかを示す特別な表記法を使用して近似限界を与えます。
NPはすべてのセットです決定問題「yes'-回答ができるため(はい・オア・ノーの答えと質問)検証多項式時間(O(nはK)ここで、nは、問題の大きさであり、kはあります定数)決定論的チューリングマシンによる。多項式時間は時々の定義として使用され、高速または迅速。
Pは、可能な全ての決定問題の集合であり、解決には多項式時間で決定性チューリングマシン。それらは多項式時間で解くことができるので、多項式時間で検証することもできます。したがって、PはNPのサブセットです。
NPにある問題xは、NPの他のすべての問題を迅速に(つまり、多項式時間で)xに変換できる場合に限り、NP-Completeにもあります。
言い換えると:
したがって、NP-Completeを非常に興味深いものにしているのは、NP-Completeの問題のいずれかをすばやく解決する必要がある場合、すべてのNPの問題をすばやく解決できることです。
「P = NPとは」という投稿も参照してください。なぜこのような有名な質問なのですか。
NP-Hardは、少なくともNPで最も難しい問題と同じくらい難しい問題です。NP完全問題もNP困難であることに注意してください。ただしNP
、接頭辞として持っているにもかかわらず、すべてのNPハード問題がNP(または決定問題でさえ)であるとは限りません。つまり、NP-hardのNPは、非決定的多項式時間を意味しません。はい、これは混乱を招きますが、その使用法は定着しており、変更される可能性はほとんどありません。
NP-Completeは非常に具体的なものを意味し、注意しなければ定義が間違ってしまいます。まず、NP問題は、はい/いいえの問題です。
問題XがNP完全である場合
XがNP完全であり、Xのすべてのインスタンスを正しく解決できる確定的多項式時間アルゴリズムが存在する場合(0%偽陽性、0%偽陰性)、NPの問題は確定的多項式で解決できます。時間(Xに削減)。
これまでのところ、そのような決定論的多項式時間アルゴリズムを考え出す人はいませんが、これが存在しないことを証明した人はいません(どちらかを実行できる人には100万ドルあります。これはP = NP問題です)。これは、NP-Complete(またはNP-Hard)問題の特定のインスタンスを解決できないという意味ではありません。これは、整数のリストを確実にソートできるのと同じように、問題のすべてのインスタンスで確実に機能するものを使用できないことを意味します。NP-Hard問題のすべての実用的なインスタンスで非常にうまく機能するアルゴリズムを思いつくことができるかもしれません。
基本的に、この世界の問題は次のように分類できます
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-Completeは一種の問題です。
クラスP
は、多項式時間で解けるこれらの問題で構成されます。たとえば、定数kについてO(n k)で解くことができます。ここで、nは入力のサイズです。簡単に言えば、妥当な時間で実行されるプログラムを作成できます。
このクラスNP
は、多項式時間で検証可能な問題で構成されています。つまり、潜在的な解が与えられた場合、与えられた解が多項式時間で正しいかどうかを確認できます。
いくつかの例は、ブール充足可能性(またはSAT)問題、またはハミルトニアンサイクル問題です。クラスNPにあることが知られている多くの問題があります。
NP-Complete
問題は少なくとも NPの問題と同じくらい難しい。
NPの問題はNP完全の別の問題に変換できることが証明されているため、コンピューターサイエンスにとって重要です。つまり、1つのNP完全問題の解決策は、すべてのNP問題の解決策です。
セキュリティにおける多くのアルゴリズムは、NPのハード問題に対する既知の解決策が存在しないという事実に依存しています。ソリューションが見つかった場合、コンピューティングに大きな影響を与えることは間違いありません。
これは、すべての可能性をシミュレーションして、最適なソリューションを確実に得る必要があるクラスの問題です。
一部のNP完全問題には多くの優れたヒューリスティックがありますが、それらはせいぜい知識に基づく推測にすぎません。
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 = Pの場合、非常に難しい問題を以前よりもはるかに早く解決できます。P(多項式)時間でNP完全問題を1つだけ解く場合、それはNP完全カテゴリの他のすべての問題に適用できます。
アルゴリズムと問題を分離する必要があります。問題を解決するためのアルゴリズムを作成し、特定の方法でスケーリングします。これは簡略化ですが、スケーリングに十分な場合はアルゴリズムに「P」のラベルを付け、そうでない場合は「NP」のラベルを付けましょう。
解決に使用するアルゴリズムではなく、解決しようとしている問題について知ることは役に立ちます。したがって、適切なスケーリングアルゴリズムを持つすべての問題は「P内」であると言います。そして、貧弱なスケーリングアルゴリズムを持つものは「NP内」です。
つまり、簡単な問題を解決するために悪いアルゴリズムを書くことができるので、単純な問題の多くは「NP内」にもあるということです。NPのどの問題が本当にトリッキーな問題であるかを知るのは良いことですが、「良いアルゴリズムを見つけられなかった問題だ」と言いたくないだけです。結局のところ、私は超驚くべきアルゴリズムが必要だと思う問題(Xと呼ぶ)を思いつくことができました。私は、Xをうまく解くために思いつくことができる最良のアルゴリズムを世界に告げるので、Xは本当に難しい問題だと思います。しかし、明日、私より賢い誰かがXを解いてPにあるアルゴリズムを発明するかもしれません。したがって、これは難しい問題の非常に良い定義ではありません。
それでも、NPには良いアルゴリズムを知らない問題がたくさんあります。だから私は、できれば証明する良いアルゴリズムがXは、可能性が解決する1:Xは、問題の特定の一種であることものために良いアルゴリズムを与えるために、いくつかの回り道では、使用するすべての NP内の他の問題が。さて、Xは本当にトリッキーな問題だと人々はもう少し確信しているかもしれません。この場合、X NP-Completeと呼びます。
上記のNP完全問題の定義は正しいですが、私はそれらの哲学的重要性について叙情的で、誰もまだその問題に取り組んでいないので、私は叙情的であるかもしれないと思いました。
直面するほとんどすべての複雑な問題はNP Completeです。このクラスには非常に基本的なものがあり、これは計算上、簡単に解決できる問題とは異なるようです。彼らは一種の独自の風味を持っており、それらを認識することはそれほど難しくありません。これは基本的に、適度に複雑なアルゴリズムを正確に解くことが不可能であることを意味します-スケジューリング、最適化、パッキング、カバーなど。
ただし、発生する問題がNP Completeである場合、すべてが失われるわけではありません。人々が近似アルゴリズムを研究する広大で非常に技術的な分野があり、NP完全問題の解に近いことを保証します。これらのいくつかは信じられないほど強力な保証です。たとえば、3satの場合、本当に明白なアルゴリズムによって7/8の保証を得ることができます。さらに良いことに、実際には、非常に強力なヒューリスティックがあり、これらの問題に対して優れた回答を提供します(ただし保証はありません)。
2つの非常に有名な問題-グラフ同型写像と因数分解-は、PまたはNPとして知られていません。
「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
NP完全な問題:-
1決定問題Aは、次の2つの特性がある場合、NP完了と呼ばれます。
いくつかの例:-
私が理解する限りでは
Pは、決定論的TMを使用して多項式時間で解くことができる問題のセットです。
NPは、多項式時間で解くために非決定的TMを必要とする問題のセットです。これは、すべての可能な変数を並列にチェックすることを意味し、各インスタンスは多項式時間をとります。問題が解決可能な場合、これらの並列状態の少なくとも1つに問題の解決策がなければなりません。これは、解の変数について推測した場合、多項式時間で解の有効性をチェックすることだけが必要であることも意味します。
NP-ハードは、問題が少なくともNPと同じくらい難しいセットです。NPの問題は、多項式時間のNP-Hard問題に変換できます。これらの問題は、PがNPに等しくない場合、多項式時間では解決できません。これは、NPで最も難しい問題が多項式時間解ける場合であり、NPハード問題のみが多項式時間解けるときです。
NP-Completeは、NPとNP-Hardの交差集合です。NP問題は、多項式時間でNP完全問題に変換できます。つまり、いずれかのNPコンプリートで効率的なソリューションを実現できれば、どのNP問題でも同じ効率で解決できます。
間違えたら教えてください。