P, NP, NP完全, NP困難

NP完全とNP困難の違いがわかってない自分をようやく卒業できました。
ソースはWikipedia。適当にまとめるので、詳しく知りたい人は自分でWikipediaの記事見てください。

NP問題

まず、一番わかってないといけないのが、NPとは何かということで

  • NP≠Non-Polynomial time (非多項式時間)
  • NP=Non-deterministic Polynomial time(非決定性多項式時間)

であるということ。
つまり、NP問題は多項式では解けない問題ではなく、「非決定性チューリングマシンによって多項式時間で解ける問題である」ということ。


非決定性チューリングマシンとは、今いる状態から次の状態に行く選択肢が複数あった時に常に解に近づく選択肢を選べる機械だと思えば良い。ここら辺は正規表現の実装とかオートマトン思い出すしかない。
問題空間を探索木としてとらえると、神のようなヒューリスティクス関数によって解のある子ノードにいけると考えたときに多項式時間で到達可能な問題である。つまり、解のある場所の深さが多項式で表せるともいえる。

こういう問題空間でもコンピュータは決定性チューリングマシンだから、木の探索をするしかなく、その時点でO(木の分岐数^深さ)になり多項式時間で解けない。だから、NPが非多項式時間なイメージを持っちゃっていても誤解に気付かないのだと思う。


だから、「P⊆NP」である。
P≠NP予想は、あくまで「P=NP」でなく「P⊂NP」だと予想している。

NP完全とNP困難

まず、

である。
そしてNP完全問題は、全てのNP問題から多項式時間で変換可能なNP困難問題である。

で、ここで問題なのがNP困難って何よ?って話だがそれはよく理解していないので、他の誰かが教えてくれることを期待することにする。
nyaasanに教えてもらった(コメント参照)。ちょい解釈が違ったっぽい。


イメージを図で表してるサイトがあったのでのせておく。


僕の理解はこんなところです。もし、何か間違っていたら教えてください。もともとWikipediaも信頼できるかわからんし・・・。