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

Algorithm to remove redundant parentheses from a boolean expression

我有一个前缀表示法的布尔表达式。假设它是 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。我应该减少中缀表示法还是实际上更容易从前缀表示法中得到简化方程。我应该使用什么算法?

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

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

这就变成了一个映射问题。后缀表示法使括号消除变得容易。前缀、中缀和后缀符号之间的转换很简单。