[解決済み] NP - 非決定性多項式時間
質問
NPの定義を複数見てきましたが、非決定性多項式時間と呼んでいるのが少し気になります。
NPは非決定論的多項式時間で認識可能な言語の集合である。
私が理解したのは、通常のコンピュータ(ランダム性を持たない)では多項式時間で言語を認識できないが、何らかの非決定性(コインフリップ?)を持つコンピュータはそれを多項式時間で解くことができる、ということでしょうか。
どなたか訂正していただけませんか?コイン弾きで実際に問題が解決される例を教えてください。そうでなければ指数関数的になるはずです。
NPには多項式時間で検証可能な言語も含まれるという定義は理解できるのですが、非決定論を使ってどうやって認識するのかがわかりません。
どのように解決するのですか?
実際、コインフリップはランダム性の問題であり、一部の人々は 間違って 非決定性をランダム性と表現しています。例えば、次のような問題があるとしよう。
n個の扉があり、そのうちの1個の扉の奥に探したいものがある。では、さまざまなアプローチを分析してみましょう。
(説明を簡単にするために、ビッグ・オーなどの漸近的な表記は使っていないことに注意)
決定論的である。 決定論的アルゴリズムの例として、すべてのドアを左から右へ一つずつ開けるというものがある。したがって、最悪の場合の複雑さはn回の操作となる
ランダム化されている。 コインをひっくり返して、裏が出たら左から右へ、表が出たら右から左へドアをチェックするんだ。だから、期待される意味において、私はn/2の操作を得ることになる。(演習:なぜ?)そして、ランダム化アルゴリズムでは、良い平均(期待値)の振る舞いを探します。
非決定論的である。 非決定論は、現実世界ではありえない、まったく別の話です。非決定性の力があれば、複数の選択肢に直面したとき、すべての選択肢を同時に試すことができる。つまり、非決定論的アルゴリズムは、n個の扉をすべて同時に開けることができる。したがって、1回の操作で賞品を見つけることができるのである。
さて、非決定性を使って多項式に解けるものの例です。例えば、2つの扉(深さ1)に直面し、1つを選ぶと、また2つの扉(深さ2)が現れ、これが深さnまで続くとします。つまり、最後の深さには2^n個の扉があり、そのうちの1つの後ろに賞品があるとします。
決定論的アプローチで賞品を見つけるには、2^n回の演算が必要です。しかし、非決定論を用いると、深さ1の扉を2つ同時に開き、深さ2の扉を4つ同時に開く、といったことができる。つまり、n回の(非決定論的)操作の後に景品を見つけることができるのです
関連
-
[解決済み] ソートされていない配列でバイナリサーチは使えるか?重複
-
[解決済み] n個のユニオンのfind(サイズによるユニオン)演算を実行する際の時間計算量がO(n log n)であるのはなぜか?
-
[解決済み] Zip爆弾はどうやって作るの?
-
[解決済み] ヒープの構築はどうして時間計算量O(n)になるのですか?
-
[解決済み] 償却期間一定
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み】ssl証明書はどのように検証されるのですか?
-
[解決済み】整数の流れから実行中央値を求める
-
[解決済み】純粋な関数型プログラミングの効率性
-
[解決済み] 2^nとn*2^nは同じ時間複雑性か?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Zip爆弾はどうやって作るの?
-
[解決済み] O(log n)とは具体的にどういう意味ですか?
-
[解決済み] O(n)の整数ソートアルゴリズムはあるか?
-
[解決済み] 数字の範囲を表すときの「exclusive」「inclusive」の意味は?
-
[解決済み】有向グラフのサイクルを検出する最適なアルゴリズム【クローズド
-
[解決済み】10億個の数字の配列から最大100個の数字を求めるプログラムを作成せよ
-
[解決済み】2つの整数を1つにマッピングする、一意的かつ決定論的な方法
-
[解決済み】整数の流れから実行中央値を求める
-
[解決済み】遺伝的アルゴリズム/遺伝的プログラミングの良い解決例とは?[クローズド]
-
[解決済み】最も近い文字列のマッチを取得する