web-dev-qa-db-ja.com

NP)で問題が最も難しいかどうかをどのように知ることができますか

NP完全の定義は次のとおりです。これらはNPで最も難しい問題です。このような問題はNP困難であり、NP

問題がNPで最も困難であり、それ以上の問題が存在しないかどうかをどのように知ることができますか。どういうわけか魔法のように、問題LがNPで最も難しいことがわかっていて、HをLに、またはその逆に減らすことができれば、より難しい問題Hを見つけることができると仮定しましょう。しかし私の質問はどのようにそれはすべて始まりますか?最初に最も難しい問題を1つ知るにはどうすればよいですか?

また、何かが最も難しい(または極端な)と言えるようにするには、NPで考えられるすべての問題を知り、次に最も難しい問題について議論する必要があります。考えられるすべてのNP問題?これはチューリングマシンが役立つところであり、出力テープで1と0の形式の出力文字列の表現を使用することにより、理論的に考えられるすべてのNP問題について話すことができます。

混乱のために、質問をうまく表現できなかった可能性があることを理解しています。

ありがとう、

2
xyz

元の「1つの最も難しい問題」については http://en.wikipedia.org/wiki/Cook-Levin_theorem で読むことができます。これには、問題が実際にNP完全であるという証拠のスケッチが含まれます。

問題はブール充足可能性です。複雑なブール式が与えられた場合、それを真にする入力のセットを見つけることができますか?問題がNPにあることは簡単にわかります(可能な答えがあれば、プラグを差し込んで評価するだけです)。

逆に行くのは難しいです。これが基本的な考え方です。 NPの問題があれば、その問題を多項式時間で解決し、yesまたはnoを出力する非決定性マシンを設計できます。 (それがNPにあることの意味です。非決定性マシンを実際にビルドすることはできませんが、理論的には設計できます。 )そのマシン設計を前提として、非決定性マシンが出力する内容に応じてtrue/falseを出力する、より大きな多項式係数のみであるブール式を設計できます。したがって、ブール充足可能性問題に答えるための多項式時間アルゴリズムがあれば、多項式時間の任意のNP問題を解くことができます。

もちろん、NP完全問題が1つある場合は、他のNP問題を使用してその問題を解決し、デイジーチェーンを使用して他のNP完全問題を見つけることができることを示します。しかし、最初に1つを見つける必要があり、ブール充足可能性が最初のものでした。

1
btilly

編集:これは同様の質問のようです(質問が「硬さ」ではなく履歴に関するものであると仮定します): スタックオーバーフロー-最初のNP完全な問題

チューリングマシンは、本質的にすべてのコンピューター(おそらく量子コンピューターを除く)に適用される計算モデルと見なされるため、重要です http://en.wikipedia.org/wiki/Church Turing_thesis したがって、チューリングマシンは私たちの研究に役立ちます計算。

複雑さの理論を勉強してからしばらく経ちましたが、もっと詳しく説明してみます。

NPは非決定論的多項式時間です。つまり、この問題は、非決定性チューリングマシンを使用して多項式時間で解決できます。このステートメントの非決定論は、チューリングマシンがさまざまなソリューションを同時に探索できることを意味します。

「時間」の概念は、入力の長さの関数としての計算ステップの数です。 (入力長が無限大になり、定数係数を無視するため)。

入力とステップの長さが何を意味するのかをよりよく理解するには、チューリングマシンのモデルを調べる必要があります。

そのため、複雑度クラスNPには多くの問題があり、そのうちのいくつかは非常に簡単です。それらのいくつかは「難しい」。それらを解決するための既知の決定論的チューリングマシン、多項式時間、アルゴリズムがないため、それらは困難です。それらの1つが決定論的チューリングマシンで多項式時間で解ける場合、それらのすべてが解ける可能性があるため、これらも非常に興味深いものです。

NP完全性の正式な証明を行うときは、次のことを示す必要があります。

  1. 問題はNPにあります。つまり、問題を解決した非決定的なチューリングマシンを示しています。
  2. 決定論的チューリングマシンで多項式時間でそれを解くことができれば、決定論的チューリングマシンで多項式時間で他のNP完全問題を解くことができます。これは、リダクションを介して行います。入力の多項式関数であるいくつかのステップで、ある問題を別の問題に変換します。これは、少なくとも他の問題と同じくらい解決が難しいことを示しています。

私はそれが正しいと思います:-)それが理にかなっていることを願っています。

0
Guy Sirton