2013-11-21 70 views
2

我想检查两个方程在逻辑上是否相同。方程比较算法

例如,如像在Excel

= (A1+A2)*A3 

= A3*A1+A3*A2 

以上两个公式是逻辑上相同。我想知道提供此功能的任何算法。

谢谢,提前。

+0

你有一些已经到位例如表达式树来解析从原始字符串到一些类的那些? –

回答

3

你可以做的一件事是建立expression trees并比较它们。

如果你这样做,你可以检测到问题中的两个表达式是相等的。

的缺点是,它不会检测之间的平等:

k * A1A1 + A1 + ... (k times)

+2

构建表达式树是第一步。第二步可能是逻辑简化或简化,将相同的表达式放入相同的形式(例如'A *(B + C)==> A * B + A * C'),然后进行某种合理化或标准化过程这将使得阿贝尔表达式的任意排序都是一样的(比如'B * A ==> A * B'。 – RBarryYoung

+0

(我希望我可以做出回答的评论......哦)。解决这个问题很有趣我认为你需要至少有一个代数表达式的表示(以及解析或者构造它们的方法),然后还有一个确定它们的等价性的算法,如果只考虑多项式,我认为它可能相对简单,你可以看看Maxima [1]以获得灵感;在Maxima中,你想要的测试是'(ratsimp(expr_1 - expr_2)= 0)'[1] http://maxima.sourceforge .net,http://sourceforge.net/p/maxima –