像Wolfram Alpha或Mathematica这样的系统如何解决方程?

san*_*ity 23 algorithm wolfram-mathematica artificial-intelligence algebra

我正在构建一个基于网络的编程语言,部分受到Prolog和Haskell的启发(不要笑).

它已经具有相当多的功能,您可以在http://www.lastcalc.com/上查看原型.您可以在此处查看源代码并在此处阅读有关架构的信息.记住它是原型.

目前,LastCalc无法简化表达式或求解方程式.我不想在Java中对其进行硬编码,而是希望增强基本语言,以便可以使用语言本身来扩展它来执行这些操作(与Prolog一样).与Prolog不同,LastCalc具有更强大的搜索算法,Prolog是"具有回溯的深度优先搜索",LastCalc目前使用启发式最佳优先搜索.

在深入研究之前,我想更多地了解其他系统如何解决这个问题,特别是Mathematica/Wolfram Alpha.

我认为这个想法,至少在一般情况下,是你给系统一套规则来操纵方程(比如a*(b+c) = a*b + a+c)指定目标(例如,隔离变量x),然后让它松散.

所以,我的问题是:

  • 我的假设是否正确?
  • 应用规则的搜索策略是什么?例如.深度优先,广度优先,深度优先,迭代深化,某种最好的第一?
  • 如果它是"最好的第一",那么使用什么启发法来确定特定规则应用程序是否可能让我们更接近我们的目标?

我还要感谢任何其他的建议(除了"放弃" - 我经常忽略这条建议,这样做对我有好处;).

Mar*_*ann 10

我前段时间处理过这些问题.然后我找到了关于表达式简化的文档.它的标题是基于规则的表达式简化,并显示了有关Mupad简化的一些细节,后来成为了Matlab的一部分.

根据这份文件,你的假设是正确的.有一套用于处理表达式的规则.启发式质量度量被用作简化的目标函数.

  • 找不到:(你知道哪里有当前的链接? (2认同)