科学・計算関連

真理値表から論理式を求める方法は?最小項と簡単化の手順を解説!(カルノー図)

真理値表から論理式を求める基本手順
当サイトでは記事内に広告を含みます
技術ブログ特化メルマガはこちら

真理値表は、入力となる変数の組み合わせごとに、出力が真か偽かを整理した表です。

デジタル回路の設計、論理学の学習、プログラミングにおける条件分岐の確認などで使われ、表から論理式へ変換する場面も少なくありません。

しかし、真となる行を見つけた後に、ANDやORをどのように並べるのか、最小項とは何か、カルノー図をどう使うのかで迷いやすいところです。

この記事では、真理値表から論理式を作る基本手順を押さえたうえで、最小項、標準形、簡単化、カルノー図まで順を追って解説します。

真理値表から論理式を求める基本手順

真理値表から論理式を求める基本手順

それではまず、真理値表から論理式を求める基本手順について解説していきます。

出力が真となる行の抽出

真理値表から論理式を作るときは、最初に出力欄が真、つまり1になっている行をすべて確認します。

論理式を積和標準形で表す場合、出力が1の各行が、ひとつずつ最小項に対応します。

たとえば入力変数をAとB、出力をYとし、Aが0でBが1のときだけYが1になるなら、その行に対応する項はAの否定とBの論理積です。

否定はNOT、論理積はAND、論理和はORに相当します。

出力が1の行を取りこぼさずに書き出すことが、正しい論理式への第一歩になります。

入力Aが0ならAの否定を使います。

入力Aが1ならAをそのまま使います。

入力Bも同じ考え方で、0ならBの否定、1ならBを使います。

同じ行にある変数はANDで結びます。

各行を最小項へ変換する考え方

最小項とは、すべての入力変数を1回ずつ含み、特定の入力の組み合わせでだけ真になる論理積の項です。

変数がA、B、Cの3個なら、ひとつの最小項にはA、B、Cのいずれか、またはそれぞれの否定が必ず入ります。

たとえばAが1、Bが0、Cが1の行なら、最小項はA AND Bの否定 AND Cとなります。

この項は、Aが1、Bが0、Cが1の場合だけ1になり、それ以外の組み合わせでは0になります。

つまり、最小項は真理値表にある1行の状態を、そのまま論理式へ写し取るための表現です。

A B C 対応する最小項
0 0 0 Aの否定 AND Bの否定 AND Cの否定
0 1 1 Aの否定 AND B AND C
1 0 1 A AND Bの否定 AND C
1 1 0 A AND B AND Cの否定

最小項をORで結ぶ積和標準形

出力が1になる行が複数ある場合は、それぞれの最小項をORで結びます。

これにより、どれかひとつでも該当する入力パターンなら、出力が1になる論理式を作れます。

たとえば出力Yが、AとBの組み合わせで01と10のときに1になるなら、YはAの否定 AND B、またはA AND Bの否定となります。

この2つをORでつなげた式が、真理値表を忠実に表した積和標準形です。

YはAの否定 AND B OR A AND Bの否定です。

この式は、AとBが異なる値のときにだけ1になります。

後で簡単化すると、排他的論理和に対応することも確認できます。

最小項と最大項の役割

続いては、最小項と最大項の役割を確認していきます。

最小項による真の条件の表現

最小項は、出力が1になる条件を列挙するために使います。

真理値表の出力欄で1になっている行だけに注目するため、論理式を作る手順が分かりやすい点が特長です。

特に、回路の出力条件を設計するときや、指定された真理値表を式へ変換するときに役立ちます。

積和標準形は最小項をORで結んだ形だと覚えると、用語の関係を整理しやすくなるでしょう。

変数が増えるほど項の数は増えますが、最初は省略せず、完全な最小項を書き出すことが重要です。

最大項による偽の条件の表現

最大項は、出力が0になる行を表す論理和の項です。

最小項とは逆に、真理値表で出力が0となる行を使って論理式を作ります。

複数の最大項はANDで結ばれ、この形を積の和標準形ではなく、和の積標準形と呼びます。

