使用遗传编程寻找紧凑的二元决策图
1. 引言
本文提出了一种基于遗传编程的二元决策图(BDD)最小化方法。与有序二元决策图(OBDD)的最小化不同,该方法直接对BDD的图结构进行操作,是BDD最小化的首个启发式方法。实验结果证明了该方法的有效性。
2. 预备知识
2.1 二元决策图
BDD是一个有向无环且有根的图 $G_f = (V, E)$,用于表示布尔函数 $f: B^n \to B^m$。每个内部节点 $v$ 标有变量 $label(v) = x_i \in X_n = {x_1, \ldots, x_n}$,并有两个后继节点 $then(v)$ 和 $else(v)$。终端节点标有 1 或 0,对应常量布尔函数。在每个内部节点进行香农分解 $g = x_ig| {x_i=1} + x_ig| {x_i=0}$,$m$ 个根节点代表相应的输出函数。
通过限制BDD的结构,可以得到特殊类型的BDD:
- 完整BDD:从根节点到终端节点的每条路径上,每个变量恰好出现一次。
- 自由BDD(FBDD):从根节点到终端节点的每条路径上,每个变量最多出现一次。
- 有序BDD(OBDD):是自由BDD,且从根节点到终端节点的每条路径上,变量按相同顺序出现。
OBDD在硬件设计和验证中广泛应用,因为它是布尔函数的规范表示,并提供高效的合成算法。然而,许多函数的OBDD大小取决于变量顺序,可能在变量数量的线性和指数之间变化。变量排序问题是NP难问题,并且有些函数的所有变量排序都会导致指数大小的OBDD,而这些函数可能存在多项式大小的FBDD或BDD。因此,放宽一次读取限