106
SAT ソルバーとそのアプリケーション開発について (後半: SAT 型制約ソルバー) 宋剛秀 (神戸大学) web 鍋島英知 (山梨大学) web 共同研究者 田村直之 (神戸大学) web 番原睦則 (神戸大学) web 井上克巳 (国立情報学研究所) web 人工知能学会 第 9 AI ツール入門講座 (2015.12.14 @ 国立情報学研究所) 1 / 70

SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

SATソルバーとそのアプリケーション開発について(後半: SAT型制約ソルバー)

宋剛秀 (神戸大学) web  鍋島英知 (山梨大学) web

共同研究者田村直之 (神戸大学) web  番原睦則 (神戸大学) web  

井上克巳 (国立情報学研究所) web

人工知能学会 第 9回 AIツール入門講座(2015.12.14 @ 国立情報学研究所)

1 / 70

Page 2: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

プログラム

SAT ソルバー (講師: 鍋島)

10:00-11:00 SATソルバーの基礎11:00-12:00 SATソルバーの利用法12:00-13:00 昼食13:00-14:00 SATソルバーを用いた演習

SAT型 CSPソルバー (講師: 宋)

14:00-15:00 CSPと SAT型 CSPソルバーの基礎15:00-16:00 SAT型 CSPソルバー Scarabの概要と使い方16:00-17:00 SAT型 CSPソルバーを用いた演習

2 / 70

Page 3: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

講師紹介

宋剛秀 (神戸大学)

SATを利用し始めたのは 2004年から▶ 卒業論文テーマがジョブショップスケジューリングの SATソルバーを用いた解法だった.

そこからずっと SATソルバーのユーザ▶ スケジューリング,2次元矩形パッキング,システム生物学におけるパスウェイ解析への応用

2012年頃から SAT型 CSPソルバー Scarab の開発を開始▶ Scarab の設計方針は,表現力,効率性,変更容易性,可搬性を備えたシステムとなること

▶ 開発した Scarab をいろいろな問題に応用中▶ 2014年 高橋奨励賞受賞▶ SAT2016 (SATの理論と応用に関する国際会議) プログラム委員

3 / 70

Page 4: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Knuth先生 @ SAT国際会議 2012

招待講演: Satisfiability and The Art of Computer Programming

Knuth先生は SATソルバーを真理値表から 1つずつ作っていた!web

sat1.w truth table

sat2.w incremental truth table

sat3.w DPLL 1962

sat4.w prefer binary clause

sat5.w more efficient

sat6.w Cook’s clause learning

...

sat13.w CDCL 招待講演前日に Knuth先生と夕食!

Colored N Queen を使って各 SATソルバーの違い,符号化によって求解性能が変わることを説明

4 / 70

Page 5: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

The Art of Computer Programming (TAOCP)

Amazon では今月 12月 18日から販売されます. web

SATの応用,ソルバー,符号化等を 318ページに渡って説明

5 / 70

Page 6: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

SATソルバーを使った問題解法

原問題 CSP SAT

SAT 解の解CSP 解の解原問題の解

モデリング 符号化

SAT ソルバー

復号化解釈

高速な SATソルバーを用いることは重要.同じくらいモデリングと符号化も求解性能に大きな影響を与える.しかし,問題,モデリング,符号化ごとにシステムを開発するのはコストがかかる.SAT型制約ソルバーは CSPの記述言語を備え,符号化,SATソルバーによる求解,復号化を自動で行うシステム.

6 / 70

Page 7: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

SAT型制約ソルバーに関する年表2000年前後

▶ NP-SPEC [Cadoli et al., 2000]: クラス NPに属する問題のための記述言語.処理系は Prolog.

2004-2005年▶ csp2sat (by Olivier Roussel), CSP2SAT (by Helene Fargier)▶ いくつかのジョブショップスケジューリング問題に対して SAT型ソルバーが ILOGソルバーより,よい性能を示す [Soh et al., 2005].

2006年▶ 順序符号化の発表 [Tamura et al., 2006]▶ csp2sat (by Tamura Naoyuki), Sugar [Tamura and Banbara, 2008]▶ オープンショップスケジューリング問題の未解決問題 3問の最適値を決定.

2008-2009年▶ 第 3回制約ソルバー国際競技会で Sugar が全 10部門中 4部門で優勝.▶ 第 4回制約ソルバー国際競技会で Sugar が全 7部門中 3部門で優勝.

以降,順序符号化を用いた SAT型制約ソルバーが多数開発される.7 / 70

Page 8: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

セミナー後半について

順序符号化を用いた SAT型制約ソルバーの一つである Scarab を用いた演習を通して,以下を体験・学習します.

▶ SATソルバーと比較して問題を簡単に書けること▶ いろいろなモデリング・符号化を試せること▶ いろいろな SAT解法を試せること

演習に入る前に少しだけ基礎の説明と Scarabの事例の紹介を行う.▶ 制約充足問題 (Constraint Satisfaction Problem ; CSP)▶ CSPの SAT符号化方法

⋆ 直接符号化⋆ 順序符号化

▶ Scarabを使った事例の紹介

8 / 70

Page 9: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

説明の流れ

1 はじめに

2 制約充足問題 (CSP)

3 SAT符号化

4 SAT型制約ソルバー Scarab

5 事例紹介: 複数モデリングと符号化

6 事例紹介: CEGAR解法

7 参考文献

9 / 70

Page 10: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

制約充足問題 (Constraint Satisfaction Problem ;CSP)

CSP は各変数に与えられたドメイン (domain) から値を割り当てることで,与えられた制約 (constraint) のすべてを満たすことができるかどうかを判定する問題である.

▶ すべての制約を満たす値割り当て (assignment) が存在する場合⋆ CSP は充足可能 (Satisfiable ; SAT). 値割り当てが解となる.

▶ 値割り当てが存在しない場合⋆ CSP は充足不能 (unsatisfiable ; UNSAT)

制約最適化問題 (Constraint Optimization Problem ; COP) は,与えられた制約を満たしつつ,最適解を求める問題である.人工知能研究等で生じる多くの組合せ問題は,CSPあるいは COPとして定式化できる.以降,本セミナーでは実用上多くの応用を含む整数の有限領域上のCSPおよび COPを対象とする.

10 / 70

Page 11: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

CSP の形式的な定義CSPは以下を満たす組 CSP(X,Dom, C)として定義される.

