情報理論 - 主加法標準形

2026年2月24日 (火) 15:02時点におけるWiki (トーク | 投稿記録)による版 (ステップ 3 : 第2回の組み合わせ)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要

主加法標準形 (PDNF: Principal Disjunctive Normal Form) は、論理関数を最小項の論理和として一意に表現した標準形である。
SOP canonical form (Sum of Products) とも呼ばれる。

任意のブール関数は、その関数の値が1となる全ての入力の組み合わせに対応する最小項を論理和 (OR) で結合することによって、一意に表現できる。
この表現は Σ記法を用いて   と記述される。

主加法標準形は以下の領域で広く活用される。

  • デジタル論理回路の設計
  • 論理式の等価性判定
  • 論理式の簡単化 (カルノー図、クワイン・マクラスキー法)
  • ブール関数の解析


下表に、主加法標準形の特徴を示す。

主加法標準形の特徴
項目 内容
正式名称 主加法標準形 (Principal Disjunctive Normal Form)
略称 PDNF
別名 SOP canonical form (Sum of Products)
構成要素 最小項 (minterm)
結合演算 論理和 (OR, +)
記号表記  
真理値表から   の行を使用
展開に利用  
簡単化手法 カルノー図、クワイン・マクラスキー法


対となる標準形として、情報理論 - 主乗法標準形が存在する。
主乗法標準形は最大項の論理積として論理関数を表現するものであり、主加法標準形と双対の関係にある。


基本用語

リテラル

リテラルとは、論理変数またはその否定のことである。

  • 肯定リテラル
      のように、論理変数そのままの形
  • 否定リテラル
      のように、論理変数の否定の形


n個の変数が存在する場合、リテラルの総数は   個となる。

基本積

基本積とは、リテラルの論理積 (AND結合) のことである。
積項とも呼ばれる。

例:  

最小項 (minterm)

最小項とは、n個の変数全てが1回ずつ現れる基本積のことである。
記号   で表され、添字iは対応する入力の10進数値である。

命名ルールは以下の通りである。

  • 入力値が1の変数は肯定リテラルとして記述する。
  • 入力値が0の変数は否定リテラルとして記述する。


例:   の場合、10進数値は   であるため、  となる。

最小項の重要な性質として、ある最小項   は、対応する入力の組み合わせのときのみ値1となり、他の全ての入力の組み合わせでは値0となる。


最小項の一覧

3変数 (A, B, C) の場合、最小項は   個存在する。

下表に、3変数の最小項の一覧を示す。

3変数の最小項一覧
A B C 最小項 記号
0 0 0    
0 0 1    
0 1 0    
0 1 1    
1 0 0    
1 0 1    
1 1 0    
1 1 1    



主加法標準形の定義

論理関数   の主加法標準形とは、  の値が1となる全ての入力の組み合わせに対応する最小項の論理和として   を表した形式である。

一般式を以下に示す。
 

ここで、   が1となる入力の組み合わせに対応する10進番号である。

任意のブール関数は一意の主加法標準形を持つ。
すなわち、2つの論理関数が同一の主加法標準形を持つならば、それらの関数は等価である。


真理値表からの導出

導出手順

真理値表から主加法標準形を導出する手順を以下に示す。

  1. 真理値表から、関数の値が1となる行を全て特定する。
  2. 各行に対応する最小項を書き出す。(値が1の変数は肯定リテラル、0の変数は否定リテラル)
  3. 全ての最小項の論理和 (OR) を取る。
  4. 最小項番号のリスト表記 (Σ記法) に変換する。


具体例

以下の真理値表を持つ論理関数fを例として、主加法標準形を導出する。

真理値表
A B C f(A,B,C)
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1


導出過程を以下に示す。

  •   となる行の特定
    入力 001 (行1), 010 (行2), 100 (行4), 111 (行7) の4行で   となる
  • 対応する最小項
     ,  ,  ,  
  • 主加法標準形
     
  • Σ記法
     



論理式からの導出

既存の論理式から主加法標準形を導出するには、恒等式   を利用した展開を行う。

手順を以下に示す。

  1. 論理式を積和形に展開する。(分配法則を適用)
  2. 各項に含まれない変数   について、  を乗じる。(  なので値は変わらない)
  3. 分配法則で展開し、全ての項を最小項の形にする。
  4. 重複する最小項を除去する。( )


具体例として、  の主加法標準形を求める。

  • 第1項   の変換
    Cが含まれないため、  に展開する。
     
  • 第2項   の変換
    Bが含まれないため、  に展開する。
     
  • 結果
     



論理式の簡単化に用いる変換法則

ブール代数の論理式を簡単化する時に使用される変換法則がある。
これらの法則は、主加法標準形から得られた論理式を、より簡潔な等価式に変換するために用いられる。

ブール代数には双対性原理 (Duality Principle) が成立する。
AND演算とOR演算、および定数0と定数1を互いに交換することにより、ある法則からその双対の法則が導出される。

基本法則

下表では、各法則をAND形式とOR形式の双対の組として示す。

ブール代数の基本法則
法則名 AND形式 OR形式
恒等法則 (Identity Law)    
支配法則 (Domination Law)    
冪等法則 (Idempotent Law)    
補元法則 (Complement Law)    
二重否定法則 (Involution Law)  


構造法則

ブール代数の構造法則
法則名 AND形式 OR形式
交換法則 (Commutative Law)    
結合法則 (Associative Law)    
分配法則 (Distributive Law)    


簡単化法則

