科学・計算関連

カルノー図の書き方は?真理値表から論理式を導く手順を解説!(作り方・例題)

カルノー図による論理式簡略化の結論
当サイトでは記事内に広告を含みます
技術ブログ特化メルマガはこちら

カルノー図は、真理値表に並んだ複数の条件を視覚的に整理し、できるだけ簡潔な論理式へ変換するための表です。

論理回路、デジタル回路、PLC制御、情報系の試験問題などで登場しますが、変数の並び方やグループ化のルールにつまずく人も少なくありません。

ポイントは、真理値表の値を正しく転記し、隣接する一のまとまりを最大サイズで囲むことです。

この記事では、二変数から四変数までのカルノー図の作り方、論理式の読み取り方、よくある間違いを例題とともに分かりやすく解説します。

カルノー図による論理式簡略化の結論

カルノー図による論理式簡略化の結論

それではまずカルノー図による論理式の簡略化について解説していきます。

カルノー図でできること

カルノー図を使う最大の目的は、真理値表から得られた論理式を短くし、回路構成を分かりやすくすることです。

論理式が長いままでも回路は作れますが、ANDゲートやORゲート、NOTゲートの数が増えるほど、配線や保守の負担も大きくなります。

そこで、同じ出力を保ちながら不要な変数を消せるカルノー図が役立ちます。

特に積和標準形から最小項をまとめて不要な文字を削る作業は、式だけを眺めるより直感的に進めやすいでしょう。

カルノー図は、真理値表を平面上に配置したものと考えると理解しやすくなります。

カルノー図では、出力が一になるマスを二個、四個、八個のように二の累乗でグループ化します。

大きなグループを作るほど消せる変数が増え、最終的な論理式は短くなります。

真理値表から導く基本手順

作業は、真理値表を作る、カルノー図へ出力値を書き込む、一のマスをグループ化する、残る変数から論理式を読むという順序です。

途中で論理式を急いで書こうとすると、補数の付け忘れや変数の見落としが起こりやすくなります。

まずは表の各行に対応するマスを確実に埋めることが大切です。

カルノー図の行列には、二進数を通常の順番ではなくグレイコード順で並べます。

グレイコードでは隣り合う項目どうしが一ビットだけ異なるため、隣接するマスをまとめたときに変数を一つ消せます。

作業順 行う内容 確認ポイント
一 入力変数と出力の真理値表を作る 全組み合わせがあるか確認します
二 出力が一の行をカルノー図へ転記する 行列の見出しはグレイコード順です
三 隣接する一を大きく囲む 二、四、八個で囲みます
四 各グループで変化しない変数を読む 変化する変数は式から除きます
五 グループごとの項をORで結ぶ 元の真理値表と照合します

最小化された論理式の考え方

グループ内で値が変わる変数は、出力を決める条件ではなくなるため、論理式から取り除けます。

たとえばABとA̅Bが隣接している場合、Bだけが変化しているため、二つの項はAへまとめられます。

これはブール代数の分配法則を図として扱っていることにほかなりません。

ただし、最小項をすべて一度だけ使う必要はありません。

同じ一のマスを複数のグループに含めることも認められており、そのほうが式を短くできる場合があります。

目に見える重複を避けようとして小さなグループばかり作ると、最小化の利点を失ってしまいます。

カルノー図の配置とグレイコード

続いてはカルノー図の配置とグレイコードを確認していきます。

二変数カルノー図の構成

二変数のカルノー図は、変数Aと変数Bの四通りを二行二列に並べた最も基本的な形です。

行をA、列をBに割り当てれば、各マスはAとBの値の組み合わせを表します。

二変数では列の並びが零、一だけなので、グレイコードを意識しなくても大きな混乱は起こりにくいでしょう。

それでも、隣接するマスは一つの変数だけが違うという原則を、ここで身につけておくことが重要です。

二変数の出力Fが、AとBの両方が一のときだけ一になる場合を考えます。

一になるマスはABだけなので、グループ化できず、論理式はF=ABとなります。

反対に、Aが一ならBの値に関係なく出力が一になるなら、A一B零とA一B一の二マスを囲みます。

このときBは変化しているため消え、F=Aと書けます。

三変数カルノー図の並び方

三変数では、通常は一変数を行、残り二変数を列に置きます。

たとえば行をA、列をBCとする場合、列見出しは零零、一、ではなく、零零、零一、一一、一零の順番です。

