計算機科学のブログ

命題論理 論理式の標準形 SAT 充足可能問題、リテラル、解法、Davis-Putnam法

情報系のための離散数学 (猪股 俊光 (著)、南野 謙一 (著)、共立出版 )の第1章(命題論理)、1.4(論理式の標準形)、1.4.2(SAT)、問題1.15の解答を求めてみる。

Step.1

C = { p }

Step.2

q = p , C = ϕ

Step.3
規則1も規則2も適用できない。

q ' = q

Step.4

p 1 = T p 2 = F q 1 = ( T p 2 ) ( ¬ T ¬ p 2 ) ( T ¬ p 3 ) ( p 2 p 3 ) = ¬ p 2 ( p 2 p 3 ) q 2 = ( F p 2 ) ( ¬ F ¬ p 2 ) ( F ¬ p 3 ) ( p 2 p 3 ) = p 2 ¬ p 3 ( p 2 p 3 ) C = { q 1 , q 2 }

Step.2

q = q 1 , C = { q 2 }

Step.3

単一の負リテラルが存在するから規則1を適用。

p 2 = F q = ¬ F ( F p 3 ) = p 3

単一の正リテラルが存在するからも先を見てを適用。

p 3 = T q = T

これ以上は適用できない。

q ' = q = T

これは充足可能なので出力はYES。

よって問題のCNFは充足可能。

コード(Wolfram Language)

p1 = True
Output
p2 = False
Output
p3 = True
Output
(p1 || p2) && (!p1 || !p2) && (p1 || !p3) && (p2 || p3)
Output
Table[
    Table[
        Table[
            {p1, p2, p3,
             (p1 || p2) && (!p1 || !p2) && (p1 || !p3) && (p2 || p3)},
            {p3, {True, False}}
        ],
        {p2, {True, False}}
    ],
    {p1, {True, False}}
]
Output