Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on


Published in: Software
  • Be the first to comment

  • Be the first to like this


  1. 1. 2-SATの解き方 吉岡恒夫(@yoshiokatsuneo) 2017/02/21
  2. 2. SATとは? • 充足可能性問題(satisfiability problem) • 論理式 (A∨B∨C∨…)∧(D∨E∨F∨…)∧… # CNF, Conjunctive Normal Form, 連現標準形 • 論理式を満たす(真にする)ことができるか? (そのような、A,B,C,D…が存在するか?)
  3. 3. 2-SATとは? • 論理式 (A∨B)∧(D∨E)∧… #かっこの中(クロージャ)が最大2個まで • 論理式を満たす(真にする)ことができるか? (そのような、A,B,C,D…が存在するか?)
  4. 4. 論理包含(implication) • A→B (AならばB) (注: Aが偽の場合もBは真になる) • A→B かつ B→C ならば A→C (三段論法) A B A→B 真 真 真 真 偽 偽 偽 真 真 偽 真 真
  5. 5. 論理式と論理包含 • A∨B ≡ ¬B→A≡ ¬A→B ¬A B ¬A→B A B 真 真 真 偽 真 真 偽 偽 偽 偽 偽 真 真 真 真 偽 真 真 真 真
  6. 6. 2-SATの「ならば(→)」表記 • (A∨B)∧(C∨D)∧… は (¬B→A)∧(¬A→B)∧(¬D→C)∧(¬C→D)∧… と表せる
  7. 7. 2-SATのグラフ表記 B ¬A A ¬B A B A→B 真 真 真 真 偽 偽 偽 真 真 偽 真 真 • X→YでXとYが反対でも成立 するのはX:偽, Y:真の組み合 わせ • ¬A→Aの場合、¬Aを偽に、 Aを真にする。 B ¬A A ¬B 偽 偽 真 真
  8. 8. 矛盾の検出 • ¬AとAがループしていると、¬AとAを同時に 満たす必要が出て来て矛盾する A ¬A
  9. 9. 強連結成分分解 • 強連結成分分解で同じループの中に、Aと¬A が存在するか検出。 A B C D E F G H 強連結成分 強連結成分
  10. 10. まとめ • 論理式: (A∨B)∧(D∨E)∧… • ならばに変換: (¬B→A)∧(¬A→B)∧… • グラフを作成 • 強連結成分分解でAと¬Aが同じ成分か検出 • ¬A→Aがあれば、Aを偽にする