我读了一篇关于 Prolog 和逻辑编程的简短文章。我很好奇逻辑程序是否可以做代数。就像你能问方程 5+X = 7 中 X 的变量是什么并得到 -2 的答案吗?
问问题
2547 次
4 回答
15
所有严肃的 Prolog 系统都提供有限域上的约束逻辑编程,简称 CLP(FD),您可以使用它轻松求解许多此类方程。例如,使用 SICStus Prolog、SWI 和 Yap:
?- use_module(library(clpfd)).
true.
?- 5+X #= 7.
X = 2.
显然,答案是 2 而不是 -2。还可以查看其他领域的约束逻辑编程,例如 library(clpq) 的有理数。
于 2012-12-03T20:52:28.060 回答
3
Prolog 中有一些计算机代数系统的实现,包括方程简化器和PRESS方程求解器。还有一些线性和非线性方程的约束求解器,包括CLP(R,Q)和CLP (BNR) ,以及使用约束处理规则实现的其他几个求解器。
除了在 Prolog 中实现计算机代数系统,还可以在计算机代数系统中实现 Prolog 解释器。例如,有一篇文章描述了Mathematica 中基于规则的编程系统的实现。Wolfram Library Archive中的 Mathematica中还有一个逻辑编程系统的实现。
显然也可以使用 Sympy 的统一算法在 Sympy 中实现逻辑程序。
于 2018-07-31T22:57:14.940 回答
2
这个怎么样?请注意,这仅适用于X+Y=Z
.
equation(X,Y,Z):- var(X),X is Z-Y.
equation(X,Y,Z):- var(Y),Y is Z-X.
equation(X,Y,Z):- var(Z),Z is X+Y.
你可以问:
equation(5,X,7).
X = 2 .
?- equation(2,5,X).
X = 7.
?- equation(X,5,7).
X = 2
于 2012-12-03T20:02:26.067 回答