データ構造とアルゴリズム
第十二回 (2008年12月
19日)
NP-完全性、帰着可能性
http://www.sw.it.aoyama.ac.jp/2008/DA/lecture12.html
Martin J. Dürst
duerst@it.aoyama.ac.jp
© 2008 Martin
J. Dürst 青山学院大学
今回の目的
- 「簡単な問題」とそうでない問題を見分ける
- 視野の拡大、アルゴリズムの「宇宙」の展望
問題例 1: 3-SAT
- n 個の論理変数
- その変数で作られている論理式
- 論理式は (否定の) 和の積
- 和はそれぞれ三つの項
- 問題: 式が真になる様に変数の値を決定
- 問題の変形: その様な変数の値の存在の有無
- 具体例 (' が否定):
(x1∨x2∨x5)
∧
(x1'∨x3∨x4')
∧
(x2∨x4∨x5)
∧
(x1'∨x3'∨x5')
- 解答候補は O(2n)
- それを全部調べると時間も
O(2n)
- それより早いアルゴリズムは知られてない
- 早いアルゴリズムが無いことも現在証明できない
問題例 2: 独立集合
(Independent Set)
- n 個の元の集合 (グラフの頂点)
- 元と元の間に競合 (conflict) がありうる
(頂点が辺で結ばれている)
- 問題:
競合がないようなできるだけ大きい部分集合を算出
- 問題の変形: k
以上の競合のない部分集合の有無
- 解答候補は O(2n)
- それを全部調べると時間も
O(2n)
- それより早いアルゴリズムは知られてない
- 早いアルゴリズムが無いことも現在証明できない
問題例 3: 巡回セールスマン
(Traveling Salesman)
- n 個の「町」
- 全ての町と町の間の「距離」(時間や費用でもよい)
- 問題: 全ての町に一回だけ立ち寄る一番短い
(費用の少ない) 巡回
- 問題の変形: k 以下の長さ (費用)
の巡回の有無
- 解答候補は O(n!)
- それを全部調べると時間も O(n!)
- それより早いアルゴリズムは知られてない
- 早いアルゴリズムが無いことも現在証明できない
問題例の共通点
- 具体的な応用が大いにありそう
- 総当たり法より根本的に良いアルゴリズムが知られてない
- 総当たり法で解こうとすると指数的時間 (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 ?
決定問題
(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 問題を帰着できる NP 問題を NP
完全問題という
- 殆どの NP 問題は
NP-完全であるが、そうではない問題もありそう
NP 困難 (NP-hard): NP 完全の決定問題に変換できる問題
計算複雑性理論
(computational complexity theory)
- 目的: 計算問題の根本的な分類
- 分類の要素:
- 計算量 (時間)
- メモリ量
- 回路の形
- 並列処理など
まとめ
- 多項式時間で (いまだに) 解けない問題が存在
- その多くは NP 完全 (又は NP 困難) 問題
- 難しい問題を早めに見分けるのが大事
- NP 完全の問題より解けにくい問題もある