gpt4 book ai didi

prolog - different/2-是否存在纯粹的确定性定义?

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

different(Xs, Ys) :-
member(X, Xs),
non_member(X, Ys).
different(Xs, Ys) :-
member(Y, Ys),
non_member(Y, Xs).

尽管从声明的 Angular 来看,使用 member/2 non_member/2 的定义几乎是完美的,但它为某些查询提供了冗余的解决方案,并且到处都是选择点。

对此有什么改进的定义(可能纯粹使用 if_/3 (=)/3 ),使得 different/2描述了完全相同的解决方案集,但至少对于地面查询是确定的(因此,不会留下任何无用的选择点)并省略(如果可能)任何多余的答案?

1个
实际上, different([a|nonlist],[]), different([],[b|nonlist])成功。它同样可能失败。因此,对于两者都失败的解决方案就可以了(也许更好)。

最佳答案

让我们将其发挥到极致-借助 list_nonmember_t/3 exists_in_t/3
or_/2 !

some_absent_t(Xs,Ys,Truth) :-
exists_in_t(list_nonmember_t(Ys),Xs,Truth).

different(Xs,Ys) :-
or_(some_absent_t(Xs,Ys),
some_absent_t(Ys,Xs)).

关于prolog - different/2-是否存在纯粹的确定性定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30863784/

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