我正在编写一个表示逻辑表达式的控制台程序(类似于AB'C + A'C
),以便可以简化(优化)表达式并评估其值。我尝试使用string
来表示一个表达式,但是通过这种方式,我只能基于输入值来评估其值,但是优化表示为字符串的表达式非常困难(对我来说),例如{ 1}}可以是ABC + AB
,因为AB
= ABC+AB
= AB(C+1)
。我还认为它是使用AB
的另一种方式。例如,vector of vector of literal
将如下图所示:
说明:在上面的示例中,每一列代表每个术语。第一列代表AB'C + AB + BC
,第二列代表AB'C
,第三列代表AB
。
我认为这是呈现逻辑表达式的一种好方法,但是我仍然找不到通过这种方法优化抑制的表达式的方法。我也用谷歌搜索,但没有找到解决该问题的示例项目。
简而言之,我希望有人给我建议一种更容易表示,评估和优化逻辑表达式的方法。预先感谢!
答案 0 :(得分:1)
如何表示,评估和优化逻辑表达式?
要表示这一点,您需要使用表达式树,并且由于您仅使用的是二进制运算符的逻辑运算符,因此您想使用binary expression tree或更确切地说是this。
要简化树,请使用Boolean algebra的定律。
如果所有值均已绑定,则通过简化过程,树将简化为具有true
或false
的根节点。
对于某些示例代码,我检查了Rosetta Code,但是它们没有计算布尔表达式的任务。最近的任务是arithmetic evaluation。