カルノー図ソルバー
無料のオンライン カルノー図ソルバー:2〜6 変数のブール式を入力すると、各グループを囲んだカルノー図と、そこから読み取った最簡の積和形または和積形が得られます。
論理式を入力して分析してください(命題論理、ブール代数をサポート)
ガイド
演算子をクリックすると、その例を計算機で試せます。各演算子には入力できる書き方がすべて示されています。
式を入力すると、このカルノー図ソルバーが真理値をグレイコード順の格子に配置し、まとめられるグループをすべて囲んで、そこから最簡形を読み取ります。記号(¬ ∧ ∨ → ↔)でも素の ASCII(!、&、|、->、<->)でも入力でき、2〜6 変数に対応し、単に良い解ではなく厳密な最小解を求めます。何もアップロードされません。図はあなたのブラウザーの中で作られます。
カルノー図の解き方
- 上の入力欄に式を入力します。たとえば (A & B) | (!A & C) です。記号を打ちたくなければ、演算子キーボードが挿入します。
- ソルバーは式から変数を読み取り、真理値を格子に配置します。軸はグレイコード(00, 01, 11, 10)なので、隣り合うセルはちょうど 1 変数だけ異なります。これがセルのまとまりを 1 つの項に縮められる理由です。
- 色付きの輪が 1 つのグループです。凡例のグループにカーソルを合わせるかタップすると図の上で強調されます。「必須」と付いたものに注目してください。どの最簡形もそれらを省けません。グループは図の端をまたいで回り込むことができ、1 つのセルが複数のグループに属することもあります。
- 下に出る最簡形を読み取ります。積和形と和積形を切り替え、結果をコピーし、計算機に読み込み直し、あるいは図を LaTeX か TikZ として書き出せます。
ソルバーが返すもの
- すべてのグループを色分けして囲み、必須のものには印を付け、それぞれが残す項も示します。
- 本当に最簡な形:被覆は貪欲に選ぶのではなく厳密に探索するので、循環的な図でも最短の答えが出ます。
- 同じ図から積和形にも和積形にも - 1 をまとめるか、0 をまとめるか。
- 図を LaTeX で出力:素朴な表としても、輪と凡例つきで TikZ に描き直した形でも。
- 同じ式を完全な計算機で開けば、真理値表・性質・同値な形も得られます。
解いてみた例
(((A∧B)∧C)∨((A∧B)∧¬C))∨((¬A∧B)∧C) の図です。真のセルは 3 つあり、2 セルずつの 2 つのグループが 1 つのセルで重なりながら覆っています。これが方法のすべての縮図です。グループの内側で変化する変数はその項から消え、1 つのセルは二度覆われてもかまいません。
カルノー図
色のついた各グループは真のマスの長方形を覆います。グループの中で変化する変数は消えるので、各グループから 1 つの連言が残ります。 この図の読み方 →
| ABC | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | ⊥ | ⊥ | ⊤ | ⊥ |
| 1 | ⊥ | ⊥ | ⊤ | ⊤ |
グループ
カルノー図は変数をいくつまで扱えますか?
このソルバーは 2〜6 変数の図を描きます。2 未満ではまとめるものがなく、5 変数と 6 変数は 2 枚または 4 枚の平面を重ねて描き、6 を超えるとそれでも隣の真理値表より読みやすいとは言えなくなります。変数がもっと多い場合も、計算機の同値な形が最小化された DNF を返します。
| 変数 | セル | 格子 |
|---|---|---|
| 2 | 4 | 2 × 2 |
| 3 | 8 | 2 × 4 |
| 4 | 16 | 4 × 4 |
| 5 | 32 | 2 × (4 × 4) |
| 6 | 64 | 4 × (4 × 4) |
積和形と和積形
真のセルをまとめると積和形になります。グループごとに 1 つの論理積を作り、それらを OR でつなぎます。偽のセルをまとめると和積形になり、リテラルは取り出す際に否定されます。グループごとに 1 つの論理和を作り、それらを AND でつなぎます。どちらも同じ関数を表し、どちらが短いかは 1 と 0 のどちらがきれいな長方形を作るかで決まります。だから両方を出すので、短いほうを取ってください。
よくある質問
論理計算機の使い方についてよく寄せられる質問への回答
カルノー図は変数をいくつまで扱えますか?
このソルバーは 2〜6 変数の図を描きます。2 変数なら 2 × 2、3 変数なら 2 × 4、4 変数なら 4 × 4 の格子です。5 変数や 6 変数は教科書と同じように、4 × 4 の平面を 2 枚または 4 枚重ねて描き、隣り合う平面の同じ位置のマスを隣接とみなします。重ねる変数を含まないグループは、どの平面でも同じ長方形になります。7 変数以上になると頭に置いておくべき隣接関係が見えなくなり、図の唯一の利点が失われます。そのときは計算機の同値な形にある最小化 DNF を使ってください。
積和形と和積形の違いは何ですか?
同じ図の 2 通りの読み方です。真のセルをまとめると積和形になります。グループごとに 1 つの論理積を作り、それらを OR でつなぎます。偽のセルをまとめると和積形になり、リテラルは取り出す際に否定されます。グループごとに 1 つの論理和を作り、それらを AND でつなぎます。どちらも同じ関数を表し、どちらが短いかは 1 と 0 のどちらがきれいな長方形を作るかで決まります。
ソルバーの答えは本当に最簡形ですか?
はい。まず必須主項を取り、残りの被覆は貪欲に選ぶのではなく分枝限定法で網羅的に探索します。これは循環的な図 - どのグループも必須でない図 - で効いてきます。貪欲な選択では最短より 1 項多い被覆に落ち着くことがあり、しかもそのことは決して知らされないからです。支配された行と列は必須項と一緒に消され、表が縮まなくなるまで繰り返されます。そのためほとんどの図は探索に到達すらせず、6 変数でも厳密な答えが即座に返ります。
列の見出しが 00, 01, 10, 11 ではなく 00, 01, 11, 10 なのはなぜですか?
その順序こそが図を成り立たせているからです。見出しはグレイコードで並んでおり、連続する値はちょうど 1 ビットだけ異なります。だから隣り合うセルはちょうど 1 変数だけ異なり、値のそろった長方形はその変数が消えた項になります。ふつうの 2 進の順序では 01 と 10 が隣り合いますが、両者は 2 ビット異なるため、まとめても意味がありません。端が回り込むのも同じ理由です。最初の列と最後の列も 1 ビットしか違わないので、グループは片側から出て反対側へ続くことができます。
セルをドントケアとして指定できますか?
直接にはできません。ソルバーが図にするのは式であり、式は各行で真か偽のどちらかです。入力する第 3 の値はありません。関数がある入力を本当に無視するのなら、それを式に書けば図が示してくれます。(D | !D) のような項は、関数が依存しない変数として D を図に置きます。用意された「有効な BCD 数字」の図もこの方法で作られています。