k-IBDD 充足可能性問題に対する厳密アルゴリズム
脊戸 和寿
1,a)照山 順一
2,3,b)長尾 篤樹
4,5,c)概要:k-IBDDは,k段のレイヤーを持つ分岐プログラムであり,各レイヤーがOBDD(順序付き二分決定
図)となっている.本稿では,k-IBDD充足可能性問題(以下,k-IBDD SAT)を考える.k-IBDD SAT とは,入力としてk-IBDDが与えられ,シンク1に到達する変数への割当が存在するかどうかを判定する 問題である.本稿では,n変数,poly(n)ノードの2-IBDD SATを高々poly(n)·2n−√n時間で解く多項 式領域アルゴリズムを与える.poly(n)はnの多項式を表す.さらに,このアルゴリズムを拡張すること により,n変数,poly(n)ノードのk-IBDD SATを高々,poly(n)·2n−n1/2k−1 時間で解く多項式領域ア ルゴリズムを与える.
1. はじめに
k-IBDD
充足可能性問題(以下,k-IBDD SAT
)とは,与えられた
k-IBDD
において,シンク1
に到達する変数割り当てが存在するかどうかを判定する問題である.
k-IBDD
とはk
段のレイヤーから構成され,各レイヤーはOBDD
(順序付き二分決定図)となっている.
k-IBDD SAT
は,k ≥ 2
において,NP
完全であることが知られている[2].
n
変数m
ノードのk-IBDD SAT
は変数への全割り当てをチェックすることで,
O(m2
n)
時間で解くことができる.k-IBDD SAT
において,全探索より超多項式的に高速なO(m2
n−ω(logn))
時間のアルゴリズムの設計は目標の1
つである.既に
k-IBDD SAT
を含む,一般の分岐プログラ ムに対し,m = O(n
2−ϵ)
(ϵ
は0
より大きい任意に小さい 定数)であれば,O(2
n−ω(logn))
時間の決定性アルゴリズ ムで解けることが知られている[1]
.しかし,このアルゴ リズムは指数領域を必要とする上に,m = ω(n
2)
ノードの
k-IBDD SAT
に対しては動作しない.本研究では,n
変数,
m = O(n
c)
(c
は任意の定数)ノードのk-IBDD SAT
を
O(m2
n−ω(logn))
時間で解く決定性多項式領域アルゴリズムの設計を目標とし,以下の結果を得た.
定理 1.
n
変数,m = O(n
c)
(c
は任意の定数)ノードの1 成蹊大学, Seikei University
2 国立情報学研究所, National Institute of Informatics
3 JST, ERATO,河原林巨大グラフプロジェクト,JST, ERATO, Kawarabayashi Large Graph Project
4 京都大学, Kyoto Uniersity
5 日本学術振興会特別研究員DC, Research Fellow of Japan So- ciety for the Promotion of Science
a) seto@st.seikei.ac.jp
b) teruyama@nii.ac.jp
c) a-nagao@kuis.kyoto-u.ac.jp
k-IBDD SAT
に対して,計算時間poly(n) · 2
n−nαで解く決 定性多項式領域アルゴリズムが存在する.ただし,α =
2k−11であり,
poly(n)
はn
の多項式を表す.1.1 関連研究
Chen
らは,n
変数,m = O(n
2−ϵ)
ノードの分岐プログ ラムにおける充足可能性問題に対し,O(2
n−nδ)
時間アル ゴリズムを設計した[1]
.ここで,ϵ
は0
より大きい任意に 小さい定数であり,δ
は0 < δ < 1
を満たすϵ
に依存する 定数である.Bollig
らはk-IBDD SAT
の特別な場合でもある
k-OBDD SAT
について,多項式時間アルゴリズムを考案した
[2]
.k-IBDD SAT
に対しては,実験的に高速なアルゴリズムが
Jain
らによって提案されている[5]
.2. 準備
X = { x
1, . . . , x
n}
を論理変数の集合とする.本稿では,1
を論理値の真(true)
,0
を論理値の偽(false)
に対応させ る.x ∈ X
について,論理変数x
の否定をx
で表す.非決定性分岐プログラム
B = (G, ϕ
V, ϕ
E)
は根付有向 多重グラフG = (V, E)
,ノードラベル関数ϕ
V: V → X ∪ {
0,1}
,枝ラベル関数ϕ
E: E → { 0, 1 }
で構成される.G
はルートノードr
とシンクノードt
0,t
1を持ち,ϕ(t
0) =
0 かつϕ(t
1) =
1を満たす.t
0(またはt
1)を0-sink
(また は1-sink
)と呼ぶ.シンク以外の全てのノードv ∈ V
に対 して,ψ
V(v) ∈ X
である.ϕ
E によりG
のすべての枝は0
または,1
をラベルとして持つ.図
1
は非決定性分岐プログラムの例である.各ノード は丸で表し,丸の中の記号はノードラベルを表している.ノードをつなぐ矢印は有向枝を表し,枝の近くにある
0
または
1
は枝ラベルを表す.入力
a = (a
1, . . . , a
n) ∈ { 0, 1 }
nに対して,分岐プログラ ムB
はルートノードから出発して以下のように枝をたど る.ノードラベルがx
iの時,a
iと等しいラベルを持つ枝 を選択し次のノードに進む.最終的にt
1に到達するパス が少なくともひとつある時,分岐プログラムB
は入力a
に 対し1
を出力し,それ以外の場合0
を出力する.2
値 関 数f : { 0, 1 }
n→ { 0, 1 }
に 対 し て ,す べ て のa ∈ { 0, 1 }
nに対してf (a)
とB
の出力が等しいならば,B
は関数f
を表現するという.B
のサイズは,G
の枝数と し,| B |
で表す.非決定性分岐プログラムのうち,シンクノードでないす べてのノードからちょうど
2
本の枝が出て,それぞれにラ ベル0, 1
が1
つずつ貼られているものを決定性分岐プログ ラムという.以下では,特に記述しない限り分岐プログラ ムは決定性分岐プログラムであるとする.順列
π = (π(1), π(2), . . . , π(n))
は1
からn
の数字を1
つ ずつ含む任意の並びをもつ列である.また,i ∈ { 1, . . . , n }
に対して,π
−1(i)
をπ(j) = i
を満たすj
とする.定義1. OBDDとは,固定された順列
π
に従う分岐プロ グラムである.つまり,ラベルx
iのノードからラベルx
jのノードに向かう枝があるならば,
π
−1(i) < π
−1(j)
を満 たす.定義2.
k-IBDD
とは,以下のような分岐プログラムである.
k
個のレイヤーに分割でき,i
番目のレイヤーは順列π
iに従うOBDDである.また,i
番目のレイヤーから出る枝は
j > i
番目のレイヤーのノードまたはシンクノードに到達する.特に,すべての
π
iが等しいものをk-OBDD
と呼ぶ.図
1
の 分 岐 プ ロ グ ラ ム はπ = (1, 2, 3)
に 従 う 非 決 定 性OBDD
で あ る .図2
の 分 岐 プ ロ グ ラ ム はπ
1= (1, 2, 3), π
2= (2, 3, 1)
に従う2-IBDD
である.図1 非決定性OBDD
図2 2-IBDD
与えられた
k-IBDD B
に対して,B
が1
を出力する入力a ∈ { 0, 1 }
nがあるかどうかを判定する問題を,k-IBDD
に 対する充足可能性問題,またはk-IBDD SAT
と呼ぶ.本問 題は,k = 1
の場合つまりOBDD
が入力の場合ルートノードから
1-sink
へのパスがあるかどうかは到達可能性判定を行えばよく,
B
のサイズの線形時間で解くことができる.k = 2
の場合,NP
完全であることが知られている.[2]
順 列
π = (π(1), π(2), . . . , π(n))
の逆 順をπ
R= (π
R(1), π
R(2), . . . , π
R(n)) = (π(n), π(n − 1), . . . , π(1))
と す る .順 列π
に お け る 長 さm
の 部 分 列π
′ と は ,任 意 の1 ≤ i
1< i
2< · · · < i
m≤ n
に 対 し ,π
′= (π
′(1), π
′(2), . . . , π
′(m)) = (π(i
1), π(i
2), . . . , π(i
m))
で あ る.順列
π
の最長増加部分列σ
incとは,π
における部分列π
′のうち,すべての1 ≤ i < j ≤ m
に対してπ
′(i) < π
′(j)
を満たすもので,m
が最大のものである.順列
π
の最長減少部分列σ
decとは,π
における部分列π
′のうち,すべての1 ≤ i < j ≤ m
に対してπ
′(i) > π
′(j)
を満たすもので,m
が最大のものである.最長増加部分列と最長減少部分列について,以下の定理 が知られている.
定理 2
(The Erd˝ os-Szekeres theorem [4]).
長さn
の実数 列には,長さm ≥ √
n
の最長増加部分列,または最長減少 部分列が存在する.また,最長増加部分列と最長減少部分列は
O(n
2)
時間で 求めることができる.部分割り当てとは
a = (a
1, . . . , a
n) ∈ { 0, 1, ∗}
nで表し,a
iが0
または1
であることは,変数x
iの値がa
iに固定さ れることを意味する.部分割り当てa ∈ { 0, 1, ∗}
nに対し て,S(a) := { x
i| α
i̸ = ∗}
をa
の台と呼ぶ.B |
aを部分割 り当てa
に対する分岐プログラムB
の部分分岐プログラ ムとし,以下の操作により構成されるものとする.(1)
ラベルx
i∈ S(a)
を持つノードから出る枝でラベルa
iを持つものをすべて削除する.(2)
入次数が0
でありルートノードでないノードv
が存 在する限り以下の操作を行う.・ノード
v
とv
から出る枝をすべて削除する.(3)
ラベルx
i∈ S(a)
を持つルートノードでないノードv
がある限り以下の操作を行う.・集合
U
を{ u | (u, v) ∈ E }
とする.また,ラベルa
iを 持つ枝(v, w)
が存在する.・すべての
u ∈ U
について(u, v)
と同じラベルを持つ枝(u, w)
を追加し,(u, v)
を削除する.・枝
(v, w)
を削除する.(4)
ルートノードr
のラベルx
iがx
i∈ S(a)
を満たすな らば,枝(r, v)
を削除し,ノードv
をルートノードとする.図
3
は図2
の2-IBDD
をB
とした時,部分割り当てa = (1, ∗ , ∗ )
に対するB |
aを表す.3. OBDD の変換アルゴリズム
補題 3. 共通の順列
π
に従う2
つの非決定性OBDDB
1とB
2が2
値関数f
1,f
2を表現する時,関数f
1∧ f
2を表現図3 部分割り当てに対する2-IBDD
Algorithm 1
Conjunction(B
1, B
2)
Require:f1を表現するπに従うOBDDB1= (G1(V1, E1), ϕV1, ϕE1), f2を表現するπに従うOBDDB2= (G2(V2, E2), ϕV2, ϕE2) Ensure:
f1∧f2を表現するπに従うOBDDB= (G(V, E), ϕV, ϕE) 1: V :=V1×V2
2: E:=∅
3: for allv:= (v1, v2)∈V do
4: ifϕV1(v1) =0 orϕV2(v2) =0 then 5: ϕV(v) =0
6: else ifϕV1(v1) =1 andϕV2(v2) =1 then 7: ϕV(v) =1
8: else
9: ϕV(v) =xℓ,ただしϕV1(v1) =xi, ϕV2(v2) =xj に対し てπ−1(ℓ) = min{π−1(i), π−1(j)}を満たす.
10: end if 11: end for
12: for allv:= (v1, v2)∈V do
13: Ei′:={(vi, ui)|(vi, ui)∈Ei},i∈ {1,2} 14: ifϕV1(v1) =ϕV2(v2)then
15: for alle1= (v1, u1)∈E1′ do 16: for alle2= (v2, u2)∈E2′ do 17: ifϕE1(e1) =ϕE2(e2)then 18: e:= ((v1, v2),(u1, u2))
19: E:=E∪ {e}
20: ϕE(e) =ϕE1(e1)
21: end if
22: end for
23: end for
24: else ifϕV(v) =ϕV2(v2)then 25: for alle= (v2, u2)∈E2′ do 26: e:= ((v1, v2),(v1, u2)) 27: E:=E∪ {e} 28: ϕE(e) =ϕE2(e2) 29: end for
30: else
31: for alle= (v1, u1)∈E1′ do 32: e:= ((v1, v2),(u1, v2)) 33: E:=E∪ {e} 34: ϕE(e) =ϕE1(e1) 35: end for
36: end if 37: end for
38: return B= (G(V, E), ϕV, ϕE)
する順列
π
に従うOBDDB
を計算時間O( | B | )
で構成す ることができる.また,| B | ≤ 2 | B
1| · | B
2|
である.Proof.
Brayant [3]
の手法を非決定性OBDD
に対して拡 張したAlgorithm 1
により補題を満たすOBDD
が構成さ れることを示す.構成される
OBDD B
は2
つのOBDD B
1,B
2を同時に 模倣する.r
1, r
2をB
1, B
2のルートノードとする.B
は ノード(r
1, r
2)
から計算を始める.B
のノード(v
1, v
2)
に いる時,B
1のノードv
1,B
2のノードv
2にいることを意 味する.入力a ∈ { 0, 1 }
nに対するB
の計算は以下の通り である.v
1のラベルをx
i,v
2のラベルをx
j とする.ま た,v
1からラベルa
iを持つ枝で遷移した先のノードをu
1 とし,v
2からラベルa
jを持つ枝で遷移した先のノードをu
2とする.v
1とv
2のラベルが共にx
iであれば,行14–23
によりB
はラベルa
iを持つ枝により(v
1, v
2)
から(u
1, u
2)
に遷移 する.B
1,B
2において変数x
iに対する計算を同時に行 うことに対応する.v
1とv
2のラベルが異なる時,順列π
においてπ
−1(i) < π
−1(j)
であるとすると,行24–36
によ りラベルa
iを持つ枝により(v
1, v
2)
から(u
1, v
2)
に遷移す る.B
1において変数x
iに対する遷移を行い,B
2はv
2に 留まることに対応する.また,π
−1(i) > π
−1(j)
である場 合は,ラベルa
jを持つ枝により(v
1, v
2)
から(v
1, u
2)
に遷 移する.B
2において変数x
jに対する遷移を行い,B
1はv
1に留まることに対応する.以上から,B
は順列π
に従 うことがわかる.行
4–5
により一方のOBDD
で0-sink
に到達する入力に 対して,B
では0-sink
に到達する.行6–7
により両方のOBDD
で1-sink
に到達する入力に対して,B
は1-sink
に 到達する.よって,構成されたOBDD
はf
1∧ f
2を表現 する.B
においてB
1での遷移を表現する枝は高々| B
1| · | B
2|
であり,同様にB
2での遷移を表現する枝は高々| B
1| · | B
2|
である.よって,B
の枝数は高々2 | B
1| · | B
2|
となる.補題4.
B
を順列π
に従うOBDDとする.この時,O( | B | )
時間で順列π
Rに従う非決定性OBDDB
R を構成するこ とができる.また,| B
R| = O( | B | )
である.Proof.
Algorithm 2
により補題のB
Rが構成されること を示す.まず,行
1–5
により0-sink
に入る枝をすべて削除する.行
6–19
ではどのノードに関しても,入る枝の始点のラベ ルが同じになるように与えられたB
を変更している.ノー ドv
に関して,ノード集合U = { u | (u, v) ∈ E }
のラベル が異なる場合,U
のノードのラベルx
iのうちπ
−1(i)
が最 大となるものをx
ℓとする.r(u) ̸ = x
ℓなるノードu ∈ U
に 対して,以下の操作を行う.(1) x
ℓをラベルに持つノードw
を追加する.(2)
枝(u, v)
と同じラベルを持つ枝(u, w)
を追加する.(3)
ラベル0, 1
を持つ枝(w, v)
を1
つずつ追加する.Algorithm 2
Reverse(B)
Require: 順列πに従うOBDDB= (G(V, E), ϕV, ϕE) Ensure: B と 等 価 で 順 列 πR に 従 う 非 決 定 性 OBDD BR =
(GR(VR, ER), ϕVR, ϕER) {前処理}
1: for alle= (u, v)∈E do 2: ifϕV(v) =0 then 3: E:=E\{e}
4: end if 5: end for 6: for allv∈V do
7: L(∗,v):={i|xi=ϕV(u)and(u, v)∈E}
8: if|L(∗,v)|>1then
9: すべてのi ∈L(∗,v)についてπ−1(ℓ)≥π−1(i)を満たす L(∗,v)の要素ℓを選択
10: for alle= (u, v)∈E do 11: ifϕ(u)̸=xℓthen
12: V :=V∪ {w}andϕV(w) =xℓ
13: E:=E∪ {e1:= (w, v), e2:= (w, v), e′:= (u, w)} 14: ϕE(e1) := 0, ϕE(e2) := 1, ϕE(e′) :=ϕE(e) 15: E:=E\{e}
16: end if 17: end for 18: end if 19: end for
{GR(VR, ER)の構成} 20: VR:=V,ER:=E 21: for alle= (u, v)∈E do 22: ϕVR(v) :=ϕV(u) 23: end for
24: ϕVR(r) :=1,ただしrはGのルートノード 25: for alle= (u, v)∈E do
26: eR:= (v, u) 27: ϕER(eR) =ϕE(e) 28: ER=ER∪ {eR}\{e} 29: end for
30: for allv∈VRdo
31: ifラベルb∈ {0,1}を持つ枝(v, w)を持たないthen 32: eR:= (v, t0)
33: ER=ER∪ {eR} 34: ϕER(eR) =b 35: end if 36: end for
37: return B= (GR(VR, ER), ϕVR, ϕER)
(4)
枝(u, v)
を削除する.以上の操作により,元の
OBDD
と等価で,どのノードも 入る枝の始点のラベルがすべて同じであるOBDD
を構成 することができる.上の操作で新たに追加されるノードは 入次数が1
であるから操作の対象になることはない.よっ て上の操作は高々| E |
回行われ,サイズは高々3
倍になる.図
4
は図1
のOBDD
に対して以上の操作を行った後の状 態を表している.行
20–36
では,以下の操作でB
Rを構成する.(1)
各ノードのラベルを,入る枝の始点のラベルに置き 換える.ルートノードは1-sink
に書き換える.(2)
枝を逆向きにする.(3)
各 ノ ー ドv
に 対 し て ラ ベ ルb ∈ { 0, 1 }
を 持 つ 枝(v, w), w ∈ V
が存在しない場合,ラベルb
を持つ枝(v, t
0)
を追加する.この操作により得られる
B
Rの各計算経路は,もとのOBDD
の計算経路を逆順に辿ったものと対応する.ただ し,元のOBDD
で同じラベルを持った枝が合流した場合,B
Rでは非決定的遷移をすることに注意する.図5
は図1
のOBDD
に対して出力される非決定性OBDD
を表して いる.以上から
B
と等価でπ
R に従う非決定OBDD B
R が構 成され,| B
R| = O( | B | )
である.図4 前処理 図5 BR
4. 充足可能性判定アルゴリズム
定数
k
に対して,k-OBDD SAT
は多項式時間で解ける ことが知られている[2]
,つまり,入力のk-IBDD
におい てπ
1= π
2= · · · = π
kならば多項式時間で解くことがで きる.まず,
k-OBDD
を含む特別なk-IBDD SAT
が多項式時間で解くことができることを示す.アルゴリズムを
Algo- rithm 3
に示す.補題5.
k
を定数とする.順列π
1, π
2, . . . , π
kが,すべてのi (2 ≤ i ≤ k)
についてπ
i= π
1,またはπ
i= π
R1 を満た すとする.順列π
1, π
2, . . . , π
kに従うn
変数,m = O(n
c)
(
c
は任意の定数)ノードのk-IBDD G
に対して,k-IBDD
SATはn
の多項式時間で解くことができる.Proof.
[2]
の定理2
の証明を非決定性k-OBDD
に拡張す る.B
を補題の条件を満たす非決定性k-OBDD
とし,各 レイヤーをB
1, B
2, . . . , B
k,各レイヤーのノード集合をV
1, . . . , V
kとする.行
1–16
ではすべての枝(u, v)
に対して,あるi
が存在し て,u, v ∈ V
iまたはu ∈ V
iかつv ∈ V
i+1を満たすようにB
を変更している.ノードu ∈ V
iとノードv ∈ V
jに対し て,(u, v) ∈ E
かつj − i > 1
である場合に以下の操作を 行う.(1)
すべてのℓ (i < ℓ < j)
に対して,ラベルx
πℓ(1)を持 つノードw
ℓをB
ℓに追加する.(2)
枝(u, v)
と同じラベルを持つ枝(u, w
i+1)
を追加する.(3)
すべてのℓ (i < ℓ < j − 1)
に対して,ラベル0, 1
をAlgorithm 3
(π, π
R)-k-IBDD SAT(B)
Require: 順列π1, . . . , πkに従うk-OBDDB= (G, ϕV, ϕE), ただしπi=π1またはπi=πR1 (2≤i≤k)
Ensure: Bが充足可能であれば“Yes”,そうでなければ“No”. 1: for alle= (u, v)∈E do
2: ifj−i >1,ただしu∈Vi, v∈Vjthen 3: forℓ=i+ 1, . . . , j−1do
4: Vℓ:=Vℓ∪ {wi}andϕV(wi) :=xπℓ(1) 5: end for
6: E:=E∪ {e′:= (u, wi+1)} 7: ϕE(wi) :=xπℓ(1)
8: forℓ=i+ 1, . . . , j−2do
9: E:=E∪ {e′0:= (wℓ, wℓ+1), e′1:= (wℓ, wℓ+1)} 10: ϕE(e′0) := 0, ϕE(e′0) := 1
11: end for
12: E:=E∪ {e′0:= (wj−1, v), e′1:= (wj−1, v)} 13: ϕE(e′0) := 0, ϕE(e′0) := 1
14: E:=E\{e} 15: end if 16: end for
17: for all(r2, . . . , rk)∈V2× · · · ×Vkdo 18: fori= 1, . . . , kdo
19: Vi′:={v|v∈Viかつriから到達可能} ∪ {ti0, ti1} 20: ϕV′
i(ti0) :=0, ϕV′ i(ti1) :=1 21: E′i:=∅
22: for alle= (u, v)∈E,ただしu∈Vi′do 23: ifv∈Vi′then
24: Ei′:=Ei′∪ {e′:= (u, v)} 25: else ifv=ri+1then 26: Ei′:=Ei′∪ {e′:= (u, ti1)}
27: else
28: Ei′:=Ei′∪ {e′:= (u, ti0)} 29: end if
30: ϕE′
i(e′) :=ϕE(e) 31: end for
32: Bi′:= (G′i(Vi′, Ei′), ϕV′ i, ϕE′
i) 33: end for
34: fori= 2, . . . , kdo 35: if πi=π1Rthen 36: Bi′:=Reverse(Bi′) 37: end if
38: B1′ :=Conjunction(B1′, B′i) 39: end for
40: if B1′ がルートノードから1-sinkまでのパスを持つthen 41: return “Yes”
42: end if 43: end for 44: return “No”
持つ枝
(w
ℓ, w
ℓ+1)
を1
つずつ追加する.(4)
ラベル0, 1
を持つ枝(w
j−1, v)
を1
つずつ追加する.(5)
枝(u, v)
を削除する.上の操作で新たに追加される枝は第
ℓ
レイヤーのノード と第ℓ + 1
レイヤーのノード(i ≤ ℓ < j)
を結ぶため操作の 対象とならない.よって上の操作は高々| E |
回行われ,サ イズは高々2k
倍になる.B
に対して充足する入力の計算経路は,V
2, V
3, . . . , V
kの あるノードr
2, . . . , r
kを経由して1-sink
へ到達する.経由 ノードの可能性は高々(2k | B | )
k−1通りである.各可能性に対して,そのノードを経由して
1-sink
に到達する入力が あるかを判定する.k − 1
個 の ノ ー ドr
2, . . . , r
k(r
i∈ V
i)
を 選 択 し ,B
1, B
2, . . . , B
kをもとにしてk
個のOBDD B
1′, B
2′, . . . , B
k′ を構成する.また,各OBDD B
i′は順列π
iに従う.簡単 のため,r
1をB
のルートノード,r
k+1を1-sink
とする.各
i (1 ≤ i ≤ k)
についてB
iからr
iをソースノードとするOBDD B
i′を以下のように構成する.まず,r
iから到達可 能であるV
iのノード集合およびシンクノードt
i,0,t
i,1をB
i′のノード集合V
i′とする.B
i′の枝集合は,すべての枝e ∈ { (u, v) | (u, v) ∈ E
かつu ∈ V
i′}
に対して,以下の条 件を満たしラベルϕ
E(u, v)
を持つ枝e
′で構成される.• v ∈ V
i′ならば,e
′:= (u, v)
.• v = r
i+1ならば,e
′:= (u, t
i,1)
.• v ̸ = r
i+1ならば,e
′:= (u, t
i,0)
.k-IBDD B
がr
2, . . . , r
kを経由する充足入力を持つなら ばそのときに限り,B
1′, B
2′, . . . , B
k′ は共通の充足入力を持 つ.補題4
より,π
i= π
1Rに従う決定性OBDD B
i′と等価 なπ
Ri= π
1に従う非決定性OBDD B
i′R が構成でき,こ れをB
i′と置き換える.以上から順列π
1に従うk
個の非 決定性OBDD B
1′, B
′2, . . . , B
k′ を同時に充足する入力を持 つかどうかを判定すればよい.補題3
をk − 1
回適用す ることにより,k
個のOBDD
が共通の充足入力を持つ時 に,またその時に限り1
を出力するOBDD B
∗をO( | B |
k)
時間で構成することができる.また,| B
∗| = O( | B |
k)
であ る.OBDD B
∗の充足可能性判定は到達可能性判定によりO( | B
∗| ) = O( | B |
k)
時間で解くことができる.以上から,
B
に対する充足可能性問題はO( | B |
2k−1)
時 間で解くことができる.定理
1
の前に,2-IBDD SAT
が2
n時間より超多項式的 に高速に解くことができることを示す.2-IBDD SAT
を解 く決定性多項式領域アルゴリズムはAlgorithm 4
である.Algorithm 4
2-IBDD SAT
Require: 順列π1, π2に従う2-IBDDB= (G, ϕV, ϕE), ただし,π1= (1, . . . , n)
Ensure: Bが充足可能であれば“Yes”,そうでなければ“No”. 1: π2の最長増加部分列σinc,最長減少部分列σdecを計算 2: if |σinc| ≥ |σdec|then
3: σ=σinc
4: else 5: σ=σdec
6: end if
7: Y :={σ(i)|1≤i≤ |σ|}
8: for alla∈ {0,1,∗}n,ただしS(a) =X\Y do 9: if(σ, σR)-k-IBDD SAT(B|a) = “Yes”then 10: return “Yes”
11: end if 12: end for 13: return “No”
定理 6.
n
変数,m = O(n
c)
(c
は任意の定数)ノードの2-IBDD SAT
に対して,計算時間poly(n) · 2
n−√nで解く決 定性多項式領域アルゴリズムが存在する.ただし,poly(n)
はn
の多項式を表す.Proof. 入力の
2-IBDD
をB
とし,順列π
1, π
2に従うとす る.まず,一般性を失うことなくπ
1= (1, 2, . . . , n)
として よい.以下ではアルゴリズムの概要を述べる.π
2の最長増加列をσ
inc,最長減少列をσ
decとする.こ の う ち 長 い ほ う を
σ
と し ,そ の 長 さ を| σ |
と す る .Y := { σ(i) | 1 ≤ i ≤ | σ |}
とする.変数集合X \ Y
を台 としたすべての部分割り当てを行う.各部分割り当てa
に ついて,B |
aが充足可能かどうかを判定する.B |
aが充足 可能となる部分割り当てa
が存在すれば,B
も充足可能で ある.また,すべての部分割り当てにおいてB |
aが充足不 可能であればB
も充足不可能である.σ = σ
inc とするとB |
aは順列σ
に従う2-OBDD
とな り,一方,σ = σ
decとすると順列σ
R, σ
に従う2-IBDD
と なる.補題5
および[2]
によりいかなる場合でも,B |
aに 対する充足可能性問題は多項式時間で解ける.定理2
より| Y | ≥ √
n
,つまり| X \ Y | ≤ n − √
n
となり,全体の計算時 間は高々poly(n) · 2
n−√nとなる.最後に,主定理の
k-IBDD SAT
を決定性多項式領域で 解くアルゴリズムをAlgorithm 5
に示す.Algorithm 5
k-IBDD SAT
Require: 順列π1, . . . , πkに従うk-IBDDB= (G, ϕV, ϕE), ただし,π1= (1, . . . , n)
Ensure: Bが充足可能であれば“Yes”,そうでなければ“No”. 1: σ1:=π1
2: fori= 2, . . . , kdo
3: πi′:= (πi(j1), πi(j2), . . . , πi(j|σi−1|)),
ただしj1< j2<· · ·< j|σi−1|かつ∀p,∃q, π′i(p) =σi−1(q) 4: πi′の最長増加部分列σinc,最長減少部分列σdecを計算 5: if|σinc| ≥ |σdec|then
6: σi:=σinc
7: else 8: σi:=σdec 9: end if 10: end for
11: Y :={σk(i)|1≤i≤ |σk|}
12: for alla∈ {0,1,∗}n,ただしS(a) =X\Y do 13: if(σk, σkR)-k-IBDD SAT(B|a) = “Yes”then 14: return “Yes”
15: end if 16: end for 17: return “No”
定理7
(
定理1
の再掲). n
変数,m = O(n
c() c
は任意の定数)ノードの
k-IBDD SAT
に対して,計算時間poly(n) · 2
n−nα で解く決定性多項式領域アルゴリズムが存在する.ただ し,α =
2k1−1 であり,poly(n)
はn
の多項式を表す.Proof. 入力の
k-IBDD
をB
とし,順列π
1, π
2, . . . , π
kに従うとする.一般性を失うことなく
π
1= (1, 2, . . . , n)
とし てよい.以下ではアルゴリズムの概要を述べる.まず,
π
2の最長増加部分列と最長減少部分列を求め,長いほうを
σ
2とし,その長さを| σ
2|
とする.定理2
より| σ
2| ≥ √
n
である.行3
によりπ
3からσ
2の要素だけを抽 出した部分列π
3′ を得る.次に,π
′3の最長増加部分列と最 長減少部分列を求め,長いほうをσ
3とし,その長さを| σ
3|
とする.σ
3はσ
2の要素からなる増加列または減少列であ る.σ
2自身も増加列または減少列であることから,σ
3はσ
2またはσ
R2 の部分列である.よって,π
1, π
2, π
3はσ
3ま たはσ
3Rを部分列として持つ.また,| π
′3| = | σ
2|
であるこ とに注意すると,定理2
より| σ
3| ≥ n
1/4である.以下同 様に,2 ≤ i ≤ k
に対して,π
iからσ
i−1の要素だけを抽出 した部分列をπ
i′とする.π
′iの最長増加部分列,最長減少 部分列のうち長いほうをσ
iとし,その長さを| σ
i|
とする.π
1, π
2, . . . , π
iはσ
iまたはσ
iRを部分列として持ち,帰納的 に| σ
i| ≥ n
1/2i−1となる.また,各σ
iは多項式時間で求め ることができる.Y := { σ
k(i) | 1 ≤ i ≤ | σ
k|}
とする.定理6
の証明と同 様に,変数集合X \ Y
を台としたすべての部分割り当てを 行う.各部分割り当てa
について,B |
aが充足可能かどう かを判定する.π
1, π
2, . . . , π
kがσ
kまたはσ
Rk を部分列と して持つことから,各割り当てに対してk-IBDD B |
aは,各レイヤーが順列
σ
kまたはσ
Rk に従うk-IBDD
となる.補題
5
よりB |
aの充足可能性判定は多項式時間でできる.α =
2k−11 とすると,| X \ Y | = n − | σ
k| ≤ n − n
αとな る.以上から,全体の計算時間は高々poly(n) · 2
n−nαとな る.謝辞 本研究は
MEXT
科研費24106003
,JSPS
科研費26730007
およびJST ERATO
河原林巨大グラフプロジェ クトの助成を受けたものです。参考文献
[1] R. Chen, V. Kabanets, A. Kolokolova, R. Shaltiel and D. Zuckerman. Mining Circuit Lower Bound Proofs for Meta-Algorithms. In Proceedings of the 29th Annual IEEE Conference on Computational Complexity (CCC), 2014.
[2] B. Bollig, M. Sauerhoff, D Sieling, I Wegener. On The Power Of Different Types Of Restricted Branching Pro- grams. Electronic Colloquium on Computational Com- plexity (ECCC), vol.1, no.26, 1994.
[3] R. E. Bryant. Graph-based algorithm for Boolean func- tion manipulation. IEEE Trans. on Computers 35, pp.677–691, 1986.
[4] P. Erdos, G. Szekeres. A combinatorial problem in ge- ometry. Compositio Mathematica, 2, pp.463–470, 1935.
[5] J. Jain, J. Bitner, M. S. Abadir, J. A. Abraham and D. S. Fussell. Indexed BDDs : Algorithmic Advances in Techniques to Represent and Verify Boolean Functions.
IEEE Transaction on Computers, vol. 46(11), pp.1230–
1245, 1997.