NPクラス、Pクラス、NP完全問題について教えてください

このQ&Aのポイント
  • Pクラスとは問題が現実的な時間内で解けるクラスであり、NPクラスは時間がかかりすぎて解けないクラスです。NPクラスには最長パスや素因数分解などが含まれます。
  • PクラスやNPクラスという用語の意味や関連する問題について理解できていないです。
  • 判定問題やハミルトン問題についても知りたいです。良い情報源があれば教えてください。
回答を見る
  • ベストアンサー

NPクラス、Pクラス、NP完全問題について教えてください

こんにちは。 授業でNPやPというような言葉が出てくるのですがいまいち理解できません。 あまり理解できていない用語はPクラス、NPクラス、P問題、NP問題、NP完全問題、NP完全、NP困難、判定問題などです。似たような言葉がいろいろ出てきてよく分からないです。これらの用語のうちで意味が同じようなものもあるのでしょうか? 自分なりに理解したことを書くと Pクラスというのはその問題が現実的な時間内で解けて、NPクラスとは時間がかかりすぎて解けないというふうに理解しています。 NPクラスには最長パスを求めるアルゴリズムや大きな素数同士の積の因数分解などだと思います。ウィキペディアでも調べたのですが言葉が難しくて曖昧にしか分かりませんでした。 また、判定問題やハミルトン問題などについても知りたいです。何か良いサイトがありましたら紹介してもらえるとありがたいです。 ご回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

一番わかりにくい NP を中心に: NP は Nondeterministic Polynomial の意味で, もともとは「非決定性チューリング機械によって多項式時間で判定できる」問題のクラスです. とはいわれても普通は「なんのこっちゃ」となるはずなので, もうちょっとわかりやすくいきましょう. 今は判定問題 (ある性質を持っているかどうかを答える問題) を考えているわけで, 普通は「与えられたもの」だけを使って答えることになります. これが「現実的な時間」=「多項式時間」でできるのが P. これに対し, 「その性質を持っているときにはその証拠を示すことができる」という問題があります (もちろんその性質を持っていないときにはどんな「証拠」を持ってきてもダメ出しされる). このような問題のクラスを NP と呼びます. 例えばハミルトン閉路問題では, ハミルトン閉路を持つグラフに対しては「ああ, 確かに持っているね」と言わせるだけの証拠を示すことができます (具体的には「そのハミルトン閉路」そのものですが). 逆に, ハミルトン閉路を持たないグラフに対してはどんなものを持ってきても「ダメじゃん」と言われてしまいます. 従ってハミルトン閉路問題は NP に属します. 次に NP困難ですが, これは「NP に属するどの問題に対しても同等以上に難しい問題」のクラスです. でこの NP困難に属する問題のうち, NP にも属する問題を「NP完全問題」と呼びます. つまり NP困難問題は「NP に属する問題のうちで最も難しい問題」であるということになります. で, クラスP は「『現実的な時間』=『多項式時間』で解ける問題」のクラスですがクラスNP は「時間がかかりすぎて解けない」ということではありません. P ⊂ NP なので, NP の中にも「簡単な問題」はあります. あ~, 分からないところがあればどんどん指摘してください.

kevin23
質問者

お礼

わかりやすい書き込みありがとうございました! 興味のある分野なので理解できたらいいなと思います。 お礼が遅れて申し訳ありません。いろいろ調べながら1時間ほど考えていました^^;

kevin23
質問者

補足

丁寧な書き込みありがとうございます! おかげさまで理解が深まってきました!恐縮ですが再度質問させてもらいます。 PとNPの違いについてはだいぶ分かりました。P ⊂ NP ということですね。ある問題の答えを示せばそれが正しいと判断できるのがPまたはNPで、証拠なしでかつ多項式時間でその答えを出すことができるものをクラスPというのですよね?ちなみに多項式時間とは本にはnが一つ増えると爆発的に増加すると本に書いてあったので2^nやn!といったものでいいんですよね? NP困難やNP完全問題についてはいまいち理解できない部分があります。 NP困難とはNP問題を集めた中で難しいものを厳選(?)したような感じなんでしょうか?この難しいかどうかの判定はどのようにするのでしょうか?またNP完全問題=NP困難問題なのでしょうか? 立て続けに質問してしまって恐縮です。 お暇であればご回答よろしくおねがいします

その他の回答 (4)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

う~, 誤解されてる.... NP完全な問題が 1個でも多項式時間で解ければどの NP問題も多項式時間で解けて NP = P となります. で, 「任意の NP困難な問題が 1個でも多項式時間で解ければどの NP問題も多項式時間で解ける」ことになります. つまり, NP困難問題は NP完全問題より簡単ではないということになります. 端的には「NP困難は NP完全より難しい」と言っても, まあそれほど間違っていません.

kevin23
質問者

お礼

