MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
情報理論 - 主加法標準形のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
情報理論 - 主加法標準形
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == 主加法標準形 (PDNF: Principal Disjunctive Normal Form) は、論理関数を最小項の論理和として一意に表現した標準形である。<br> SOP canonical form (Sum of Products) とも呼ばれる。<br> <br> 任意のブール関数は、その関数の値が1となる全ての入力の組み合わせに対応する最小項を論理和 (OR) で結合することによって、一意に表現できる。<br> この表現は Σ記法を用いて <math>\sum m(\ldots)</math> と記述される。<br> <br> 主加法標準形は以下の領域で広く活用される。<br> * デジタル論理回路の設計 * 論理式の等価性判定 * 論理式の簡単化 (カルノー図、クワイン・マクラスキー法) * ブール関数の解析 <br> 下表に、主加法標準形の特徴を示す。<br> <br> <center> {| class="wikitable" |+ 主加法標準形の特徴 ! 項目 !! 内容 |- | 正式名称 || 主加法標準形 (Principal Disjunctive Normal Form) |- | 略称 || PDNF |- | 別名 || SOP canonical form (Sum of Products) |- | 構成要素 || 最小項 (minterm) |- | 結合演算 || 論理和 (OR, +) |- | 記号表記 || <math>\sum m(\ldots)</math> |- | 真理値表から || <math>f = 1</math> の行を使用 |- | 展開に利用 || <math>x + \overline{x} = 1</math> |- | 簡単化手法 || カルノー図、クワイン・マクラスキー法 |} </center> <br> 対となる標準形として、[[情報理論 - 主乗法標準形]]が存在する。<br> 主乗法標準形は最大項の論理積として論理関数を表現するものであり、主加法標準形と双対の関係にある。<br> <br><br> == 基本用語 == ==== リテラル ==== リテラルとは、論理変数またはその否定のことである。<br> <br> * 肯定リテラル *: <math>A</math> のように、論理変数そのままの形 * 否定リテラル *: <math>\overline{A}</math> のように、論理変数の否定の形 <br> n個の変数が存在する場合、リテラルの総数は <math>2n</math> 個となる。<br> <br> ==== 基本積 ==== 基本積とは、リテラルの論理積 (AND結合) のことである。<br> 積項とも呼ばれる。<br> <br> 例: <math>A \cdot \overline{B} \cdot C</math><br> <br> ==== 最小項 (minterm) ==== 最小項とは、n個の変数全てが1回ずつ現れる基本積のことである。<br> 記号 <math>m_i</math> で表され、添字iは対応する入力の10進数値である。<br> <br> 命名ルールは以下の通りである。<br> * 入力値が1の変数は肯定リテラルとして記述する。 * 入力値が0の変数は否定リテラルとして記述する。 <br> 例: <math>A = 0, B = 1, C = 0</math> の場合、10進数値は <math>010_{(2)} = 2_{(10)}</math> であるため、<math>m_2 = \overline{A} \cdot B \cdot \overline{C}</math> となる。<br> <br> 最小項の重要な性質として、ある最小項 <math>m_i</math> は、対応する入力の組み合わせのときのみ値1となり、他の全ての入力の組み合わせでは値0となる。<br> <br><br> == 最小項の一覧 == 3変数 (A, B, C) の場合、最小項は <math>2^3 = 8</math> 個存在する。<br> <br> 下表に、3変数の最小項の一覧を示す。<br> <br> <center> {| class="wikitable" |+ 3変数の最小項一覧 ! A !! B !! C !! 最小項 !! 記号 |- | 0 || 0 || 0 || <math>\overline{A} \cdot \overline{B} \cdot \overline{C}</math> || <math>m_0</math> |- | 0 || 0 || 1 || <math>\overline{A} \cdot \overline{B} \cdot C</math> || <math>m_1</math> |- | 0 || 1 || 0 || <math>\overline{A} \cdot B \cdot \overline{C}</math> || <math>m_2</math> |- | 0 || 1 || 1 || <math>\overline{A} \cdot B \cdot C</math> || <math>m_3</math> |- | 1 || 0 || 0 || <math>A \cdot \overline{B} \cdot \overline{C}</math> || <math>m_4</math> |- | 1 || 0 || 1 || <math>A \cdot \overline{B} \cdot C</math> || <math>m_5</math> |- | 1 || 1 || 0 || <math>A \cdot B \cdot \overline{C}</math> || <math>m_6</math> |- | 1 || 1 || 1 || <math>A \cdot B \cdot C</math> || <math>m_7</math> |} </center> <br><br> == 主加法標準形の定義 == 論理関数 <math>f</math> の主加法標準形とは、<math>f</math> の値が1となる全ての入力の組み合わせに対応する最小項の論理和として <math>f</math> を表した形式である。<br> <br> 一般式を以下に示す。<br> <math>f(x_1, x_2, \ldots, x_n) = \sum m(i_1, i_2, \ldots, i_k)</math><br> <br> ここで、<math>i_1, i_2, \ldots, i_k</math> は <math>f</math> が1となる入力の組み合わせに対応する10進番号である。<br> <br> 任意のブール関数は一意の主加法標準形を持つ。<br> すなわち、2つの論理関数が同一の主加法標準形を持つならば、それらの関数は等価である。<br> <br><br> == 真理値表からの導出 == ==== 導出手順 ==== 真理値表から主加法標準形を導出する手順を以下に示す。<br> <br> # 真理値表から、関数の値が1となる行を全て特定する。 # 各行に対応する最小項を書き出す。(値が1の変数は肯定リテラル、0の変数は否定リテラル) # 全ての最小項の論理和 (OR) を取る。 # 最小項番号のリスト表記 (Σ記法) に変換する。 <br> ==== 具体例 ==== 以下の真理値表を持つ論理関数fを例として、主加法標準形を導出する。<br> <br> <center> {| class="wikitable" |+ 真理値表 ! 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 |} </center> <br> 導出過程を以下に示す。<br> <br> * <math>f = 1</math> となる行の特定 *: 入力 001 (行1), 010 (行2), 100 (行4), 111 (行7) の4行で <math>f = 1</math> となる * 対応する最小項 *: <math>m_1 = \overline{A} \cdot \overline{B} \cdot C</math>, <math>m_2 = \overline{A} \cdot B \cdot \overline{C}</math>, <math>m_4 = A \cdot \overline{B} \cdot \overline{C}</math>, <math>m_7 = A \cdot B \cdot C</math> * 主加法標準形 *: <math>f = \overline{A} \cdot \overline{B} \cdot C + \overline{A} \cdot B \cdot \overline{C} + A \cdot \overline{B} \cdot \overline{C} + A \cdot B \cdot C</math> * Σ記法 *: <math>f = \sum m(1, 2, 4, 7)</math> <br><br> == 論理式からの導出 == 既存の論理式から主加法標準形を導出するには、恒等式 <math>x + \overline{x} = 1</math> を利用した展開を行う。<br> <br> 手順を以下に示す。<br> <br> # 論理式を積和形に展開する。(分配法則を適用) # 各項に含まれない変数 <math>x</math> について、<math>(x + \overline{x})</math> を乗じる。(<math>x + \overline{x} = 1</math> なので値は変わらない) # 分配法則で展開し、全ての項を最小項の形にする。 # 重複する最小項を除去する。(<math>m_i + m_i = m_i</math>) <br> 具体例として、<math>f = A \cdot B + \overline{A} \cdot C</math> の主加法標準形を求める。<br> <br> * 第1項 <math>A \cdot B</math> の変換 *: Cが含まれないため、<math>A \cdot B \cdot (C + \overline{C})</math> に展開する。 *: <math>A \cdot B \cdot C + A \cdot B \cdot \overline{C} = m_7 + m_6</math> * 第2項 <math>\overline{A} \cdot C</math> の変換 *: Bが含まれないため、<math>\overline{A} \cdot (B + \overline{B}) \cdot C</math> に展開する。 *: <math>\overline{A} \cdot B \cdot C + \overline{A} \cdot \overline{B} \cdot C = m_3 + m_1</math> * 結果 *: <math>f = m_1 + m_3 + m_6 + m_7 = \sum m(1, 3, 6, 7)</math> <br><br> == 論理式の簡単化に用いる変換法則 == ブール代数の論理式を簡単化する時に使用される変換法則がある。<br> これらの法則は、主加法標準形から得られた論理式を、より簡潔な等価式に変換するために用いられる。<br> <br> ブール代数には双対性原理 (Duality Principle) が成立する。<br> AND演算とOR演算、および定数0と定数1を互いに交換することにより、ある法則からその双対の法則が導出される。<br> <br> ==== 基本法則 ==== 下表では、各法則をAND形式とOR形式の双対の組として示す。<br> <br> <center> {| class="wikitable" |+ ブール代数の基本法則 ! 法則名 !! AND形式 !! OR形式 |- | 恒等法則 (Identity Law) || <math>A \cdot 1 = A</math> || <math>A + 0 = A</math> |- | 支配法則 (Domination Law) || <math>A \cdot 0 = 0</math> || <math>A + 1 = 1</math> |- | 冪等法則 (Idempotent Law) || <math>A \cdot A = A</math> || <math>A + A = A</math> |- | 補元法則 (Complement Law) || <math>A \cdot \overline{A} = 0</math> || <math>A + \overline{A} = 1</math> |- | 二重否定法則 (Involution Law) || colspan="2" | <math>\overline{\overline{A}} = A</math> |} </center> <br> ==== 構造法則 ==== <center> {| class="wikitable" |+ ブール代数の構造法則 ! 法則名 !! AND形式 !! OR形式 |- | 交換法則 (Commutative Law) || <math>A \cdot B = B \cdot A</math> || <math>A + B = B + A</math> |- | 結合法則 (Associative Law) || <math>(A \cdot B) \cdot C = A \cdot (B \cdot C)</math> || <math>(A + B) + C = A + (B + C)</math> |- | 分配法則 (Distributive Law) || <math>A \cdot (B + C) = A \cdot B + A \cdot C</math> || <math>A + B \cdot C = (A + B) \cdot (A + C)</math> |} </center> <br> ==== 簡単化法則 ==== <center> {| class="wikitable" |+ ブール代数の簡単化法則 ! 法則名 !! AND形式 !! OR形式 |- | 吸収法則 (Absorption Law) || <math>A \cdot (A + B) = A</math> || <math>A + A \cdot B = A</math> |- | ド・モルガンの法則 (De Morgan's Law) || <math>\overline{A \cdot B} = \overline{A} + \overline{B}</math> || <math>\overline{A + B} = \overline{A} \cdot \overline{B}</math> |- | コンセンサス定理 (Consensus Theorem) || <math>(A + B) \cdot (\overline{A} + C) \cdot (B + C) = (A + B) \cdot (\overline{A} + C)</math> || <math>A \cdot B + \overline{A} \cdot C + B \cdot C = A \cdot B + \overline{A} \cdot C</math> |} </center> <br> ==== 吸収法則の証明 ==== 吸収法則 <math>A + A \cdot B = A</math> の成立を以下のように証明できる。<br> <br> <math> \begin{align} A + A \cdot B &= A \cdot 1 + A \cdot B && \text{(恒等法則: } A = A \cdot 1 \text{)} \\ &= A \cdot (1 + B) && \text{(分配法則)} \\ &= A \cdot 1 && \text{(支配法則: } 1 + B = 1 \text{)} \\ &= A && \text{(恒等法則)} \end{align} </math><br> <br> ==== コンセンサス定理の証明 ==== コンセンサス定理 <math>A \cdot B + \overline{A} \cdot C + B \cdot C = A \cdot B + \overline{A} \cdot C</math> の成立を以下のように証明できる。<br> <br> 第3項 <math>B \cdot C</math> が冗長であることを示す。<br> <br> <math> \begin{align} A \cdot B + \overline{A} \cdot C + B \cdot C &= A \cdot B + \overline{A} \cdot C + B \cdot C \cdot (A + \overline{A}) && \text{(補元法則: } A + \overline{A} = 1 \text{)} \\ &= A \cdot B + \overline{A} \cdot C + A \cdot B \cdot C + \overline{A} \cdot B \cdot C && \text{(分配法則)} \\ &= A \cdot B \cdot (1 + C) + \overline{A} \cdot C \cdot (1 + B) && \text{(分配法則)} \\ &= A \cdot B + \overline{A} \cdot C && \text{(支配法則: } 1 + C = 1 \text{, } 1 + B = 1 \text{)} \end{align} </math><br> <br> ==== 簡単化の適用例 ==== 以下の積和形の論理式を変換法則を用いて簡単化する。<br> <br> <math> \begin{align} f &= A \cdot B \cdot C + A \cdot B \cdot \overline{C} + \overline{A} \cdot B \cdot C \\ &= A \cdot B \cdot (C + \overline{C}) + \overline{A} \cdot B \cdot C && \text{(分配法則)} \\ &= A \cdot B \cdot 1 + \overline{A} \cdot B \cdot C && \text{(補元法則: } C + \overline{C} = 1 \text{)} \\ &= A \cdot B + \overline{A} \cdot B \cdot C && \text{(恒等法則)} \\ &= B \cdot (A + \overline{A} \cdot C) && \text{(分配法則)} \\ &= B \cdot (A + \overline{A}) \cdot (A + C) && \text{(分配法則 (OR形式))} \\ &= B \cdot 1 \cdot (A + C) && \text{(補元法則: } A + \overline{A} = 1 \text{)} \\ &= B \cdot (A + C) && \text{(恒等法則)} \\ &= A \cdot B + B \cdot C && \text{(分配法則)} \end{align} </math><br> <br><br> == クワイン・マクラスキー法による簡単化 == ==== 概要 ==== クワイン・マクラスキー法 (QM法) は、主加法標準形を体系的に簡単化するためのアルゴリズムである。<br> <br> * カルノー図と異なり、変数が多い場合 (5個以上) でも適用可能 * コンピュータによる自動化に適しており、最簡形であることを保証する。 * 全ての主項を列挙し、必要最小限の主項の集合を求める。 <br> ==== 手順 ==== クワイン・マクラスキー法の手順を以下に示す。<br> <br> # 主加法標準形の全最小項を2進数で表し、1のビット数でグループ分けする。 # 隣接グループ (1のビット数が1だけ異なる) 間で、正確に1ビットだけ異なる項を組み合わせる。 #: (異なるビットをダッシュ「-」で置換) # 組み合わせ可能な項がなくなるまで繰り返す。<br>組み合わせできなかった項が主項 (prime implicant) となる。 # 主項表を作成する。 #: (行: 主項、列: 元の最小項) # 必須主項 (essential prime implicant) を特定する。 #: (ある最小項をカバーする主項が1つだけの場合、その主項は必須) # 必須主項で全最小項がカバーされるか確認し、不足があれば追加の主項を選択する。 # 選択した主項の論理和が簡単化された論理式となる。 <br> ==== 具体例 ==== 例として <math>f = \sum m(0, 1, 2, 3, 7)</math> を簡単化する。<br> <br> ===== ステップ 1 : 最小項を1のビット数でグループ分け ===== <center> {| class="wikitable" |+ ステップ1 : グループ分け ! グループ (1のビット数) !! 最小項 !! 2進数 |- | 0 || <math>m_0</math> || 000 |- | 1 || <math>m_1</math> || 001 |- | 1 || <math>m_2</math> || 010 |- | 2 || <math>m_3</math> || 011 |- | 3 || <math>m_7</math> || 111 |} </center> <br> ===== ステップ 2 : 隣接グループ間で1ビットだけ異なる項を組み合わせ ===== <center> {| class="wikitable" |+ ステップ2 : 第1回の組み合わせ ! 組み合わせ !! 結果 !! カバーする最小項 |- | <math>m_0</math>(000) と <math>m_1</math>(001) || 00- || {0, 1} |- | <math>m_0</math>(000) と <math>m_2</math>(010) || 0-0 || {0, 2} |- | <math>m_1</math>(001) と <math>m_3</math>(011) || 0-1 || {1, 3} |- | <math>m_2</math>(010) と <math>m_3</math>(011) || 01- || {2, 3} |- | <math>m_3</math>(011) と <math>m_7</math>(111) || -11 || {3, 7} |} </center> <br> ===== ステップ 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}) * これ以上の組み合わせは不可能 <br> 主項の一覧を以下に示す。<br> <br> * 0-- → <math>\overline{A}</math> (m0, m1, m2, m3をカバー) * -11 → <math>B \cdot C</math> (m3, m7をカバー) <br> ===== ステップ 4 : 主項表を作成 ===== <center> {| class="wikitable" |+ ステップ4 : 主項表 ! 主項 !! <math>m_0</math> !! <math>m_1</math> !! <math>m_2</math> !! <math>m_3</math> !! <math>m_7</math> |- | <math>\overline{A}</math> (0--) || ○ || ○ || ○ || ○ || |- | <math>B \cdot C</math> (-11) || || || || ○ || ○ |} </center> <br> ===== ステップ 5 : 必須主項を特定する ===== * <math>m_0</math>, <math>m_1</math>, <math>m_2</math> は <math>\overline{A}</math> のみがカバーするため、<math>\overline{A}</math> は必須主項 * <math>m_7</math> は、<math>B \cdot C</math> のみがカバーするため、<math>B \cdot C</math> は必須主項 * <math>m_3</math> は両方がカバーするが、両主項が既に必須として選択されているため問題なし。 <br> 全最小項がカバーされたため、簡単化結果は以下の通りである。<br> <br> <math>f = \overline{A} + B \cdot C</math><br> <br><br> == 主乗法標準形との関係 == ==== 補集合による変換 ==== n変数の関数では、<math>0</math> から <math>2^{n} - 1</math> までの全ての番号のうち、最小項番号の補集合が最大項番号となる。<br> <br> * 例: <math>\sum m(1, 2, 4, 7)</math> の場合 *: 全体集合 <math>{0,\, 1,\, \cdots, \, 7}</math> から <math>{1, \, 2, \, 4, \, 7}</math> を除いた <math>{0, \, 3, \, 5, \, 6}</math> が最大項番号となる。 *: よって <math>f = \prod M(0, 3, 5, 6)</math> と表現される。 <br> 逆に、最大項番号の補集合が最小項番号となる。<br> <br> ==== ド・モルガンの定理による変換 ==== 補関数を求めて展開することにより、主加法標準形から[[情報理論 - 主乗法標準形]]へ変換できる。<br> <br> 手順を以下に示す。<br> <br> # 関数 <math>f</math> の補関数 <math>\overline{f}</math> を求める (fの値が0の行の最小項の和) # ド・モルガンの定理で <math>\overline{f}</math> の否定を取る # 整理すると主乗法標準形が得られる <br> 例: <math>f = \sum m(1, 2, 4, 7)</math> からの変換を以下に示す。<br> <br> * 補関数の導出 *: f の値が0となる行の最小項番号は {0, 3, 5, 6} であるため *: <math>\overline{f} = \sum m(0, 3, 5, 6) = m_0 + m_3 + m_5 + m_6</math> * 否定を取る *: <math>f = \overline{\overline{f}} = \overline{m_0 + m_3 + m_5 + m_6}</math> * ド・モルガンの定理を適用 *: <math>f = \overline{m_0} \cdot \overline{m_3} \cdot \overline{m_5} \cdot \overline{m_6}</math> * <math>\overline{m_i} = M_i</math> の関係を利用 *: <math>f = M_0 \cdot M_3 \cdot M_5 \cdot M_6 = \prod M(0, 3, 5, 6)</math> <br><br> == 関連ページ == * [[情報理論 - 主乗法標準形]] * [[情報理論 - カルノー図]] <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板,主加法標準形,PDNF,最小項,minterm,SOP,canonical form,ブール代数,論理回路,標準形,クワイン・マクラスキー法,Quine-McCluskey,論理式簡単化 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:情報理論]]
情報理論 - 主加法標準形
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse