gpt4 book ai didi

prolog - 查找序言程序给出错误结果的查询

转载 作者:行者123 更新时间:2023-12-04 04:57:35 25 4
gpt4 key购买 nike

这个 Prolog 程序将第三个参数定义为前两个数字参数的最大值:

max(X, Y, X) :- X >= Y, !.
max(X, Y, Y).

我认为这个程序运行得很好。但我被告知它可能会给出不正确的结果。你能说出什么时候以及为什么吗?

最佳答案

这是一个教科书般的例子。

?- max(5,1,1).
true.

作业:为什么程序出错了?我们如何使程序正确?

编辑
max(X, Y, X) :- X >= Y, !.
max(X, Y, Y).

我们的意图是说:

If X is greater than Y, then Max is X. Otherwise, Max must be Y.



取而代之的是:

When the first and third arguments (X and Max) can be unified, and X is greater than Y, succeed. Otherwise, if the second and third arguments (Y and Max) can be unified, succeed.



很明显的问题出现了,第一个和第三个参数不能统一,但第二个和第三个参数可以。

相反:
max(X, Y, X) :- X >= Y.
max(X, Y, Y) :- X < Y.


max(X, Y, Max) :- X >= Y, !, Max = X.
max(_, Max, Max).

关于prolog - 查找序言程序给出错误结果的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575473/

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