带 dont-care 条件最小化完整布尔逻辑
提供完整安全 JSON,明确 care 集合与 DNF/CNF 请求,核对精确成本、全部真值行和变量到逻辑门图的映射。
先固定输入和允许变化的集合
选粘贴或文件模式,提供一份完整严格 UTF-8 JSON。expression 为原函数,dontCare 为可忽略输入的条件,form 是 dnf、cnf 或 both;省略 dontCare 等同 False。文件模式只处理一个原 File,粘贴模式只处理活动文本。支持一个源开头的 UTF-8 BOM,并在原件中逐字节保留。
变量名区分大小写且仅用 ASCII。写 ~A 或 !A 表示 NOT,& 表示 AND,^ 表示 XOR,| 表示 OR;优先级为 NOT、AND、XOR、OR,需要时用括号。代码、函数、数字比较和移位不属于这个语法。
| 设置 | 设置位置 | 选择与核对 |
|---|---|---|
| inputMode | 工作台的输入模式 | 选 paste 处理完整粘贴文本,或选 file 处理一个所选 JSON 原 File;两种来源不自动回退。 |
| expression | JSON 必需字符串 | 用受支持的布尔语法提供完整原函数,并保留区分大小写的全部变量名。 |
| dontCare | JSON 可选字符串 | 省略等同 False;或提供明确条件,允许这些行的输出改变,其余行仍须等价。 |
| form | JSON 必需字符串 | 选 dnf、cnf 或 both;both 共用一个总预算,每种请求形式分别交付完整结果及逻辑门图。 |
{
"expression": "(A & B) | (A & C)",
"dontCare": "False",
"form": "both"
}
- 运行前先选输入模式,再确认该模式中的完整文本或原 File 就是要处理的来源。
- 所有输入都必须等价时保持 dontCare 为 False;只有能明确允许改变哪些行时才修改它。
- 在 JSON 中选择所需范式,保存表达式、报告与图之前核对每个请求形式均已完整完成。
确认 care 与 mask 身份
dontCare=true 的行允许新函数输出改变;dontCare=false 的每个 care 行必须与原函数一致。变量取 expression 与 dontCare 的并集,按 ASCII 排序,省掉的结果变量也仍保留在映射中。
小例变量为 A、B、C,A 是 bit0/mask1,B 是 bit1/mask2,C 是 bit2/mask4。行 mask3 因而是 A=1、B=1、C=0,原函数为 true,不要用其他库的位次假设替代这份映射。
| 字段或值 | 含义 | 核对 |
|---|---|---|
| expression | 要最小化的完整原函数 | 全部输入行均求值 |
| dontCare=false | 必须保持的 care 行 | 每个输出范式都等价 |
| dontCare=true | 允许改变的输入行 | 仍保留 before/dc/after |
| form=both | 分别请求 DNF 与 CNF | 同一工具、共同总预算 |
核对精确目标的小例
当 dontCare=False 时,合成函数 (A & B) | (A & C) 的全部八行都是 care。DNF 为两个 AND 项,合计四个字面量;CNF 为 (B | C) & A,两个子句、三个字面量。先比较项或子句数,同数再比较字面量数。
若把同一函数的 dontCare 明确改成 ~A,care 仅剩 A=1 的四行。DNF 可以为 B | C(两项、两字面量),CNF 为 (B | C)(一子句、两字面量)。原变量 A 仍在真值表和 bit/mask 映射中;改变条件必须重新运行。
保存完整表、映射与图
检查报告 complete 状态及每个请求范式的精确完成状态,再下载完整产物。真值 CSV 保留全部行与原/DC/after;报告保留全部 prime、selected cube、mask、项/子句映射及成本,不能只保留屏幕上的表达式。
每种请求形式有一个完整 SVG,包含全部变量、选中项或子句、字面量、明确非门与常量,并忠实连接选中 cover。原 JSON 逐字节保存,有效 settings 与表达式文本一起交付。有限预览不替代完整下载或完整报告复制。摘要工作量记录编码前用量,整次总工作量预算仍覆盖之后的全部完整编码。
| 产物 | 保留内容 |
|---|---|
| original.input | 原始源字节,包括受支持的开头 BOM |
| original-settings.json | 完整解析 settings、输入模式和源身份 |
| truth-table.csv | 全部 mask、变量、原函数/dontCare/请求范式数值 |
| report.json | 完整 compact 报告、全部 prime/selected 映射、成本和完成状态 |
| result.txt | 全部请求表达式;与完整表达式文本复制一致 |
| dnf.svg / cnf.svg | 每种请求范式一个完整选中 cover 门图;保留全部变量及 NOT 字面量 |
恢复并保留修改记录
最多 64 KiB、8 变量、4,096 token、1,000 合计 AST 节点,parser 与括号深度各 64;最多 256 真值行、6,561 cube。整次 10,000,000 工作量涵盖解析、全求值、每种 cover 搜索、核验、映射、图与完整编码。
整次 60 秒包含读源、加载、Worker、回调、完整校验、清理和首次发布。超限或取消整件失败,撤销旧成功,不发布部分或迟到结果。原件和参数可用于新的 Worker 恢复;主动缩减必须记录。完整文件加全部复制文本最多 8 MiB,内存预留预算 256 MiB。
参考资料
- HaydenMcT:dont-care 处理不一致
已读完整保存的提问、两条评论和附件 notebook。作者纠正了与当时 master 或 1.14.0 不符的建议 diff;保存的时间线于 2025-12-31 经 PR 28842 以 COMPLETED 关闭。本次未评估该 PR 的实现或发布修复。notebook 仅读取、未执行;本页三变量小例为合成数据。
- SymPy 逻辑文档
保存的 SOPform、POSform 和 simplify_logic 文档用于理解范式与 dont-care 条件。本工具采用独立编写、有界的 JavaScript 路线,不运行 SymPy、Pyodide 或 Espresso,不声称完整库兼容或应用了上游补丁。
本分类工具使用说明
展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。
布尔逻辑最小化按明确 dont-care 集合精确最小化 DNF、CNF 或两者,核验全部 care 行,并保留完整真值表、变量映射、成本与逻辑门 SVG。
先明确哪些输入允许改变,再按最少项或子句、随后最少字面量完成化简。完整真值表与逻辑门图帮助你核对每个必需输入。
操作步骤
- 选择粘贴或文件模式,提供完整 JSON;在其中明确 expression、dontCare 和 form。
- 使用 ~ 或 !、&、^、| 及括号写安全布尔表达式;核对 dontCare 为 true 的输入是否确实允许改变。
- 运行后核对完成状态、全部 care 行等价、项/子句数与字面量数,以及变量到 bit/mask 的映射。
- 下载每种请求范式的 SVG、完整真值 CSV、report、settings、表达式文本和原件;复制完整表达式或完整报告。
可调选项
- 输入模式
- 粘贴完整 JSON · 选择一个 JSON 原 File
只处理当前模式的完整源,不自动采用其他来源。
能力与限制
- 明确选择粘贴或文件模式。粘贴仅处理活动文本;文件模式仅处理一个原始 File,不自动采用另一来源。输入为最多 64 KiB 的完整严格 UTF-8 JSON,表单只选输入模式,form 写在 JSON 中。可接受一个开头的 UTF-8 BOM,原件保存时仍保留其字节;原 File 文件名最多 512 UTF-8 字节且不得含控制字符或 BOM。
- JSON 使用 expression 字符串、form(dnf、cnf 或 both)和可选 dontCare 字符串;省略 dontCare 默认为 False。只支持 ASCII 变量、True/False(也接受 true/false)、~ 或 !、&、^、| 和括号;不执行代码。变量名符合 [A-Za-z_][A-Za-z0-9_]*,区分大小写。
- 最多 8 个不同变量,每个名字最多 128 ASCII 字节;expression 与 dontCare 合计最多 4,096 个 token、1,000 个 AST 节点。parser 递归和括号各最多 64 层,冗余括号也计入。
- 变量由两个表达式的并集按 ASCII 排序。第 i 个变量绑定 bit i、mask 1<<i;完整枚举最多 256 行。dontCare 为 true 的行不约束结果,但仍保留原函数、dontCare 与化简后的数值。
- 每种请求范式必须完成精确 cover:先最少项数(CNF 为子句数),同项数再最少字面量数,并重新核验全部 care 行。最多 6,561 个候选 cube、整次总计 10,000,000 工作量;未完成搜索或超预算会整件拒绝。
- 下载完整真值 CSV、全部请求表达式、report、有效 settings、逐字节原 JSON,以及每种请求范式的完整逻辑门 SVG。报告保留全部变量/bit/mask、prime 与已选 cube 映射、成本和完成状态;SVG 反映选中的 cover,不承诺最少逻辑门数。
- 完整文件加全部复制文本最多 8 MiB,typed compact JSON 另为 8 MiB,两者合计 16 MiB,二进制加完整传递元数据最多 32 MiB;内存预留预算 256 MiB。这些资源守卫不代表实测浏览器 heap,预览有限但导出不得截短。
- 整次一个 60 秒时限,从来源预检、原生 File 元数据/读取、加载与 Worker 创建,一直到完整结果校验、清理和 await 后首次发布;不重置。取消、超时或输入改变撤销旧成功,不发布部分或迟到结果,可用相同原件与参数重新尝试。