从布尔表达式中删除冗余括号的算法

时间:2016-08-04 15:14:19

标签: infix-notation reduction prefix-operator

我在前缀表示法中有一个布尔表达式。让我们说它是or and A B or or C D E。当我将其转换为中缀符号时,我最终得到了 ((A and B) or ((C or D) or E))。我想将它减少到(A and B) or C or D or E。我应该减少中缀符号还是实际上更容易从前缀表示法中减少等式。我应该使用什么算法?

1 个答案:

答案 0 :(得分:1)

可以在表达式X % (X1 ? X2 ? .. ? Xn) % X(n+1)中删除Paranthesis,其中Xi是带括号的表达式或布尔值“?”当且仅当每个“?”时,“%”是运算符运算符的优先级高于或等于“%”运算符。

对于中缀表示法,您将找到最内层表达式,检查是否可以删除括号,保存结果,处理父表达式并继续直到所有括号检查完成。

这变成了映射问题。后缀表示法使括号消除变得容易。前缀,中缀和后缀表示法之间的转换是微不足道的。