数学公式的比较



我正在面临一个小问题解析和比较数学公式。

假设我们有以下3个公式:

  • 2*a+b*c
  • j*i+e+e
  • x+(y*z)+x

我们同意,3个公式相等。我们如何比较不同的公式并知道它们是否相等?您是否知道允许您重写并简化这些公式以比较它们的Java API?

此任务不是微不足道的,需要对解析树的理解。https://en.wikipedia.org/wiki/parse_tree

主要思想是构建表达的解析树并使其正常化,以使得订单相同的"相等"表达式的方式排列。

例如,您的第一个表达式将作为两种产品(*)的总和( )解析,其中一种涉及常数和变量,另一个涉及其他两个变量。

树的前缀遍历将为

+ * 2 a * b c

如果您采用了在变量之前出现常数的惯例,并且如果您重命名变量,

+ * 2 V0 * V1 V2

将代表所有表达式,例如a*2+d*ff*a+2*b ...但不是2*a+a*c,它具有重复变量,应为+ * 2 V0 * V0 V1


您通过像术语一样重组来使事情变得更加困难(e+e成为2*e)。这可能可以通过预处理树木并发现相同的子树来实现。在给定情况下

+ V2 V2

甘蔗被视为两个相等公式的总和,然后转到

* 2 V2

在进一步处理之前。


我不确定一般情况是否那么容易。

相关内容

  • 没有找到相关文章

最新更新