组合逻辑设计问题,对于要声明的输入意味着什么

use*_*755 0 logic

问题是:考虑一个4输入布尔函数,只要它的两个输入被断言,它就被断言,构造它的真值表,然后是问题的其他部分.

我不想要一个我想自己解决这个问题的答案,我只想知道断言的含义以及如何从真值表开始.任何帮助表示赞赏.

lau*_*ura 6

我认为在这种情况下它意味着真实(所以你有4个布尔值,你必须产生真正的2才是真的).你的教科书应该更好地理解这个问题.通常你断言某事是真的.

编辑.这是一个3变量示例Conjunctive normal form.只要其中两个是假的,我就认为函数是真的.注意如何通过水平读取变量然后垂直读取数字的二进制表示.

     1   2    3   R      
L1   0   0    0   0
L2   0   0    1   1
L3   0   1    0   1
L4   0   1    1   0
L5   1   0    0   1
L6   1   0    1   0
L7   1   1    0   0
L8   1   1    1   0
Run Code Online (Sandbox Code Playgroud)

理论上,您将每条线视为一个单独的等式.如果变量值为0,v则将其写为,如果为1,则将其写为~v.您\/在一行上使用变量之间的逻辑或(),^在不同行之间使用logican和().你只和一起是假的.

因此,考虑到第1 p列 - 第2列 - q和第3列 - r,第一行是p \/ q \/ r,结果为假,因此它被添加到最终公式,第二行p \/ q \/ ~r但是为真,因此不会添加到公式等.您需要and(^)当且仅当行的公式为假时,这些行在一起.因此,您可以通过将线L1,L4,L6,L7,L8组合在一起来获得CNF.一旦你拥有了这个巨大的公式,你就可以努力使它更小.

我已经这么久了,我真的不记得有关为什么会这样的细节,但我记得在某些时候研究证据.