X は整数変数の有限集合 {x1, x2, . . . , xn}.関数 Dom : X → Fin(Z) は,各変数の取り得る値集合 (ドメイン)を定める (Fin(Z) は整数 Z の有限部分集合の全体を表す).すなわち,各変数 xi ∈ X についてDom(xi) ⊂ Z であり,Dom(xi) は有限集合である.C は X 上の制約の有限集合 {C1, C2, . . . , Cm} であり,制約の連言である.

COP は以下を満たす組 COP(X,Dom, C, f)として定義される.CSP(X,Dom, C) は制約充足問題である.f は最小化(または最大化)すべき目的関数を表す.いま A を値割り当てとすると f(A) が最小(または最大)のとき,A は最適解となる.ここで f(A) = v なる変数を目的変数とする.

11 / 70

Page 12: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

グラフ彩色問題 (GCP) の例次のグラフ彩色問題を考える.

2

34

1

G = (V,E), where

V = {1, 2, 3, 4} and

E = {{1, 2}, {2, 3}, {2, 4}, {3, 4}}

彩色できる色は 3色とする.

12 / 70

Page 13: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

GCPの例をSAT問題で表現した場合

(¬p1,1 ∨ ¬p2,1) ∧ (¬p2,1 ∨ ¬p3,1) ∧ (¬P2,1 ∨ ¬P4,1) ∧ (¬p3,1 ∨ ¬p4,1)∧(¬p1,2 ∨ ¬p2,2) ∧ (¬p2,2 ∨ ¬p3,2) ∧ (¬P2,2 ∨ ¬P4,2) ∧ (¬p3,2 ∨ ¬p4,2)∧(¬p1,3 ∨ ¬p2,3) ∧ (¬p2,3 ∨ ¬p3,3) ∧ (¬P2,3 ∨ ¬P4,3) ∧ (¬p3,3 ∨ ¬p4,3)∧(p1,1 ∨ p1,2 ∨ p1,3) ∧ (p2,1 ∨ p2,2 ∨ p2,3)∧(p3,1 ∨ p3,2 ∨ p3,3) ∧ (p4,1 ∨ p4,2 ∨ p4,3)∧(¬p1,1 ∨ ¬p1,2) ∧ (¬p1,1 ∨ ¬p1,3) ∧ (¬p1,2 ∨ ¬p1,3)∧(¬p2,1 ∨ ¬p2,2) ∧ (¬p2,1 ∨ ¬p2,3) ∧ (¬p2,2 ∨ ¬p2,3)∧(¬p3,1 ∨ ¬p3,2) ∧ (¬p3,1 ∨ ¬p3,3) ∧ (¬p3,2 ∨ ¬p3,3)∧(¬p4,1 ∨ ¬p4,2) ∧ (¬p4,1 ∨ ¬p4,3) ∧ (¬p4,2 ∨ ¬p4,3)

さらに SATソルバーの入力となる DIMACS形式の CNF式だと,命題変数は整数のインデックスになるので,人が理解するのは困難

13 / 70

Page 14: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

GCPの例をCSPで表現した場合CSP(X,Dom, C) として以下のように定式化できる.

X = {x1, x2, x3, x4}Dom(xi) = {1, 2, 3} (i = 1, 2, 3, 4)

C = {x1 ̸= x2, x2 ̸= x3, x2 ̸= x4, x3 ̸= x4}

GCPを表現した Scarabプログラムimport jp.kobe_u.scarab._; import dsl._

val Nodes = Seq(1,2,3,4)

val Edges = Seq((1,2), (2,3), (2,4), (3,4))

val Colors = Seq(1,2,3)

for (v <- Nodes) int(’x(v), Colors)

for ((i,j) <- Edges) add(’x(i) !== ’x(j))

2

34

1

グラフから制約まで簡潔に記述でき,後から見ても理解できる.

14 / 70

Page 15: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

GCPの例をCSPで表現した場合CSP(X,Dom, C) として以下のように定式化できる.

X = {x1, x2, x3, x4}Dom(xi) = {1, 2, 3} (i = 1, 2, 3, 4)

C = {x1 ̸= x2, x2 ̸= x3, x2 ̸= x4, x3 ̸= x4}

GCPを表現した Scarabプログラムimport jp.kobe_u.scarab._; import dsl._

val Nodes = Seq(1,2,3,4)

val Edges = Seq((1,2), (2,3), (2,4), (3,4))

val Colors = Seq(1,2,3)

for (v <- Nodes) int(’x(v), Colors)

for ((i,j) <- Edges) add(’x(i) !== ’x(j))

2

34

1

グラフから制約まで簡潔に記述でき,後から見ても理解できる.14 / 70

Page 16: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

整数有限領域上のCSPを構成する変数と演算

有限ドメインの整数変数▶ lb(x) : x の下限▶ ub(x) : x の上限

命題変数算術演算

▶ +, −, 定数倍, etc.

比較演算▶ =, ̸=, ≥, >, ≤, <

論理演算▶ ¬, ∧, ∨, ⇒

一般性を失うことなしに比較を∑

aixi ≤ c の形に制限できる.▶ xi は整数変数で, ai と c は整数定数

15 / 70

Page 17: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

制約充足問題 (CSP) おわりに

原問題 CSP SAT

SAT 解の解CSP 解の解原問題の解

モデリング 符号化

SAT ソルバー

復号化解釈

原問題を SAT問題で表現しても,CSPで表現しても解は変わらない.しかし,簡潔に原問題を記述できることは様々なモデリングを試行錯誤するうえでとても重要になる.次は,符号化を説明する.

16 / 70

Page 18: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

説明の流れ

1 はじめに

2 制約充足問題 (CSP)

3 SAT符号化

4 SAT型制約ソルバー Scarab

5 事例紹介: 複数モデリングと符号化

6 事例紹介: CEGAR解法

7 参考文献

17 / 70

Page 19: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

SAT符号化CSPの SAT符号化については,様々な方法が提案されている.

直接符号化 (Direct encoding)は,1989年にアイデアが提案され最も広く用いられてきた方法である [de Kleer, 1989, Walsh, 2000].他の符号化:

▶ 多値符号化 (Multivalued encoding) [Selman et al., 1992]▶ 支持符号化 (Support encoding) [Kasif, 1990]▶ 対数符号化 (Log encoding) [Iwama and Miyazaki, 1994]▶ 対数支持符号化 (Log-support encoding) [Gavanelli, 2007]

順序符号化 (Order encoding)は,様々な符号化の中でも多くの問題に対して優れた性能を示す方法である [Tamura et al., 2006]

