gpt4 book ai didi

第一个谓词中的 Prolog Cut 运算符

转载 作者:行者123 更新时间:2023-12-04 05:04:00 24 4
gpt4 key购买 nike

我在 Prolog 中有以下基础:

holiday(friday,may1).
weather(friday,fair).
weather(saturday,fair).
weather(sunday,fair).
weekend(saturday).
weekend(sunday).

picnic(Day) :- !,weather(Day,fair), weekend(Day).
picnic(Day) :- holiday(Day,may1).

当我跑 picnic(When).我得到以下跟踪:
[trace]  ?- picnic(When).
Call: (6) picnic(_G716) ? creep
Call: (7) weather(_G716, fair) ? creep
Exit: (7) weather(friday, fair) ? creep
Call: (7) weekend(friday) ? creep
Fail: (7) weekend(friday) ? creep
Redo: (7) weather(_G716, fair) ? creep
Exit: (7) weather(saturday, fair) ? creep
Call: (7) weekend(saturday) ? creep
Exit: (7) weekend(saturday) ? creep
Exit: (6) picnic(saturday) ? creep
When = saturday ;
Redo: (7) weather(_G716, fair) ? creep
Exit: (7) weather(sunday, fair) ? creep
Call: (7) weekend(sunday) ? creep
Exit: (7) weekend(sunday) ? creep
Exit: (6) picnic(sunday) ? creep
When = sunday.

我的疑问是:据我所知,当 左侧的谓词出现时,cut 运算符应该停止搜索替代项。 ! 信号是真的。第一个位置的信号是什么意思?为什么解释器一直在寻找可以将其他谓词变为真的其他值?

最佳答案

那个削减的效果是你的第二次野餐/1 规则将被完全忽略。在您的程序生命周期内,它永远不会有机会被触发。

但是回溯仍然在可用的替代方案(切割右侧的目标)中起作用,您可以在跟踪中清楚地观察它们。

关于第一个谓词中的 Prolog Cut 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754981/

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