Neatbo.

按 care 集合选择 DNF 或 CNF

比较 OR-of-AND 与 AND-of-OR 的成本,区分 dont-care、全域等价和电路门数,保留可复核的完整交付。

范式选择改变你比较的成本

DNF 是 AND 项的 OR,适合检查哪些输入组合让函数为 true;CNF 是 OR 子句的 AND,适合检查 false 集合所对应的限制。both 请求两个独立完成的 cover,不另建工具,也不先用一个形态的成本替另一个。

三变量合成小例 (A & B) | (A & C) 在 dontCare=False 时:DNF 两项四字面量,CNF (B | C) & A 两子句三字面量。CNF 的字面量更少,不能据此把它称为最少门数电路。

比较单位先一致
请求结构精确目标
DNFOR-of-AND 项先最少项,再最少字面量
CNFAND-of-OR 子句先最少子句,再最少字面量
Both分别完成两种形态共享输入、care 集合与整次预算

Dont-care 不是“输出 true”

dontCare 条件为 true 时,该行输出可以改变;它不是新函数的输出值。约束集合是 dontCare=false 的全部 care 行,完整真值表仍显示每行原函数和各输出。

把小例 dontCare 改为 ~A 后,只在 A=1 时核验:DNF B | C,CNF (B | C)。A=0 的四行是 dont-care,原来为 false 的行可以变为 true;因此这并非八行全域等价,A 也不能从原变量身份记录中消失。

空 care 与常量应明示

所有行都是 dont-care 时,确定策略返回 DNF False、CNF True,两者成本都是(0 项/子句,0 字面量)。没有 care 约束时两者都允许,原件、参数和完整表必须让读者看见这个原因。

非空目标由一个 mask-0 全域 cube 覆盖时,成本为(1 项/子句,0 字面量):DNF True 或 CNF False。报告 constant 表示最终函数值。不能用“表达式看起来短”或“找到更低成本候选”替代完成的精确搜索。

门图只表达所选 cover

逻辑门图保留每个变量的名字、bit/mask 和每个 selected cube 到项或子句的关系;所有字面量和常量都在图中。它是表达式的可审图示,不优化多级逻辑、延迟、扇出或最少门数。

实用交付顺序是先固定完整 JSON 与 care 条件,再运行并核对真值/成本,最后把所有 requested-form SVG、完整 CSV、报告、settings、表达式文本与原件一起交出。

  • 保存 form、dontCare 与变量/bit/mask,不只保存图。
  • 按相同范式比较项/子句数,然后比较字面量数。
  • 核验全部 care 行,并保留允许改变的 dont-care 行。
  • 下载完整映射与全部图;有限预览不能证明全任务。

来源和有限预算的边界

真实提问讨论 dont-care 路径产生不一致的化简,并附了 notebook。作者后来指出建议 diff 与当时 master/1.14.0 不符;保存时间线经 PR 28842 以 COMPLETED 关闭。本工具未应用那份 diff、未评估发布修复,也未执行 notebook。

本工具采用自有有界 JavaScript 路线,不运行 SymPy、Pyodide 或 Espresso。64 KiB、8 变量、10,000,000 总工作量和整次 60 秒都必须满足;超过任一预算就完整拒绝。取消后相同原件/参数可恢复,主动缩减要记录;小例只说明所示函数;更大的请求仍须满足全部上限。

参考资料

  • 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。

先明确哪些输入允许改变,再按最少项或子句、随后最少字面量完成化简。完整真值表与逻辑门图帮助你核对每个必需输入。

操作步骤

  1. 选择粘贴或文件模式,提供完整 JSON;在其中明确 expression、dontCare 和 form。
  2. 使用 ~ 或 !、&、^、| 及括号写安全布尔表达式;核对 dontCare 为 true 的输入是否确实允许改变。
  3. 运行后核对完成状态、全部 care 行等价、项/子句数与字面量数,以及变量到 bit/mask 的映射。
  4. 下载每种请求范式的 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 后首次发布;不重置。取消、超时或输入改变撤销旧成功,不发布部分或迟到结果,可用相同原件与参数重新尝试。
打开布尔逻辑最小化 →