082 ZDD(零抑制决策图)
ZDD零抑制决策图082零抑制决策图5W1H维度说明What是什么零抑制决策图Zero-Suppressed Binary Decision DiagramZDD是一种用有向无环图表示集合族F ⊆ 2^{1…n}的数据结构由 Minato 于 1993 年提出。Why为什么传统 BDD 对稀疏集合族如子集枚举、组合优化问题非常低效。ZDD 通过零抑制规则消除 high 子节点为假的节点使稀疏集合的表示极度紧凑。Who谁原创者Shin-ichi Minato1993。理论来源Donald Knuth《The Art of Computer Programming》第四卷 Fascicle 1B。When何时ZDD 适用于需要高效枚举、计数子集族的场合尤其是 n 较大但实际集合稀疏时。Where在哪里应用于组合优化、图路径枚举、布尔函数压缩表示、数据挖掘中的频繁项集挖掘。How如何节点结构{var, hi, lo}零抑制规则若hi 0-terminal消除节点直接返回lo操作通过 Shannon 展开递归实现union、intersect计数通过记忆化递归count(v,hi,lo) count(hi) count(lo)。需求定义功能需求ZDD 节点池初始化预分配固定大小256 节点的静态节点池编号 0 为 0-terminal编号 1 为 1-terminal。零抑制唯一表unique tablezdd_find_or_create(var, hi, lo)实现零抑制规则若hi ZDD_ZERO直接返回lo。节点共享线性搜索确保相同{var, hi, lo}的节点只存一份。singleton(var)创建单元素集合族{{var}}的 ZDD。union(a, b)计算两个 ZDD 表示集合族的并通过 Shannon 展开递归实现。intersect(a, b)计算两个 ZDD 表示集合族的交通过 Shannon 展开递归实现。count(node)通过记忆化递归计算 ZDD 表示的集合数量。all_subsets(vars, n)辅助函数构建 n 个变量的全子集族 ZDD用于测试。非功能需求不使用math.h或-lm。C99 标准gcc -stdc99 -Wall编译无警告无错误。节点上限 256变量从 1 开始编号。操作深度有限测试用例均为小规模不需要运算缓存memo table for operations。验收标准编号测试描述期望结果TC-01singleton(1)的count1集合{1}1 个TC-02union(singleton(1), singleton(2))的count2集合{1}和{2}TC-03intersect({1,2 的子集族}, {2,3 的子集族})的count2{∅, {2}}TC-043 变量全子集族count82^3TC-050-terminal count和1-terminal count分别为 0 和 1TC-06singleton(1)的节点结构var1, hi1-terminal, lo0-terminalTC-07find_or_create(1, ZDD_ZERO, ZDD_ONE)返回ZDD_ONE零抑制消除TC-08union(F, F)与F的count相同count相等幂等性关键设计说明ZDD 与 BDD 的区别BDD 消除规则hi lo 时消除冗余测试消除 ZDD 消除规则hi 0-terminal 时消除零抑制规则ZDD 对稀疏集合族的压缩来自当一个集合不包含某变量时hi 分支为 0对应节点被零抑制消除节省大量空间。集合族的语义0-terminal空集族不含任何集合等价于false1-terminal含空集的族{∅}等价于true内部节点(v, hi, lo)表示hi分支包含变量v的所有集合再加上vlo分支不包含变量v的所有集合计数公式count(0-terminal) 0 count(1-terminal) 1 count(v, hi, lo) count(hi) count(lo)理由内部节点将集合族分为两个不相交子族故直接相加。

相关新闻

Ponytail:基于FastAPI+React Flow的AI Agent工程化范式

Ponytail:基于FastAPI+React Flow的AI Agent工程化范式

1. Ponytail 不是发型,是正在冒头的 AI Agent 开发新范式最近两周,我在三个不同技术群看到有人问:“Ponytail 是不是又一个新出的 AI 框架?”“Ponytail 插件怎么装?文档在哪?”“FastAPI 项目里能直接集成…

2026/11/9 21:26:16 阅读更多 →
WAM模型训练策略全解析:从数据配比到后训练对齐

WAM模型训练策略全解析:从数据配比到后训练对齐

最近整理手头项目时,我把这两年围绕 WAM 类模型训练的相关工作重新过了一遍,前后翻了近 300 篇论文、技术报告和开源仓库的 issue,越看越觉得这类模型在训练策略上其实有很强的共性。WAM 指的是以“世界建模 动作决策”为核心目标的模型&…

2026/11/9 21:26:16 阅读更多 →
Agent-Reach:面向多LLM的CLI级Agent协同调度框架

Agent-Reach:面向多LLM的CLI级Agent协同调度框架

1. “Agent-Reach”不是新模型,而是一套轻量级CLI驱动的Agent协同调度框架 你搜“Agent-Reach”,首页跳出来的全是零散关键词:CLI、API、Python、GitHub、deepseek、codex cli、zcode cli、diplay、boos cli……没有官方文档,没有…

2026/10/28 6:51:30 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/9 14:01:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/9 14:56:39 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/9 1:59:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/9 14:01:10 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/9 7:45:06 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/9 14:01:11 阅读更多 →

日新闻

周新闻

月新闻