ブール関数の標準形式
ブール論理では、式が1 つ以上の節の連言である場合、その式は連言正規形( CNF ) または節正規形です。ここで、節はリテラルの選言です。言い換えると、式は合計の積またはOR の ANDです。標準正規形として、自動定理証明や回路理論に役立ちます。
自動定理証明では、「節正規形」という概念は、リテラルのセットの集合としての CNF 式の特定の表現を意味する、より狭い意味で使用されることがよくあります。
意味
論理式は、 1 つ以上のリテラルの1 つ以上の選言の連言である場合に CNF であると見なされます。選言標準形(DNF)と同様に、CNF の命題演算子はor ( )、and ( )、not ( ) のみです。not演算子はリテラルの一部としてのみ使用できます。つまり、命題変数の前にのみ置くことができます。



以下はCNF の
文脈自由文法です。
- CNF → (論理和) CNF
- CNF → (論理和)
- 論理和→文字どおりの 論理和
- 論理和→リテラル
- リテラル→変数

- リテラル→変数
ここで、Variable は任意の変数です。
変数、およびにおける次の式はすべて、連言正規形になっています。






次の式は連言正規形では
ありません。
ANDがNOTの中にネストされているため
ORがNOTの中にネストされているため
ANDはORの中にネストされているため
CNFへの変換
古典論理では、各命題式はCNFの同等の式に変換できます。 この変換は、二重否定除去、ド・モルガンの法則、分配法則などの論理的同値性に関する規則に基づいています。
基本アルゴリズム
与えられた命題式のCNF相当値を計算するアルゴリズムは、選言標準形(DNF)のステップ1に基づいています。 [2]
次に、ANDとORを入れ替え、その逆を行いながら、すべてのリテラルを否定して、をに変換します。すべてのを削除します。



構文的手段による変換
命題式を CNF に変換します。

ステップ1:その否定を選言標準形に変換する。[2]
、
ここで、それぞれはリテラルの連結である。[b]
ステップ2 : を否定します。次に、(一般化された)ド・モルガンの同値を適用して、不可能になるまで内側に移動します。
ここで


ステップ 3 : すべての二重否定を削除します。
例
命題式をCNFに変換します
。[c]
その否定に相当する(完全な)DNFは[2]である。
意味論的手段による変換
式のCNF相当は、その真理値表から導くことができます。もう一度、式を考えてみましょう
。[c]
対応する真理値表は
CNFに相当するものは

各論理和は、F(alse)と評価される変数の割り当てを反映しています。
このような割り当てで変数
- がT(真)の場合、リテラルは論理和で設定されます。

- が F(alse) の場合、リテラルは論理和で に設定されます。

その他のアプローチ
すべての命題式は連言標準形の同等の式に変換できるため、証明は多くの場合、すべての式がCNFであるという仮定に基づいています。ただし、場合によっては、このCNFへの変換により、式の指数関数的爆発が発生する可能性があります。たとえば、非CNF式を変換すると、
CNF にすると、次の節を含む式が生成されます。

各節には、それぞれまたはが含まれます。



CNFへの変換には、同値性ではなく充足可能性を維持することで指数関数的なサイズの増加を回避するものがあります。これらの変換では、式のサイズが線形に増加するだけで、新しい変数が導入されます。たとえば、上記の式は、次のように変数を追加することでCNFに変換できます。

解釈がこの式を満たすのは、新しい変数の少なくとも 1 つが真である場合のみです。この変数が の場合、と も両方とも真です。つまり、この式を満たすすべてのモデルは、元の式も満たします。一方、元の式のモデルのうち、この式を満たすのは一部だけです。 は元の式で言及されていないため、その値は元の式を満たすこととは無関係ですが、最後の式ではそうではありません。つまり、元の式と翻訳の結果は等しく満たされますが、同等ではありません。




代わりの翻訳であるTseitin 変換には、 という節も含まれます。これらの節により、式は を意味します。この式は、の名前として「定義」されているとよく考えられています。




論理和の最大数
変数
を持つ命題式を考えます。


可能なリテラルは次のとおりです: 。


空でない部分集合を持つ。 [d]
これはCNFが持つことができる論理和の最大数です。[e]
すべての真理関数の組み合わせは、真理値表の各行に 1 つずつ、論理和で表現できます。以下の例では、論理和は下線で示されています。

例
2 つの変数とを持つ式を考えます。


最も長いCNFには論理和がある: [e]
この式は矛盾している。
計算の複雑さ
計算複雑性における重要な一連の問題には、論理積正規形で表現されたブール式の変数への割り当てを、式が真となるように見つけることが含まれます。k - SAT問題は、各選言に最大k 個の変数が含まれる CNF で表現されたブール式への満足な割り当てを見つける問題です。3 -SATはNP 完全( k >2の他のk -SAT 問題と同様に) ですが、 2-SAT は多項式時間で解けることが知られています。結果として、[f]充足可能性を維持しながら式をDNFに変換するタスクはNP 困難です。双対的に、妥当性を維持しながら CNF に変換するタスクも NP 困難です。したがって、同値性を維持しながら DNF または CNF に変換することも NP 困難です。
この場合の典型的な問題には、「3CNF」の式が含まれます。これは、1 つの連言につき 3 つ以下の変数を持つ連言標準形です。実際に遭遇するこのような式の例は、たとえば 100,000 個の変数と 1,000,000 個の連言など、非常に大きくなる可能性があります。
CNF の式は、k個を超える変数を持つ各連言を 2 つの連言と新しい変数Zに置き換え、必要な回数だけ繰り返すことで、
「 k CNF」( k ≥ 3) の等充足式に変換できます。


