Transcript NP完全

計算の理論 II
NP完全
月曜4校時
大月美佳
講義の前に
 今後の予定
講義:1/30, 2/2
試験:2/9
 レポート
回収:1/30までなので注意
今日の講義内容
1. 予定
1. 前回の復習
2. 還元可能性
3. NP完全
2. 時間があれば
決定問題の前振りくらい?
P, NP
P
決定性Turing機械によって多項式時間で
受理される言語
 NP
非決定性Turing機械によって多項式時間で
受理される言語
 P≠NP
まだ証明されていない
Pの定義
P   DTIME (n )
k
k 1
p (n)  am n m  am 1n m 1  ...  a1n  a0
am  0のとき、
kを十分大きくとる(m  k )と
p ( n)  O ( n )
k
 DTIME ( p (n))  DTIME (n )
k
NPの定義
NP   NTIME (n )
k
k 1
Pと同様に
p ( n)  O ( n )
k
 NTIME ( p(n))  NTIME (n )
k
PSPACE, NSPACE
PSPACE   DSPACE (n )
k
k 1
Savitchの定理より
NSPACE(n )  DSPACE (n ) (k  1)
k
k
PSPACE   DSPACE (n )
k
k 1
  NSPACE(n )
k
k 1
NLOG, DLOG
 非常にわずかな領域しか使用しないTM
によって受理される言語
NLOG=NSPACE(log n)
DLOG=DSPACE(log n)
 包含関係
DLOG⊆NLOG⊆P⊆NP⊆PSPACE
このうち証明されているのはNLOG⊆PSPACE
のみ
問題
 写像A: Σ*→{0, 1}
アルファベットΣで表現された
真偽問題(yes/no problem)、問題
Σ*の部分集合{x∈Σ*|A(x)=1}
→AはΣ*上の言語
 写像Aの複雑さ
=言語{x∈Σ*|A(x)=1}を受理するTMの計算量
還元可能性
 計算可能関数 f: Σ1*→Σ2*
言語 L1⊆Σ1*, L2⊆Σ2*
それぞれTM M1 ,M2で受理
すべてのx∈Σ1*に対して
x∈L1 ⇔ f(x)∈L2
となるとき、 L1をL2に還元(reduce)できるという。
 x∈L1 の判定
M1 を走らせるかわりにf(x)がM2 で受理できるか調べる。
変換機
変換機(transducer)
1本の入力テープ(読みとりのみ)
k本の作業テープ(読み書き可)
1本の書き出し専用テープ(左方向に動けない)
対数領域計算可能(log space computable)
fが領域log2 nで計算可能
多項式時間計算可能(polynomial time
computable)
ある多項式p(n)とfが時間p(n)で計算可能
還元可能
対数領域還元可能 (log space reducible)
L1≦log L2 (via f )
多項式時間還元可能 (polynomial time
reducible)
L1≦p L2 (via f )
C≦log L0, C≦p L0
言語のクラスCがすべてのLについて
L≦log L0, L≦p L0
NP完全、PSPACE完全、P完全
≦log 完全、 ≦p 完全
1.
2.
L0 ∈C
すべてのL ∈Cに対してL≦log L0, L≦p L0 となる
NP, P, PSPACEに対して
それぞれ≦log 完全(または≦p 完全)であるとき
NP完全(NP-complete)
PSPACE完全(PSPACE-complete)
P完全(P-complete)
NP完全な問題
 充足可能性問題(satisfiability problem)
SAT={F|論理式Fは充足可能}
 和積標準形(conjunctive normal form)
CNF={F∈SAT | Fは和積標準形}
 3和積標準形
3SAT={F∈SAT | Fは3和積標準形}
 頂点被覆問題(vertex cover)
VERTEX COVER={(G, k) | k≧0は整数でGは大きさが
高々kの頂点被覆を持つ}
P完全な問題
 and/orグラフの到達可能性問題(and/or graph
accessibility problem)
AGAP:特定のルールで石をand/orグラフの頂点におけ
るかどうか
 可解な経路システム問題(solvable path system
problem)
SPS:ある経路システムが可解な有限経路システムであ
るかどうか
 論理回路値問題(circuit value problem)
CVP:論理回路の最終出力が1かどうか
最後に
開始
 次回
– 来週1/30 14:20~15:50
– 決定問題まわり