【发布时间】:2013-04-05 07:32:39
【问题描述】:
假设我有一个数字 X,我希望求解方程组,比如 Y+Z=X, Z*Y = 1。
现在,这有解 Y=1/Z 和 Z = (sqrt(X*X-4)+X)/2 或 (X-(sqrt(X*X-4)))/2。
所以我可以在 Prolog 中编写:
solve(X,Y,Z):- Y is (sqrt(X*X-4)+X)/2, Z is 1/Y.
solve(X,Y,Z):- Y is (X-(sqrt(X*X-4)))/2,Z is 1/Y.
这行得通。
但是
这需要我做大量的前期工作,基本上是事先解决它,然后让 Prolog 评估答案。
有什么方法可以在不事先求解 X 的情况下得到 Z 和 Y?
我不能只写像
这样的东西solve(X,Y,Z):- X is Y+Z, Z is 1/Y.
因为实例化错误。
【问题讨论】:
标签: prolog equation-solving constraint-programming