▶ ジョブショップ・スケジューリング問題に対して用いられた方法[Crawford and Baker, 1994] を一般化したもの.オープンショップ・スケジューリング,ジョブショップ・スケジューリング,2次元ストリップパッキング等について,未解決だった問題の解決に成功している.

▶ 他の符号化と比較して理論的に良い性質を持つことが証明されている[Petke and Jeavons, 2011].

▶ 派生も研究されている: コンパクト順序符号化 (Compact orderencloding) [Tanjo et al., 2011, 丹生智也 et al., 2013], ハイブリッド符号化 [Soh et al., 2015]

18 / 70

Page 20: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

直接符号化 (Direct encoding)

直接符号化では,各整数変数 x とそのドメインの各値 i に対して,x = iを表す命題変数 p(x = i) を用いる [de Kleer, 1989, Walsh, 2000].

各整数変数 xに対して用いる命題変数

p(x = i) (lb(x) ≤ i ≤ ub(x))

たとえば整数変数 x ∈ {2, 3, 4, 5, 6} に対しては,以下の 5つの命題変数を用いる.

x ∈ {2, 3, 4, 5, 6}に対する 5つの命題変数

p(x = 2) p(x = 3) p(x = 4) p(x = 5) p(x = 6)

19 / 70

Page 21: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

直接符号化 (続き)

命題変数 p(x = i) が,x = i の時かつその時に限って真となるように,以下の at-least-one節と at-most-one節を追加する.

各整数変数 xに対して追加する節

p(x = lb(x)) ∨ · · · ∨ p(x = ub(x))

¬p(x = i) ∨ ¬p(x = j) (lb(x) ≤ i < j ≤ ub(x))

たとえば x ∈ {2, 3, 4, 5, 6} に対しては,以下の 11節を追加する.

x ∈ {2, 3, 4, 5, 6}に対して追加する 11節p(x = 2) ∨ p(x = 3) ∨ p(x = 4) ∨ p(x = 5) ∨ p(x = 6)

¬p(x = 2) ∨ ¬p(x = 3) ¬p(x = 2) ∨ ¬p(x = 4) ¬p(x = 2) ∨ ¬p(x = 5)¬p(x = 2) ∨ ¬p(x = 6) ¬p(x = 3) ∨ ¬p(x = 4) ¬p(x = 3) ∨ ¬p(x = 5)

¬p(x = 3) ∨ ¬p(x = 6) ¬p(x = 4) ∨ ¬p(x = 5)¬p(x = 4) ∨ ¬p(x = 6) ¬p(x = 5) ∨ ¬p(x = 6)

20 / 70

Page 22: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

直接符号化 (続き)

制約は違反点 (conflict points)を列挙することで符号化できる.

制約節x1 = i1, . . . , xk = ikが制約に違反する時,以下の節を追加する.

¬p(x1 = i1) ∨ · · · ∨ ¬p(xk = ik)

21 / 70

Page 23: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

直接符号化 (続き)

制約 x+ y ≤ 7 は,違反点 (図中の × 点)を列挙することで以下の 15節に符号化される.

x+ y ≤ 7の直接符号化¬p(x = 2) ∨ ¬p(y = 6)¬p(x = 3) ∨ ¬p(y = 5)¬p(x = 3) ∨ ¬p(y = 6)¬p(x = 4) ∨ ¬p(y = 4)¬p(x = 4) ∨ ¬p(y = 5)¬p(x = 4) ∨ ¬p(y = 6)¬p(x = 5) ∨ ¬p(y = 3)¬p(x = 5) ∨ ¬p(y = 4)¬p(x = 5) ∨ ¬p(y = 5)¬p(x = 5) ∨ ¬p(y = 6)¬p(x = 6) ∨ ¬p(y = 2)¬p(x = 6) ∨ ¬p(y = 3)¬p(x = 6) ∨ ¬p(y = 4)¬p(x = 6) ∨ ¬p(y = 5)¬p(x = 6) ∨ ¬p(y = 6)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

22 / 70

Page 24: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化

順序符号化では,各整数変数 x とそのドメインの各値 i に対して,x ≤ iを表す命題変数 p(x ≤ i) を用いる [Tamura et al., 2006].

各整数変数 xに対して用いる命題変数

p(x ≤ i) (lb(x) ≤ i < ub(x))

たとえば整数変数 x ∈ {2, 3, 4, 5, 6} に対しては,以下の 4つの命題変数を用いる.

x ∈ {2, 3, 4, 5, 6} に対する 4つの命題変数

p(x ≤ 2) p(x ≤ 3) p(x ≤ 4) p(x ≤ 5)

x ≤ 6 が常に真のため命題変数 p(x ≤ 6) は不要である.

23 / 70

Page 25: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

命題変数 p(x ≤ i) が, x ≤ i の時かつその時に限って真となるように,以下の節を追加する.

各整数変数 xに対して追加する節

¬p(x ≤ i− 1) ∨ p(x ≤ i) (lb(x) < i < ub(x))

たとえば x ∈ {2, 3, 4, 5, 6} に対しては,以下の 3節を追加する.

x ∈ {2, 3, 4, 5, 6}に対して追加する 3節¬p(x ≤ 2) ∨ p(x ≤ 3)¬p(x ≤ 3) ∨ p(x ≤ 4)¬p(x ≤ 4) ∨ p(x ≤ 5)

24 / 70

Page 26: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

追加された節を充足する可能な値割当ては以下の通りである.

¬p(x ≤ 2) ∨ p(x ≤ 3)¬p(x ≤ 3) ∨ p(x ≤ 4)¬p(x ≤ 4) ∨ p(x ≤ 5)

充足する値割当てp(x ≤ 2) p(x ≤ 3) p(x ≤ 4) p(x ≤ 5) 解釈

1 1 1 1 x = 20 1 1 1 x = 30 0 1 1 x = 40 0 0 1 x = 50 0 0 0 x = 6

25 / 70

Page 27: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

充足する部分値割当てp(x ≤ 2) p(x ≤ 3) p(x ≤ 4) p(x ≤ 5) 解釈

− − − − x = 2 .. 6− − − 1 x = 2 .. 5− − 1 1 x = 2 .. 4− 1 1 1 x = 2 .. 30 − − − x = 3 .. 60 0 − − x = 4 .. 60 0 0 − x = 5 .. 60 − − 1 x = 3 .. 50 − 1 1 x = 3 .. 40 0 − 1 x = 4 .. 5

“−”は未定義を表す.

