gpt4 book ai didi

prolog - Prolog 约束逻辑编程 (clpr) 中的未知数顺序

转载 作者:行者123 更新时间:2023-12-01 00:16:42 24 4
gpt4 key购买 nike

我有:

:-use_module(library(clpr)).
comp(X, Y, Z):-
{X = Y * Z, Y = Z, Y > 0, Z > 0}.

其中的查询:

?-comp(X,3,Z).

产量:

X = 9.0,
Z = 3.0

如预期。但是为什么不

comp(9,Y,Z).

还给我 Y 和 Z 的值?我得到的是:

{Z>0.0,Y=Z,9-Y*Z=0.0},
{9-Y*Z=0.0},
{9-Y*Z=0.0}

谢谢!

最佳答案

可能是所使用的 CLP(R) 的一个弱点,即二次情况不能很好地工作。在 Y = Z 之后,显然 X = Y**2,然后 X = 9 和 Y > 0,你应该很容易得到 Y = 3。你使用哪个 CLP(R)?

CLP(R) 不仅需要支持线性等式和不等式。使用例如 Gröbner 基础算法,CLP(R) 可以做更多,甚至是代数。一些计算机代数系统可以轻松做到这一点。

所以我想这不是 Prolog 本身的问题,而是库的问题。严格来说CLP(X)只表示一个域X。对于实数的域R,有各种各样的势方程和不方程求解器。

关于prolog - Prolog 约束逻辑编程 (clpr) 中的未知数顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com