カルノー図・ベイチ図による論理式の簡単化

このページでは、カルノー図およびベイチ図を用いて論理式を簡単化する方法を説明します。

カルノー図とベイチ図の違いは変数と数字の書き方のみなので、基本的に同じだと思っていただいてかまいません。

実際に書く場合は、ベイチ図の方が直観的であるため、ベイチ図を用いる方が良いかもしれません。(詳しく分けないでどちらもカルノー図と呼ぶこともあります。)

カルノー図の基本

まずは2変数の場合を考えます。

2変数のカルノー図。変数Aが真の列を赤、変数Bが真の行を青で囲んで示している

この図では、変数\(A\)と変数\(B\)の全ての組み合わせを表しています。

で囲まれた部分が、変数\(A\)が真(1)の時、で囲まれた部分が、変数\(B\)が真(1)の時を表しています。

例えば以下のような論理式があったとします。ブール代数の公式からすぐに簡単化できますが、ここではカルノー図を用いて簡単化してみます。

\(f = A \cdot B + A\)

この論理式をOR(+)の部分で分離し、それぞれの項に対応する部分に1を書いていきます。

まずは、内側に何も記載されていないカルノー図を書きます。

内側に何も書かれていない2変数のカルノー図

次に、論理式の各項に対応する部分に1を書きます。

ここでは、\(A \cdot B\)に対応する部分に1を書きます。(Aであり、Bである部分なので右下の部分です。)

AかつBに対応する右下のマスに1を書いたカルノー図

次に、\(A\)に対応する部分に1を書きます。(右側の2つです。)

\(A\)に対応するのは10(右上)と11(右下)の部分ですが、11の部分には1が書かれているので、10の部分にのみ1を書きます。

Aに対応する右上のマスにも1を書いて完成したカルノー図

図が完成しました。

ここで、図をよく見てみると、1が書かれている部分が連続していることがわかります。

しかも、1が書かれている部分は\(A\)に対応する部分のみであるため、

\(A \cdot B + A = A\)

となります。

ベイチ図の基本

残念ながらカルノー図は、あまり直観的ではありません。

そこで、\(A\)\(B\)の領域として表現したものをベイチ図と呼びます。

2変数のベイチ図。AとBの領域を帯で示している

この図を使うことで、カルノー図よりも直観的に論理式を簡単化することができます。

例えば、

\(f = A \cdot B + \overline A \cdot B\)

という論理式があったとします。

ここでは、\(A \cdot B\)は右下の部分、\(\overline A \cdot B\)は左下の部分に対応するため、すぐに結果が\(B\)であると判断することができます。

カルノー図(3変数以上)

図の作り方

3変数

ここまで、2変数の場合を考えてきましたが、その程度であれば、図を使うまでもありません。

そこで、今度は3変数の場合を考えてみます。

ここからは、カルノー図派の人にも、ベイチ図派の人にも優しいように、カルノー図とベイチ図の両方の特性を持つ図を用います。

3変数のカルノー図。ベイチ図と同様に変数の領域も帯で示している

この図では、変数\(A\)と変数\(B\)と変数\(C\)の全ての組み合わせを表しています。

ところで、「なぜ、00, 01, 10, 11の順ではなく、00, 01, 11, 10の順になっているのか?」と思った方もいるかもしれません。

それは、カルノー図を用いて論理式を簡単化する際に、隣り合う符号が1ビットしか違わないようにするためです(このような並びはグレイコードとも呼ばれます)。

この性質は、端と端をつないでループさせた場合にも成り立ちます。

00, 01, 10, 11の順にすると、01→10や、ループでつないだ11→00で2ビット同時に変わる箇所ができてしまいます。

00 → 01 → 1011 → (00)

00, 01, 11, 10の順にすると、ループでつないだ10→00も含めて、どの隣同士も1ビットしか変わりません。

00 → 01 → 11 → 10 → (00)

4変数

4変数の場合は、以下のようになります。

4変数のカルノー図

これは、変数\(A\)と変数\(B\)と変数\(C\)と変数\(D\)の全ての組み合わせを表しています。

以下はそれぞれの領域の例です。

4変数カルノー図で各変数や積項に対応する領域の例

例題

例題として、以下の論理式をカルノー図に書いてみてください。

\(f = A \cdot B \cdot C \cdot D + A \cdot B \cdot C \cdot \overline D + A \cdot \overline B \cdot C \cdot D + A \cdot \overline B \cdot C \cdot \overline D\)

答え
例題の答え。Cが真かつAが真の4マスに1が書かれたカルノー図

上記のようになれば正解です。

図の見方

ここまでで、論理式を見て、カルノー図を書くことができるようになったので、ここからは、どのように論理式に戻すかを説明していきます。

これから、書いた1の集合を囲っていくわけですが、どこでも囲っていいわけではありません。

以下のような法則に基づき、囲っていきます。

  • 隣り合った1を囲う(1が単体でしか存在できなければ単体で囲う)
  • 囲いは長方形にする(L字型などは不可)
  • 一つの囲いの1の数は\(2^n\)個(1, 2, 4, 8, 16...個)
  • なるべく大きく囲む
  • 1は何回でも使える

ここでの「隣り合う」とは端同士も含むことに注意してください。

良い例

以下に、良い例を示します。

良い例1。中央の4マスを1つの囲いで囲んだカルノー図

普通に囲み、\(f = B \cdot D\)とわかります。

良い例2。左右両端の列の上2マスずつを、端同士のループとして1つに囲んだカルノー図

2個のループにしないで4個で1つの囲いにし、\(f = \overline B \cdot \overline C\)とわかります。

良い例3。四隅の4マスを1つの囲いとみなしたカルノー図

角同士も一つの囲いとみなし、\(f = \overline B \cdot \overline D\)とわかります。

良い例4。1を重複して使い、左半分と中央の4マスを囲んだカルノー図

1が重複していてもよく、\(f = \overline A + B \cdot D\)とわかります。

悪い例

以下に、悪い例を示します。

悪い例1。1つに囲えるのに2つの囲いに分けてしまったカルノー図

ひとつの囲いにできるのに分けてしまっています。

悪い例2。囲いの中の1の数が2のn乗個になっていないカルノー図

\(2^n\)個になっていません。

悪い例3。不要な囲い(緑)を含むカルノー図

囲い方はあっていますがの部分はなくても良いので、答えは\(f = A \cdot D + \overline B \cdot \overline D\)になります。(\(A \cdot \overline B\)は必要ないので今回は悪い例にしました。)

例題

例題として、以下の論理式をカルノー図に描き、簡単化してください。

\(f = A \cdot \overline B \cdot C \cdot D + A \cdot \overline B \cdot C \cdot \overline D + \overline A \cdot B \cdot D + A \cdot B\)

答え
例題の答えのカルノー図。3つの囲いでA・B、A・C、B・Dを囲んでいる

上記のようなカルノー図を描くことができ、以下のように簡単化できます。

\(f = A \cdot B + A \cdot C + B \cdot D\)

関連ツール

このサイトには、論理式を扱うWebツールがあります。答え合わせなどに活用してください。