将二进制公式转换为香农范式

时间:2017-05-13 00:41:12

标签: logic boolean-logic binary-decision-diagram

我想知道将二进制公式转换为香农范式的步骤。

a⪯b⪯c⪯d - variable ordering.
F = b&c&!d|c&d&!b|d&!c|!c&!d

如何将其转换为Shannon Normal Form?

1 个答案:

答案 0 :(得分:1)

首先计算F | {a = 0}和F | {a = 1}。因为F不依赖于变量a,所以两种情况都会得到F:

F|{a=0} = F
F|{a=1} = F

继续计算F | {a = 0,b = 0},F | {a = 0,b = 1},F | {a = 1,b = 0}和F | {a = 1 ,b = 1}。你会得到

F|{a=0,b=0} = F|{a=1,b=0} = c&d|d&!c|!c&!d = !c|d
F|{a=0,b=1} = F|{a=1,b=1} = c&!d|d&!c|!c&!d = !c|!d

继续使用变量c和变量d,最后得到:

F = !a(!b(!c(!d&1+d&1)|c(!d&0+d&1))|b(!c(!d&1+d&1)|c(!d&1+d&0))|
     a(!b(!c(!d&1+d&1)|c(!d&0+d&1))|b(!c(!d&1+d&1)|c(!d&1+d&0))

如果你需要相反的排序,只需按变量的恢复顺序计算,你可能得到完全不同的结果。

这是来自BDD Scout(http://biddy.meolic.com/)的屏幕截图,遗憾的是,此工具不支持没有补充边缘的BDD。 BDD for function F