一階論理
一階述語論理では、連言正規形をさらに進めることで論理式の節正規形が得られ、それを使って一階述語解決を実行することができる。解決ベースの自動定理証明では、CNF式
例については以下を参照してください。
一階論理からの変換
一階論理をCNFに変換するには:
- 否定正規形に変換します。
- 含意と同値性を排除します。繰り返しを に置き換え、を に置き換えます。これにより、最終的にとのすべての出現が排除されます。






- ド・モルガンの法則を繰り返し適用して、NOT を内側に移動します。具体的には、を に置き換え、を に置き換え、を に置き換え、をに置き換えます。その後、 は述語記号の直前にのみ出現できます。











- 変数を標準化する
- 同じ変数名を 2 回使用する のような文では、変数の 1 つの名前を変更します。これにより、後で量指定子を削除するときに混乱を避けることができます。たとえば、は に名前が変更されます。

![{\displaystyle \forall x[\exists y\mathrm {動物} (y)\land \lnot \mathrm {愛} (x,y)]\lor [\exists y\mathrm {愛} (y,x)]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dd5d29209999efbc9d0b28c79ae5e2de403205e9)
![{\displaystyle \forall x[\exists y\mathrm {動物} (y)\land \lnot \mathrm {愛} (x,y)]\lor [\exists z\mathrm {愛} (z,x)]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8f31346b7a2e56aaec8d6357958c8271f60deffe)
- 声明
をスコレム化する
- 量指定子を外側に移動します。繰り返して に置き換えます。 に置き換えます。に置き換えます。 に置き換えます。 に置き換えます。 前の変数標準化手順でが に出現しないことが保証されているため、これらの置き換えでは同等性が保持されます。これらの置き換えの後、量指定子は数式の最初のプレフィックスにのみ出現し、 、 、または の内側には出現しません。













- を で繰り返し置き換えます。ここで は新しい-ary 関数記号、いわゆる「スコーレム関数」です。これは、同値性ではなく充足可能性のみを保持する唯一のステップです。これにより、すべての存在量指定子が削除されます。




- すべての全称量指定子を削除します。
- OR を AND の上に内側に分散します。繰り返しに置き換えます。


例
たとえば、「すべての動物を愛する人は、今度は誰かに愛される」という式は、次のように CNF に変換されます (最後の行では節形式に変換されます) (内の置換規則のredex を強調表示)。

非公式には、スコーレム関数は、愛されている人物を返し、愛していない動物(もしあれば)を返すものと考えることができます。下の最後から 3 行目は、 「は動物を愛していない、またはに愛されている」と読めます。








上から2番目の最後行がCNFです。

参照
注記
- ^ 接続詞の最大数
- ^ リテラルの最大数
- ^ ab = (( NOT (p AND q)) IFF (( NOT r) NAND (p XOR q)))
- ^
- ^ ab およびの交換法則と結合法則に基づく繰り返しや変化( など)は発生しないと仮定します。


- ^ CNFの充足可能性をチェックする一つの方法は、それをDNFに変換することであり、その充足可能性は線形時間でチェックできる。
- ^ 論理和の最大数リテラルの最大数

参考文献
- アンドリュース、ピーター B. (2013)。数理論理学と型理論入門:証明を通して真実へ。シュプリンガー。ISBN 978-9401599344。
- ハウソン、コリン(2005年10月11日)[1997]。木を使った論理:記号論理学入門。Routledge。ISBN 978-1-134-78550-6。
- Jackson, Paul; Sheridan, Daniel (2004 年 5 月 10 日)。「ブール回路の節形式変換」(PDF)。Hoos, Holger H.、Mitchell, David G. (編)。充足可能性テストの理論と応用。充足可能性テストの理論と応用に関する第 7 回国際会議、SAT。改訂選書。コンピュータ サイエンスの講義ノート。第 3542 巻。バンクーバー、ブリティッシュ コロンビア州、カナダ: Springer 2005 年。pp. 183–198。doi :10.1007 / 11527695_15。ISBN 978-3-540-31580-3。
- クライネ・ビューニング、ハンス、レットマン、テオドール(1999年8月28日)。命題論理:演繹とアルゴリズム。ケンブリッジ大学出版局。ISBN 978-0-521-63017-7。
- ラッセル、スチュアート、ノーヴィグ、ピーター、編 (2010) [1995]。人工知能:現代的アプローチ(PDF) (第3版)。アッパーサドルリバー、ニュージャージー:プレンティスホール。ISBN 978-0-13-604259-42017年8月31日時点のオリジナルよりアーカイブ(PDF) 。
- Tseitin, Grigori S. (1968)。「命題計算における導出の複雑さについて」(PDF)。Slisenko, AO (編)。構成的数学と数理論理学の構造、第 2 部、数学セミナー (ロシア語から翻訳)。Steklov 数学研究所。pp. 115–125。
- ホワイトシット、J.エルドン(2012年5月24日)[1961]。ブール代数とその応用。クーリエコーポレーション。ISBN 978-0-486-15816-7。
外部リンク
- 「真理値表をCNFとDNFに変換するJavaツール」。マールブルク大学。 2023年12月31日閲覧。