2013-11-21 104 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 –