最近在学基于模型检测的规划时,看到了一种数据结构BDD(binary decision diagram)。
书上说BDD是一个有向无环图,用于表示有序变量集上的布尔函数。
我感觉它更像是一棵树。它的终结点要么是True要么是False(分别被标以1和0)。
BDD里的各个中间节点都对应着一个布尔变量,并联系着两个子BDD(分别称为左右分支)。下图显示了一些简单
的BDD。各个中间节点的左(或右)分支悲标以实线或虚线,用以表示相应的变量被赋值为True或False
BDD是一种规范且紧凑的布尔函数表达式,对于布尔操作有着很高的效率。关于BDD的详细资料可以参考论文
Graph-Based Algorithms for Boolean Function Manipulation,RANDAL E.BRYANT,MEMBER,IEEE
在BDD中变量间的序关系对节点数目有重要影响,下图显示了两个基于不同的变量间序关系的BDD,它们所表示的公式都是
左边的情况明显优于右边。
看到这我想到了在多关键字搜索或查找中,关键字顺序可能会影响搜索或查找性能。
每个关键字Key都对某些数据进行划分...