カルノー図の簡単化方法は?グループ化と論理式の求め方を解説!(ドントケア・主項・積和形・ルール)
カルノー図は、複数の論理変数で構成された真理値表を視覚的に整理し、論理式を少ない項へ簡単化するための図です。
ブール代数だけで式を変形すると見落としが起こりやすい場面でも、隣接するマスをグループ化することで、不要な変数を直感的に消去できます。
本記事では、積和形を中心に、グループ化のルール、ドントケアの活用、主項の選び方、論理式への変換手順を順番に解説します。
カルノー図による論理式簡単化の結論

それではまず、カルノー図で論理式を簡単化する際の結論について解説していきます。
カルノー図では、出力が1となるマスを二の累乗個でできるだけ大きくまとめることが基本です。
大きなグループほど消去できる変数が増えるため、最終的な論理式は短くなります。
簡単化の基本手順
カルノー図の作業は、真理値表から1の位置を転記し、隣接する1をグループ化し、そのグループごとに共通する変数を取り出す流れです。
グループの大きさは1個、2個、4個、8個、16個のように、必ず二の累乗にします。
たとえば4変数のカルノー図では、横方向と縦方向の両方を利用し、4個や8個のまとまりを優先して探します。
グループに含まれるマスの間で値が変化する変数は、出力条件に影響しないため論理式から消せます。
4変数A、B、C、Dで、ある4マスのグループ内ではAとBが常に1、CとDが変化しているとします。
このグループを表す項はABです。
CとDは0と1の両方を取るため、条件として残す必要がありません。
大きいグループを優先する理由
2個のマスをまとめると1変数を消せますが、4個なら2変数、8個なら3変数を消去できます。
したがって、同じ1を覆えるなら最初に最大のグループ候補を探すほうが効率的です。
小さなグループだけを先に作ると、後から大きなまとまりを作れなくなり、項数が増える場合があります。
ただし、最大グループだけで全ての1を覆えないこともあります。
その場合は大きなグループを残しつつ、覆われていないマスを補う最小限のグループを追加します。
重複を許す考え方
カルノー図のグループ化では、同じ1のマスを複数のグループに入れても問題ありません。
むしろ、重複させることで4個や8個のグループを作れ、式が短くなることがあります。
各マスを一度しか使えないという制約はありません。
重複は無駄に見えても、変数の削減という目的にかなうなら有効な選択です。
| グループのマス数 | 消去できる変数数 | 4変数図で残る変数数 |
|---|---|---|
| 1個 | 0個 | 4個 |
| 2個 | 1個 | 3個 |
| 4個 | 2個 | 2個 |
| 8個 | 3個 | 1個 |
| 16個 | 4個 | 0個 |
カルノー図の目的は、1をきれいに分割することではありません。
すべての1を覆いながら、できるだけ大きなグループを使い、積和形の項数と変数数を減らすことが重要です。
カルノー図の配置と隣接関係
続いては、カルノー図の配置と隣接関係を確認していきます。
カルノー図を正しく扱うには、行と列が通常の二進数順ではなく、グレイコード順に並ぶ理由を理解することが大切です。
グレイコードによる並び順
4変数カルノー図では、一般に行と列を00、01、11、10の順に配置します。
この順番では、隣り合う番号同士で変化するビットが必ず1つだけになります。
そのため、隣接するマスをまとめたときに、ちょうど1変数を消去できる構造になります。
00、01、10、11のような通常の二進数順に配置すると、01と10の間で2ビットが変わり、正しい簡単化ができません。
| 列の順序 | 変化するビット | 隣接として扱えるか |
|---|---|---|
| 00から01 | 1ビット | 扱える |
| 01から11 | 1ビット | 扱える |
| 11から10 | 1ビット | 扱える |
| 10から00 | 1ビット | 扱える |
端と端がつながる構造
カルノー図では、左端と右端、上端と下端も隣接しています。
平面上では離れて見えますが、図を筒状やトーラス状に丸めたような関係を持つためです。
四隅のマスも互いに隣接する場合があります。
端のつながりを見落とすと、本来4個や8個にできるグループを小さく分けてしまいます。
特に試験問題では、図の中央だけを見てグループ化するミスが多いため注意が必要でしょう。
対角線が隣接しない理由
対角線方向のマスは、通常2つ以上の変数が同時に変化します。
したがって、対角線で接しているだけの1同士は同じグループにできません。
上下左右の関係に加えて端同士の接続だけを隣接と考えると、判断しやすくなります。
たとえば00と11は見た目に近い位置へ置かれることがあっても、2ビットが異なるため直接は結べません。
カルノー図で隣接と認められるのは、対応する組み合わせで1変数だけが異なるマスです。
上下左右と端の接続を確認し、対角線方向はグループに入れないことが基本ルールです。
グループ化のルールと優先順位
続いては、グループ化のルールと優先順位を確認していきます。
作図に慣れていない段階では、どの1を先に囲むかで迷いやすいため、一定の順序で確認すると安定します。
二の累乗個で囲むルール
グループは長方形または正方形になるように囲み、含めるマス数は二の累乗に限定します。
3個、5個、6個などのまとまりは、たとえ1が連続していてもグループとして使えません。
2個のグループは横方向でも縦方向でも構いません。
4個のグループは1行に並ぶ形、1列に並ぶ形、または2行2列の形にできます。
形よりも、全てのマスが隣接関係で連続しているかを確認することが重要です。
必須主項から選ぶ手順
主項とは、これ以上大きなグループへ拡張できない積項の候補を指します。
その中でも、ある1のマスを唯一覆っている主項は必須主項です。
必須主項に含まれるマスは、他のグループでは代替できないため、最初に採用します。
必須主項を先に確定し、残った1を覆う主項を追加すると、選択の迷いを減らせます。
全ての主項を採用する必要はなく、出力が1となる全マスを覆う最小の組み合わせを選びます。
ある1のマスが、グループPにしか入らない場合を考えます。
このときPは必須主項なので、ほかの選択肢に関係なく採用します。
その後、Pで覆えなかった1だけを対象にして、追加グループを選びます。
小さなグループを補助に使う場面
大きなグループを優先しても、孤立した1が残る場合があります。
隣接する1がなければ、そのマスは1個のグループとして残すしかありません。
また、2個のグループを一つ追加するだけで未被覆の1を補えるなら、4個のグループを複数追加するより簡潔になることもあります。
重要なのは、グループの数だけではありません。
各グループから生じる変数数も含め、全体の論理式が短くなるかを比較します。
| 確認順序 | 見るポイント | 目的 |
|---|---|---|
| 1 | 8個や16個の候補 | 大幅な変数削減 |
| 2 | 4個の候補 | 2変数の削減 |
| 3 | 必須主項 | 代替できない1の確保 |
| 4 | 未被覆の1 | 必要最小限の追加 |
| 5 | 重複グループ | 式全体の短縮 |
積和形と主項からの論理式作成
続いては、積和形と主項からの論理式作成を確認していきます。
グループを作った後は、各グループに共通する変数だけを取り出し、論理和で接続します。
積和形の意味
積和形は、論理積で作った項を論理和で結ぶ表現です。
変数AとBの論理積はAB、Aの否定とCの論理積はA̅Cのように記述します。
複数のグループから得た積項は、加算記号に相当する論理和で結びます。
たとえばF=AB+A̅Cという式では、ABまたはA̅Cが1なら、出力Fは1になります。
カルノー図で1をグループ化する場合、求める標準形は基本的に積和形です。
共通変数の読み取り方
グループ内で常に1の変数は、そのまま残します。
常に0の変数は否定記号を付けて残します。
グループ内で0と1が変化する変数は式から消去します。
変数の値を一つのマスだけで判断せず、グループ全体で確認することが正確な読み取りにつながります。
4マスのグループにおいて、Aは全マスで0、Bは全マスで1、CとDは変化しているとします。
このグループの積項はA̅Bです。
Aは0なので否定、Bは1なのでそのまま残り、CとDは消えます。
主項の比較と最小化
主項が複数ある場合、どの組み合わせでも全ての1を覆えるとは限りません。
まず必須主項を採用し、その後に未被覆のマスを最も少ない追加項で覆える候補を探します。
同じ項数なら、変数数が少ない項を含む組み合わせが有利です。
ただし、授業や問題集では主項の選び方が複数あり、異なる最簡式が認められるケースもあります。
真理値表に戻して出力が一致するなら、式の形が異なっていても論理的には等価です。
積和形では、各グループが一つの積項になります。
グループ内で変化しない変数だけを残し、グループごとの積項を論理和で結ぶことが、式を求める基本手順です。
ドントケア条件の活用方法
続いては、ドントケア条件の活用方法を確認していきます。
ドントケアは、入力の組み合わせが実際には発生しない場合や、出力が0でも1でも支障がない場合に使う条件です。
ドントケアの意味
ドントケア条件は、カルノー図でXやdなどの記号で示されます。
これは出力を必ず1にする必要はないものの、簡単化に有利なら1として扱ってよいマスです。
逆に、利用しても式が短くならないなら、グループに入れなくても構いません。
ドントケアは必ず使う値ではなく、使ってもよい値と考えると判断しやすいでしょう。
大きなグループへの拡張
たとえば1が2個しかなくても、その隣にドントケアが2個あれば、4個のグループを作れる場合があります。
この場合、本来なら3変数が残る式を、2変数だけの式へ減らせる可能性があります。
ドントケアを含めたグループは、実際の1を少なくとも1個以上含む必要があります。
ドントケアだけを囲んで積項を作ると、必要のない出力1を追加することになるため注意してください。
| マスの種類 | グループへ入れる扱い | 役割 |
|---|---|---|
| 1 | 必ず覆う | 出力1を保証する |
| 0 | 入れない | 出力0を維持する |
| Xまたはd | 必要なら入れる | グループ拡張に利用する |
利用時の注意点
ドントケアを使うと、未使用の入力組み合わせに対する出力が1へ変わることがあります。
その入力が将来も絶対に使われないか、仕様変更で意味を持たないかを確認する姿勢が必要です。
回路設計では、予約コードや未割り当ての状態をドントケアとして扱うことがあります。
一方で、安全装置や異常検出の回路では、未定義入力に対して安易に1を出す設計が危険になる場合もあります。
論理式の短縮だけでなく、システムとして望ましい動作かを考えることが大切です。
ドントケアを使った結果の式は、実際に使用する入力条件で真理値表と照合すると安心です。
カルノー図を解く際の確認事項
続いては、カルノー図を解く際の確認事項を確認していきます。
手順そのものを理解していても、記号の読み違いやグループの見落としで答えが変わることがあります。
真理値表からの転記確認
最初に確認したいのは、真理値表からカルノー図への転記です。
変数の並び順を取り違えると、その後のグループ化が全て正しくても別の論理式になります。
行と列に割り当てた変数を明記し、00、01、11、10のグレイコード順になっているかを確認してください。
特に3変数や4変数では、変数名の位置を省略すると途中で混乱しやすくなります。
全ての1を覆う確認
グループ化を終えたら、出力が1の全マスに印を付け、少なくとも一つのグループに含まれているかを確認します。
1個でも覆い忘れると、その入力で出力が0となり、元の真理値表と一致しません。
一方で0のマスを含めていないかも同時に確認します。
全ての1を覆うことと、0を一つも含めないことが、正しい積和形を作るための最低条件です。
式と真理値表の再照合
完成した論理式は、代表的な入力を代入して確認するとミスを見つけやすくなります。
特にグループの境界にあるマス、端をまたいだグループ、ドントケアを利用した部分は優先して検算しましょう。
論理シミュレータや表計算ソフトを使える環境なら、全入力パターンを比較する方法も有効です。
計算だけではなく、回路図へ変換した際のゲート数や入力数を見ると、簡単化の効果を実感できます。
カルノー図の答えを確認する際は、グループの形だけを見るのでは不十分です。
真理値表の1を全て覆っているか、0を含めていないか、求めた式が元の出力と一致するかを順番に確認してください。
カルノー図の簡単化方法のまとめ
カルノー図は、真理値表から論理式を視覚的に簡単化するための有効な手法です。
出力が1のマスを二の累乗個でグループ化し、可能な限り大きなグループを選ぶことで、不要な変数を消去できます。
グレイコード順の配置、端同士の隣接、対角線を結ばないルールは、特に重要な基本事項です。
主項の中では必須主項を優先し、全ての1を最小限のグループで覆うようにします。
ドントケアはグループを拡張して式を短くできる便利な条件ですが、仕様上の安全性も考えながら利用する必要があります。
大きなグループから探し、重複を恐れず、最後に真理値表へ照合する流れを身に付ければ、カルノー図の問題を安定して解けるようになるでしょう。