データ構造とアルゴリズム
第十三回 (2013年
1月15日)
NP-完全性、帰着可能性
http://www.sw.it.aoyama.ac.jp/2012/DA/lecture13.html
Martin J. Dürst
© 2009-13 Martin
J. Dürst 青山学院大学
今日の予定
- これからの予定
- 前回の復習
- NP-完全性、帰着可能性
これからの予定
- 1月18日 (金): 14回目の授業
- 1月25日 (金曜日1限、9:30-10:55): 期末試験
今回の目的
- 「簡単な問題」とそうでない問題を見分ける
- 視野の拡大、アルゴリズムの「宇宙」の展望
前回の問題例
- 問題例 1: 3-SAT
- 問題例 2: 独立集合
- 問題例 3: 巡回セールスマン
前回の問題例の共通点
- 具体的な応用が大いにありそう
- 総当たり法より根本的に良いアルゴリズムが知られてない
- 総当たり法で解こうとすると指数的時間 (exponential time)
が必要
- n が大きい場合 (例: 100)、事実上解けない
- 早いアルゴリズムが無いことも現在証明できない
- 同じ共通点を持つ問題が多い
多項式時間と指数的時間
- 多項式問題は「手に負える問題」(tractable)
- 指数的問題は「手に負えない問題」(intractable)
多項式時間の特徴
- 指数が大きい問題 (例: O(n100))
は殆どない
- 多項式の加算と乗算はまた多項式
- 多項式時間は計算機のモデルの選択にそれほど左右されない
(例: 並列計算機)
- 多項式時間の問題を一部別扱いしたい場合に、分岐点の選択が困難
- 多項式時間で解ける問題の集合を P と書く
NP 問題
- 前回の問題例 1-3 の変形は全て NP 問題
- NP 問題の特徴:
答えが「真」の場合、証拠があればすぐ (多項式時間で)
確認可能
- NP の由来:
Nondeterministic Polynomial 非決定性多項式時間
同時に何題も計算機が使えれば多項式時間で解ける
- P の問題は場合によって微妙な変更で
NP になる
例:
グラフ内の二頂点間の一番短い経路と一番長い経路
- NP 問題は数多く存在
- P ⊆ NP
- P = NP ?
- P ≠ NP ?
問題の種類
- 関数問題 (function problem)
- 決定問題 (decision problem)
- 最適化問題 (optimization problem)
決定問題
(decision problem)
- 結果は真か偽しかない問題
- 他の問題の「置き換え」ができる
最適化問題: k 以上 (や以下) で可能かどうか
- 決定問題が元の問題より複雑になる可能性がない
- 決定問題が理論的に扱いやすい
- NP 問題は定義上決定問題
- NP 問題に置き換えられる問題は「NP 困難」(NP-hard)
という
NP 内の問題の比較
帰着
(reduction)
- 概要: ある問題 A を別の問題 B に置き換えて解く
(解けることを証明する)
- A の入力 ⇒ (変換) ⇒ B のアルゴリズム ⇒ (変換) ⇒ A
の出力
- 変換は二つとも多項式時間で行う
- A が B に帰着可能の場合、A ≦P B
と書く
- 即ち、A が B より簡単か同じ難しさ
- 実例: 3-SAT を独立集合に帰着
NP 完全性
(NP-Completeness)
- 全ての NP 問題を帰着できる NP 問題は NP
完全問題という
- 殆どの NP 問題は NP
完全であるが、そうではない問題もありそう
計算複雑性理論
(computational complexity theory)
- 目的: 計算問題の根本的な分類
- 分類の要素:
- 計算量 (時間)
- メモリ量
- 回路の形
- 並列処理など
参考: Complexity Zoo
ポストの対応問題
(Post's correspondence problem; Emil Post, 1946)
- 二つ以上の文字を使う言語で、二つの単語集 W
= {w1, w2, ...
wn} と V =
{v1, v2, ...
vn} が与えられている
- 問題: W の単語と V
の単語を同じように選んだ場合、同じ文が作れるかどうか
(単語の重複可)
- 可能な例: W = {aa, b}, V = {a, aba}
正解例: aa-b-aa = a-aba-a
- 不可能な例: W = {ccd, cd, c}, V = {cc, ddc,
d}
(理由:
どの単語をとっても、文の最後の文字が必ず違う)
- この問題のためのアルゴリズムが存在しない
- 存在しないことの証明はある
まとめ
- 多項式時間で (いまだに) 解けない問題が存在
- その多くは NP 完全 (又は NP 困難) 問題
- 難しい問題を早めに見分けるのが大事
- NP 完全の問題より解きにくい問題もある