SlideShare a Scribd company logo
充足可能性問題のいろいろ
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

More Related Content

What's hot

3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布
Junya Saito
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
joisino
 
大規模な組合せ最適化問題に対する発見的解法
大規模な組合せ最適化問題に対する発見的解法大規模な組合せ最適化問題に対する発見的解法
大規模な組合せ最適化問題に対する発見的解法
Shunji Umetani
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
 
Variational AutoEncoder
Variational AutoEncoderVariational AutoEncoder
Variational AutoEncoder
Kazuki Nitta
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験
克海 納谷
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法について
Sho Takase
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編
順也 山口
 
coordinate descent 法について
coordinate descent 法についてcoordinate descent 法について
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?
Masanao Ochi
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
sleepy_yoshi
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門
tmtm otm
 
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
Deep Learning JP
 
[DL輪読会]Deep Learning 第5章 機械学習の基礎
[DL輪読会]Deep Learning 第5章 機械学習の基礎[DL輪読会]Deep Learning 第5章 機械学習の基礎
[DL輪読会]Deep Learning 第5章 機械学習の基礎
Deep Learning JP
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
 

What's hot (20)

3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
大規模な組合せ最適化問題に対する発見的解法
大規模な組合せ最適化問題に対する発見的解法大規模な組合せ最適化問題に対する発見的解法
大規模な組合せ最適化問題に対する発見的解法
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
Variational AutoEncoder
Variational AutoEncoderVariational AutoEncoder
Variational AutoEncoder
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
Transformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法についてTransformerを多層にする際の勾配消失問題と解決法について
Transformerを多層にする際の勾配消失問題と解決法について
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編
 
coordinate descent 法について
coordinate descent 法についてcoordinate descent 法について
coordinate descent 法について
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門
 
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
 
[DL輪読会]Deep Learning 第5章 機械学習の基礎
[DL輪読会]Deep Learning 第5章 機械学習の基礎[DL輪読会]Deep Learning 第5章 機械学習の基礎
[DL輪読会]Deep Learning 第5章 機械学習の基礎
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
 

Similar 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...
[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
 
M1 gp_Disco
M1 gp_DiscoM1 gp_Disco
M1 gp_Disco
Takuya Shimojoh
 
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
Tatsuki 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 data
Tatsuki 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
 
KDD2014 勉強会
KDD2014 勉強会KDD2014 勉強会
KDD2014 勉強会
Ichigaku Takigawa
 
ディジタル信号処理の課題解説 その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 Understanding
Toru Tamaki
 
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
Naoki Hayashi
 

Similar to 充足可能性問題のいろいろ (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】
 

More from 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
 

More from 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)解説
 

Recently uploaded

FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 

Recently uploaded (16)

FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 

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

  • 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