算法高手请进,关于波兰式(前缀)的优化
1.中缀表达式:a+b*c+d*e+~f
2.前缀表达式(波兰式):+++a*bc*de~f
3.后缀表达式(逆波兰式):abc*+de*+~f+
1.是我们常见的数学表达式
2.是波兰式
3.是逆波兰式
这里+表示||的关系,*表示&&的关系,~表示!
所以1、2、3都是逻辑表达式,而不是算术表达式
如果是算术表达式,采用逆波兰式比较合适;
但是因为是逻辑表达式,存在着短路现象,
比如A|B表示成波兰:|AB,
这样如果知道了操作符|,然后知道第一个操作数是1,
那后面的操作数就可以不管了,
当B是一个很复杂的逻辑表达式组合的时候,
短路就比较有意义了,
比如下面这个逻辑表达式
+ + * * * A ~ B C * ~ D E * F ~ G
有没有一种算法,可以优化波兰式的算法,
也就是前缀表达式的算法,能够判断出短路的情况呢?
我看了《编译原理》的第8章,有优化的部分,但是和我这里的情况不是很一样。