gpt4 book ai didi

prolog - 序言中的合取与析取优先级

转载 作者:行者123 更新时间:2023-12-03 22:46:48 24 4
gpt4 key购买 nike

据我所知,合取的优先级高于析取。

我们有以下知识库:

a(1).
a(2,3).
a(3,2).
a(4,5,3).
b.
b(1,2).
b(3).
c.

我们的目标是:
?- a(X,Y);b(Z),c,fail,d.

所以问题来了:
我的老师说目标分为 4 个子目标,通过连词连接:
(a(X,Y);b(Z)),
c,
fail,
d.

并且执行此查询时我不应该得到任何结果。
但是连词的优先级更高,对吧?
目标不应该分成两个子目标(不是四个),通过析取连接:
a(X,Y);
b(Z),c,fail,d.

所以现在我想知道谁是对的,谁是错的。
有人可以解释一下吗?

**当我执行查询时,我实际上得到了结果。

最佳答案

我认为问题主要是由于过度使用“优先”一词造成的误解。

Prolog 运算符由可扩展谓词 op(+Precedence, +Type, :Name) 定义。在哪里 Precedence是 0 到 1200 之间的整数,Type指定关联性和 Name给出实际的运算符。

下表显示了一些预定义的运算符:

1100    xfy ;, |
1000 xfy ,

对于歇斯底里的葡萄干, 更小 Precedence 的整数值表示运算符绑定(bind) 更紧 (即,它具有 更高的 优先级)。

所以析取运算符的优先级是 比联合运算符之一,因为它的值 Precedence更高。

关于prolog - 序言中的合取与析取优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29060684/

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