出力が0の行が少ないときは、最大項を利用したほうが式を書きやすい場合があります。

どちらを使っても同じ論理機能を表せるため、問題の条件や後の簡単化のしやすさで選びます。

項番号と二進数の対応関係

最小項は、入力値を二進数として読んだ番号で表されることがあります。

変数がA、B、Cで、Aを最上位ビット、Cを最下位ビットとするなら、Aが1、Bが0、Cが1は二進数の101です。

十進数では5なので、この最小項をm5のように表します。

出力が1となる最小項番号を並べれば、論理式全体をコンパクトに記録できます。

最小項番号を読むときは、変数の並び順を必ず確認してください。

A、B、Cの順で読むのか、C、B、Aの順で読むのかが変わると、同じビット列でも項番号が変わります。

問題文や回路図に示された変数順を基準にすると、誤りを防げます。

論理式の作成と検算

続いては、論理式の作成と検算について確認していきます。

否定記号の選び方

入力が0の変数には否定を付け、入力が1の変数には否定を付けません。

この規則は単純ですが、最小項を複数書くときに最も起こりやすいミスでもあります。

たとえばAが0の行でAをそのまま使うと、その項はAが1のときに真となり、元の真理値表とは違う条件になります。

0なら否定、1ならそのままという対応を、各行ごとに確認する習慣が大切です。

ANDとORの接続順序

ひとつの行に含まれる変数はANDで結びます。

これは、その行にあるすべての入力条件が同時に満たされたときだけ、その最小項を1にするためです。

一方で、異なる行の最小項同士はORで結びます。

複数の入力パターンのうち、どれかひとつに一致すれば出力を1にしたいからです。

括弧を使って各最小項を見やすく分けると、ANDとORの優先順位による読み違いを減らせます。

真理値表への代入による照合

論理式を書いたら、元の真理値表のすべての入力パターンを代入して検算します。

特に、出力が1となる行だけでなく、出力が0となる行も確認することが欠かせません。

1になるべき行で0になった場合は項の不足が考えられ、0になるべき行で1になった場合は否定やOR接続の誤りが疑われます。

変数が3個なら組み合わせは8通りなので、手計算でも十分に照合できます。

確認対象 確認内容 主な原因
期待値が1なのに0 該当する最小項があるか 行の見落とし、項の書き忘れ
期待値が0なのに1 余分な条件がないか 否定の付け忘れ、ORの誤用
一部だけ不一致 変数順が一致しているか 二進数の読み順の誤り

ブール代数による論理式の簡単化

続いては、ブール代数による論理式の簡単化を確認していきます。

補元律と冪等律

論理式を短くするには、ブール代数の基本法則を使います。

代表例として、A OR Aの否定は常に1となる補元律、A AND AはAとなる冪等律があります。

A OR AもAとなるため、同じ条件が繰り返されている部分は整理できます。

こうした法則を知ると、真理値表から作った長い標準形を、より少ないゲートで実現できる形へ変換できます。

A AND B OR A AND Bの否定を考えます。

Aを共通因数としてまとめると、A AND B OR Bの否定となります。

B OR Bの否定は1なので、結果はAになります。

分配法則による共通因数の整理

複数の最小項に共通する変数があるときは、分配法則でまとめられる場合があります。

たとえばA AND B OR A AND Cは、A AND B OR Cとして整理できます。

この操作により、同じ変数Aを重複して使う必要がなくなります。

共通する文字を探して括弧の外へ出すことが、手計算での簡単化の基本になります。

ただし、変形後の式が元の条件を保っているか、真理値表で確かめると安心です。

吸収律と不要な項の削除

吸収律は、すでに広い条件で含まれている項を削除する際に役立ちます。

A OR A AND BはAに簡単化できます。

Aが1なら、A AND Bの値に関係なく全体はすでに1になるためです。

この考え方は、カルノー図で大きなグループを作ったときにもつながります。

小さな条件が大きな条件に含まれるなら、重複した項を残す意味はありません。

簡単化の目的は、式を見た目だけ短くすることではありません。

使用するNOT、AND、ORゲートの数を減らし、回路の規模、遅延、消費電力を抑えることにつながります。

