SlideShare une entreprise Scribd logo
1  sur  60
充足可能性問題のいろいろ
1
東大情報理工 D2 山下 洋史
@utatakiyoshi
2019/03/22 @JOI春合宿
自己紹介
• 山下 洋史 @utatakiyoshi
• 東大 情報理工 博士2年
• IOI2010 カナダ大会 銀メダル
• 過去の栄光
• 最近はプロコンとは疎遠
• 趣味: YouTube (?)
• 企業公式チャンネルみたいなのが意外と面白い
• 工場見学みたいな
• Amazon の倉庫ロボットとか……
• YouTuber も VTuber も見る
• JOI にはとてもお世話になったので何かお返ししたい
2
こんな研究室にいます
• 数理情報学専攻・合原研
• 数理モデリング・カオス力学系(ダイナミクス)
• 世の中の動的な現象を数式で表して予測する
• 病気の進行
• 感染症の拡大
• 脳の活動
• カオス (ランダム性はないにも関わらず、長期間
の予測が難しい運動) の研究
• 自分の研究
• カオス力学系の応用として、充足可能性問題の探索
3
講義をたのまれて、困った!
• 力学系の話をするわけにもいかない
• ちょうど今の研究は、「充足可能性問題に対する探索」
• ということで、今日は「充足可能性問題(SAT)」のご紹介
• 自分の知識の整理も兼ねて……
• 完全な専門分野というわけでもないので、抜けや間違った
理解があるかもしれませんが、ご了承ください
• 資料を準備していて、奥深さを再確認した
4
目次
1. 充足可能性問題
2. 数独をSATで解く
3. 探索アルゴリズム (DPLL)
4. その他のアルゴリズム・その他の問題
5. おわりに
5
休憩?
休憩?
1. 充足可能性問題
6
充足可能性問題
•論理変数 (いわゆる bool型)
x=True または x=False
•論理式
•論理変数と
NOT(¬x, 𝑥), AND(^, ∧), OR(v, ∨)
でできた式
•¬ 𝑥 ∧ 𝑦 ∧ ⋯ ∧ 𝑧
= ¬𝑥 ∨ ¬𝑦 ∨ ⋯ ∨ ¬𝑧
•x ⇒ y (xならばy) =¬𝑥 ∨ 𝑦
7
x y x⇒y ¬x ¬x v y
T T T F T
T F F F F
F T T T T
F F T T T
充足可能性問題 (SATisfiability problem)
• 充足可能性問題
• 与えられた論理式 f(x,y, …, z) が True となるような x, y, …, z
の割当は存在するか?
• 存在するとき: SAT (その割当も返す)
• 存在しないとき: UNSAT
• 例: 𝑥 ∨ 𝑦 ∧ ¬𝑥 ∨ 𝑧 ∧ ¬𝑦
→ SAT! 𝑥, 𝑦, 𝑧 = (𝑇, 𝐹, 𝑇)
• いろいろな応用
• プログラムの性質の証明,集積回路の設計支援
(反例/バグを見つける)
• パズルのソルバー
8
SAT と反例、UNSAT と証明
•満たしてほしい条件(性質)を式にする
•¬(条件) を満たす割当を探す
•みつかれば、それは条件の反例になっている
→バグ発見!
•SATソルバーの中には、UNSATにたいして証明を
出力してくれるものも
→もとの性質の証明になっている
9
CNF 形
• リテラル (Literal):
• 論理変数 𝑥, またはその否定 ¬𝑥
• 節 (Clause):
• リテラルをORでつないだもの
• 例: 𝑥 ∨ ¬𝑦 ∨ 𝑧
• CNF (Conjunctive Normal Form, 連言標準形):
• 節をANDでつないだもの
• 例: 𝑎 ∧ ¬𝑎 ∨ 𝑏 ∧ ¬𝑏 ∨ ¬𝑐 ∧ ¬𝑎 ∨ 𝑐 ∨ 𝑑 ∧ (¬𝑑 ∨ ¬𝑒 ∨ 𝑓)
• すべての論理式はCNFに変換できる
¬ 𝑥 ∧ 𝑦 = ¬𝑥 ∨ ¬𝑦, ¬ 𝑥 ∨ 𝑦 = ¬𝑥 ∧ ¬𝑦
𝑥 ∧ 𝑦 ∨ 𝑧 ∧ 𝑤 = 𝑥 ∨ 𝑧 ∧ 𝑥 ∨ 𝑤 ∧ 𝑦 ∨ 𝑧 ∧ 𝑦 ∨ 𝑤
などを駆使 (うまくやらないと節の個数が爆発することも)
10
簡単にとける場合
•一般には NP-Complete だが……
•Cook-Levin の定理
•インスタンス(論理式)のクラスを制限すれば,
簡単に解ける場合がある
•2-SAT
•Horn-SAT
11
Unit Propagation (UP)
12
a=T, b=T, c=F, d=T
¬a v b ¬b v ¬c ¬a v c v da ¬d v ¬e v f … …
簡単に解ける場合
2-SAT
13
a ¬b
¬ab
¬a v ¬b
¬a v ¬b
¬a v ¬b
=
=
Implication graph
節の長さがすべて 2 のもの
簡単に解ける場合
2-SAT
14
a
¬b c
¬a
b¬c
¬d
d
強連結成分内は同じ値
なので,x と ¬x の両方があると UNSAT
簡単に解ける場合
2-SAT
15
a, b, c, ¬d
e, f, ¬g
h, ¬i, ¬j, k
¬l, ¬m, n, o
¬a, ¬b, ¬c, d
¬e, ¬f, g
¬h, i, j, ¬k
l, m, ¬n, ¬o
強連結成分ごとにまとめてDAGをつくると
トポロジカル順序の下から順に割り当てていけて、SAT
a v c v e
簡単に解ける場合
Horn-SAT
16
¬c v a v b v d v e
¬b v a
¬a
¬d v ¬e v bNG:
¬ がついている変数
が 1 個以下
¬ がついていない変数
はいくつでも OK
簡単に解ける場合
Horn-SAT
17
Unit propagation の後、
¬のついていないリテラルを満たせばOK
¬c v a v b v d v e
¬b v a
¬a
a v c v e
¬d v ¬e v b ¬のついた項が2つ以上あると、
こうなる可能性がある
2. 数独をSATで解く
18
数独
19
AMO (At-Most-One) 制約
• At Most One 制約:
𝐴𝑀𝑂 𝑥1, 𝑥2, … , 𝑥9
𝑥1, 𝑥2, … , 𝑥9 のうちで高々 1 つだけが True
• At Least One 制約:
𝐴𝐿𝑂 𝑥1, 𝑥2, … , 𝑥9 = 𝑥1 ∨ 𝑥2 ∨ ⋯ ,∨ 𝑥9
𝑥1, 𝑥2, … , 𝑥9 のうち 1 つ以上が True
• 𝐴𝑀𝑂 𝑥1, 𝑥2, … , 𝑥9 ∧ 𝐴𝐿𝑂 𝑥1, 𝑥2, … , 𝑥9
𝑥1, 𝑥2, … , 𝑥9 のうちちょうど 1 つがTrue
20
数独
21
AMO(x111, x112,…,x119) V ALO(…) V
…
AMO(x991, x992,…,x999) V ALO(…) V
…
AMO(x121,x221,…,x921) V ALO(…) V
…
AMO(x129,x229,…,x929) V ALO(…) V
…
AMO(x211,x221,…,x291) V ALO(…) V
…
AMO(x219,x229,…,x299) V ALO(…) V
…
AMO(x441,x451,…,x661) V ALO(…) V
…
AMO(x449,x459,…,x669) V ALO(…) V
…
x115 V … V x772 V … V x999
Naïve encoding
𝑥1 ∨ 𝑥2, 𝑥1 ∨ 𝑥3, …, 𝑥1 ∨ 𝑥9
𝑥1 ∨ 𝑥2, 𝑥2 ∨ 𝑥3, …, 𝑥2 ∨ 𝑥9
⋮
𝑥1 ∨ 𝑥2, 𝑥1 ∨ 𝑥3, …, 𝑥8 ∨ 𝑥9
22
Product encoding
•新しい変数 𝑢1, 𝑢2, 𝑢3, 𝑣1, 𝑣2, 𝑣3
𝑢1 ⇒ 𝑥1, 𝑢1 ⇒ 𝑥2, 𝑢1 ⇒ 𝑥3,
𝑢2 ⇒ 𝑥4, 𝑢2 ⇒ 𝑥5, 𝑢2 ⇒ 𝑥6,
𝑢3 ⇒ 𝑥7, 𝑢3 ⇒ 𝑥8, 𝑢3 ⇒ 𝑥9,
𝐴𝑀𝑂(𝑢1, 𝑢2, 𝑢3)
𝑣1 ⇒ 𝑥1, 𝑢2 ⇒ 𝑥2, 𝑣3 ⇒ 𝑥3,
𝑣1 ⇒ 𝑥4, 𝑣2 ⇒ 𝑥5, 𝑣3 ⇒ 𝑥6,
𝑣1 ⇒ 𝑥7, 𝑣2 ⇒ 𝑥8, 𝑣3 ⇒ 𝑥9,
𝐴𝑀𝑂(𝑣1, 𝑣2, 𝑣3)
23
J. Chen. A New SAT Encoding of the At-Most-One Constraint. MofRef 2010
[Note] 𝑥 ⇒ 𝑦 は 𝑥 ∨ 𝑦 の意味
Commander encoding
•新しい変数
𝑐 0,8 ⇒ 𝑐 0,4 , 𝑐 0,8 ⇒ 𝑐 4,8 , 𝑐 0,4 ∨ 𝑐 4,8
𝑐 0,4 ⇒ 𝑐 0,2 , 𝑐 0,4 ⇒ 𝑐 0,2 , 𝑐 0,2 ∨ 𝑐 2,4
𝑐 0,2 ⇒ 𝑥1, 𝑐 0,2 ⇒ 𝑥2, 𝑥1 ∨ 𝑥2
24
𝑐 0,8
𝑐 0,4 𝑐 4,8
𝑐 0,2 𝑐(2,4] 𝑐(4,6] 𝑐(6,8]
𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8
W. Klieber and G. Kwon. Efficient CNF Encoding for Selecting 1 from N Objects. CFV 2007
Bitwise encoding
• 新しい変数 𝑏4, 𝑏2, 𝑏1
𝑥7 ⇒ 𝑏4, 𝑥7 ⇒ 𝑏2, 𝑥7 ⇒ 𝑏1
𝑥6 ⇒ 𝑏4, 𝑥6 ⇒ 𝑏2, 𝑥6 ⇒ 𝑏1
𝑥5 ⇒ 𝑏4, 𝑥5 ⇒ 𝑏2, 𝑥5 ⇒ 𝑏1
𝑥4 ⇒ 𝑏4, 𝑥4 ⇒ 𝑏2, 𝑥4 ⇒ 𝑏1
𝑥3 ⇒ 𝑏4, 𝑥3 ⇒ 𝑏2, 𝑥3 ⇒ 𝑏1
𝑥2 ⇒ 𝑏4, 𝑥2 ⇒ 𝑏2, 𝑥2 ⇒ 𝑏1
𝑥1 ⇒ 𝑏4, 𝑥1 ⇒ 𝑏2, 𝑥1 ⇒ 𝑏1
𝑥8 ⇒ 𝑏4, 𝑥8 ⇒ 𝑏2, 𝑥8 ⇒ 𝑏1
25
S. Prestwich. Variable Dependency in Local Search:
Prevention Is Better Than Cure. SAT 2007: 107-120
Sequential encoding
𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8 𝑥9
𝑠1 𝑠2 𝑠3 𝑠4 𝑠5 𝑠6 𝑠7 𝑠8
26
𝑥1 ⇒ 𝑠1, 𝑥2 ⇒ 𝑠2,…
𝑠1 ⇒ 𝑠2, 𝑠2 ⇒ 𝑠3,…
𝑠1 ∨ 𝑥2, 𝑠2 ∨ 𝑥3,...
C. Sinz. Towards an Optimal CNF Encoding of Boolean
Cardinality Constraints. CP 2005: 827-831
AMO 制約だけでもいろいろな encoding
• At-Most-k, At-Least-k 制約
• 「高々k個がTrue」「少なくともk個がTrue」
• 紹介したもののいくつかはこれに拡張可能
• 考えてみてください
• 新しい変数と使う節の数はさまざま
• Bitwise
• 追加変数: O(lgN)
• 節: O(NlgN)
• Sequential
• 追加変数: O(N)
• 節: O(N)
• [NOTE] 変数や節の数が少ないほど良いとは限らない!
27
Dimacs format
•CNFを表現する標準的なフォーマット
•ソルバー (minisat等) に入力できる
28
p cnf 5 4
-1 0
-2 1 0
-3 1 2 4 5 0
1 3 5 0
¬c v a v b v d v e
¬b v a
¬a
a v c v e
変数の数 節の数
3. 探索アルゴリズム(DPLL)
29
Unit Propagation (UP)
30
a=T, b=T, c=F, d=T
¬a v b ¬b v ¬c ¬a v c v da ¬d v ¬e v f … …
Decision Level = 1
Level = 2
DPLL (Davis–Putnam–Logemann–Loveland Procedure)
31
a=T
b=T, c=F, d=T
e=T
f=T, g=F
h=T
…
h=F
…
e=F
h=T, …
f=T
…
f=F
…
Conflict!
…
Desicion
UP
a=F
…
CDCL (Conflict Driven Clause Learning)
•DPLL は,いわゆる全探索
•高速に探索するためには,解の空間を枝刈りし
ていかなければならない
•→CDCL (Conflict Driven Clause Learning)
•コンフリクトを検出したときの情報を使って
探索空間を狭める
32
Unit Propagation (UP)
33
a=T, b=T, c=F, d=T
¬a v b ¬b v ¬c ¬a v c v da ¬d v ¬e v f … …
a ¬a v b ¬b v c ¬a v c v d
Propagation を起こした節(Reason)を記録しておく
CDCL (Conflict Driven Clause Learning)
34
a=T
b=T, c=F, d=T
f=T, g=F
i=T, j=F, k=T
m=T, n=F, o=T, p=T, q=F, r=T, n=T
e=T
h=F
l=T
l ⇒ m
l ⇒ ¬n
¬q ^ r ⇒ n
m ^ f ⇒ r
¬c ^ l ⇒ ¬q
Level = 1
Level = 2
Level = 3
Level = 4
n=F と n=T でコンフリクト → 原因をたどる
→ c=F, f=T, l=T が原因 → (c v ¬f v ¬l) を追加
Non-chronological backtracking
35
a=T
b=T, c=F, d=T
f=T, g=F, l=F
e=T
¬c ^ f ⇒ ¬l
Level = 1
Level = 2
(c v ¬f v ¬l)
のうちレベルの2番目のところまで decision をキャンセル
→c=F, f=T と (c v ¬f v ¬l) から Unit propagation を行う
→ l=F が割り当てられる
Lv=0 Lv=1 Lv=3
Watched Literals
•DPLL+CDCL は,Unit Propagation を多用
•変数をassignするたびにすべての節にアクセス
して「未割り当てが1個」かチェックする?
•→Watched Literals
•遅延データ構造の一種
36
Watched Literals
37
a
¬a
b
¬b
¬a v b v c v ¬d
c1
c
¬c
{c1, c4, c7, …}
{…}
{…}
{…}
{…}
{c1, …}
Watched Literals
38
a
¬a
b
¬b
¬a v b v c v ¬d
c1
c
¬c
{c1, c4, c7, …}
{…}
{…}
{c1, …}
{…}
{}
Watched Literals
39
a
¬a
b
¬b
¬a v b v c v ¬d
c
¬c
{…}
{…}
{c1, …}
{…}
{}
b=T
{c1, c4, c7, …}
c1
Watched Literals
40
a
¬a
b
¬b
¬a v b v c v ¬d
c
¬c
{…}
{…}
{c1, …}
{…}
{}
{c1, c4, c7, …}
c1
backtrack !
Watched Literals
41
a
¬a
b
¬b
¬a v b v c v ¬d
c
¬c
{…}
{…}
{c1, …}
{…}
{}
{c1, c4, c7, …}
c1
backtrack !
チェックしなくてもOK
Minisat
• DPLL/CDCLを実装した最も有名なソルバーの1つ
• 説明していない実装の詳細がいろいろある
• 変数の選択法
• コンフリクトの解析をどこで止めるか
• CDCL で学習した節が増えすぎたとき、
ある優先度を用いてあまり使われなさそうな節
を削る
• コーディングの勉強にもなる
• vector, queue, map 等も実装されている
• 適当な問題をCNFに変換して解かせるだけで楽しい
42
http://minisat.se/
https://github.com/niklasso/minisat
4. その他のソルバー・
その他の問題
43
Look-ahead solver
44
Decision Level = 1
Level = 2
Desicion
UP
a=T
b=T, c=F, d=T
e=T e=F f=T f=F g=T g=F
… …
• 分岐する前に、色々な(または全部)の変数に対して割当とUPを行ってみて、
どれくらい式が簡単になるかを調べる
→もっとも式を簡単にする変数を採用する
• 変数の選択にコストがかかるが、より効率よく式を簡単化していける
Desicion
UP
ソルバーの相性
45
(#節)/(#変数)
グラフの直径
Lookaheadが有利
Lookaheadが不利
Marijn J.H. Heule and Hans van Maaren. "Look-Ahead Based
SAT Solvers" In Handbook of Satisfiability: vol 185 Frontiers
in Artificial Intelligence and Applications (2019).
2-SAT に対する確率的アルゴリズム
• 充足可能な 2-SAT インスタンス 𝑓 に対して、
• 以下を解が見つかるまで繰り返す
• 満たされていない節 𝑐 = 𝑥 ∨ 𝑦 をランダムにとる
• x か y かどちらかをランダムに反転させる
• 期待値として𝑂 𝑁2 時間で解が見つかる
• 直感的な説明:
• 2つの割当の間の距離を、異なる割当の個数とする
• ある解 z を考えたとき、ある時刻での割当 x(t) との距離は
1つ増えるか、1つ減るか
• (2-SATであることを使うと) 増える期待値は1/2以下
• [1,N]の数直線上でランダムウォークすると𝑂(𝑁2)時間程度で
𝑑(𝑧, 𝑥(𝑡)) = 0 に行き着く
46
確率的局所探索
(SLS, Stochastic Local Search)
• WalkSAT: さきほどのアルゴリズムの発展形
• 以下を解が見つかるまで繰り返す
• 満たされていない節Cをランダムにとる
(1) 確率 p で節Cのなかのランダムなリテラルを反転させる
(2) 確率 1-p で節Cのなかから反転させたときに満たされる
節が最も増えるものを反転させる
47
¬𝑎 ∨ ¬𝑏 ∧ (𝑎 ∨ 𝑐) ∧ (¬𝑎 ∨ ¬𝑑) ∧ (𝑏 ∨ ¬𝑐) ∧ (¬𝑏 ∨ ¬𝑑) ∧ (¬𝑐 ∨ ¬𝑑)
F
T
T
T
T
T
F
T
F
T
T
F
F
F
T
a=T→F
b=T→F
F
F
F
a=T b=T c=T d=T
Δscore 2 1 - -
B Selman, H Kautz, and B Cohen. "Local Search Strategies for Satisfiability Testing". Cliques,
Coloring, and Satisfiability: Second DIMACS Implementation Challenge, October 11-13, 1993.
確率的局所探索
(SLS, Stochastic Local Search)
Breakout:
• 節にスコアをつけて、(2) で満たされる節のスコアの
和が最も増えるものを反転させる
• スコアを改善する変数がなくなったとき、満たされ
ていない節のスコアを1増やす
48
¬𝑎 ∨ ¬𝑏 ∧ (𝑎 ∨ 𝑐) ∧ (¬𝑎 ∨ ¬𝑑) ∧ (𝑏 ∨ ¬𝑐) ∧ (¬𝑏 ∨ ¬𝑑) ∧ (¬𝑐 ∨ ¬𝑑)
a=T b=T c=T d=T
Δscore 4 5 - -
F
T
T
T
T
T
F
T
F
T
T
F
F
F
T
a=T→F
b=T→F
F
F
F
2 1 2 3 6 4weight
Paul Morris. "The breakout method for escaping from local minima". In Proceedings of
the eleventh national conference on Artificial intelligence, pp. 40-45, (1993)
問題の構造
•変数と節の関係をグラフにすると、構造(Local
Cluster)があることが多い
•ランダム生成のインスタンスとは性質が異なる
49
Ansótegui C., Giráldez-Cru J., Levy J., Simon L. (2015) “Using
Community Structure to Detect Relevant Learnt Clauses.” Theory and
Applications of Satisfiability Testing -- SAT 2015. Springer, Cham
各円がクラスター
直径: 長 学習節が増える
ソルバーの相性
CDCL Industrial (structured)
Look-ahead Hard-combinatorial,
Random
SLS (確率的局所探索)
(Stochastic Local Search)
Hard-combinatorial,
Random
50
[NOTE] SLS は SAT の場合しか解けない(UNSAT の証明はできない)
Incremental SAT solver
• あるCNF式 f に対して解いたあと、
節(𝑐1, 𝑐2, … , 𝑐 𝑘)を追加するクエリが与えられる
• 𝑓’ = 𝑓 ∨ 𝑐1 ∨ 𝑐2 ∨ ⋯ ∨ 𝑐 𝑘
• これを解く際に、もともとの f を解くときに使った学
習節や、変数・節の重みなどの状態が再利用できる
• いろいろ応用がある
51
Incremental SAT solver の応用:
ハミルトン閉路問題
• グラフのすべての頂点を通る閉路を求める問題
• まず、下の制約を満たす𝑥 𝑢𝑣 (u→vの辺を使う)の割当を
もとめる
• 「すべての頂点に対して、入次数=1」
• 「すべての頂点に対して、出次数=1」
• もしすべての頂点を通らない閉路 t→u→v→…→w→u が
存在したら、
(¬𝑥𝑡𝑢 ∨ ¬𝑥 𝑢𝑣 ∨ ⋯ ∨ ¬𝑥 𝑤𝑢) を追加して解く
• これをハミルトン閉路が見つかるまで繰り返す
52
T Soh, DL Berre, S Roussel, M Banbara, and N Tamura. "Incremental sat-
based method with native boolean cardinality handling for the
hamiltonian cycle problem.” In Proceedings of the 14th European
Conference on Logics in Artificial Intelligence, pp. 684–693. (2014)
Incremental SAT solver の応用:
SMT (Satisfiability Modulo Theories)
53
𝑓 = 𝑃 ∨ 𝑄 ∧ (¬𝑃 ∨ 𝑅) ∧ (¬𝑃 ∨ 𝑆) ∧ (𝑇 ∨ 𝑆) を解く
(𝑎 > 0) ∨ (𝑏 − 2𝑐 ≥ 0) ∧ (¬(𝑎 > 0) ∨ (𝑏 = 𝑐)) ∧
(¬(𝑎 > 0) ∨ (𝑐 ≥ 𝑎)) ∧ ((𝑏 < 𝑐) ∨ (𝑐 ≥ 𝑎))
(𝑃, 𝑄, 𝑅, 𝑆, 𝑇) = (𝑇, 𝑇, 𝑇, 𝑇, 𝐹)
𝑎 > 0 ∧ 𝑏 − 2𝑐 ≥ 0 ∧ (𝑏 = 𝑐) ∧ (𝑐 ≥ 𝑎) ∧ (𝑏 < 𝑐)
𝑃, 𝑄, 𝑅, 𝑆 が矛盾
𝑓′ = 𝑓 ∧ (¬𝑃 ∨ ¬𝑄 ∨ ¬𝑅 ∨ ¬𝑆) を解く
例: SAT/SMTソルバの仕組み
https://www.slideshare.net/sakai/satsmt
より
⇔
#SAT, MAX-SAT
• #SAT
• CNF式 f を満たす割当の個数を数え上げる
• ソルバー relsat (https://github.com/roberto-bayardo/relsat)
は #SAT の機能もある
(他のソルバーもたぶんある)
• MAX-SAT
• すべての節を充足しなくても良いので、満たされた
節の個数をなるべく大きくする割当を探す
• SLS(確率的局所探索)がそのままつかえる
• もちろんこれに特化したソルバーもある
• 両方とも、2-SAT に限定しても NP-hard
• スライドを作ろうと思ったが力尽きた
54
The Chaos Within Sudoku
• 論理値を 𝑥𝑖 = {0,1} と表現する
• たとえば 𝑐 𝑚 = 𝑥1 ∨ 𝑥2 ∨ 𝑥3 のとき
• 𝐾 𝑚 = (1 − 𝑥1)𝑥2 𝑥3 ∈ {0,1} は節が満たされている時 0
• 𝑠𝑖 = [0,1] の連続値に拡張 (𝐾 𝑚 も同様)
• 𝑉 = Σ𝑎 𝑚 𝐾 𝑚
2 を最小化 (最急降下法(山登り法))
• 同時に満たされていない節の重みを増加させる
• d𝑎 𝑚/d𝑡 = 𝑎 𝑚 𝐾 𝑚
• Breakout に似ている
(ようで似ていないかも)
55
0
𝑉
M. Ercsey-Ravasz & Z. Toroczkai, "The Chaos Within Sudoku". Scientific Reports, 2, 725 (2012)
The Chaos Within Sudoku
56
M. Ercsey-Ravasz & Z. Toroczkai, "The Chaos Within Sudoku". Scientific Reports, 2, 725 (2012)
5.おわりに
57
まとめ
• 充足可能性問題の紹介
• 簡単に解ける場合
• 2-SAT, horn-SAT
• 数独をSATにエンコードする
• At-Most-One 制約のいろんなエンコード法
• テクニック/アルゴリズムの紹介
• Unit Propagation, DPLL, CDCL, Watched Literals
• 他の話題
• Look-ahead
• 確率的局所探索 (2-SAT)
• Incremental SAT, #SAT, MAX-SAT
58
参考資料
•“Handbook of satisfiability”
•世でHandbookと呼ばれる物はたいてい鈍器
59
https://www.amazon.co.jp/dp/1586039296
参考資料
•「高速SATソルバーの原理」
• http://www-erato.ist.hokudai.ac.jp/docs/seminar/nabeshima.pdf
•「私のブックマーク:SAT ソルバー」
• https://www.ai-gakkai.or.jp/my-bookmark_vol28-no2/
•“SATisfiability Solving: How do SAT solvers work?”
• http://sat.inesc-id.pt/~ruben/talks.html
•“SAT encodings: using the right tool for the right job”
• http://sat.inesc-id.pt/~ruben/talks.html
•「SAT/SMTソルバの仕組み」
• https://www.slideshare.net/sakai/satsmt
60

Contenu connexe

Tendances

ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement LearningPreferred Networks
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向ohken
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習Eiji Uchibe
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language ModelsDeep Learning JP
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門joisino
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編順也 山口
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズムTakuya Akiba
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門hoxo_m
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するsleepy_yoshi
 
【DL輪読会】Hopfield network 関連研究について
【DL輪読会】Hopfield network 関連研究について【DL輪読会】Hopfield network 関連研究について
【DL輪読会】Hopfield network 関連研究についてDeep Learning JP
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列Kenjiro Sugimoto
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方joisino
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 

Tendances (20)

ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
 
【DL輪読会】Hopfield network 関連研究について
【DL輪読会】Hopfield network 関連研究について【DL輪読会】Hopfield network 関連研究について
【DL輪読会】Hopfield network 関連研究について
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 

Similaire à 充足可能性問題のいろいろ

[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...
[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...
[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...Deep Learning JP
 
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)Nobutaka Shimizu
 
AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...
AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...
AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...T T
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisTatsuki SHIMIZU
 
130323 slide all
130323 slide all130323 slide all
130323 slide allikea0064
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
topology of musical data
topology of musical datatopology of musical data
topology of musical dataTatsuki SHIMIZU
 
Long short-term memory (LSTM)
Long short-term memory (LSTM)Long short-term memory (LSTM)
Long short-term memory (LSTM)Kenta Ishii
 
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元Shogo Muramatsu
 
劣モジュラ最適化と機械学習 2.4節
劣モジュラ最適化と機械学習 2.4節劣モジュラ最適化と機械学習 2.4節
劣モジュラ最適化と機械学習 2.4節Hakky St
 
PILCO - 第一回高橋研究室モデルベース強化学習勉強会
PILCO - 第一回高橋研究室モデルベース強化学習勉強会PILCO - 第一回高橋研究室モデルベース強化学習勉強会
PILCO - 第一回高橋研究室モデルベース強化学習勉強会Shunichi Sekiguchi
 
ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3noname409
 
第9回スキル養成講座講義資料
第9回スキル養成講座講義資料第9回スキル養成講座講義資料
第9回スキル養成講座講義資料keiodig
 
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video UnderstandingToru Tamaki
 
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】Naoki Hayashi
 

Similaire à 充足可能性問題のいろいろ (20)

[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...
[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...
[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...
 
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)
 
AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...
AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...
AI2: Safety and Robustness Certification of Neural Networks with Abstract Int...
 
M1 gp_Disco
M1 gp_DiscoM1 gp_Disco
M1 gp_Disco
 
yyoshida thesis
yyoshida thesisyyoshida thesis
yyoshida thesis
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
 
130323 slide all
130323 slide all130323 slide all
130323 slide all
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
topology of musical data
topology of musical datatopology of musical data
topology of musical data
 
Long short-term memory (LSTM)
Long short-term memory (LSTM)Long short-term memory (LSTM)
Long short-term memory (LSTM)
 
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元
 
劣モジュラ最適化と機械学習 2.4節
劣モジュラ最適化と機械学習 2.4節劣モジュラ最適化と機械学習 2.4節
劣モジュラ最適化と機械学習 2.4節
 
PILCO - 第一回高橋研究室モデルベース強化学習勉強会
PILCO - 第一回高橋研究室モデルベース強化学習勉強会PILCO - 第一回高橋研究室モデルベース強化学習勉強会
PILCO - 第一回高橋研究室モデルベース強化学習勉強会
 
演習発表 Sari v.1.2
演習発表 Sari v.1.2演習発表 Sari v.1.2
演習発表 Sari v.1.2
 
KDD2014 勉強会
KDD2014 勉強会KDD2014 勉強会
KDD2014 勉強会
 
ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3ディジタル信号処理の課題解説 その3
ディジタル信号処理の課題解説 その3
 
第9回スキル養成講座講義資料
第9回スキル養成講座講義資料第9回スキル養成講座講義資料
第9回スキル養成講座講義資料
 
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
 
6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
 

Plus de Hiroshi Yamashita

2015 JOI春合宿 Day3 AAQQZ 解説
2015 JOI春合宿 Day3 AAQQZ 解説2015 JOI春合宿 Day3 AAQQZ 解説
2015 JOI春合宿 Day3 AAQQZ 解説Hiroshi Yamashita
 
2014 JOI春合宿 行列の基礎とその応用
2014 JOI春合宿 行列の基礎とその応用2014 JOI春合宿 行列の基礎とその応用
2014 JOI春合宿 行列の基礎とその応用Hiroshi Yamashita
 
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説Hiroshi Yamashita
 
2013 JOI春合宿 講義6 機械学習入門
2013 JOI春合宿 講義6 機械学習入門2013 JOI春合宿 講義6 機械学習入門
2013 JOI春合宿 講義6 機械学習入門Hiroshi Yamashita
 
2013 JOI春合宿 Day2 Spy(スパイ) 解説
2013 JOI春合宿 Day2 Spy(スパイ) 解説2013 JOI春合宿 Day2 Spy(スパイ) 解説
2013 JOI春合宿 Day2 Spy(スパイ) 解説Hiroshi Yamashita
 
JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説Hiroshi Yamashita
 
JOI春合宿Day4中華料理(Chinese)解説
JOI春合宿Day4中華料理(Chinese)解説JOI春合宿Day4中華料理(Chinese)解説
JOI春合宿Day4中華料理(Chinese)解説Hiroshi Yamashita
 

Plus de Hiroshi Yamashita (7)

2015 JOI春合宿 Day3 AAQQZ 解説
2015 JOI春合宿 Day3 AAQQZ 解説2015 JOI春合宿 Day3 AAQQZ 解説
2015 JOI春合宿 Day3 AAQQZ 解説
 
2014 JOI春合宿 行列の基礎とその応用
2014 JOI春合宿 行列の基礎とその応用2014 JOI春合宿 行列の基礎とその応用
2014 JOI春合宿 行列の基礎とその応用
 
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
 
2013 JOI春合宿 講義6 機械学習入門
2013 JOI春合宿 講義6 機械学習入門2013 JOI春合宿 講義6 機械学習入門
2013 JOI春合宿 講義6 機械学習入門
 
2013 JOI春合宿 Day2 Spy(スパイ) 解説
2013 JOI春合宿 Day2 Spy(スパイ) 解説2013 JOI春合宿 Day2 Spy(スパイ) 解説
2013 JOI春合宿 Day2 Spy(スパイ) 解説
 
JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説
 
JOI春合宿Day4中華料理(Chinese)解説
JOI春合宿Day4中華料理(Chinese)解説JOI春合宿Day4中華料理(Chinese)解説
JOI春合宿Day4中華料理(Chinese)解説
 

Dernier

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Dernier (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

充足可能性問題のいろいろ

  • 1. 充足可能性問題のいろいろ 1 東大情報理工 D2 山下 洋史 @utatakiyoshi 2019/03/22 @JOI春合宿
  • 2. 自己紹介 • 山下 洋史 @utatakiyoshi • 東大 情報理工 博士2年 • IOI2010 カナダ大会 銀メダル • 過去の栄光 • 最近はプロコンとは疎遠 • 趣味: YouTube (?) • 企業公式チャンネルみたいなのが意外と面白い • 工場見学みたいな • Amazon の倉庫ロボットとか…… • YouTuber も VTuber も見る • JOI にはとてもお世話になったので何かお返ししたい 2
  • 3. こんな研究室にいます • 数理情報学専攻・合原研 • 数理モデリング・カオス力学系(ダイナミクス) • 世の中の動的な現象を数式で表して予測する • 病気の進行 • 感染症の拡大 • 脳の活動 • カオス (ランダム性はないにも関わらず、長期間 の予測が難しい運動) の研究 • 自分の研究 • カオス力学系の応用として、充足可能性問題の探索 3
  • 4. 講義をたのまれて、困った! • 力学系の話をするわけにもいかない • ちょうど今の研究は、「充足可能性問題に対する探索」 • ということで、今日は「充足可能性問題(SAT)」のご紹介 • 自分の知識の整理も兼ねて…… • 完全な専門分野というわけでもないので、抜けや間違った 理解があるかもしれませんが、ご了承ください • 資料を準備していて、奥深さを再確認した 4
  • 5. 目次 1. 充足可能性問題 2. 数独をSATで解く 3. 探索アルゴリズム (DPLL) 4. その他のアルゴリズム・その他の問題 5. おわりに 5 休憩? 休憩?
  • 7. 充足可能性問題 •論理変数 (いわゆる bool型) x=True または x=False •論理式 •論理変数と NOT(¬x, 𝑥), AND(^, ∧), OR(v, ∨) でできた式 •¬ 𝑥 ∧ 𝑦 ∧ ⋯ ∧ 𝑧 = ¬𝑥 ∨ ¬𝑦 ∨ ⋯ ∨ ¬𝑧 •x ⇒ y (xならばy) =¬𝑥 ∨ 𝑦 7 x y x⇒y ¬x ¬x v y T T T F T T F F F F F T T T T F F T T T
  • 8. 充足可能性問題 (SATisfiability problem) • 充足可能性問題 • 与えられた論理式 f(x,y, …, z) が True となるような x, y, …, z の割当は存在するか? • 存在するとき: SAT (その割当も返す) • 存在しないとき: UNSAT • 例: 𝑥 ∨ 𝑦 ∧ ¬𝑥 ∨ 𝑧 ∧ ¬𝑦 → SAT! 𝑥, 𝑦, 𝑧 = (𝑇, 𝐹, 𝑇) • いろいろな応用 • プログラムの性質の証明,集積回路の設計支援 (反例/バグを見つける) • パズルのソルバー 8
  • 9. SAT と反例、UNSAT と証明 •満たしてほしい条件(性質)を式にする •¬(条件) を満たす割当を探す •みつかれば、それは条件の反例になっている →バグ発見! •SATソルバーの中には、UNSATにたいして証明を 出力してくれるものも →もとの性質の証明になっている 9
  • 10. CNF 形 • リテラル (Literal): • 論理変数 𝑥, またはその否定 ¬𝑥 • 節 (Clause): • リテラルをORでつないだもの • 例: 𝑥 ∨ ¬𝑦 ∨ 𝑧 • CNF (Conjunctive Normal Form, 連言標準形): • 節をANDでつないだもの • 例: 𝑎 ∧ ¬𝑎 ∨ 𝑏 ∧ ¬𝑏 ∨ ¬𝑐 ∧ ¬𝑎 ∨ 𝑐 ∨ 𝑑 ∧ (¬𝑑 ∨ ¬𝑒 ∨ 𝑓) • すべての論理式はCNFに変換できる ¬ 𝑥 ∧ 𝑦 = ¬𝑥 ∨ ¬𝑦, ¬ 𝑥 ∨ 𝑦 = ¬𝑥 ∧ ¬𝑦 𝑥 ∧ 𝑦 ∨ 𝑧 ∧ 𝑤 = 𝑥 ∨ 𝑧 ∧ 𝑥 ∨ 𝑤 ∧ 𝑦 ∨ 𝑧 ∧ 𝑦 ∨ 𝑤 などを駆使 (うまくやらないと節の個数が爆発することも) 10
  • 11. 簡単にとける場合 •一般には NP-Complete だが…… •Cook-Levin の定理 •インスタンス(論理式)のクラスを制限すれば, 簡単に解ける場合がある •2-SAT •Horn-SAT 11
  • 12. Unit Propagation (UP) 12 a=T, b=T, c=F, d=T ¬a v b ¬b v ¬c ¬a v c v da ¬d v ¬e v f … …
  • 13. 簡単に解ける場合 2-SAT 13 a ¬b ¬ab ¬a v ¬b ¬a v ¬b ¬a v ¬b = = Implication graph 節の長さがすべて 2 のもの
  • 15. 簡単に解ける場合 2-SAT 15 a, b, c, ¬d e, f, ¬g h, ¬i, ¬j, k ¬l, ¬m, n, o ¬a, ¬b, ¬c, d ¬e, ¬f, g ¬h, i, j, ¬k l, m, ¬n, ¬o 強連結成分ごとにまとめてDAGをつくると トポロジカル順序の下から順に割り当てていけて、SAT
  • 16. a v c v e 簡単に解ける場合 Horn-SAT 16 ¬c v a v b v d v e ¬b v a ¬a ¬d v ¬e v bNG: ¬ がついている変数 が 1 個以下 ¬ がついていない変数 はいくつでも OK
  • 17. 簡単に解ける場合 Horn-SAT 17 Unit propagation の後、 ¬のついていないリテラルを満たせばOK ¬c v a v b v d v e ¬b v a ¬a a v c v e ¬d v ¬e v b ¬のついた項が2つ以上あると、 こうなる可能性がある
  • 20. AMO (At-Most-One) 制約 • At Most One 制約: 𝐴𝑀𝑂 𝑥1, 𝑥2, … , 𝑥9 𝑥1, 𝑥2, … , 𝑥9 のうちで高々 1 つだけが True • At Least One 制約: 𝐴𝐿𝑂 𝑥1, 𝑥2, … , 𝑥9 = 𝑥1 ∨ 𝑥2 ∨ ⋯ ,∨ 𝑥9 𝑥1, 𝑥2, … , 𝑥9 のうち 1 つ以上が True • 𝐴𝑀𝑂 𝑥1, 𝑥2, … , 𝑥9 ∧ 𝐴𝐿𝑂 𝑥1, 𝑥2, … , 𝑥9 𝑥1, 𝑥2, … , 𝑥9 のうちちょうど 1 つがTrue 20
  • 21. 数独 21 AMO(x111, x112,…,x119) V ALO(…) V … AMO(x991, x992,…,x999) V ALO(…) V … AMO(x121,x221,…,x921) V ALO(…) V … AMO(x129,x229,…,x929) V ALO(…) V … AMO(x211,x221,…,x291) V ALO(…) V … AMO(x219,x229,…,x299) V ALO(…) V … AMO(x441,x451,…,x661) V ALO(…) V … AMO(x449,x459,…,x669) V ALO(…) V … x115 V … V x772 V … V x999
  • 22. Naïve encoding 𝑥1 ∨ 𝑥2, 𝑥1 ∨ 𝑥3, …, 𝑥1 ∨ 𝑥9 𝑥1 ∨ 𝑥2, 𝑥2 ∨ 𝑥3, …, 𝑥2 ∨ 𝑥9 ⋮ 𝑥1 ∨ 𝑥2, 𝑥1 ∨ 𝑥3, …, 𝑥8 ∨ 𝑥9 22
  • 23. Product encoding •新しい変数 𝑢1, 𝑢2, 𝑢3, 𝑣1, 𝑣2, 𝑣3 𝑢1 ⇒ 𝑥1, 𝑢1 ⇒ 𝑥2, 𝑢1 ⇒ 𝑥3, 𝑢2 ⇒ 𝑥4, 𝑢2 ⇒ 𝑥5, 𝑢2 ⇒ 𝑥6, 𝑢3 ⇒ 𝑥7, 𝑢3 ⇒ 𝑥8, 𝑢3 ⇒ 𝑥9, 𝐴𝑀𝑂(𝑢1, 𝑢2, 𝑢3) 𝑣1 ⇒ 𝑥1, 𝑢2 ⇒ 𝑥2, 𝑣3 ⇒ 𝑥3, 𝑣1 ⇒ 𝑥4, 𝑣2 ⇒ 𝑥5, 𝑣3 ⇒ 𝑥6, 𝑣1 ⇒ 𝑥7, 𝑣2 ⇒ 𝑥8, 𝑣3 ⇒ 𝑥9, 𝐴𝑀𝑂(𝑣1, 𝑣2, 𝑣3) 23 J. Chen. A New SAT Encoding of the At-Most-One Constraint. MofRef 2010 [Note] 𝑥 ⇒ 𝑦 は 𝑥 ∨ 𝑦 の意味
  • 24. Commander encoding •新しい変数 𝑐 0,8 ⇒ 𝑐 0,4 , 𝑐 0,8 ⇒ 𝑐 4,8 , 𝑐 0,4 ∨ 𝑐 4,8 𝑐 0,4 ⇒ 𝑐 0,2 , 𝑐 0,4 ⇒ 𝑐 0,2 , 𝑐 0,2 ∨ 𝑐 2,4 𝑐 0,2 ⇒ 𝑥1, 𝑐 0,2 ⇒ 𝑥2, 𝑥1 ∨ 𝑥2 24 𝑐 0,8 𝑐 0,4 𝑐 4,8 𝑐 0,2 𝑐(2,4] 𝑐(4,6] 𝑐(6,8] 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8 W. Klieber and G. Kwon. Efficient CNF Encoding for Selecting 1 from N Objects. CFV 2007
  • 25. Bitwise encoding • 新しい変数 𝑏4, 𝑏2, 𝑏1 𝑥7 ⇒ 𝑏4, 𝑥7 ⇒ 𝑏2, 𝑥7 ⇒ 𝑏1 𝑥6 ⇒ 𝑏4, 𝑥6 ⇒ 𝑏2, 𝑥6 ⇒ 𝑏1 𝑥5 ⇒ 𝑏4, 𝑥5 ⇒ 𝑏2, 𝑥5 ⇒ 𝑏1 𝑥4 ⇒ 𝑏4, 𝑥4 ⇒ 𝑏2, 𝑥4 ⇒ 𝑏1 𝑥3 ⇒ 𝑏4, 𝑥3 ⇒ 𝑏2, 𝑥3 ⇒ 𝑏1 𝑥2 ⇒ 𝑏4, 𝑥2 ⇒ 𝑏2, 𝑥2 ⇒ 𝑏1 𝑥1 ⇒ 𝑏4, 𝑥1 ⇒ 𝑏2, 𝑥1 ⇒ 𝑏1 𝑥8 ⇒ 𝑏4, 𝑥8 ⇒ 𝑏2, 𝑥8 ⇒ 𝑏1 25 S. Prestwich. Variable Dependency in Local Search: Prevention Is Better Than Cure. SAT 2007: 107-120
  • 26. Sequential encoding 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8 𝑥9 𝑠1 𝑠2 𝑠3 𝑠4 𝑠5 𝑠6 𝑠7 𝑠8 26 𝑥1 ⇒ 𝑠1, 𝑥2 ⇒ 𝑠2,… 𝑠1 ⇒ 𝑠2, 𝑠2 ⇒ 𝑠3,… 𝑠1 ∨ 𝑥2, 𝑠2 ∨ 𝑥3,... C. Sinz. Towards an Optimal CNF Encoding of Boolean Cardinality Constraints. CP 2005: 827-831
  • 27. AMO 制約だけでもいろいろな encoding • At-Most-k, At-Least-k 制約 • 「高々k個がTrue」「少なくともk個がTrue」 • 紹介したもののいくつかはこれに拡張可能 • 考えてみてください • 新しい変数と使う節の数はさまざま • Bitwise • 追加変数: O(lgN) • 節: O(NlgN) • Sequential • 追加変数: O(N) • 節: O(N) • [NOTE] 変数や節の数が少ないほど良いとは限らない! 27
  • 28. Dimacs format •CNFを表現する標準的なフォーマット •ソルバー (minisat等) に入力できる 28 p cnf 5 4 -1 0 -2 1 0 -3 1 2 4 5 0 1 3 5 0 ¬c v a v b v d v e ¬b v a ¬a a v c v e 変数の数 節の数
  • 30. Unit Propagation (UP) 30 a=T, b=T, c=F, d=T ¬a v b ¬b v ¬c ¬a v c v da ¬d v ¬e v f … …
  • 31. Decision Level = 1 Level = 2 DPLL (Davis–Putnam–Logemann–Loveland Procedure) 31 a=T b=T, c=F, d=T e=T f=T, g=F h=T … h=F … e=F h=T, … f=T … f=F … Conflict! … Desicion UP a=F …
  • 32. CDCL (Conflict Driven Clause Learning) •DPLL は,いわゆる全探索 •高速に探索するためには,解の空間を枝刈りし ていかなければならない •→CDCL (Conflict Driven Clause Learning) •コンフリクトを検出したときの情報を使って 探索空間を狭める 32
  • 33. Unit Propagation (UP) 33 a=T, b=T, c=F, d=T ¬a v b ¬b v ¬c ¬a v c v da ¬d v ¬e v f … … a ¬a v b ¬b v c ¬a v c v d Propagation を起こした節(Reason)を記録しておく
  • 34. CDCL (Conflict Driven Clause Learning) 34 a=T b=T, c=F, d=T f=T, g=F i=T, j=F, k=T m=T, n=F, o=T, p=T, q=F, r=T, n=T e=T h=F l=T l ⇒ m l ⇒ ¬n ¬q ^ r ⇒ n m ^ f ⇒ r ¬c ^ l ⇒ ¬q Level = 1 Level = 2 Level = 3 Level = 4 n=F と n=T でコンフリクト → 原因をたどる → c=F, f=T, l=T が原因 → (c v ¬f v ¬l) を追加
  • 35. Non-chronological backtracking 35 a=T b=T, c=F, d=T f=T, g=F, l=F e=T ¬c ^ f ⇒ ¬l Level = 1 Level = 2 (c v ¬f v ¬l) のうちレベルの2番目のところまで decision をキャンセル →c=F, f=T と (c v ¬f v ¬l) から Unit propagation を行う → l=F が割り当てられる Lv=0 Lv=1 Lv=3
  • 36. Watched Literals •DPLL+CDCL は,Unit Propagation を多用 •変数をassignするたびにすべての節にアクセス して「未割り当てが1個」かチェックする? •→Watched Literals •遅延データ構造の一種 36
  • 37. Watched Literals 37 a ¬a b ¬b ¬a v b v c v ¬d c1 c ¬c {c1, c4, c7, …} {…} {…} {…} {…} {c1, …}
  • 38. Watched Literals 38 a ¬a b ¬b ¬a v b v c v ¬d c1 c ¬c {c1, c4, c7, …} {…} {…} {c1, …} {…} {}
  • 39. Watched Literals 39 a ¬a b ¬b ¬a v b v c v ¬d c ¬c {…} {…} {c1, …} {…} {} b=T {c1, c4, c7, …} c1
  • 40. Watched Literals 40 a ¬a b ¬b ¬a v b v c v ¬d c ¬c {…} {…} {c1, …} {…} {} {c1, c4, c7, …} c1 backtrack !
  • 41. Watched Literals 41 a ¬a b ¬b ¬a v b v c v ¬d c ¬c {…} {…} {c1, …} {…} {} {c1, c4, c7, …} c1 backtrack ! チェックしなくてもOK
  • 42. Minisat • DPLL/CDCLを実装した最も有名なソルバーの1つ • 説明していない実装の詳細がいろいろある • 変数の選択法 • コンフリクトの解析をどこで止めるか • CDCL で学習した節が増えすぎたとき、 ある優先度を用いてあまり使われなさそうな節 を削る • コーディングの勉強にもなる • vector, queue, map 等も実装されている • 適当な問題をCNFに変換して解かせるだけで楽しい 42 http://minisat.se/ https://github.com/niklasso/minisat
  • 44. Look-ahead solver 44 Decision Level = 1 Level = 2 Desicion UP a=T b=T, c=F, d=T e=T e=F f=T f=F g=T g=F … … • 分岐する前に、色々な(または全部)の変数に対して割当とUPを行ってみて、 どれくらい式が簡単になるかを調べる →もっとも式を簡単にする変数を採用する • 変数の選択にコストがかかるが、より効率よく式を簡単化していける Desicion UP
  • 45. ソルバーの相性 45 (#節)/(#変数) グラフの直径 Lookaheadが有利 Lookaheadが不利 Marijn J.H. Heule and Hans van Maaren. "Look-Ahead Based SAT Solvers" In Handbook of Satisfiability: vol 185 Frontiers in Artificial Intelligence and Applications (2019).
  • 46. 2-SAT に対する確率的アルゴリズム • 充足可能な 2-SAT インスタンス 𝑓 に対して、 • 以下を解が見つかるまで繰り返す • 満たされていない節 𝑐 = 𝑥 ∨ 𝑦 をランダムにとる • x か y かどちらかをランダムに反転させる • 期待値として𝑂 𝑁2 時間で解が見つかる • 直感的な説明: • 2つの割当の間の距離を、異なる割当の個数とする • ある解 z を考えたとき、ある時刻での割当 x(t) との距離は 1つ増えるか、1つ減るか • (2-SATであることを使うと) 増える期待値は1/2以下 • [1,N]の数直線上でランダムウォークすると𝑂(𝑁2)時間程度で 𝑑(𝑧, 𝑥(𝑡)) = 0 に行き着く 46
  • 47. 確率的局所探索 (SLS, Stochastic Local Search) • WalkSAT: さきほどのアルゴリズムの発展形 • 以下を解が見つかるまで繰り返す • 満たされていない節Cをランダムにとる (1) 確率 p で節Cのなかのランダムなリテラルを反転させる (2) 確率 1-p で節Cのなかから反転させたときに満たされる 節が最も増えるものを反転させる 47 ¬𝑎 ∨ ¬𝑏 ∧ (𝑎 ∨ 𝑐) ∧ (¬𝑎 ∨ ¬𝑑) ∧ (𝑏 ∨ ¬𝑐) ∧ (¬𝑏 ∨ ¬𝑑) ∧ (¬𝑐 ∨ ¬𝑑) F T T T T T F T F T T F F F T a=T→F b=T→F F F F a=T b=T c=T d=T Δscore 2 1 - - B Selman, H Kautz, and B Cohen. "Local Search Strategies for Satisfiability Testing". Cliques, Coloring, and Satisfiability: Second DIMACS Implementation Challenge, October 11-13, 1993.
  • 48. 確率的局所探索 (SLS, Stochastic Local Search) Breakout: • 節にスコアをつけて、(2) で満たされる節のスコアの 和が最も増えるものを反転させる • スコアを改善する変数がなくなったとき、満たされ ていない節のスコアを1増やす 48 ¬𝑎 ∨ ¬𝑏 ∧ (𝑎 ∨ 𝑐) ∧ (¬𝑎 ∨ ¬𝑑) ∧ (𝑏 ∨ ¬𝑐) ∧ (¬𝑏 ∨ ¬𝑑) ∧ (¬𝑐 ∨ ¬𝑑) a=T b=T c=T d=T Δscore 4 5 - - F T T T T T F T F T T F F F T a=T→F b=T→F F F F 2 1 2 3 6 4weight Paul Morris. "The breakout method for escaping from local minima". In Proceedings of the eleventh national conference on Artificial intelligence, pp. 40-45, (1993)
  • 49. 問題の構造 •変数と節の関係をグラフにすると、構造(Local Cluster)があることが多い •ランダム生成のインスタンスとは性質が異なる 49 Ansótegui C., Giráldez-Cru J., Levy J., Simon L. (2015) “Using Community Structure to Detect Relevant Learnt Clauses.” Theory and Applications of Satisfiability Testing -- SAT 2015. Springer, Cham 各円がクラスター 直径: 長 学習節が増える
  • 50. ソルバーの相性 CDCL Industrial (structured) Look-ahead Hard-combinatorial, Random SLS (確率的局所探索) (Stochastic Local Search) Hard-combinatorial, Random 50 [NOTE] SLS は SAT の場合しか解けない(UNSAT の証明はできない)
  • 51. Incremental SAT solver • あるCNF式 f に対して解いたあと、 節(𝑐1, 𝑐2, … , 𝑐 𝑘)を追加するクエリが与えられる • 𝑓’ = 𝑓 ∨ 𝑐1 ∨ 𝑐2 ∨ ⋯ ∨ 𝑐 𝑘 • これを解く際に、もともとの f を解くときに使った学 習節や、変数・節の重みなどの状態が再利用できる • いろいろ応用がある 51
  • 52. Incremental SAT solver の応用: ハミルトン閉路問題 • グラフのすべての頂点を通る閉路を求める問題 • まず、下の制約を満たす𝑥 𝑢𝑣 (u→vの辺を使う)の割当を もとめる • 「すべての頂点に対して、入次数=1」 • 「すべての頂点に対して、出次数=1」 • もしすべての頂点を通らない閉路 t→u→v→…→w→u が 存在したら、 (¬𝑥𝑡𝑢 ∨ ¬𝑥 𝑢𝑣 ∨ ⋯ ∨ ¬𝑥 𝑤𝑢) を追加して解く • これをハミルトン閉路が見つかるまで繰り返す 52 T Soh, DL Berre, S Roussel, M Banbara, and N Tamura. "Incremental sat- based method with native boolean cardinality handling for the hamiltonian cycle problem.” In Proceedings of the 14th European Conference on Logics in Artificial Intelligence, pp. 684–693. (2014)
  • 53. Incremental SAT solver の応用: SMT (Satisfiability Modulo Theories) 53 𝑓 = 𝑃 ∨ 𝑄 ∧ (¬𝑃 ∨ 𝑅) ∧ (¬𝑃 ∨ 𝑆) ∧ (𝑇 ∨ 𝑆) を解く (𝑎 > 0) ∨ (𝑏 − 2𝑐 ≥ 0) ∧ (¬(𝑎 > 0) ∨ (𝑏 = 𝑐)) ∧ (¬(𝑎 > 0) ∨ (𝑐 ≥ 𝑎)) ∧ ((𝑏 < 𝑐) ∨ (𝑐 ≥ 𝑎)) (𝑃, 𝑄, 𝑅, 𝑆, 𝑇) = (𝑇, 𝑇, 𝑇, 𝑇, 𝐹) 𝑎 > 0 ∧ 𝑏 − 2𝑐 ≥ 0 ∧ (𝑏 = 𝑐) ∧ (𝑐 ≥ 𝑎) ∧ (𝑏 < 𝑐) 𝑃, 𝑄, 𝑅, 𝑆 が矛盾 𝑓′ = 𝑓 ∧ (¬𝑃 ∨ ¬𝑄 ∨ ¬𝑅 ∨ ¬𝑆) を解く 例: SAT/SMTソルバの仕組み https://www.slideshare.net/sakai/satsmt より ⇔
  • 54. #SAT, MAX-SAT • #SAT • CNF式 f を満たす割当の個数を数え上げる • ソルバー relsat (https://github.com/roberto-bayardo/relsat) は #SAT の機能もある (他のソルバーもたぶんある) • MAX-SAT • すべての節を充足しなくても良いので、満たされた 節の個数をなるべく大きくする割当を探す • SLS(確率的局所探索)がそのままつかえる • もちろんこれに特化したソルバーもある • 両方とも、2-SAT に限定しても NP-hard • スライドを作ろうと思ったが力尽きた 54
  • 55. The Chaos Within Sudoku • 論理値を 𝑥𝑖 = {0,1} と表現する • たとえば 𝑐 𝑚 = 𝑥1 ∨ 𝑥2 ∨ 𝑥3 のとき • 𝐾 𝑚 = (1 − 𝑥1)𝑥2 𝑥3 ∈ {0,1} は節が満たされている時 0 • 𝑠𝑖 = [0,1] の連続値に拡張 (𝐾 𝑚 も同様) • 𝑉 = Σ𝑎 𝑚 𝐾 𝑚 2 を最小化 (最急降下法(山登り法)) • 同時に満たされていない節の重みを増加させる • d𝑎 𝑚/d𝑡 = 𝑎 𝑚 𝐾 𝑚 • Breakout に似ている (ようで似ていないかも) 55 0 𝑉 M. Ercsey-Ravasz & Z. Toroczkai, "The Chaos Within Sudoku". Scientific Reports, 2, 725 (2012)
  • 56. The Chaos Within Sudoku 56 M. Ercsey-Ravasz & Z. Toroczkai, "The Chaos Within Sudoku". Scientific Reports, 2, 725 (2012)
  • 58. まとめ • 充足可能性問題の紹介 • 簡単に解ける場合 • 2-SAT, horn-SAT • 数独をSATにエンコードする • At-Most-One 制約のいろんなエンコード法 • テクニック/アルゴリズムの紹介 • Unit Propagation, DPLL, CDCL, Watched Literals • 他の話題 • Look-ahead • 確率的局所探索 (2-SAT) • Incremental SAT, #SAT, MAX-SAT 58
  • 60. 参考資料 •「高速SATソルバーの原理」 • http://www-erato.ist.hokudai.ac.jp/docs/seminar/nabeshima.pdf •「私のブックマーク:SAT ソルバー」 • https://www.ai-gakkai.or.jp/my-bookmark_vol28-no2/ •“SATisfiability Solving: How do SAT solvers work?” • http://sat.inesc-id.pt/~ruben/talks.html •“SAT encodings: using the right tool for the right job” • http://sat.inesc-id.pt/~ruben/talks.html •「SAT/SMTソルバの仕組み」 • https://www.slideshare.net/sakai/satsmt 60