この順番を守る理由は、隣の列どうしでBまたはCのどちらか一方しか変わらないようにするためです。

端の列である零零と一零も隣接している点が、初学者には見落とされやすい部分でしょう。

カルノー図は平面の端で終わる表ではなく、左右と上下がつながった輪のような構造として扱います。

BCの見出し Bの値 Cの値 前の列との差
零零 零 零 開始位置です
零一 零 一 Cだけが変化します
一一 一 一 Bだけが変化します
一零 一 零 Cだけが変化します

四変数カルノー図の見方

四変数カルノー図は、二変数を行、残り二変数を列へ置く四行四列の表です。

行も列も、零零、零一、一一、一零というグレイコード順にします。

マスは十六個ありますが、隣接関係を理解できれば操作の考え方は三変数の場合と変わりません。

四隅のマスは互いに隣接しており、条件が合えば四隅だけを一つのグループとして囲めます。

この性質を利用すると、表の中央では離れて見える項でも端をまたいで大きくまとめることが可能です。

紙に書くときは、端の接続を意識するために外側へ薄く線を引くと確認しやすくなります。

真理値表からカルノー図へ転記する手順

続いては真理値表からカルノー図へ転記する手順を確認していきます。

出力が一の行を見つける方法

積和形の論理式を求めるときは、真理値表の出力Fが一になる行へ注目します。

出力が零の行まで書き写す必要はありますが、グループ化の対象になるのは基本的に一のマスです。

入力の並びとカルノー図の見出しを照合し、一となる位置へ一を書き込みます。

この段階では、まだ囲み方を考えないほうが安全です。

転記ミスがあると、どれほど正しくグループ化しても別の論理関数になってしまいます。

真理値表の行番号をそのままカルノー図の左から右へ置かないよう注意が必要です。

カルノー図では、二進数順ではなくグレイコード順で位置を決めます。

不要条件の扱い方

実際の回路設計では、入力として発生しない組み合わせや、出力がどちらでもよい組み合わせが存在することがあります。

このような条件はドントケア条件と呼ばれ、カルノー図ではXやdなどで記します。

ドントケアは必ず使うものではなく、グループを大きくして式を簡単にできる場合だけ一として利用します。

出力を一にしてはいけない条件ではないため、柔軟に扱える点が特徴です。

ただし、仕様書で無効入力とされていても将来の拡張で使われる可能性があるなら、設計意図を確認してから使うべきでしょう。

転記後に確認したい項目

カルノー図を埋め終えたら、真理値表の全行と一対一に対応しているかを確認します。

三変数なら八マス、四変数なら十六マスあるため、数だけを頼りにすると配置の間違いを見逃すおそれがあります。

入力値を一行ずつ追い、対応する行見出しと列見出しの交点を確認する方法が確実です。

特に列見出しの一一と一零を入れ替える誤りは多いため、一ビットだけ変化する並びになっているかを毎回見直しましょう。

完成後の検算では、最終論理式から真理値表を再作成して一致するかを見ると安心です。

グループ化と論理式の読み取り

続いてはグループ化と論理式の読み取りを確認していきます。

二の累乗で囲む原則

カルノー図で囲めるマスの数は、一個、二個、四個、八個、十六個のいずれかです。

三個や六個など、二の累乗ではない数で囲むことはできません。

二個を囲むと一変数を消せて、四個なら二変数、八個なら三変数を消せます。

そのため、可能なら最初に八個や四個の大きなグループを探すのが基本です。

小さいグループから先に確定すると、後で大きく囲める可能性を見失いやすくなります。

四変数のカルノー図で四つのマスを囲み、その四マス内でAとBが変化し、Cが一、Dが零のままとします。

変化するAとBは消えるため、このグループが表す項はCD̅です。

端と角をまたぐグループ化

カルノー図の左端と右端は隣接し、上端と下端も隣接しています。

さらに四隅は、条件が合えば同じ四マスグループとして扱えます。

表の見た目だけで距離を判断すると、端をまたぐ最適なグループを見落とすでしょう。

これはカルノー図がグレイコードで配置されているからこそ成り立つ規則です。

端の接続を使えるようになると、複雑に見えた論理式も短い積項へ整理できる場面が増えます。

重複グループの利用

一つのマスは、必要であれば複数のグループに重ねて含められます。

