BooleanMinimize[expr]
expr の表現の最も短い選言標準形を求める.
BooleanMinimize[expr,form]
expr の最も短い表現を指定形式で求める.
BooleanMinimize[expr,form,cond]
cond が真であるとき,expr と等価である最も短い式を指定形式で求める.
BooleanMinimize
BooleanMinimize[expr]
expr の表現の最も短い選言標準形を求める.
BooleanMinimize[expr,form]
expr の最も短い表現を指定形式で求める.
BooleanMinimize[expr,form,cond]
cond が真であるとき,expr と等価である最も短い式を指定形式で求める.
詳細とオプション
- BooleanMinimize[expr,form]は常に expr と等価である式を生成する.
- 使用可能な形式
-
"DNF","SOP" 選言標準形,積の総和 "CNF","POS" 連言標準形,総和の積 "ANF" 代数標準形 "NOR" 2レベルのNorとNot "NAND" 2レベルのNandとNot "AND" 2レベルのAndとNot "OR" 2レベルのOrとNot - 一般に,特定の形式の特定の式にはいくつかの最短表現があることがある.BooleanMinimizeはそのうちの1つを与える.
- BooleanMinimizeは使用するメソッドの詳細を指定するMethodオプションをサポートする.
例題
すべて開く すべて閉じる例 (2)
スコープ (2)
expr = BooleanCountingFunction[{2, 3}, {a, b, c, d, e}]m1 = BooleanMinimize[expr, "DNF"]{Length[m1], Length[expr]}m2 = BooleanMinimize[expr, "CNF"]m3 = BooleanMinimize[expr, "NAND"]m4 = BooleanMinimize[expr, "NOR"]m5 = BooleanMinimize[expr, "ANF"]TautologyQ[Equivalent[expr, m1, m2, m3, m4, m5]]「care set」すなわち条件を使ってブール関数を最小化する:
f = BooleanCountingFunction[{2, 3}, 4][a, b, c, d]cond = Xor[a, b, c, d]g = BooleanMinimize[f, cond]h = BooleanMinimize[f, "CNF", cond]TautologyQ[Implies[cond, Equivalent[f, g, h]]]TautologyQ[Equivalent[f, g, h]]BooleanMinimize[f]BooleanMinimize[f, "CNF"]アプリケーション (1)
最小サイズの分布 (1)
size[h_] := If[Head[h] === Or, Length[h], 1]data = Table[{i, size@BooleanMinimize[BooleanFunction[i, {x, y, z}]]}, {i, 0, 2 ^ 2 ^ 3 - 1}];ListLinePlot[data]ListLinePlot[Tally[data[[All, -1]]]]data = Table[{i, size@BooleanMinimize[BooleanFunction[i, {x, y, z, w}]]}, {i, 0, 999}];ListLinePlot[data]ListLinePlot[Tally[data[[All, -1]]]]特性と関係 (4)
BooleanMinimizeの出力はその入力に等しい:
f = BooleanFunction[228, {a, b, c}]g = BooleanMinimize[f]TautologyQ[Equivalent[f, g]]条件付きのBooleanMinimizeの出力はその入力と条件付きで等しい:
f = BooleanFunction[158, {a, b, c}]cond = a || b || c;g = BooleanMinimize[f, "DNF", cond]TautologyQ[Implies[cond, Equivalent[f, g]]]TautologyQ[Equivalent[f, g]]"DNF","CNF","NAND"あるいは"NOR"の最短の長さは一意的ではない:
e = BooleanCountingFunction[{1, 2}, {a, b, c}]BooleanMinimizeは長さ3の式を生成する:
f = BooleanMinimize[e]長さが3のその他の等しい式は b と c 入れ換えることで得られる:
g = f /. {b -> c, c -> b}TautologyQ[Equivalent[f, g]]{f = BooleanMinimize[Not[e], "CNF"], g = f /. {b -> c, c -> b}, TautologyQ[Equivalent[f, g]]}{f = BooleanMinimize[e, "NAND"], g = f /. {b -> c, c -> b}, TautologyQ[Equivalent[f, g]]}{f = BooleanMinimize[Not[e], "NOR"], g = f /. {b -> c, c -> b}, TautologyQ[Equivalent[f, g]]}最短形が必要ではない場合はBooleanConvertを使う:
BooleanConvert[BooleanCountingFunction[{1, 2}, 3][a, b, c]]BooleanMinimize[BooleanCountingFunction[{1, 2}, 3][a, b, c]]BooleanConvertは追加的な形へも変換できる:
BooleanConvert[BooleanCountingFunction[{1, 2}, 3][a, b, c], "Implies"]関連するガイド
-
▪
- ブール計算 ▪
- 代数変換 ▪
- 論理演算とブール代数 ▪
- 離散数学
テキスト
Wolfram Research (2008), BooleanMinimize, Wolfram言語関数, https://reference.wolfram.com/language/ref/BooleanMinimize.html.
CMS
Wolfram Language. 2008. "BooleanMinimize." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/BooleanMinimize.html.
APA
Wolfram Language. (2008). BooleanMinimize. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BooleanMinimize.html
BibTeX
@misc{reference.wolfram_2026_booleanminimize, author="Wolfram Research", title="{BooleanMinimize}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/BooleanMinimize.html}", note=[Accessed: 17-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_booleanminimize, organization={Wolfram Research}, title={BooleanMinimize}, year={2008}, url={https://reference.wolfram.com/language/ref/BooleanMinimize.html}, note=[Accessed: 17-August-2026]}