命題変数に対する部分値割当ては,整数変数の範囲を表している.

26 / 70

Page 28: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

制約は,違反点ではなく違反領域 (conflict region) を列挙することで符号化できる.

制約節範囲 i1 < x1 ≤ j1, . . . , ik < xk ≤ jk中のすべての点 (x1, . . . , xk)が制約に違反する時,以下の節を追加する.

p(x1 ≤ i1) ∨ ¬p(x1 ≤ j1) ∨ · · · ∨ p(xk ≤ ik) ∨ ¬p(xk ≤ jk)

27 / 70

Page 29: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

28 / 70

Page 30: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

¬(y ≥ 6)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

29 / 70

Page 31: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

29 / 70

Page 32: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)¬(x ≥ 3 ∧ y ≥ 5)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

30 / 70

Page 33: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)p(x ≤ 2) ∨ p(y ≤ 4)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

30 / 70

Page 34: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)p(x ≤ 2) ∨ p(y ≤ 4)¬(x ≥ 4 ∧ y ≥ 4)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

31 / 70

Page 35: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)p(x ≤ 2) ∨ p(y ≤ 4)p(x ≤ 3) ∨ p(y ≤ 3)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

31 / 70

Page 36: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)p(x ≤ 2) ∨ p(y ≤ 4)p(x ≤ 3) ∨ p(y ≤ 3)¬(x ≥ 5 ∧ y ≥ 3)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

32 / 70

Page 37: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)p(x ≤ 2) ∨ p(y ≤ 4)p(x ≤ 3) ∨ p(y ≤ 3)p(x ≤ 4) ∨ p(y ≤ 2)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

32 / 70

Page 38: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)p(x ≤ 2) ∨ p(y ≤ 4)p(x ≤ 3) ∨ p(y ≤ 3)p(x ≤ 4) ∨ p(y ≤ 2)¬(x ≥ 6)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

33 / 70

Page 39: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化 (続き)

x+ y ≤ 7の順序符号化

p(y ≤ 5)p(x ≤ 2) ∨ p(y ≤ 4)p(x ≤ 3) ∨ p(y ≤ 3)p(x ≤ 4) ∨ p(y ≤ 2)p(x ≤ 5)

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

x

y

33 / 70

Page 40: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化における範囲伝搬

x+ y ≤ 7の順序符号化

C1 : p(y ≤ 5)C2 : p(x ≤ 2) ∨ p(y ≤ 4)C3 : p(x ≤ 3) ∨ p(y ≤ 3)C4 : p(x ≤ 4) ∨ p(y ≤ 2)C5 : p(x ≤ 5)

p(x ≤ 3) が偽 (すなわち x ≥ 4 )となれば,C3 に対する 単位伝播(unit propagation)により p(y ≤ 3) が真 (すなわち y ≤ 3 )となる.これは制約ソルバーにおける範囲伝播 (bound propagation) に対応している.

34 / 70

Page 41: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

順序符号化のインパクト順序符号化は多くの問題において良い性能を示し,理論的にも良い性質が証明されている [Petke and Jeavons, 2011].順序符号化を初めて採用した SAT型制約ソルバー Sugar[Tamura and Banbara, 2008] はオープンショップスジューリング問題の未解決問題 3問の最適値を決定し,2008-2009年の制約ソルバー国際競技会で,併せて 7部門で優勝した.Sugar 以降,ほとんどの SAT型制約ソルバーは順序符号化を採用している.

Numberjack [Hebrard et al., 2010]

BEE [Metodi and Codish, 2012]

Azucar [Tanjo et al., 2012]

meSAT [Stojadinovic and Maric, 2014]

Diet-Sugar [Soh et al., 2015]

セミナーで説明する Scarabも順序符号化を採用した SAT型制約ソルバーである.

35 / 70

Page 42: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

SAT符号化 おわりに

原問題 CSP SAT

SAT 解の解CSP 解の解原問題の解

モデリング 符号化

SAT ソルバー

復号化解釈

SAT符号化方法には様々な方法が提案されている.ここまで代表的な直接符号化と順序符号化を説明した.順序符号化は多くの問題に良い性能を示すが,問題サイズが大きくなったり,特定の制約に対しては,他の符号化の性能がより良くなることもあるため複数の符号化の長所を組合せたハイブリッド符号化なども研究されている[Stojadinovic and Maric, 2014, Soh et al., 2015]

36 / 70

Page 43: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

説明の流れ

1 はじめに

2 制約充足問題 (CSP)

3 SAT符号化

4 SAT型制約ソルバー Scarab

5 事例紹介: 複数モデリングと符号化

6 事例紹介: CEGAR解法

7 参考文献

37 / 70

Page 44: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SATソルバーを用いたアプリケーション開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチ(作業台)を提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

38 / 70

Page 45: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SATソルバーを用いたアプリケーション開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチ(作業台)を提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

Scarab

DSL

SATソルバー

API

符号化

CSPソルバーAPI

38 / 70

Page 46: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SATソルバーを用いたアプリケーション開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチ(作業台)を提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

Scarab

プログラムScarab

DSLSATソルバー

API

符号化

CSPソルバーAPI

(DSL+Scala)

38 / 70

Page 47: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SATソルバーを用いたアプリケーション開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチ(作業台)を提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

Scarab

プログラムCSP

Scarab

DSLSATソルバー

API

符号化

CSPソルバーAPI

(DSL+Scala)

38 / 70

Page 48: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

CSPのクラス図

Expr

Term Constraint

Sum Var

Bool

And Or

Not

Literal

LeZero

CSP

variables: Seq [Var]bools: Seq [Bool]dom: Map [Var, Domain]constraints: Seq [Constraint]

Domain

lb: Intub: Int

1

1

1 1

Assignment

intMap: Map[Var, Int]boolMap: Map[Bool, Boolean]

1

1

CSPのクラス図

39 / 70

Page 49: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SATソルバーを用いたアプリケーション開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチ(作業台)を提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

Scarab

プログラムCSP

Scarab

DSLSATソルバー

API

符号化

CSPソルバーAPI

(DSL+Scala)

40 / 70

Page 50: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SATソルバーを用いたアプリケーション開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチ(作業台)を提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

Scarab

プログラム

Sat4j

CSP

Scarab

DSLSATソルバー

API

符号化

MAP

SAT

CSPソルバーAPI

(DSL+Scala)

40 / 70

Page 51: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

CSPソルバーのクラス図

CSP Solver

Encoder

