超图横截计算算法:原理、实验与展望
1. 布尔决策图与零抑制二进制决策图基础
在介绍超图横截计算算法之前,我们先了解两个重要的概念:布尔决策图(BDD)和零抑制二进制决策图(ZDD)。
BDD 是一种用于表示布尔函数的数据结构。对于布尔函数 $f$,其 BDD 记为 $B(f)$,$B(f)$ 的大小是指其中节点的数量(包括终端节点),记为 $|B(f)|$。操作 $AND (B(f), B(g)) := B(f ∧g)$ 的计算时间与 $|B(f)| · |B(g)|$ 成正比。
ZDD 是 Minato 提出的一种专门用于表示稀疏集族的 BDD 变体。当稀疏集族用 BDD 表示时,可能会有很多节点的 HI 弧指向 $\perp$。ZDD 具有以下约简规则:
1. 对于每个 HI 弧指向 $\perp$ 的内部节点 $u$,将 $u$ 的所有入弧重定向到其 LO 子节点,然后消除 $u$。
2. 对于任意节点 $u$ 和 $v$,如果以 $u$ 和 $v$ 为根的子图等价,则共享这两个子图。
每个 ZDD 中的路径恰好对应一个集合。给定集合 $V$,如果顶点的顺序固定,$V$ 上的每个超图都有唯一的 ZDD 表示。集合族 $E$ 的 ZDD 记为 $Z(E)$,两个终端节点 $\perp_{ZDD}$ 和 $\top_{ZDD}$ 分别对应 $\emptyset$ 和 ${\emptyset}$。ZDD 节点通过唯一表维护,函数 $ZDD UNIQUE (k, l, h)$ 能在常数时间内返回与键 $(k, l, h)$ 关联的唯一节点。操作 $UNION (Z(U), Z(V)) := Z(U ∪V)$ 和 $DIFF (Z(U), Z
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