再度書き込みありがとうございます!! NP=Pということであればそれは重大なことなんですよね。 一般的にNP=Pではないことが予想されているから、そうでなければ難しい問題がなくなるというような内容を大学の教授が話していました。とりあいず 「任意の NP困難な問題が 1個でも多項式時間で解ければどの NP問題も多項式時間で解ける」 「NP困難は NP完全より難しい」 というのを理解しておきたいと思います。今までのご投稿のおかげでNPやPに関しての概容は大体わかりました!あとは自力で本を読み直すなり勉強するなりして何とかなると思います!!それでもどうしても分からなくなった場合はまた質問させてもらいます。次はもっと発展した質問ができたらいいですけどね^^ 今までサポートしてくださってありがとうございました!!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

NP困難と NP完全は厳密には異なりますが, 分野によってはしばしば混同されます. 実際には, NP困難は「どの NP問題とも同等以上に難しい」問題のクラスなので, 「どの NP問題よりも明確に難しい」問題も含まれる (ボードゲームを考えるとよく出てくる PSPACE完全な問題は, おそらくどの NP問題よりも難しいと考えられていますが, このような問題も NP困難ということができます) ので NP困難≠NP完全なんですが. えっと... 話をややこしくするなら coNP とか出しますけど, どうします? でこの「難しい」ですが, 「ある問題を, 他の問題に帰着して解けるかどうか」で判断します. つまり, 問題X を問題Y に帰着できる (問題X の問題例x を問題Y の問題例y に変換して, x の yes/no と y の yes/no を一致させることができる) ときに「問題X は問題Y より難しくない」(逆にいうと「問題Y は問題X と同等以上に難しい」) と判断します. P とか NP とかの文脈では「多項式時間帰着」, つまり「問題例を多項式時間で変換できる」とするのが普通ですが P の内部を考える (並列計算を考えたりするときに出てきます) ときにはもっと弱い帰着を使います. あと, 「多項式」ってのは普通の多項式なので 2^n とか n! は入りません.

kevin23
質問者

お礼

再度書き込みありがとうございます! 「難しい」という判断基準はおおよそ理解できました。他の問題と比較するのですね。 僕のイメージではNP完全はNP困難より難しく、NP完全が解ければ他のNP問題も解ける(?)というふうに理解しました。しかし、実際NP完全を解くことは非常に難しい。 おかげ様で理解を深めることができました!! 参考になりました!!また、分からないことがあったらよろしくお願いします!!

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

NP困難は必ずしもNPではないです。 これはPやNPが判定問題(yes/noで答えられる問題)のクラスだからです。 たとえばハミルトン閉路で言えば「グラフがハミルトン閉路を持つか」という問題はNPですが、「グラフのハミルトン閉路を求めなさい」だとNP困難だがNPではないわけです。 この辺はウィキペディアにも書いてありますけど。

kevin23
質問者

お礼

回答ありがとうございます!! PやNPについての定義を考えればたしかにNP困難でもNPではないですね。参考になりました!!

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.1

授業を受けておられるのなら、教科書をきっちり読むのがまずは近道だと思います。変な解説サイトを探すよりも。 決定性チューリングマシンで多項式時間で解ける問題がP, 非決定性チューリングマシンで多項式時間で解ける問題がNPです。 ウィキペディアの記述が難しすぎると言うのでしたら、もうすこし基礎を勉強されたほうがよろしいかと思います。十分平易にかかれています。

kevin23
質問者

お礼

回答ありがとうございます。 教科書も読んだのですが自分には少々難しいようでした。最近は大学の教授ともそのことで相談していました。 自分でも努力しようとして図書館に行って本を3冊借りたところ大体のイメージはつかめたのですが、はっきりしたことがよく分からないので、さらに理解を深めたいと思い最終的にこのサイトで質問出せていただきました。専門家の方にとって平易にかかれているだろうと思いますが、学生にとっては初めての問題なので理解するのは難しいです。