OrderEncoder

SatSolver

Sat4j

Simplifier

11

1

1

1

11

1

Sat4jPB ExtSatSolverLogEncoder

NativePBEncoder

CSPソルバーのクラス図

41 / 70

Page 52: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

SATソルバーAPI (一部)

1: abstract class SatSolver {2: def addClause(lits: Seq[Int])

3: def addAtLeast(lits: Seq[Int], degree: Int)

4: def addAtMost(lits: Seq[Int], degree: Int)

5: def addExactly(lits: Seq[Int], degree: Int)

6: def addConstr(c: org.sat4j.specs.Constr)

7: def isSatisfiable: Boolean

8: def isSatisfiable(assumps: Seq[Int]): Boolean

9: def model: Array[Int]

10: def clearLearntClauses

11: def reset ... }

節だけでなく基数制約などを SAT符号化を行うことなく SATソルバーに随時追加できる.org.sat4j.specs.Constrを実装すれば任意の制約を開発・追加出来る.通常の解計算の他に仮説を考慮した解を求めることができる.学習節を保持するだけでなく削除することもできる.

42 / 70

Page 53: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

擬似ブール制約の実装

1: class NativePB(voc: ILits, ps: IVecInt, coef: Seq[Int], degree: Int)

extends Constr with Propagatable with Undoable {2: val maxUnsatisfied = coef.sum - degree

.... 中略....

8: register

9:

10: def register {.... 中略....

19: }20:

21: def propagate(s: UnitPropagationListener, p: Int): Boolean = {.... 中略....

31: }32:

33: def calcReason(p: Int, outReason: IVecInt) {.... 中略....

40: }

基本的に register, propagate, calcReasonを実装すれば良く素朴な擬似ブール制約は 40行程で書ける.

43 / 70

Page 54: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SAT型制約プログラミングシステム開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチを提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

Scarab

プログラム

Sat4j

CSP

Scarab

DSLSATソルバー

API

符号化

MAP

SAT

CSPソルバーAPI

(DSL+Scala)

44 / 70

Page 55: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SAT型制約プログラミングシステム開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチを提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

Scarab

プログラム

Sat4j

CSP

Scarab

DSLSATソルバー

API

符号化

CSPの解

SATの解逆符号化

MAP

SAT

CSPソルバーAPI

(DSL+Scala)

44 / 70

Page 56: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab

Scarab は SAT型制約プログラミングシステム開発者を対象に,表現性,変更の容易性,効率性を備え,SATソルバーと密に連携可能なワークベンチを提供することを目的としたツールである.

以下から構成される:1 Scarab DSL: 制約プログラミングのためのドメイン特化言語2 CSPソルバー API3 SAT符号化モジュール4 SATソルバー API

Scarab

DSL

SATソルバー

API

符号化

CSPソルバーAPI

Scala で 1000 行で実装

44 / 70

Page 57: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab の特長

(表現性) Scarab DSL と Scala の両方を用いて与えられた問題を記述することが可能である.(効率性) Scarabでは,CSPソルバー競技会の優勝ソルバーであるSugarが採用している順序符号化を実装している.(可搬性) デフォルトの SATソルバーである Sat4jを使う場合,開発した SAT型システム全体が Java Virtual Machine上で動作可能.(変更容易性) Scarabはコメントを除き約 1000行の Scalaプログラムで実装されている.順序符号化の核となる部分は 25行の Scalaプログラムで書かれており Scarab自体がユーザによって変更し易いようになっている.Sat4jと密に連携しており,インクリメンタル解法,仮説を用いたCSP解法,組込み基数制約などの高度な SAT解法を利用可能.またユーザが任意の組込み制約を定義可能.

45 / 70

Page 58: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

説明の流れ

1 はじめに

2 制約充足問題 (CSP)

3 SAT符号化

4 SAT型制約ソルバー Scarab

5 事例紹介: 複数モデリングと符号化

6 事例紹介: CEGAR解法

7 参考文献

46 / 70

Page 59: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

汎対角線ラテン方陣: PLS(n)

汎対角線ラテン方陣 PLS(n) は異なる n個の数字を n行 n 列の行列にそれぞれの数字が各行,各列,各汎対角線にちょうど一度表れるように配置する問題である.2009年の CSPソルバー競技会では,Sugarを除いて n > 8の PLS(n)を解けた CSPソルバーは無い.

1

1

1

1

1

2

2

2

2

2

3

3

3

3

4

4

4

4

4

5

5

5

5

5

3

Scarab を使うことで PLSに対する 5種類の SAT型システムを 35行以内で書くことができる.

システム名 モデリング 符号化 行数AD1 alldiff naive 17AD2 with Perm. and P. H. Const. 31

BC1 基数制約 Pairwise 22BC2 Totalizer [Bailleux ’03] 35BC3 Seq. Counter [Sinz ’05] 27

47 / 70

Page 60: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

汎対角線ラテン方陣: PLS(n)

汎対角線ラテン方陣 PLS(n) は異なる n個の数字を n行 n 列の行列にそれぞれの数字が各行,各列,各汎対角線にちょうど一度表れるように配置する問題である.2009年の CSPソルバー競技会では,Sugarを除いて n > 8の PLS(n)を解けた CSPソルバーは無い.

1

1

1

1

1

2

2

2

2

2

3

3

3

3

4

4

4

4

4

5

5

5

5

5

3

Scarab を使うことで PLSに対する 5種類の SAT型システムを 35行以内で書くことができる.

システム名 モデリング 符号化 行数AD1 alldiff naive 17AD2 with Perm. and P. H. Const. 31

BC1 基数制約 Pairwise 22BC2 Totalizer [Bailleux ’03] 35BC3 Seq. Counter [Sinz ’05] 27

47 / 70

Page 61: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

汎対角線ラテン方陣: PLS(n)

汎対角線ラテン方陣 PLS(n) は異なる n個の数字を n行 n 列の行列にそれぞれの数字が各行,各列,各汎対角線にちょうど一度表れるように配置する問題である.2009年の CSPソルバー競技会では,Sugarを除いて n > 8の PLS(n)を解けた CSPソルバーは無い.

1

1

1

1

1

2

2

2

2

2

3

3

3

3

4

4

4

4

4

5

5

5

5

5

3

Scarab を使うことで PLSに対する 5種類の SAT型システムを 35行以内で書くことができる.

システム名 モデリング 符号化 行数AD1 alldiff naive 17AD2 with Perm. and P. H. Const. 31

BC1 基数制約 Pairwise 22BC2 Totalizer [Bailleux ’03] 35BC3 Seq. Counter [Sinz ’05] 27

47 / 70

Page 62: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}

それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 63: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 64: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 65: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 66: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 67: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 68: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 69: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 70: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.

48 / 70

Page 71: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデル汎対角線ラテン方陣 PLS(5)

x11 x12 x13 x14 x15

x21 x22 x23 x24 x25

x31 x32 x33 x34 x35

x41 x42 x43 x44 x45

x51 x52 x53 x54 x55

1 2 3 4 5

3 4 5 1 2

5 1 2 3 4

2 3 4 5 1

4 5 1 2 3

整数変数 xij ∈ {1, 2, 3, 4, 5}それぞれの行に対する alldiff (5行)

それぞれの列に対する alldiff (5列)

それぞれの汎対角線に対する alldiff (10汎対角線)

PLS(5) は充足可能.48 / 70

Page 72: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

alldiff モデルの Scarab プログラム

import jp.kobe_u.scarab._ ; import dsl._

var n: Int = args(0).toInt

for (i <- 1 to n; j <- 1 to n) int(’x(i,j),1,n)

for (i <- 1 to n) {add(alldiff((1 to n).map(j => ’x(i,j))))

add(alldiff((1 to n).map(j => ’x(j,i))))

add(alldiff((1 to n).map(j => ’x(j,(i+j-1)%n+1))))

add(alldiff((1 to n).map(j => ’x(j,(i+(j-1)*(n-1))%n+1))))}

if (find) println(solution.intMap)

49 / 70

Page 73: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.

それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1▶ それぞれの汎対角線に対して (10 汎対角線)

y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 74: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1

▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1▶ それぞれの汎対角線に対して (10 汎対角線)

y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 75: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1

▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1▶ それぞれの汎対角線に対して (10 汎対角線)

y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 76: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1

▶ それぞれの汎対角線に対して (10 汎対角線)y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 77: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1

▶ それぞれの汎対角線に対して (10 汎対角線)y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 78: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1▶ それぞれの汎対角線に対して (10 汎対角線)

y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 79: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1▶ それぞれの汎対角線に対して (10 汎対角線)

y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 80: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1▶ それぞれの汎対角線に対して (10 汎対角線)

y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 81: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1▶ それぞれの汎対角線に対して (10 汎対角線)

y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 82: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデル

y11k y12k y13k y14k y15k

y21k y22k y23k y24k y25k

y31k y32k y33k y34k y35k

y41k y42k y43k y44k y45k

y51k y52k y53k y54k y55k

yijk ∈ {0, 1} yijk = 1 ⇔ k が (i, j) に配置.それぞれの値に対して (5つの値)

▶ それぞれの行に対して (5行) yi1k + yi2k + yi3k + yi4k + yi5k = 1▶ それぞれの列に対して (5列) y1jk + y2jk + y3jk + y4jk + y5jk = 1▶ それぞれの汎対角線に対して (10 汎対角線)

y11k + y22k + y33k + y44k + y55k = 1

それぞれの (i, j) マスに対して (25マス) yij1 + yij2 + yij3 + yij4 + yij5 = 1

50 / 70

Page 83: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

基数制約モデルの Scarab プログラムimport jp.kobe_u.scarab._ , dsl._

for (i <- 1 to n; j <- 1 to n; num <- 1 to n)

int(’y(i,j,num),0,1)

for (num <- 1 to n) {for (i <- 1 to n) {add(BC((1 to n).map(j => ’y(i,j,num)))===1)

add(BC((1 to n).map(j => ’y(j,i,num)))===1)

add(BC((1 to n).map(j => ’y(j,(i+j-1)%n+1,num))) === 1)

add(BC((1 to n).map(j => ’y(j,(i+(j-1)*(n-1))%n+1,num))) === 1)

}}

for (i <- 1 to n; j <- 1 to n)

add(BC((1 to n).map(k => ’y(i,j,k))) === 1)

if (find) println(solution)

51 / 70

Page 84: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

Scarab における基数制約のSAT符号化

基数制約の SAT符号化にはいくつかの方法がある.BCを異なる方法で実装することで簡単に以下の既存の符号化法を実現できる.

▶ Pairwise▶ Totalizer [Bailleux and Boufkhad, 2003]▶ Sequential Counter [Sinz, 2005]

結果として,3種類の基数制約モデルができる.▶ BC1: Pairwise (implemented by 2 lines)▶ BC2: Totalizer [Bailleux and Boufkhad, 2003] (implemented by 15

lines)▶ BC3: Sequential Counter [Sinz, 2005] (implemented by 7 lines)

Scarab の良いところは,これらのモデルを専用のプログラムをゼロから書かずに試せるところである.

52 / 70

Page 85: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

性能評価: CPU 時間 (秒)の比較. (1時間打切り)

n SAT/UNSAT AD1 AD2 BC1 BC2 BC3

7 SAT 0.2 0.2 0.2 0.3 0.38 UNSAT T.O. 0.5 0.3 0.3 0.39 UNSAT T.O. 0.3 0.5 0.3 0.2

10 UNSAT T.O. 0.4 1.0 0.3 0.311 SAT 0.3 0.3 2.3 0.5 0.412 UNSAT T.O. 1.0 5.3 0.8 0.813 — T.O. T.O. T.O. T.O. T.O.14 UNSAT T.O. 9.7 32.4 8.2 6.815 UNSAT T.O. 388.9 322.7 194.6 155.816 UNSAT T.O. 457.1 546.6 300.7 414.8

同じソルバーを使っても各モデリング/符号化によってシステムの性能が異なる.Scarabは,これらの異なる方法を少しプログラムを変えるだけで試すことができる.

53 / 70

Page 86: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

説明の流れ

1 はじめに

2 制約充足問題 (CSP)

3 SAT符号化

4 SAT型制約ソルバー Scarab

5 事例紹介: 複数モデリングと符号化

6 事例紹介: CEGAR解法

7 参考文献

54 / 70

Page 87: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

ハミルトン閉路問題 (HCP)

5

6

1

48

2

7

3

5

6

1

48

2

7

3

ハミルトン閉路問題 (HCP) は与えられたグラフの全頂点を通る閉路を求める NP完全問題である.グラフ理論における重要な問題であり,計算機科学においても巡回セールスマン問題 (TSP) との関係があり重要である.TSP の潜在的な困難さが HCPにある可能性の示唆 [Filar, 2006].