たとえば、ある一のマスを中心に左右の二マスグループと上下の二マスグループを作れば、それぞれ別の変数を消せる場合があります。

グループを重複させる目的は、すべての一を少なくとも一回カバーしながら、全体の項数や文字数を減らすことです。

ただし、意味のない重複を増やすと式が長くなるだけなので注意しましょう。

孤立した一があれば最優先で囲み、その後に残りを大きなグループで覆う考え方が実践的です。

最小化では、すべての一を覆うことが必須条件です。

そのうえで、グループはできるだけ大きく、必要な数だけ選ぶことが重要になります。

カルノー図の例題と計算方法

続いてはカルノー図の例題と計算方法を確認していきます。

二変数の例題

入力をAとB、出力をFとし、Aが一のときだけFが一になる関数を考えます。

真理値表では、Aが一でBが零の行と、Aが一でBが一の行が一です。

カルノー図では、この二マスが横または縦に隣接します。

二マスをまとめるとBは零と一の両方を取るため消え、Aだけが残ります。

したがって簡略化した式はF=Aです。

A B F カルノー図での扱い
零 零 零 囲みません
零 一 零 囲みません
一 零 一 A一の隣接マスです
一 一 一 A一の隣接マスです

三変数の例題

次に、Aが一かつBが一のとき、Cの値に関係なく出力が一になる関数を考えます。

真理値表では、A一B一C零とA一B一C一の二行が一です。

三変数カルノー図で該当する二マスを囲むと、Cだけが変化しています。

そのためCは消え、求める論理式はF=ABとなります。

この例は、カルノー図によって補数を含む二項を一項へまとめる基本パターンです。

元の積和標準形はF=ABC̅+ABCです。

カルノー図で二マスをグループ化すると、F=ABへ簡略化できます。

四変数の例題

四変数では、四マスまたは八マスのグループを見つけられるかが重要になります。

たとえばAとBが一定で、CとDのすべての組み合わせで一となる四マスがあれば、CとDは消えます。

残るのはAとBだけなので、グループに対応する項はAB、A̅B、AB̅などになります。

また、表の左右端にある二列をまたいで四マスを作れるケースもあります。

端の接続を見逃さないことが、四変数問題を効率よく解くための鍵でしょう。

カルノー図で起こりやすい間違い

続いてはカルノー図で起こりやすい間違いを確認していきます。

二進数順で見出しを書く誤り

三変数や四変数のカルノー図で、見出しを零零、零一、一零、一一と二進数順に書くのは誤りです。

この並びでは、零一から一零へ移ると二つのビットが同時に変化してしまいます。

すると隣接するマスをまとめても、一変数だけを消すという規則が成り立ちません。

正しい順番は零零、零一、一一、一零です。

作図の最初にグレイコードを書き、途中で見出しを変更しないようにするとミスを防げます。

小さなグループだけで終える誤り

一のマスを見つけるたびに二個ずつ囲むと、四個や八個で囲める箇所を見逃すことがあります。

二個のグループは間違いではありませんが、より大きなグループが可能なら論理式はさらに短くなります。

最初に最大サイズの候補を探し、その後に必要な二個グループや一個グループを追加する順序がおすすめです。

囲み線を複数の色で書けるなら、候補ごとに色を変えると比較しやすくなります。

補数の付け方を逆にする誤り

グループ内で変化しない変数が零の場合、その変数には否定を付けます。

変化しない変数が一なら、否定を付けずに書きます。

たとえばAが常に零でBが常に一なら、項はA̅Bです。

変化している変数は書かないため、すべての変数を残そうとする必要はありません。

最終式を書いたら、グループ内の代表的な入力値を代入し、出力が一になるかを検算すると安心です。

カルノー図による論理式導出のまとめ

カルノー図は、真理値表から論理式を簡略化し、論理回路を効率よく設計するための有効な方法です。

まず真理値表の出力をカルノー図へ正確に転記し、行と列の見出しをグレイコード順に配置します。

次に、一のマスを二個、四個、八個のように大きくグループ化し、各グループで変化しない変数だけを残します。

左右端や上下端、四隅も隣接しているため、表の端を越えたグループ化も忘れないようにしましょう。

最終的には、すべての一を覆えているか、導いた論理式が元の真理値表と一致するかを確認することが大切です。

グレイコード、最大グループ、端の接続という三つの要点を押さえれば、カルノー図の書き方は着実に身につきます。