ブール代数の簡単化法則
法則名 AND形式 OR形式
吸収法則 (Absorption Law)    
ド・モルガンの法則 (De Morgan's Law)    
コンセンサス定理 (Consensus Theorem)    


吸収法則の証明

吸収法則   の成立を以下のように証明できる。

 

コンセンサス定理の証明

コンセンサス定理   の成立を以下のように証明できる。

第3項   が冗長であることを示す。

 

簡単化の適用例

以下の積和形の論理式を変換法則を用いて簡単化する。

 


クワイン・マクラスキー法による簡単化

概要

クワイン・マクラスキー法 (QM法) は、主加法標準形を体系的に簡単化するためのアルゴリズムである。

  • カルノー図と異なり、変数が多い場合 (5個以上) でも適用可能
  • コンピュータによる自動化に適しており、最簡形であることを保証する。
  • 全ての主項を列挙し、必要最小限の主項の集合を求める。


手順

クワイン・マクラスキー法の手順を以下に示す。

  1. 主加法標準形の全最小項を2進数で表し、1のビット数でグループ分けする。
  2. 隣接グループ (1のビット数が1だけ異なる) 間で、正確に1ビットだけ異なる項を組み合わせる。
    (異なるビットをダッシュ「-」で置換)
  3. 組み合わせ可能な項がなくなるまで繰り返す。
    組み合わせできなかった項が主項 (prime implicant) となる。
  4. 主項表を作成する。
    (行: 主項、列: 元の最小項)
  5. 必須主項 (essential prime implicant) を特定する。
    (ある最小項をカバーする主項が1つだけの場合、その主項は必須)
  6. 必須主項で全最小項がカバーされるか確認し、不足があれば追加の主項を選択する。
  7. 選択した主項の論理和が簡単化された論理式となる。


具体例

例として   を簡単化する。

ステップ 1 : 最小項を1のビット数でグループ分け
ステップ1 : グループ分け
グループ (1のビット数) 最小項 2進数
0   000
1   001
1   010
2   011
3   111


ステップ 2 : 隣接グループ間で1ビットだけ異なる項を組み合わせ
ステップ2 : 第1回の組み合わせ
組み合わせ 結果 カバーする最小項
 (000) と  (001) 00- {0, 1}
 (000) と  (010) 0-0 {0, 2}
 (001) と  (011) 0-1 {1, 3}
 (010) と  (011) 01- {2, 3}
 (011) と  (111) -11 {3, 7}


ステップ 3 : 第2回の組み合わせ
  • 00- (0, 1) と 01- (2, 3)
    ダッシュ位置が同じ (ビット0)、非ダッシュ部分が1ビット異なる → 0-- (カバー: {0,1,2,3})
  • 0-0 (0, 2) と 0-1 (1, 3)
    ダッシュ位置が同じ (ビット1)、非ダッシュ部分が1ビット異なる → 0-- (カバー: {0,1,2,3})
  • これ以上の組み合わせは不可能


主項の一覧を以下に示す。

  • 0-- → 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \overline{A}} (m0, m1, m2, m3をカバー)
  • -11 → 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle B \cdot C} (m3, m7をカバー)


ステップ 4 : 主項表を作成
ステップ4 : 主項表
主項 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_0} 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_1} 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_2} 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_3} 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_7}
構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \overline{A}} (0--)
構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle B \cdot C} (-11)


ステップ 5 : 必須主項を特定する
  • 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_0} , 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_1} , 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_2}構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \overline{A}} のみがカバーするため、構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \overline{A}} は必須主項
  • 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_7} は、構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle B \cdot C} のみがカバーするため、構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle B \cdot C} は必須主項
  • 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle m_3} は両方がカバーするが、両主項が既に必須として選択されているため問題なし。


全最小項がカバーされたため、簡単化結果は以下の通りである。

構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle f = \overline{A} + B \cdot C}


主乗法標準形との関係

補集合による変換

n変数の関数では、構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle 0} から 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle 2^{n} - 1} までの全ての番号のうち、最小項番号の補集合が最大項番号となる。

  • 例: 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \sum m(1, 2, 4, 7)} の場合
    全体集合 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle {0,\, 1,\, \cdots, \, 7}} から 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle {1, \, 2, \, 4, \, 7}} を除いた 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle {0, \, 3, \, 5, \, 6}} が最大項番号となる。
    よって 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle f = \prod M(0, 3, 5, 6)} と表現される。


逆に、最大項番号の補集合が最小項番号となる。

ド・モルガンの定理による変換

補関数を求めて展開することにより、主加法標準形から情報理論 - 主乗法標準形へ変換できる。

手順を以下に示す。

  1. 関数 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle f} の補関数 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \overline{f}} を求める (fの値が0の行の最小項の和)
  2. ド・モルガンの定理で 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \overline{f}} の否定を取る
  3. 整理すると主乗法標準形が得られる


例: 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle f = \sum m(1, 2, 4, 7)} からの変換を以下に示す。

  • 補関数の導出
    f の値が0となる行の最小項番号は {0, 3, 5, 6} であるため
    構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \overline{f} = \sum m(0, 3, 5, 6) = m_0 + m_3 + m_5 + m_6}
  • 否定を取る
    構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle f = \overline{\overline{f}} = \overline{m_0 + m_3 + m_5 + m_6}}
  • ド・モルガンの定理を適用
    構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle f = \overline{m_0} \cdot \overline{m_3} \cdot \overline{m_5} \cdot \overline{m_6}}
  • 構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle \overline{m_i} = M_i} の関係を利用
    構文解析に失敗 (SVG (ブラウザーのプラグインで MathML を有効にできます): サーバー「https://wikimedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle f = M_0 \cdot M_3 \cdot M_5 \cdot M_6 = \prod M(0, 3, 5, 6)}



関連ページ