You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不修改Prolog知识库,通过穷尽搜索查询最年轻的人?

找出知识库中最年轻的人的Prolog查询方法

给定存储人物出生年份的Prolog知识库:

birthYear( adam , 2000 ).
birthYear( bob  , 2001 ).
birthYear( john , 2002 ).

以下两种查询方式都能在不修改原知识库的前提下,通过穷尽搜索找到最年轻的人(即出生年份最大的人物):

方法一:收集所有记录后取最大值

利用findall收集所有(出生年份, 人物)的元组,再通过max_member找出其中年份最大的记录,对应的人物就是最年轻的:

findall((Y, P), birthYear(P, Y), Pairs),
max_member((MaxY, Youngest), Pairs).

执行后会返回MaxY = 2002, Youngest = john。

方法二:通过全域验证确认最大值

先匹配任意人物及其出生年份,再用forall验证知识库中不存在出生年份更大的人物,以此确认当前人物是最年轻的:

birthYear(Youngest, MaxY),
forall(birthYear(_, Y), Y =< MaxY).

执行后同样会返回MaxY = 2002, Youngest = john。

内容的提问来源于stack exchange,提问作者Azmine Sachchha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:46:08