ブール代数簡約ツール

変数には A, B, C... を使用します。演算子: & (AND), | (OR), ! (NOT), ^ (XOR), ( )

ブール式(A·B + A·¬B + ¬A·Bなど)または最小項付きの真理値表を入力すると、この簡約ツールはQuine-McCluskeyアルゴリズムで最小の積和形(sum-of-products)を返し、最大6変数までKarnaugh mapの可視化も表示します。主項(prime implicants)、必須主項(essential prime implicants)、被覆表など全ステップを示すため、宿題だけでなく、合成ツール内の簡約器が選んだ内容を確認する用途にも役立ちます。

ブール式簡約の流れ

  1. 1

    式または最小項を入力

    演算子は·(AND)、+(OR)、'または¬(NOT)、⊕(XOR)を使えます。`m(0,1,3,7)`のような最小項インデックスも貼り付けできます。

  2. 2

    真理値表を生成

    すべての変数割り当てを評価し、関数出力を表にします。

  3. 3

    Quine-McCluskeyで主項を検出

    最小項をグループ化し、反復的に結合します。隣接グループ(1変数だけ異なるもの)を、これ以上簡約できなくなるまで併合します。

  4. 4

    必須主項で関数を被覆

    Petrick法の被覆表が主項の最小集合を選びます。結果は簡約された積和形(SOP)です。和積形(POS)は補関数から導出します。

対応する演算子表記

演算 受け付ける記号
AND ·, *, &, , 空白
OR +, |,
NOT \', ¬, !, ~, 上線(上線付きの AA\' として表示)
XOR , ^
定数 0, 1

入力: A·B + A·¬B + ¬A·B

真理値表:

A B F
0 0 0
0 1 1
1 0 1
1 1 1

最小項: m(1, 2, 3)。最小SOPはA + B(2つの変数のOR)に簡約されます。簡約ツールは次の流れを示します。

  1. 1の個数で最小項をグループ化
  2. 隣接ペアを結合: (1,3) → -B, (2,3) → A-
  3. 被覆表で両方が必須(essential)と判明 — 最終形: A + B

最小化する理由

  • ゲート数の削減: AND/OR項はそれぞれシリコン面積やFPGAのLUTを消費します。
  • クリティカルパスの短縮: ロジックが小さいほど、通常は伝搬遅延が下がります。
  • 消費電力の低減: スイッチングするノードが少なくなります。

アルゴリズムの限界

  • 変数の数: Quine-McCluskeyは最悪ケースでO(3^n / n)に計算量が増えます。このツールは8変数まで快適に扱えます。それを超える場合はEspresso系のヒューリスティック簡約器を使ってください(最小性は保証されませんが、現実的に処理できます)。
  • ドントケア項(don't-care): 発生しない入力組み合わせがある場合は、d(indices)構文で含めると、より小さい結果を得られます。

よくある質問

Sum-of-productsはANDのOR(例: AB + CD)、product-of-sumsはORのAND(例: (A+B)(C+D))です。同じ関数を別構造で表します。この簡約ツールは両方を返すので、後段のツールに合う方を選んでください。

はい。最小項と一緒にd(index1, index2, ...)として入力します。簡約器はそれらを「自由」とみなし、より小さな結果が得られる値(0または1)を割り当てます。

正しくグループ化すればどちらも最小コストを出せますが、K-mapは人が最大グループを見つけられるかに依存します。Quine-McCluskeyは決定的で、常に最適解を見つけます。

XORは最小化前にAND/OR/NOTへ展開されます。同等のSOPは得られますが、XOR構造は失われます。XOR構造を保持した最適化には別のアルゴリズム(Reed-Muller)が必要です。

関連ツール