在Prolog查询中查找最年长的人
我有一个问题: 数据: 因此,此查询将返回最年长的人:在Prolog查询中查找最年长的人,prolog,Prolog,我有一个问题: 数据: 因此,此查询将返回最年长的人: oldest(P) :- age(P, X), \+ ( age(_, Y), Y > X ). 我是Prolog新手,很难理解这个查询,尤其是\+部分 我的理解是:要得到最年长的人,我们需要所有年龄为X的人,没有那些年龄为Y大于X的人。但这将返回最年轻的人。我很困惑:D 您能帮助阅读此查询吗?内容如下: p是一个人(其年龄为X),因此没有其他人的年龄高于p。这里是另一种解读谓词的方法 上面写着:P是一个人(其年龄为X),因此没有其
oldest(P) :- age(P, X), \+ ( age(_, Y), Y > X ).
我是Prolog新手,很难理解这个查询,尤其是\+
部分
我的理解是:要得到最年长的人,我们需要所有年龄为X的人,没有那些年龄为Y大于X的人。但这将返回最年轻的人。我很困惑:D
您能帮助阅读此查询吗?内容如下:
p是一个人(其年龄为X),因此没有其他人的年龄高于p。这里是另一种解读谓词的方法
上面写着:P是一个人(其年龄为X),因此没有其他人的年龄高于P的年龄。@gusbro我明白,请将其作为答案发布。更有趣的是:添加
年龄(tony,75)。
然后再次提问!你不会得到最年长的人,而是最年长的人。
oldest(P) :- age(P, X), \+ ( age(_, Y), Y > X ).
% For all person P, P is the oldest person if
oldest(P) :-
% exist X such that the age of P is X, and
age(P, X),
% do not exist Y such that Y is the age of some person and Y > X.
\+ (age(_, Y) , Y > X).