55 / 70

Page 88: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

制約モデルV : n個の頂点集合, E: 辺の集合, G = (V,E): 無向グラフ辺集合Eに対応する弧の集合A = {(i, j), (j, i) | {i, j} ∈ E}ブール変数 xij (i ̸= j)を以下のように定義.

xij = 1 ⇔弧 (i, j)が解に含まれる

(出次数制約)∑

(i,j)∈A

xij = 1 各頂点 i = 1, . . . , n に対して

(入次数制約)∑

(i,j)∈A

xij = 1 各頂点 j = 1, . . . , n に対して

(連結制約)∑i,j∈S

xij ≤ |S| − 1, S ⊂ V, 3 ≤ |S| ≤ n− 2

次数制約は解に含まれる弧が閉路を構成することを保証する連結制約は解に含まれる弧が全ての頂点を連結することを保証する

56 / 70

Page 89: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

従来のSAT解法2003年までの従来方法

[Iwama and Miyazaki, 1994] log encoding

[Hoos, 1999] absolute encocoding

[Prestwich, 2003] relative encoding▶ 連結制約を任意の 3頂点の遷移関係を用いて符号化.n3 の節が必要.

[Velev and Gao, 2009]

[Velev and Gao, 2009]は [Prestwich, 2003]の方法を踏襲しながらグラフの三角化を用いることで符号化節の大幅な削減に成功.

改善された方法は 1000倍以上の高速化を実現.

HCP/TSP専用ソルバー LKH web は 10000頂点規模の HCPを解けるが,SAT解法は [Velev and Gao, 2009] らの方法を使っても 1000頂点以上の問題は解くのが難しい.

57 / 70

Page 90: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

CEGAR-HCP

1: Ψ := Gの入・出次数制約を SAT符号化 ;2: while (Ψ が充足可能)3: if (解が閉路を 1つしか含まない)4: return Gのハミルトン閉路;5: else6: Ψblock := 反例からブロック節を生成 ;7: Ψ := Ψ ∧Ψblock ;8: return ハミルトン閉路は存在しない;

5

6

1

48

2

7

3

C1

C2

ブロック節C1 ¬x12 ∨ ¬x23 ∨ ¬x37 ∨ ¬x78 ∨ ¬x81C ′1 ¬x87 ∨ ¬x73 ∨ ¬x32 ∨ ¬x21 ∨ ¬x18

C2 ¬x46 ∨ ¬x65 ∨ ¬x54C ′2 ¬x45 ∨ ¬x56 ∨ ¬x64

58 / 70

Page 91: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

CEGAR-HCP の Scarab プログラム (部分)

提案した CEGAR-HCPをほぼそのまま記述できる.

グラフのパーサ等他の部分を含めてもプログラムは全体で 100行に満たない.

59 / 70

Page 92: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

計算機実験計算機実験で以下を検証する.(1) CEGAR-HCP の有効性, (2) 密なシステムを使うことの有効性,(3) 組込み基数制約の有効性, (4) 他手法と比較した場合の有効性

実験環境, ベンチマーク (139問), 比較システムCPU: Intel Xeon 2.93GHz, メモリ: 4GB, 制限時間: 500秒.

