Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Loading in …3
×

Check these out next

1 of 60 Ad

More Related Content

Slideshows for you (20)

Similar to 充足可能性問題のいろいろ (20)

Advertisement

Recently uploaded (20)

Advertisement

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

  1. 1. 充足可能性問題のいろいろ 1 東大情報理工 D2 山下 洋史 @utatakiyoshi 2019/03/22 @JOI春合宿
  2. 2. 自己紹介 • 山下 洋史 @utatakiyoshi • 東大 情報理工 博士2年 • IOI2010 カナダ大会 銀メダル • 過去の栄光 • 最近はプロコンとは疎遠 • 趣味: YouTube (?) • 企業公式チャンネルみたいなのが意外と面白い • 工場見学みたいな • Amazon の倉庫ロボットとか…… • YouTuber も VTuber も見る • JOI にはとてもお世話になったので何かお返ししたい 2
  3. 3. こんな研究室にいます • 数理情報学専攻・合原研 • 数理モデリング・カオス力学系(ダイナミクス) • 世の中の動的な現象を数式で表して予測する • 病気の進行 • 感染症の拡大 • 脳の活動 • カオス (ランダム性はないにも関わらず、長期間 の予測が難しい運動) の研究 • 自分の研究 • カオス力学系の応用として、充足可能性問題の探索 3
  4. 4. 講義をたのまれて、困った! • 力学系の話をするわけにもいかない • ちょうど今の研究は、「充足可能性問題に対する探索」 • ということで、今日は「充足可能性問題(SAT)」のご紹介 • 自分の知識の整理も兼ねて…… • 完全な専門分野というわけでもないので、抜けや間違った 理解があるかもしれませんが、ご了承ください • 資料を準備していて、奥深さを再確認した 4
  5. 5. 目次 1. 充足可能性問題 2. 数独をSATで解く 3. 探索アルゴリズム (DPLL) 4. その他のアルゴリズム・その他の問題 5. おわりに 5 休憩? 休憩?
  6. 6. 1. 充足可能性問題 6
  7. 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. 8. 充足可能性問題 (SATisfiability problem) • 充足可能性問題 • 与えられた論理式 f(x,y, …, z) が True となるような x, y, …, z の割当は存在するか? • 存在するとき: SAT (その割当も返す) • 存在しないとき: UNSAT • 例: 𝑥 ∨ 𝑦 ∧ ¬𝑥 ∨ 𝑧 ∧ ¬𝑦 → SAT! 𝑥, 𝑦, 𝑧 = (𝑇, 𝐹, 𝑇) • いろいろな応用 • プログラムの性質の証明,集積回路の設計支援 (反例/バグを見つける) • パズルのソルバー 8
  9. 9. SAT と反例、UNSAT と証明 •満たしてほしい条件(性質)を式にする •¬(条件) を満たす割当を探す •みつかれば、それは条件の反例になっている →バグ発見! •SATソルバーの中には、UNSATにたいして証明を 出力してくれるものも →もとの性質の証明になっている 9
  10. 10. CNF 形 • リテラル (Literal): • 論理変数 𝑥, またはその否定 ¬𝑥 • 節 (Clause): • リテラルをORでつないだもの • 例: 𝑥 ∨ ¬𝑦 ∨ 𝑧 • CNF (Conjunctive Normal Form, 連言標準形): • 節をANDでつないだもの • 例: 𝑎 ∧ ¬𝑎 ∨ 𝑏 ∧ ¬𝑏 ∨ ¬𝑐 ∧ ¬𝑎 ∨ 𝑐 ∨ 𝑑 ∧ (¬𝑑 ∨ ¬𝑒 ∨ 𝑓) • すべての論理式はCNFに変換できる ¬ 𝑥 ∧ 𝑦 = ¬𝑥 ∨ ¬𝑦, ¬ 𝑥 ∨ 𝑦 = ¬𝑥 ∧ ¬𝑦 𝑥 ∧ 𝑦 ∨ 𝑧 ∧ 𝑤 = 𝑥 ∨ 𝑧 ∧ 𝑥 ∨ 𝑤 ∧ 𝑦 ∨ 𝑧 ∧ 𝑦 ∨ 𝑤 などを駆使 (うまくやらないと節の個数が爆発することも) 10
  11. 11. 簡単にとける場合 •一般には NP-Complete だが…… •Cook-Levin の定理 •インスタンス(論理式)のクラスを制限すれば, 簡単に解ける場合がある •2-SAT •Horn-SAT 11
  12. 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. 13. 簡単に解ける場合 2-SAT 13 a ¬b ¬ab ¬a v ¬b ¬a v ¬b ¬a v ¬b = = Implication graph 節の長さがすべて 2 のもの
  14. 14. 簡単に解ける場合 2-SAT 14 a ¬b c ¬a b¬c ¬d d 強連結成分内は同じ値 なので,x と ¬x の両方があると UNSAT
  15. 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. 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. 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つ以上あると、 こうなる可能性がある
  18. 18. 2. 数独をSATで解く 18
  19. 19. 数独 19
  20. 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. 数独 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. 22. Naïve encoding 𝑥1 ∨ 𝑥2, 𝑥1 ∨ 𝑥3, …, 𝑥1 ∨ 𝑥9 𝑥1 ∨ 𝑥2, 𝑥2 ∨ 𝑥3, …, 𝑥2 ∨ 𝑥9 ⋮ 𝑥1 ∨ 𝑥2, 𝑥1 ∨ 𝑥3, …, 𝑥8 ∨ 𝑥9 22
  23. 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. 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. 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. 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. 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. 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 変数の数 節の数
  29. 29. 3. 探索アルゴリズム(DPLL) 29
  30. 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. 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. 32. CDCL (Conflict Driven Clause Learning) •DPLL は,いわゆる全探索 •高速に探索するためには,解の空間を枝刈りし ていかなければならない •→CDCL (Conflict Driven Clause Learning) •コンフリクトを検出したときの情報を使って 探索空間を狭める 32
  33. 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. 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. 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. 36. Watched Literals •DPLL+CDCL は,Unit Propagation を多用 •変数をassignするたびにすべての節にアクセス して「未割り当てが1個」かチェックする? •→Watched Literals •遅延データ構造の一種 36
  37. 37. Watched Literals 37 a ¬a b ¬b ¬a v b v c v ¬d c1 c ¬c {c1, c4, c7, …} {…} {…} {…} {…} {c1, …}
  38. 38. Watched Literals 38 a ¬a b ¬b ¬a v b v c v ¬d c1 c ¬c {c1, c4, c7, …} {…} {…} {c1, …} {…} {}
  39. 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. 40. Watched Literals 40 a ¬a b ¬b ¬a v b v c v ¬d c ¬c {…} {…} {c1, …} {…} {} {c1, c4, c7, …} c1 backtrack !
  41. 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. 42. Minisat • DPLL/CDCLを実装した最も有名なソルバーの1つ • 説明していない実装の詳細がいろいろある • 変数の選択法 • コンフリクトの解析をどこで止めるか • CDCL で学習した節が増えすぎたとき、 ある優先度を用いてあまり使われなさそうな節 を削る • コーディングの勉強にもなる • vector, queue, map 等も実装されている • 適当な問題をCNFに変換して解かせるだけで楽しい 42 http://minisat.se/ https://github.com/niklasso/minisat
  43. 43. 4. その他のソルバー・ その他の問題 43
  44. 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. ソルバーの相性 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. 46. 2-SAT に対する確率的アルゴリズム • 充足可能な 2-SAT インスタンス 𝑓 に対して、 • 以下を解が見つかるまで繰り返す • 満たされていない節 𝑐 = 𝑥 ∨ 𝑦 をランダムにとる • x か y かどちらかをランダムに反転させる • 期待値として𝑂 𝑁2 時間で解が見つかる • 直感的な説明: • 2つの割当の間の距離を、異なる割当の個数とする • ある解 z を考えたとき、ある時刻での割当 x(t) との距離は 1つ増えるか、1つ減るか • (2-SATであることを使うと) 増える期待値は1/2以下 • [1,N]の数直線上でランダムウォークすると𝑂(𝑁2)時間程度で 𝑑(𝑧, 𝑥(𝑡)) = 0 に行き着く 46
  47. 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. 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. 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. 50. ソルバーの相性 CDCL Industrial (structured) Look-ahead Hard-combinatorial, Random SLS (確率的局所探索) (Stochastic Local Search) Hard-combinatorial, Random 50 [NOTE] SLS は SAT の場合しか解けない(UNSAT の証明はできない)
  51. 51. Incremental SAT solver • あるCNF式 f に対して解いたあと、 節(𝑐1, 𝑐2, … , 𝑐 𝑘)を追加するクエリが与えられる • 𝑓’ = 𝑓 ∨ 𝑐1 ∨ 𝑐2 ∨ ⋯ ∨ 𝑐 𝑘 • これを解く際に、もともとの f を解くときに使った学 習節や、変数・節の重みなどの状態が再利用できる • いろいろ応用がある 51
  52. 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. 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. 54. #SAT, MAX-SAT • #SAT • CNF式 f を満たす割当の個数を数え上げる • ソルバー relsat (https://github.com/roberto-bayardo/relsat) は #SAT の機能もある (他のソルバーもたぶんある) • MAX-SAT • すべての節を充足しなくても良いので、満たされた 節の個数をなるべく大きくする割当を探す • SLS(確率的局所探索)がそのままつかえる • もちろんこれに特化したソルバーもある • 両方とも、2-SAT に限定しても NP-hard • スライドを作ろうと思ったが力尽きた 54
  55. 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. 56. The Chaos Within Sudoku 56 M. Ercsey-Ravasz & Z. Toroczkai, "The Chaos Within Sudoku". Scientific Reports, 2, 725 (2012)
  57. 57. 5.おわりに 57
  58. 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
  59. 59. 参考資料 •“Handbook of satisfiability” •世でHandbookと呼ばれる物はたいてい鈍器 59 https://www.amazon.co.jp/dp/1586039296
  60. 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

×