web-dev-qa-db-ja.com

命題式を連言標準形(CNF)に変換する方法は?

この方程式をCNFに変換するにはどうすればよいですか?

¬((p ∨ ¬Q) ⊃ R) ⊃ (P ∧ R))
13
lana

命題論理式連言標準形 に変換するには、次の2つの手順を実行します。

  1. すべての否定が原子にのみ適用されるまで、 ドモルガンの法則 を繰り返し適用して、否定を式にプッシュします。 否定標準形 で式を取得します。

    • ¬(p ∨ q)から_(¬p) ∧ (¬q)_

    • ¬(p ∧ q)から_(¬p) ∨ (¬q)_

  2. 分配法則 を繰り返し適用します。ここで、論理和は接続詞で発生します。これが不可能になると、式はCNFになります。

    • p ∨ (q ∧ r)から_(p ∨ q) ∧ (p ∨ r)_

選言標準形の式を取得するには、手順2で__の分布を__に適用するだけです。

__についての注意

質問で使用されているサブセット記号(__)は、論理的含意/含意の単なる代替表記であり、通常は矢印(__)として記述されます。

14
ziggystar

http://en.wikipedia.org/wiki/Conjunctive_normal_form

一階述語論理をCNFに変換するには:

  1. 否定標準形に変換します。
    1. 影響を排除する:x→yを¬x∨yに変換する
    2. NOTを内側に移動します。
  2. 変数を標準化する
  3. ステートメントをスコーレム化する
  4. 全称記号を削除する
  5. ORを介してANDを配布します。

(人工知能:現代のアプローチ[1995 ...]ラッセルとノーヴィグ)

4
vartec

私はこれを提案してもいいですか?このページには変換のアルゴリズムがあります。

連言標準形

1
user38735

ブール式から(C | D)NFへの基本的な変換を実行できる小さなツールをJavaに実装しました。興味がある場合は、 httpsを参照してください。 ://github.com/julianthome/ctrans 。実装は これらのレクチャーノート に基づいています。より詳細な説明は ここにあります 。フィードバックをいただければ幸いです;-)。

0
Julian