color04 (119問, #頂点数: 11 to 10000),knight (11問, 8x8 to 100x100), tsplib (9問)

CEGAR-HCP (密なシステム上の実装. Scarab)S4J-S (Seq. Counter), S4J-N (組込み基数制約)

全符号化法 Velev (Minisat2.2)

TSP専用ソルバー LKH(TSPLIBの全ての世界記録を保持しているソルバー)

CEGAR-HCP (疎なシステム) S4J-S

60 / 70

Page 93: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

計算機実験計算機実験で以下を検証する.(1) CEGAR-HCP の有効性, (2) 密なシステムを使うことの有効性,(3) 組込み基数制約の有効性, (4) 他手法と比較した場合の有効性

実験環境, ベンチマーク (139問), 比較システムCPU: Intel Xeon 2.93GHz, メモリ: 4GB, 制限時間: 500秒.

color04 (119問, #頂点数: 11 to 10000),knight (11問, 8x8 to 100x100), tsplib (9問)

CEGAR-HCP (密なシステム上の実装. Scarab)S4J-S (Seq. Counter), S4J-N (組込み基数制約)

全符号化法 Velev (Minisat2.2)

TSP専用ソルバー LKH(TSPLIBの全ての世界記録を保持しているソルバー)

CEGAR-HCP (疎なシステム) S4J-S

60 / 70

Page 94: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

計算機実験計算機実験で以下を検証する.(1) CEGAR-HCP の有効性, (2) 密なシステムを使うことの有効性,(3) 組込み基数制約の有効性, (4) 他手法と比較した場合の有効性

実験環境, ベンチマーク (139問), 比較システムCPU: Intel Xeon 2.93GHz, メモリ: 4GB, 制限時間: 500秒.

color04 (119問, #頂点数: 11 to 10000),knight (11問, 8x8 to 100x100), tsplib (9問)

CEGAR-HCP (密なシステム上の実装. Scarab)S4J-S (Seq. Counter), S4J-N (組込み基数制約)

全符号化法 Velev (Minisat2.2)

TSP専用ソルバー LKH(TSPLIBの全ての世界記録を保持しているソルバー)

CEGAR-HCP (疎なシステム) S4J-S

60 / 70

Page 95: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

計算機実験計算機実験で以下を検証する.(1) CEGAR-HCP の有効性, (2) 密なシステムを使うことの有効性,(3) 組込み基数制約の有効性, (4) 他手法と比較した場合の有効性

実験環境, ベンチマーク (139問), 比較システムCPU: Intel Xeon 2.93GHz, メモリ: 4GB, 制限時間: 500秒.

color04 (119問, #頂点数: 11 to 10000),knight (11問, 8x8 to 100x100), tsplib (9問)

CEGAR-HCP (密なシステム上の実装. Scarab)S4J-S (Seq. Counter), S4J-N (組込み基数制約)

全符号化法 Velev (Minisat2.2)

TSP専用ソルバー LKH(TSPLIBの全ての世界記録を保持しているソルバー)

CEGAR-HCP (疎なシステム) S4J-S

60 / 70

Page 96: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

解けた問題数とCPU時間の比較

0

100

200

300

400

500

0 20 40 60 80 100 120

Tim

e (

se

c)

#Solved

[Velev ’09]LKH 2.0.7S4J-S (疎)S4J-S (密)S4J-N (密)

61 / 70

Page 97: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

解けた問題数とCPU時間の比較

0

100

200

300

400

500

0 20 40 60 80 100 120

Tim

e (

se

c)

#Solved

[Velev ’09]LKH 2.0.7S4J-S (疎)S4J-S (密)S4J-N (密)

全符号化法 v.s. CEGAR-HCP

LKH v.s. CEGAR-HCP

疎な連携 v.s. 密な連携

Seq. Counter v.s. 組込み基数制約

61 / 70

Page 98: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 I

Bailleux, O. and Boufkhad, Y. (2003).Efficient CNF encoding of Boolean cardinality constraints.In Proceedings of the 9th International Conference on Principles andPractice of Constraint Programming (CP 2003), LNCS 2833, pages108–122.

Cadoli, M., Ianni, G., Palopoli, L., Schaerf, A., and Vasile, D. (2000).NP-SPEC: an executable specification language for solving allproblems in NP.Comput. Lang., 26(2-4):165–195.

Crawford, J. M. and Baker, A. B. (1994).Experimental results on the application of satisfiability algorithms toscheduling problems.In Proceedings of the 12th National Conference on ArtificialIntelligence (AAAI 1994), pages 1092–1097.

62 / 70

Page 99: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 II

de Kleer, J. (1989).A comparison of ATMS and CSP techniques.In Proceedings of the 11th International Joint Conference on ArtificialIntelligence (IJCAI 1989), pages 290–296.

Filar, J. A. (2006).Controlled markov chains, graphs, and hamiltonicity.Foundations and Trends in Stochastic Systems, 1(2):77–162.

Gavanelli, M. (2007).The log-support encoding of CSP into SAT.In Proceedings of the 13th International Conference on Principles andPractice of Constraint Programming (CP 2007), LNCS 4741, pages815–822.

63 / 70

Page 100: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 III

Hebrard, E., O’Mahony, E., and O’Sullivan, B. (2010).Constraint programming and combinatorial optimisation inNumberjack.In Proceedings of the 7th International Conference on Integration ofAI and OR Techniques in Constraint Programming for CombinatorialOptimization Problems (CPAIOR 2010), LNCS 6140, pages 181–185.

Hoos, H. H. (1999).SAT-encodings, search space structure, and local search performance.In Proceedings of the 16th International Joint Conference on ArtificialIntelligence (IJCAI 1999), pages 296–303.

Iwama, K. and Miyazaki, S. (1994).SAT-variable complexity of hard combinatorial problems.In Proceedings of the IFIP 13th World Computer Congress, pages253–258.

64 / 70

Page 101: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 IV

Kasif, S. (1990).On the parallel complexity of discrete relaxation in constraintsatisfaction networks.Artificial Intelligence, 45(3):275–286.

Metodi, A. and Codish, M. (2012).Compiling finite domain constraints to SAT with BEE.Theory and Practice of Logic Programming, 12(4-5):465–483.

Petke, J. and Jeavons, P. (2011).The order encoding: From tractable csp to tractable sat.In Proceedings of the 14th International Conference on Theory andApplications of Satisfiability Testing (SAT 2011), LNCS 6695, pages371–372.

Prestwich, S. D. (2003).SAT problems with chains of dependent variables.Discrete Applied Mathematics, 130(2):329–350.

65 / 70

Page 102: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 V

Selman, B., Levesque, H. J., and Mitchell, D. G. (1992).A new method for solving hard satisfiability problems.In Proceedings of the 10th National Conference on ArtificialIntelligence (AAAI 1992), pages 440–446.

Sinz, C. (2005).Towards an optimal CNF encoding of Boolean cardinality constraints.In Proceedings of the 11th International Conference on Principles andPractice of Constraint Programming (CP 2005), LNCS 3709, pages827–831.

Soh, T., Banbara, M., and Tamura, N. (2015).A hybrid encoding of CSP to SAT integrating order and log encodings.

In Proceedings of the 27th IEEE International Conference on Toolswith Artificial Intelligence (ICTAI 2015), pages 421–428.

66 / 70

Page 103: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 VI

Soh, T., Inoue, K., Banbara, M., and Tamura, N. (2005).Experimental results for solving job-shop scheduling problems withmultiple SAT solvers.In Proceedings of the 1st International Workshop on Distributed andSpeculative Constraint Processing (DSCP 2005).

Stojadinovic, M. and Maric, F. (2014).meSAT: multiple encodings of CSP to SAT.Constraints, 19(4):380–403.

Tamura, N. and Banbara, M. (2008).Sugar: a CSP to SAT translator based on order encoding.In Proceedings of the 2nd International CSP Solver Competition,pages 65–69.

67 / 70

Page 104: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 VII

Tamura, N., Taga, A., Kitagawa, S., and Banbara, M. (2006).Compiling finite linear CSP into SAT.In Proceedings of the 12th International Conference on Principles andPractice of Constraint Programming (CP 2006), LNCS 4204, pages590–603.

Tanjo, T., Tamura, N., and Banbara, M. (2011).A compact and efficient SAT-encoding of finite domain CSP.In Proceedings of the 14th International Conference on Theory andApplications of Satisfiability Testing (SAT 2011), LNCS 6695, pages375–376. Springer.

68 / 70

Page 105: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 VIII

Tanjo, T., Tamura, N., and Banbara, M. (2012).Azucar: A SAT-based CSP solver using compact order encoding —(tool presentation).In Proceedings of the 15th International Conference on Theory andApplications of Satisfiability Testing (SAT 2012), LNCS 7317, pages456–462. Springer.

Velev, M. N. and Gao, P. (2009).Efficient SAT techniques for relative encoding of permutations withconstraints.In AI 2009: Advances in Artificial Intelligence, 22nd Australasian JointConference, Melbourne, Australia, December 1-4, 2009. Proceedings,pages 517–527.

69 / 70

Page 106: SAT ソルバーとそのアプリケーション開発について 後半: SAT · 2019-09-05 · SAT型制約ソルバーに関する年表 2000年前後 NP-SPEC [Cadoli et al.,

参考文献 IX

Walsh, T. (2000).SAT v CSP.In Proceedings of the 6th International Conference on Principles andPractice of Constraint Programming (CP 2000), pages 441–456.

丹生智也, 田村直之, and 番原睦則 (2013).位取り記数法に基づく整数有限領域上の制約充足問題のコンパクトかつ効率的な SAT符号化.コンピュータソフトウェア, 30(1):211–230.

70 / 70