この方程式をCNFに変換するにはどうすればよいですか?
¬((p ∨ ¬Q) ⊃ R) ⊃ (P ∧ R))
命題論理式 を 連言標準形 に変換するには、次の2つの手順を実行します。
すべての否定が原子にのみ適用されるまで、 ドモルガンの法則 を繰り返し適用して、否定を式にプッシュします。 否定標準形 で式を取得します。
¬(p ∨ q)
から_(¬p) ∧ (¬q)
_
¬(p ∧ q)
から_(¬p) ∨ (¬q)
_
分配法則 を繰り返し適用します。ここで、論理和は接続詞で発生します。これが不可能になると、式はCNFになります。
p ∨ (q ∧ r)
から_(p ∨ q) ∧ (p ∨ r)
_選言標準形の式を取得するには、手順2で_∧
_の分布を_∨
_に適用するだけです。
⊂
_についての注意質問で使用されているサブセット記号(_⊂
_)は、論理的含意/含意の単なる代替表記であり、通常は矢印(_⇒
_)として記述されます。
http://en.wikipedia.org/wiki/Conjunctive_normal_form
一階述語論理をCNFに変換するには:
- 否定標準形に変換します。
- 影響を排除する:x→yを¬x∨yに変換する
- NOTを内側に移動します。
- 変数を標準化する
- ステートメントをスコーレム化する
- 全称記号を削除する
- ORを介してANDを配布します。
(人工知能:現代のアプローチ[1995 ...]ラッセルとノーヴィグ)
私はこれを提案してもいいですか?このページには変換のアルゴリズムがあります。
ブール式から(C | D)NFへの基本的な変換を実行できる小さなツールをJavaに実装しました。興味がある場合は、 httpsを参照してください。 ://github.com/julianthome/ctrans 。実装は これらのレクチャーノート に基づいています。より詳細な説明は ここにあります 。フィードバックをいただければ幸いです;-)。