计算括号内布尔表达式

时间:2015-11-28 07:13:24

标签: algorithm parentheses catalan

计算括号内布尔表达式的方法数。例如,布尔表达式我的意思是这样的,1 ^ 0 | 0 | 1,对于运算符,它可以是^,&或者。

做了一些参考和计算,似乎方法的数量总是(2n)!/((n + 1)!n!),其中n是运算符的数量。如果有人有任何想法为什么方法总是(2n)!/((n + 1)!n!),感谢分享见解。

这是一个关于如何表示不同括号方式的示例,例如,将两个结果括在括号中的两种不同方式为False。

1 ^((0 | 0)| 1)1 ^(0 |(0 | 1))

提前谢谢, 林

1 个答案:

答案 0 :(得分:1)

Catalan numbers给出了完全括起表达式的方法的数量。到目前为止,理解这种情况的最简单方法是使用以下加泰罗尼亚数字公式:

formula

当有0个运算符时,只有一种方法可以使表达式完全括号:(x)

当我们有n个运算符的表达式时,我们可以将第一个运算符放在n个地方:

x|x       One operator, one possible location.
 ^

x|x|x     Two operators, two possible locations.
 ^ ^

当我们“放置”一个运算符时,我们只需将可能的数量乘以左侧括号的方法乘以右侧的括号。我们为每个可能的位置执行此操作,并总结这些可能性。