1

を使用して、次の関数の積の合計を見つけようとしていますK-Map:

F(A,B,C,D) = m(0, 1, 5, 7, 8, 10, 14, 15)

関数は既に積和形式になっているためK-map、関数で指定された値のボックスに '1' をマークして単純化します。

結果は次のとおりです。

B'C'D' + AC'D + B'CD + A'CD'

しかし、本の中で、答えは次のように書かれています。

AC'D' + BC'D + A'CD + B'CD'

また

AB'D' + ABC' + A'BD + A'B'C

どこが間違っているのかわからない?

4

1 に答える 1

1

関数 F(A,B,C,D) = m(0, 1, 5, 7, 8, 10, 14, 15) がこの真理値表に変換されると仮定します(そして「ドントケア」はありません) "状態):

 index | ABCD | output
----------------------------------------
     0 | 0000 | 1 ... m_0 = ¬A·¬B·¬C·¬D
     1 | 0001 | 1 ... m_1 = ¬A·¬B·¬C·D
     2 | 0010 | 0     M_2 = A + B + ¬C + D
     3 | 0011 | 0     M_3 = A + B + ¬C + ¬D
     4 | 0100 | 0     M_4 = A + ¬B + C + D
     5 | 0101 | 1 ... m_5 = ¬A·B·¬C·D
     6 | 0110 | 0     M_6 = A + ¬B + ¬C + D
     7 | 0111 | 1 ... m_7 = ¬A·B·C·D
     8 | 1000 | 1 ... m_8 = A·¬B·¬C·¬D
     9 | 1001 | 0     M_9 = ¬A + B + C + ¬D
    10 | 1010 | 1 ... m_10 = A·¬B·C·¬D
    11 | 1011 | 0     M_11 = ¬A + B + ¬C + ¬D
    12 | 1100 | 0     M_12 = ¬A + ¬B + C + D
    13 | 1101 | 0     M_13 = ¬A + ¬B + C + ¬D
    14 | 1110 | 1 ... m_14 = A·B·C·¬D
    15 | 1111 | 1 ... m_15 = A·B·C·D

対応するminterms (正規の DNF) の合計は次のようになります。

F(A,B,C,D) = ∑(m_0, m_1, m_5, m_7, m_8, m_10, m_14, m_15) = 
           = m_0 + m_1 + m_5 + m_7 + m_8 + m_10 + m_14 + m_15 =
           = ¬A·¬B·¬C·¬D + ¬A·¬B·¬C·D + ¬A·B·¬C·D + ¬A·B·C·D + 
             + A·¬B·¬C·¬D + A·¬B·C·¬D + A·B·C·¬D + A·B·C·D .

対応する K マップ

最初のカルノー マップで、標準的な (完全な) DNF (個別に丸で囲まれている) のすべての最小項を確認できます。

m_0  = ¬A·¬B·¬C·¬D (blue)
m_1  = ¬A·¬B·¬C·D (purple)
m_5  = ¬A·B·¬C·D (green)
m_7  = ¬A·B·C·D (orange)
m_8  = A·¬B·¬C·¬D (black)
m_10 = A·¬B·C·¬D (yellow)
m_14 = A·B·C·¬D (brown)
m_15 = A·B·C·D (pink)

2 番目の K マップは、元の関数に対する最小の DNF を示しています。

F(A,B,C,D) = ¬A·¬B·¬C (blue) + ¬A·B·D (purple) + A·¬B·¬D (orange) + A·B·C (green)

3 番目のK-mapも最小限の DNF ですが、前の式とは異なります。

F(A,B,C,D) = ¬B·¬C·¬D (orange) + ¬A·¬C·D (blue) + A·C·¬D (green) + B·C·D (purple)

maxtermsを使用して、元の出力関数をその積として表現することもできます。それが正規の CNF になります。

F(A,B,C,D) = ∏(M_2, M_3, M_4, M_6, M_9, M_11, M_12, M_13) = 
           = M_2·M_3·M_4·M_6·M_9·M_11·M_12·M_13 =
           = (A + B + ¬C + D)·(A + B + ¬C + ¬D)·(A + ¬B + C + D)·
            ·(A + ¬B + ¬C + D)·(¬A + B + C + ¬D)·(¬A + B + ¬C + ¬D)·
            ·(¬A + ¬B + C + D)·(¬A + ¬B + C + ¬D) .

KマップのCNF

2 番目の図の最初の K マップは、元の関数のすべての maxterms を個別に丸で囲んで示しています。

M_2 = A + B + ¬C + D (purple)
M_3 = A + B + ¬C + ¬D (green)
M_4 = A + ¬B + C + D (blue)
M_6 = A + ¬B + ¬C + D (orange)
M_9 = ¬A + B + C + ¬D (pink)
M_11 = ¬A + B + ¬C + ¬D (yellow)
M_12 = ¬A + ¬B + C + D (black)
M_13 = ¬A + ¬B + C + ¬D (brown)

2 番目の図の 2 番目と 3 番目の K マップは両方とも、元の関数の最小の CNF (複数存在する可能性があります) を示しています。

F(A,B,C,D) = (A + B + ¬C) ... blue
            ·(A + ¬B + D) ... purple
            ·(¬A + B + ¬D) ... orange
            ·(¬A + ¬B + C) ... green

F(A,B,C,D) = (¬B + C + D) ... orange 
            ·(A + ¬C + D) ... green
            ·(B + ¬C + ¬D) ... purple
            ·(¬A + C + ¬D) ... blue

追加の質問がある場合は、私の回答にコメントしてください。

写真はラテックスを使用して生成されました。

于 2016-08-08T08:33:05.753 に答える