gpt4 book ai didi

使用列表的 Prolog 祖先子句

转载 作者:行者123 更新时间:2023-12-01 12:46:26 25 4
gpt4 key购买 nike

我正在努力理解这个基本的 Prolog 概念。

据我了解,判断一个人的祖先的基本条款如下:

ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).

但是,我试图了解这对于实现列表以确定 parent 的 child 的 prolog 程序是如何工作的,即:

parent_of(simon, [matthew, andrea, joanne]).

为了确定某人是否是某人的父亲,我正在使用这个非常有效:

father_of(X, Y) :- parent_of(X, List), my_member(Y, List), male(X).

但是,我似乎无法弄清楚如何让它对上面的祖先子句起作用。

最佳答案

member/2 它是元素和列表之间更简单的关系:

ancestor_of(X, Y) :- parent_of(X, Ys), member(Y, Ys).
ancestor_of(X, Y) :- parent_of(X, Zs), member(Z, Zs), ancestor_of(Z, Y).

我添加了一个关系来测试传递规则

parent_of(simon, [matthew, andrea, joanne]).
parent_of(andrea, [bill, joan]).

产量

?- ancestor_of(andrea,A).
A = bill ;
A = joan ;
false.

?- ancestor_of(simon,A).
A = matthew ;
A = andrea ;
A = joanne ;
A = bill ;
A = joan ;
false.

?- ancestor_of(X,bill).
X = andrea ;
X = simon ;
false.

关于使用列表的 Prolog 祖先子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388454/

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