修一门写作课题目是Binary decision diagram。在网上查了些资料感觉说的都不是很清楚,看了半天还是很困惑,这到底是个啥?到底咋使?于是决定写下这篇随笔,总结一下看过的各种资料加上自己的理解,希望对后来之人有所帮助~
Binary decision diagram(BDD): 中文名叫 二元决策图
在各类百科里都只有简单一句话:是被用来表达一个布尔函数的一种数据结构(内心os:x了个x,搞事情啊)
好吧,简单来说 二元决策图是一种用来表达布尔函数的有向无环图(Directed acyclic graph)。
构造BDD有以下两种方法:
1)转换表达式(convert an expression)
2)在已存在得BDDs中使用运算符(Use operators on existing BDDs)
既然是用来表达布尔函数,那么布尔函数是什么呢?
定义:描述如何基于对布尔输入的某种逻辑计算确定布尔值输出。通常形式为:F(b1,b2,...,bn)。
(带有 n 个来自两元素布尔代数 {0,1} 的布尔变量 bi,F 的取值也在 {0,1} 中)
所以,首先布尔函数是一个函数,那么是怎么样的一个函数呢?这个函数的奇效是,输入是一组布尔值,对输入进行某种逻辑运算,然后输出一个布尔值。
【1】http://pyeda.readthedocs.io/en/latest/bdd.html
【2】https://en.wikipedia.org/wiki/Binary_decision_diagram