2. あらまし P と N P SAT から 3SAT への多項式時間還元
あらまし
1 P と NP
2 SAT から 3SAT への多項式時間還元
2 / 19
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 5 回: NP 困難性
3. あらまし P と N P SAT から 3SAT への多項式時間還元
Turing Machine (TM)
N := {1, 2, · · · }
S := 少なくとも start, halt を要素に含む有限集合
U := {▷} × {0, 1}∗ × {◁}
V := {▷, ◁, 0, 1}
(st, kt, xt) ∈ S × N × U, xt = (x
(1)
t , · · · , x
(mt )
t ), t = 1, · · · , T
s0 := start, k0 := 1, x0 ∈ U から、
A : S × V → S × V × {−1, 0, 1}
(st, x
(kt )
t ) → (st+1, x
(kt )
t+1, kt+1 − kt)
によって生成。T は、st = halt となる最初の t。
3 / 19
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 5 回: NP 困難性
4. あらまし P と N P SAT から 3SAT への多項式時間還元
s0 = start
st
st+1
sT := halt
x
(mt+1−1)
t+1
x
(mt −1)
t
x
(kt −1)
t+1 x
(kt )
t+1 x
(kt +1)
t+1
x
(kt )
t
x
(2)
t+1
x
(2)
t
x
(2)
0
x
(mT −1)
Tx
(2)
T
▷ ◁
◁
◁
◁x
(m0)−1
0
↓
↓
↓ ↓ ↓
kt+1 − kt = −1 0 1
↓
▷
▷
▷
4 / 19
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 5 回: NP 困難性
5. あらまし P と N P SAT から 3SAT への多項式時間還元
x0 ∈ U: 入力データ
xT ∈ U: 出力データ
A: アルゴリズム: 以下を仮定
.
1 kt = 1(ヘッドが左端) でも、x
(1)
t = ▷ は変更されない
.
2 kt = mt(ヘッドが右端) を変更する場合、
mt+1 := mt + 1, x
(mt+1)
t+1 := ◁
.
3 有限の T が存在
st ∈ S: 状態
kt ∈ N: テープのヘッド位置
5 / 19
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 5 回: NP 困難性
6. あらまし P と N P SAT から 3SAT への多項式時間還元
多項式時間で解く
η : U → {0, 1}∗ (U の要素の両端をのぞいたもの)
f : {0, 1}∗
→ {0, 1}∗
, η(x0) → η(xT )
(mT = 3 のときは、f : {0, 1}∗ → {0, 1} となる)
TA: アルゴリズムが A のときの σ := η(x0) ∈ {0, 1}∗ → T ∈ N
Tn,A := max
σ∈{0,1}n
TA(σ)
(入力長が n := |σ| のときのアルゴリズム A の実行時間)
アルゴリズム A が多項式時間で解ける
有限個の n を除いて、Tn,A ≤ nk となる k ∈ N が存在
6 / 19
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 5 回: NP 困難性
9. あらまし P と N P SAT から 3SAT への多項式時間還元
決定問題の例: 充足可能性問題 SAT.
1 有限集合 U = {u1, u2, · · · , un} に対して、
t : U → {T, F}
.
2 t(ui ) = F ⇐⇒ t( ¯ui ) = T なる ¯U = {¯u1, ¯u2, · · · , ¯un} に対し、
t : U ∪ ¯U → {T, F}
.
3 c ⊆ U ∪ ¯U に対して、
t(c) = T ⇐⇒ t(z) = T for ∃z ∈ c
.
4 U 上の節集合 C に対して、
t(C) = T ⇐⇒ t(c) = T for ∀c ∈ C
リテラル U ∪ ¯U の要素
節 U ∪ ¯U の部分集合 c (|c|: 節の大きさ、要素数)
節集合 節を要素とする集合
9 / 19
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 5 回: NP 困難性
10. あらまし P と N P SAT から 3SAT への多項式時間還元
事例: 有限集合 U, U 上の節集合 C
質問: t(C) = T となる t : U → {T, F} が存在するか。
.
1 U = {u1, u2}, C = {{u1, ¯u2}, {¯u1, u2}} 「存在する」
t(u1) = t(u2) = T なる t に対して t(C) = T。
.
2 U = {u1, u2}, C = {{u1, u2}, {u1, ¯u2}, {¯u1}} 「存在しない」
t(C) = T なる t が存在しない。
10 / 19
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 5 回: NP 困難性