通过巧妙的替换进行机器数学推理,如何使用 AI

人工智能 数学 推理
2021-11-16 18:23:34

我有三个方程,它们将五个变量{a, b, c, r, s}与一个总和和两个比率联系起来。

方程。1:a = b + c;
方程。2:s = b / a;
方程。3:r = b / c。

给定五个变量中的任何一个的两个值,我得到了一个解决方案。但是,这不是我想要解决的自动化问题。

只需知道s,我就可以得到变量r的解。这通过“人类算法”解决,如下所示。

  1. 代入等式。1 在等式。2.
  2. 除以新方程的第二项。2 由变量 c。
  3. 用等式的表达式替换 b/c。3.

这意味着 s = r / (r+1)。

问题是——人工智能算法如何解决这个问题?即机器应该认识到给定变量r,她可以直接获得变量s而不需要另一个变量。

2个回答

你在这里问的实际上不是推理,而是符号计算。Sympy是执行此操作的库的一个示例。

解释计算机代数系统可能是一系列讲座,这对于一个问题来说太宽泛了。给你一个想法:(1)象征性地表示方程(2)将它们带入范式(3)替代。

尽管它并不优雅,但您可以通过蛮力简化问题:尝试求解变量并将其代入其他方程的所有组合。

有关的:

我会将这个问题转化为图形搜索,其中顶点是“等价的方程组”,边是“有效操作”,例如替换、除法等,它们始终确保所有状态在数学上是等价的。一些状态和边缘的一个非常简单的示例(重新引用您的问题):

State 0:
  Eq. 1: a = b + c;
  Eq. 2: s = b / a;
  Eq. 3: r = b / c.

Operation 0-->1:
  Multiply Eq. 3 by c

State 1:
  Eq. 1: a = b + c;
  Eq. 2: s = b / a;
  Eq. 3: rc = b.

Operation 0-->2:
  Substitute Eq 1 into 2

State 2:
  Eq. 1: a = b + c;
  Eq. 2: s = b / (b+c);
  Eq. 3: r = b / c.

Operation 2-->3:
  Rearrange Eq 3 so B is on right hand side.   

etc etc

根据您有多少操作,这确实意味着该图可能非常大,因此您可能不想生成整个图(实际上,如果允许的操作数量不受限制,则该图将是无限的)。图形也可能包含循环,因为可能有多种方法可以达到相同的状态。

您将不得不考虑如何开发用于表示状态和操作的数据结构。由于这是一个搜索问题,它将有助于定义您的“目标”状态是什么样的(例如,根据r定义s 的状态)。

要搜索图表,我推荐以下方法之一:

  • 广度优先搜索:这将找到达到任何目标状态所需的最短操作数
  • 最佳优先搜索:如果图表对于广度优先来说太大了,您可能需要使用启发式方法将搜索引导到目标状态,例如,您可以通过方程的 LHS 上需要多少变量或类似的东西来评估状态-- 这里需要一些实验。

搜索算法的确切选择将取决于图有多大,而这又取决于您想要多少操作/边。