首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数学公式比较

数学公式比较
EN

Stack Overflow用户
提问于 2017-12-28 11:12:46
回答 1查看 113关注 0票数 0

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

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

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

我们同意,这三个公式是相等的。我们如何比较不同的公式,并知道它们是否相等?您知道允许您重写和简化这些公式以便进行比较的java API吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-28 11:33:58

这个任务并不简单,需要了解解析树。tree

其主要思想是构建表达式的解析树并将其规范化,将节点排列成“相等”表达式的顺序。

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

树的前缀遍历将是

代码语言:javascript
复制
+ * 2 a * b c

如果采用常量先于变量的约定,如果重命名变量,

代码语言:javascript
复制
+ * 2 V0 * V1 V2

将表示所有表达式,如a*2+d*ff*a+2*b.但不是2*a+a*c,它有一个重复的变量,应该是+ * 2 V0 * V0 V1

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

代码语言:javascript
复制
+ V2 V2

拐杖被看作是两个相等公式的和,并被转化为

代码语言:javascript
复制
* 2 V2

在进一步处理之前。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48006424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档