ただし、読みやすさや保守性を考え、無理に複雑な変形をしない判断も必要です。

カルノー図を使ったグループ化

続いては、カルノー図を使ったグループ化について確認していきます。

カルノー図の配置規則

カルノー図は、真理値表の1を隣接関係に注意しながら並べ、視覚的に論理式を簡単化する図です。

2変数なら4マス、3変数なら8マス、4変数なら16マスを使います。

配置にはグレイコードを用いるため、隣り合うマス同士では1つの変数だけが変化します。

通常の二進数順に並べるわけではない点が、初学者にとって重要な注意点です。

カルノー図の端と端も隣接しているため、左右端や上下端をまたぐグループも作れます。

二の累乗によるグループ化

カルノー図では、1が入ったマスを1個、2個、4個、8個という二の累乗の単位で囲みます。

できるだけ大きなグループを作るほど、式から消せる変数が増えます。

2個のグループでは1変数を消せる可能性があり、4個なら2変数を消せる可能性があります。

グループは重なっても構いません。

すべての1を少なくともひとつのグループに含めながら、項数と変数数を減らすことが目標です。

グループの大きさ 消去できる変数の目安 特徴
1個 0個 最小項をそのまま使う形
2個 1個 隣接する1つの変数差を消せる
4個 2個 より短い積項を作りやすい
8個 3個 変数数によっては定数項になる

不要条件を含むドントケアの利用

回路設計では、実際には起こらない入力の組み合わせが存在する場合があります。

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

ドントケアは、必要に応じて1としてグループに含められますが、必ず含める必要はありません。

大きなグループを作って式を短くできるなら利用し、効果がなければ無視して構いません。

ドントケアは出力を自由に扱える条件であり、通常の0や1とは役割が異なります。

カルノー図では、斜めに接するマスは隣接とみなしません。

また、グループの大きさを3個や6個にすることもできません。

必ず二の累乗で囲み、端の接続を含めて最大のグループを探すことがポイントです。

真理値表と論理式の実践例

続いては、真理値表と論理式の実践例を確認していきます。

二変数の排他的論理和

二変数AとBで、値が異なるときだけ出力Yを1にする例を考えます。

真となる行は、Aが0でBが1の行と、Aが1でBが0の行です。

最小項を作ると、Aの否定 AND B、A AND Bの否定という2項になります。

この2項をORで結ぶと、排他的論理和を表す式になります。

この例は、真理値表から標準形を作り、その後に論理演算の意味を理解する練習として適しています。

三変数の多数決回路

A、B、Cの3つの入力のうち、2つ以上が1なら出力を1にする多数決回路も代表例です。

この場合、真となる入力は011、101、110、111です。

最小項をすべて書くと4項になりますが、簡単化するとA AND B、A AND C、B AND CのORで表せます。

つまり、どの2入力の組み合わせでも同時に1なら出力が1になる形です。

最小項で作った式は、簡単化によって意味を読み取りやすくなる点も覚えておきましょう。

条件分岐への応用

論理式は、電子回路だけでなく、プログラムのif文にある条件判定にも応用できます。

たとえば、会員であり、かつ購入金額が一定額以上の場合に特典を付ける条件は、会員条件AND購入条件として表せます。

複数の条件のいずれかを満たせばよい場合はORを使い、対象外の条件にはNOTを使います。

真理値表を作れば、条件が重複していないか、想定外の組み合わせで処理が動かないかを事前に確認できます。

真理値表から論理式を求める方法のまとめ

真理値表から論理式を求めるときは、まず出力が1となる行を選び、各行を最小項へ変換します。

入力値が0の変数には否定を付け、入力値が1の変数はそのまま使い、同じ行の変数をANDで結びます。

複数の最小項をORでつなげれば、真理値表に対応した積和標準形が完成します。

その後はブール代数やカルノー図を使い、共通する条件や隣接する項をまとめて簡単化します。

最初は正確な標準形を作り、最後に簡単化するという順序を守ると、途中で条件を見失いにくくなります。

検算として元の真理値表へ代入し、すべての入力パターンで出力が一致するか確認すれば、より確実です。