【问题标题】:Search exhaustively through a knowledge base in Prolog through a query通过查询彻底搜索 Prolog 中的知识库
【发布时间】:2022-09-23 02:39:59
【问题描述】:

如果我有一个关于人及其生日的知识库,例如:

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

如何在不修改知识库的情况下创建一个查询来彻底搜索知识库以找到最年轻的人?

  • 使用 findall/3 和 minlist 或 maxlist

标签: prolog


【解决方案1】:

可以使用aggregate_all

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

youngest_person(Person) :-
    % Find lowest year
    aggregate_all(min(Y), person_year(_P, Y), Year),
    % Lookup person from lowest year
    person_year(Person, Year).

结果 swi-prolog:

?- youngest_person(Person).
Person = adam.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多