関連するQ&A

  • P≠NP問題についての質問です。

    P≠NP問題についての質問です。 この問題の議論されている意味が分かったような?分からんような?、なので質問します。 大方の研究者は、「P≠NP」ではないか?、という予想をしているようですが、この問題の結論は、 (1)P=NP (2)P≠NP のどちらかひとつ、という解釈で間違いありませんか? また、(1)と証明された場合、「全てのNP問題はP問題に属する。」ことを示さねばなりませんよね?現在、NP問題(例:ナップザック問題、ハミルトン閉路問題・・・)とされている、全てのものが「NP⊂P」であることを証明しないと、「P=NP」、であることは証明されたことになりませんよね?(全てについて調べなければいけないのか、それとも、ひとつでいいのか?) 一方で、(2)と証明された場合、「少なくともひとつのNP問題はP問題に属さない。」ことを示せば大丈夫ですよね。 即ち、「何かひとつでいいから、NP問題であるけど、多項式アルゴリズムがない。」という問題を証明すればいいんですね??(全てについて調べなければいけないのか、それとも、ひとつでいいのか?) 冒頭で書いた「P≠NPが有力」というのは、「ひとつでいいからP問題に属さないNP問題を見つければ良い。(多項式時間帰着可能でない、非決定性チューリングマシンが存在する。)」という裏付けであると考えていいのでしょうか。 ど素人なので勘違いしているかもしれませんが、解説お願いいたします。

  • 未解決問題 P=NP について

    資料が英語なので、意味すら理解していません。 なぜ、P=NPが未解決問題になったのでしょうか? P=NPが成立しないと思います。 数字を当てはめても、せいぜい  P=-0 N=+0 しか思いつきません。 それから未解決問題達を解決したら、世の中ってどうなりますか? 何か大きなメリットはあるの?

  • ハミルトン閉路とNP

    ハミルトン閉路問題はNPに属する、という事を証明したいのですが… これって HCがPに属することを証明すれば良いのでしょうか? ちょっと迷走しちゃってます…

  • 【P≠NP予想】容疑者Xの献身を観たのですが

    容疑者Xの献身を観たのですが、 映画の一場面で「P≠NP問題」の話題が出てきました。 その中で、 「数学の問題について、自分で考えて答えを出すのと、他人から答えを聞いて、その答えが正しいかどうかを確認するのとではどちらが易しいか(難しいか)? ただし、その問題には必ず答えが存在する。」 というセリフがありました。 恐らく、前者がクラスP、後者がクラスNPのことを表していると思われます。 しかし、「どちらが易しいか?(難しいか?)というのは、「P≠NP問題」の本質ではないような気がします。(Pの方がNPより解くのが大変ですよね・・) P≠NP問題の核心部分は、「P⊂NPが成り立つかどうか?(NP⊂Pは自明)」ではないでしょうか? 自分は映画を見ていて、「そんなの、他人から答えを聞いてその答えが正しいかどうかを確認する作業の方が、自分で答えを考え出すのより何百倍も簡単だろ!!」と思ってしまいました。 詳しい方解説お願いします!!!

  • NP困難について

    初めまして。NP困難について質問です。 AがNP困難とは「NPに属するどの問題もAに多項式時間で還元可能」 と定義されています。 それでNP困難について質問ですが、NP困難のクラスの問題というのは その問題がNPに含まれてるかどうかは問わず、ただ上記の定義の条件 のみで定められていると考えていいのでしょうか。つまり 「NPの問題と同程度以上に難しい問題をNP困難」 「NP困難はNPのクラスに含まれてるか、含まれてないかは問わない」 か、ということです。 また、定義「NPに含まれる問題のうちNP困難なものをNP完全」より NP困難に「NPに含まれる」という条件を加えたものが NP完全で、NP完全∈NP困難となると思います。 どこか間違ってれば指摘して下さるとありがたいです。

  • 計算量(PやNP)について

    ネット上で計算量理論に関する説明を読んでいますが、いまいち理解ができません。 例えば、木の形で表せれる問題で、一つのノードに対する子がN個(定数)あり、深さX(未知、変数)に答えがある場合、計算量は N^X(NのX乗) になると思います。 N^Xは計算量のクラス(NP困難やNP完全等)でいうと何に属するのでしょうか?

  • 3彩色問題について質問です。

    下記の問題が解けません。説明をよろしくお願いします。 P=NPとする。3彩色可能グラフがあるとして、有効な3彩色を作れる多項時間アルゴリズムが存在することを示せ。 ヒント:P=NPの仮定はグラフが多項時間内で3彩色可能なグラフかどうかを決定できることを示唆する。しかしP=NPの仮定にはこのテストがどのようになされるかしめされていない。大事なのはそのテストが探せるということを証明することである。

  • 計算理論についての質問です

    NP完全の問題に関して指数時間アルゴリズムがあるからといってP≠NPとはいえないのはなぜでしょうか?

  • 中3 数学

    素数、因数、約数についての質問です。 12=1×12と表すとき 1と12は12の因数と言うことは正しいのでしょうか? 素数分解の過程で1を因数とは見なさないため、因数と約数の違いを説明する際に 言葉に詰まってしまいました。 因数とは 数や式が積の形で表されるときの ひとつのひとつの数や式のことを言うのだから 12=1×12のとき1は因数であると言うことに間違いはないでしょうか? 90の約数を素因数分解を使って求めよ、という類の問題の本質を分かりやすく伝えるにはどうすれば良いでしょうか?

  • 高速な和積形命題論理式の含意関係判定法

    2つの和積形命題論理式が与えられています。 この2つの式に含意関係が成り立つか判定したいのです。 この問題はco-NP完全問題でまともにやるととても時間がかかります。そこで次のような条件を満たすアルゴリズムを考えてください。 1.アルゴリズムが含意関係がなりたつと答えたときは必ず含意関係が成り立つ。 2.アルゴリズムが含意関係が成り立たないと答えたときは含意関係が成り立ってても成り立たなくてもよい。 3.入力の多項式時間で停止する。 この条件だけだと常に含意関係が成り立たないと 答えるアルゴリズムでもOKになってしまいますが もちろん本当に含意関係が成り立つときはなるたけ含意関係が成り立つと答えてほしいわけです。 私が考えたのは和積形の論理式f、gがあたえられたとしてfのすべての和項に対してgにそれを含意する和項があったらgはfを含意するというものです。 これよりもよい方法を考えてください。 よろしくお願いします。