回答:
技術的な定義を理解するにはかなりの時間がかかるため、直感的な定義を探していると思います。まず、これらの定義を理解するために必要な予備的な概念を覚えておきましょう。
次に、これらの複雑性クラスを定義します。
Pは、多項式時間で解くことができるすべての決定問題のセットを表す複雑度クラスです。
つまり、問題のインスタンスが与えられた場合、「はい」または「いいえ」という答えは多項式時間で決定できます。
例
接続されたグラフが与えられた場合、G
その頂点を2色で着色して、エッジが単色にならないようにできますか?
アルゴリズム:任意の頂点から開始し、それを赤に、隣接するものすべてを青に着色して続行します。頂点がなくなるか、エッジに両方の端点が同じ色になるように強いられたときに停止します。
NPは、答えが「はい」であるインスタンスに多項式時間で検証できる証明があるすべての決定問題のセットを表す複雑度クラスです。
つまり、誰かが問題のインスタンスと証明書(証人と呼ばれることもあります)を「はい」と答えた場合、多項式時間でそれが正しいことを確認できます。
例
整数分解はNPです。これは整数を与えてしまうという問題であるn
とm
整数が存在する、f
とは、1 < f < m
そのようなことは、f
除算はn
(f
小さな因子ですかn
)?
答えが「はい」または「いいえ」であるため、これは意思決定の問題です。誰かが私たちに問題のインスタンスを渡す(したがって、整数n
とを渡すm
)とで整数f
を渡し、それが(証明書)の要素である1 < f < m
と主張する場合、除算を実行することにより、多項式時間で答えを確認できます。f
n
n / f
NP-Completeは、X
他のNP問題Y
をX
多項式時間で削減できるNP のすべての問題のセットを表す複雑度クラスです。
これは直感的には、Y
すばやく解決する方法を知っていれば、すぐに解決できることを意味しX
ます。正確に、Y
は、への回答がyesである場合に限り、回答がyes であるというプロパティを使用して、のインスタンスを多項式時間ののインスタンスに変換X
する多項式時間アルゴリズムがある場合、に還元可能です。f
y
Y
x = f(y)
X
y
f(y)
例
3-SAT
。これは、3節の論理和(OR)の結合(AND)、次の形式のステートメントが与えられる問題です。
(x_v11 OR x_v21 OR x_v31) AND
(x_v12 OR x_v22 OR x_v32) AND
... AND
(x_v1n OR x_v2n OR x_v3n)
ここで、それぞれx_vij
はブール変数または事前定義された有限のリストからの変数の否定です(x_1, x_2, ... x_n)
。
すべてのNP問題を3-SATに削減できることを示すことができます。これの証明は技術的であり、NPの技術的定義(非決定的チューリングマシンに基づく)を使用する必要があります。これはクックの定理として知られています。
NP完全問題が重要なのは、決定論的多項式時間アルゴリズムがそれらの1つを解くことができる場合、すべてのNP問題は多項式時間で解けることです(1つがすべてを支配する問題)。
直感的には、これらは少なくともNP完全問題と同じくらい難しい問題です。NPハード問題はNP にある必要はなく、決定問題である必要もないことに注意してください。
ここでの正確な定義は、多項式時間で還元できるようなNP完全な問題がある場合、問題X
はNP困難であることY
Y
X
です。
ただし、NP完全問題は多項式時間で他のNP完全問題に還元できるため、すべてのNP完全問題は多項式時間でNP困難問題に還元できます。次に、多項式時間の1つのNP困難問題の解がある場合、多項式時間のすべてのNP問題の解があります。
例
停止問題は NP困難な問題です。これは、プログラムP
と入力が与えられたI
ときに停止する問題ですか?これは決定の問題ですが、NPにはありません。すべてのNP完全問題をこの問題に削減できることは明らかです。別の例として、NP完全問題はNP困難です。
私のお気に入りのNP完全問題はマインスイーパ問題です。
これはコンピュータサイエンスで最も有名な問題であり、数理科学で最も重要な未解決の問題の1つです。実際、Clay Instituteは問題の解決のために100万ドルを提供しています(ClayのWebサイトでのStephen Cookの記事は非常に優れています)。
PがNPのサブセットであることは明らかです。未解決の問題は、NP問題に決定論的多項式時間解があるかどうかです。彼らはそうではないと信じています。P = NP問題の最新(および重要性)に関する優れた最近の記事は次のとおりです。P対NP問題のステータス。
この問題に関する最良の本は、GaleyとJohnsonによるComputers and Intractabilityです。
私は周りを見回して、多くの長い説明を見てきました。要約するのに役立つかもしれない小さなチャートはここにあります:
難易度が上から下に増加することに注意してください。すべてのNPはNP-Completeに、すべてのNP-CompleteはNP-HardにすべてP(多項式)時間で削減できます。
P時間でより困難なクラスの問題を解決できる場合、それは、P時間ですべての簡単な問題を解決する方法を見つけたことを意味します(たとえば、NP完全問題をP時間)。
____________________________________________________________ | 問題の種類| P時間で検証可能| P時間で解ける| 難易度の増加 ___________________________________________________________ | | | P | はい| はい| | | NP | はい| はいまたはいいえ* | | | NP-コンプリート| はい| 不明| | | NP-ハード| はいまたはいいえ** | 不明*** | | ____________________________________________________________ V
Yes
またはNo
エントリのメモ:
また、この図は、これらすべてのタイプが互いにどのように対応しているかを確認するのに非常に役立つこともわかりました(図の左半分に注意を向けてください)。
これは、尋ねられた質問に対する非常に非公式な回答です。
3233は、1より大きい他の2つの数値の積として書くことができますか?ケーニヒスベルクの7つの橋すべての周りの小道を2度橋をとらずに歩く方法はありますか?これらは、共通の特徴を共有する質問の例です。答えを効率的に決定する方法は明らかではないかもしれませんが、答えが「はい」の場合、証明を確認するための短くて迅速な方法があります。最初のケースでは、51の自明でない因数分解です。2つ目は、橋を歩くためのルートです(制約に適合)。
決定問題は、 yesまたは一つのパラメータのみが異なるがない答えとの集まりです。問題を言うCOMPOSITE = {"Is n
composite":n
is integer}またはEULERPATH = {"グラフにG
オイラーパスがあるか?":G
有限グラフです}。
現在、いくつかの決定問題は、明らかではないにしても、効率的なアルゴリズムに役立ちます。オイラーは、250年以上前に「ケーニヒスベルクの7つの橋」のような問題の効率的なアルゴリズムを発見しました。
一方、多くの意思決定問題では、答えを得る方法は明らかではありませんが、追加の情報がわかっている場合は、答えが正しいことを証明する方法については明らかです。COMPOSITEは次のようなものです。トライアル除算は明白なアルゴリズムであり、低速です。10桁の数値を因数分解するには、100,000の可能な除数のようなものを試す必要があります。しかし、たとえば、61が3233の約数であると誰かが言った場合、単純な長い除算は、それらが正しいことを確認する効率的な方法です。
複雑度クラスNPは、「はい」の答えが短く、証明をすばやくチェックできる決定問題のクラスです。COMPOSITEのように。重要な点の1つは、この定義は問題の難しさについて何も述べていないということです。意思決定の問題を解決する正しい効率的な方法がある場合は、ソリューションのステップを書き留めるだけで十分です。
アルゴリズムの研究は続いており、新しい賢いアルゴリズムが常に作成されています。今日効率的に解決する方法がわからないかもしれない問題が、明日は効率的な(明らかではないにしても)解決策になるかもしれません。実際、コンポジットの効率的なソリューションを見つけるのに2002年まで研究者が必要でした!これらすべての進歩により、本当に不思議に思う必要があります。これは、短い証明が単なる幻想であるということですか?おそらく、効率的な証明に役立つすべての意思決定問題には、効率的な解決策があるのでしょうか。 誰も知らない。
おそらく、この分野への最大の貢献は、特異なクラスのNP問題の発見であった。計算のために回路モデルをいじってみると、Stephen Cookは、他のすべてのNP問題と同じかそれ以上に難しいと思われるNP多様性の決定問題を発見しました。ブール充足可能性問題の効率的なソリューションは、NPの他の問題に対する効率的なソリューションを作成するために使用できます。その後すぐに、リチャード・カープは、他の多くの決定問題が同じ目的に役立つ可能性があることを示しました。これらの問題は、ある意味ではNPで「最も難しい」問題であり、NP 完全問題として知られるようになりました。
もちろん、NPは決定問題の1つのクラスにすぎません。多くの問題は、このように自然に記述されていません:「Nの因数を見つける」、「すべての頂点を訪問するグラフGの最短経路を見つける」、「次のブール式を真にする変数割り当てのセットを与える」。そのような問題のいくつかは「NP内」であると非公式に話すかもしれませんが、技術的にはそれほど意味がありません。それらは決定の問題ではありません。これらの問題の一部は、NP完全問題と同じ種類の能力さえ持っている可能性があります。これらの(非決定)問題に対する効率的な解決策は、任意のNP問題に対する効率的な解決策に直接つながります。このような問題はNP-hardと呼ばれます。
P(多項式時間):名前自体が示すように、これらは多項式時間で解決できる問題です。
NP(非決定論的多項式時間):これらは、多項式時間で検証できる決定問題です。つまり、特定の問題に多項式時間解があると私が主張する場合、あなたはそれを証明するように頼みます。次に、多項式時間で簡単に検証できる証明を提供します。この種の問題はNP問題と呼ばれます。ここでは、この問題の多項式時間解があるかどうかについては触れていません。しかし、我々は多項式時間で与えられた問題の解を検証することについて話している。
NP-Hard:これらは少なくともNPで最も難しい問題と同じくらい難しいです。これらの問題を多項式時間で解決できれば、存在する可能性のあるNP問題をすべて解決できます。これらの問題は必ずしもNPの問題ではないことに注意してください。つまり、多項式時間におけるこれらの問題の解決策を検証する場合と検証しない場合があります。
NP-Complete:これらはNPとNP-Hardの両方の問題です。つまり、これらの問題を解決できれば、他のNP問題を解決でき、これらの問題の解決策を多項式時間で検証できます。
専門知識を使わずにP対NPなどを説明する最も簡単な方法は、「単語の問題」と「多肢選択問題」を比較することです。
「単語の問題」を解決しようとするときは、最初から解決策を見つけなければなりません。「多肢選択問題」を解決しようとするときは、「言葉の問題」と同じように解決するか、与えられた各回答をプラグインして、適合する回答候補を選択するという選択肢があります。
「多肢選択問題」の方が対応する「単語問題」よりもはるかに簡単である場合がよくあります。候補の回答を置き換えて適合するかどうかを確認するのに、最初から正しい回答を見つけるよりもはるかに少ない労力で済みます。
ここで、多項式時間が「簡単」にかかる努力に同意すると、クラスPは「簡単な単語問題」で構成され、クラスNPは「簡単な多肢選択問題」で構成されます。
P対NPの本質は問題です。「単語の問題ほど簡単ではない、簡単に選択できる問題はありますか?」つまり、特定の回答の有効性を確認するのは簡単ですが、その回答を最初から見つけるのが難しい問題はありますか?
NPが何であるかを直感的に理解したところで、直感に挑戦する必要があります。ある意味ですべてが最も難しい「複数選択問題」があることがわかります。「すべてが最も難しい」問題の1つに対する解決策が見つかれば、ALLに対する解決策を見つけることができます。 NP問題!クックがこれを40年前に発見したとき、それは完全な驚きでした。これらの「最も難しい」問題はNPハードとして知られています。それらのうちの1つに対する「単語の問題の解決策」を見つけた場合、すべての「簡単な多肢選択問題」に対する「単語の問題の解決策」が自動的に見つかります。
最後に、NP完全問題は、同時にNPとNPが難しい問題です。私たちの類推に従って、それらは同時に「多肢選択問題として容易」であり、「それらすべての中で最も難しい問題として」です。
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)
もっと簡潔に答えられると思います。関連する質問に答えましたし、そこから私の答えをコピーします
しかし、最初に、NP困難問題は、多項式時間解が存在することを証明できない問題です。一部の「問題P」のNP硬さは、通常、すでに証明済みのNPハード問題を多項式時間で「問題P」に変換することによって証明されます。
残りの質問に答えるには、まず、どのNPハード問題もNP完全であるかを理解する必要があります。NPハード問題が集合NPに属する場合、それはNP完全です。セットNPに属するには、問題が
(i)決定問題、
(ii)問題の解の数は有限でなければならず、各解は多項式の長さでなければなりません。
(iii)多項式の長さの解が与えられると、問題はイエス/ノーですこれで、集合NPに属さず、解決が難しい多くのNP困難な問題が存在する可能性があることが簡単にわかります。直感的な例として、実際のスケジュールを見つける必要がある巡回セールスマンの最適化バージョンは、長さ<= kのスケジュールが存在するかどうかを判断する必要がある巡回セールスマンの決定バージョンよりも困難です。
この特定の質問には本当にいい答えがあるので、私自身の説明を書く意味はありません。そのため、計算の複雑さのさまざまなクラスについて、優れたリソースで貢献していきます。
計算の複雑さはPとNPのみに関するものだと考える人のために、さまざまな計算の複雑さの問題に関する最も包括的なリソースを示します。OPから尋ねられた問題とは別に、約500の異なるクラスの計算問題と、適切な説明、およびそのクラスを説明する基本的な研究論文のリストがリストされています。
私が理解しているように、np-hard問題はnp-complete問題よりも「難しく」ありません。実際、定義により、すべてのnp完全問題は次のとおりです。
-はじめに。アルゴリズム(3編)、Cormen、Leiserson、Rivest、およびStein著、1069ページ
I
を入力として与え、変数への可能なn
すべての2^n
割り当てを試み、命題が満たされている場合は停止し、そうでない場合は無限ループに入ります。このアルゴリズムは、I
満足できる場合にのみ停止することがわかります。したがって、停止問題を解くための多項式時間アルゴリズムがあれば、多項式時間でSATを解くことができます。したがって、停止の問題はNP困難です。