我在前缀表示法中有一个布尔表达式。让我们说它是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
。我应该减少中缀符号还是实际上更容易从前缀表示法中减少等式。我应该使用什么算法?
答案 0 :(得分:1)
可以在表达式X % (X1 ? X2 ? .. ? Xn) % X(n+1)
中删除Paranthesis,其中Xi是带括号的表达式或布尔值“?”当且仅当每个“?”时,“%”是运算符运算符的优先级高于或等于“%”运算符。
对于中缀表示法,您将找到最内层表达式,检查是否可以删除括号,保存结果,处理父表达式并继续直到所有括号检查完成。
这变成了映射问题。后缀表示法使括号消除变得容易。前缀,中缀和后缀表示法之间的转换是微不足道的。