什么事!prolog中的符号是什么意思?

什么事!prolog中的符号是什么意思?,prolog,prolog-cut,Prolog,Prolog Cut,我真的需要知道这个符号在后面是什么意思,这个符号。。。例如,看看这段代码 glitter(yes) :- agent_location(X, Y), gold(X, Y), ! . 符号表示切口。您可以阅读有关cut的更多信息。 此外,还可以在prolog中找到一个示例。符号表示切口。您可以阅读有关cut的更多信息。 此外,还可以在prolog中找到一个示例。要理解“切割”(!),您需要了解prolog对其代码进行评估时涉及的回溯过程。您可能知道,对于这段代码,Prolog

我真的需要知道这个符号在后面是什么意思,这个符号。。。例如,看看这段代码

glitter(yes) :-
   agent_location(X, Y),
   gold(X, Y),
   ! . 

符号表示切口
。您可以阅读有关
cut
的更多信息。
此外,还可以在prolog中找到一个示例。

符号表示切口
。您可以阅读有关
cut
的更多信息。 此外,还可以在prolog中找到一个示例。

要理解“切割”(
),您需要了解prolog对其代码进行评估时涉及的回溯过程。您可能知道,对于这段代码,Prolog只知道当X和Y也使用
gold(X,Y)
进行验证时,如果
agent\u位置(X,Y)
本身得到验证,则使用输入
yes
验证规则
glitter()
。换句话说,
agent\u location
gold
必须使用相同的参数进行验证

这意味着Prolog将尝试查找X和Y的特定值,以便对所有内容进行验证。它将沿着一条求值路径(求值树)向下,尝试X的一个值,并查看是否可以使用相同的X值继续求值。如果失败(假设Prolog在
agent\u位置中尝试了
X=0
,但
X=0
不验证
gold
)它将返回并尝试使用
代理位置的另一个规则。这就是“削减”的时候了。如果某件事发生在
之后失败,Prolog将永远不会检查它是否可以用另一条规则解决剪切之前的所有问题

在本例中,最终,如果该特定的
glitter
规则的所有操作都失败,Prolog将尝试另一个规则进行验证。我想您的原始代码为
glitter
指定了另一条规则,如果我没有弄错的话,您向我们展示的规则末尾的剪切意味着,如果遵循此规则的规则失败,Prolog将不会返回并检查它是否可以尝试新值来解决
glitter(yes)

它通常用于提高计算效率和防止无限循环。

要理解“切割”(
)您需要了解Prolog代码计算中涉及的回溯过程。您可能知道,对于这段代码,Prolog只知道当X和Y也使用
gold(X,Y)
进行验证时,如果
agent\u位置(X,Y)
本身得到验证,则使用输入
yes
验证规则
glitter()
。换句话说,
agent\u location
gold
必须使用相同的参数进行验证

这意味着Prolog将尝试查找X和Y的特定值,以便对所有内容进行验证。它将沿着一条求值路径(求值树)向下,尝试X的一个值,并查看是否可以使用相同的X值继续求值。如果失败(假设Prolog在
agent\u位置中尝试了
X=0
,但
X=0
不验证
gold
)它将返回并尝试使用
代理位置的另一个规则。这就是“削减”的时候了。如果某件事发生在
之后失败,Prolog将永远不会检查它是否可以用另一条规则解决剪切之前的所有问题

在本例中,最终,如果该特定的
glitter
规则的所有操作都失败,Prolog将尝试另一个规则进行验证。我想您的原始代码为
glitter
指定了另一条规则,如果我没有弄错的话,您向我们展示的规则末尾的剪切意味着,如果遵循此规则的规则失败,Prolog将不会返回并检查它是否可以尝试新值来解决
glitter(yes)


它通常用于提高计算效率和防止无限循环。

您应该阅读prolog教程或获得一本好的教科书。这里有很多要解释的。Prolog进行回溯以找到解决方案。这意味着它会根据您给定的事实和规则探索尽可能多的选项,以获得成功。剪切(
)告诉Prolog不要在该点回溯。有关剪切运算符的解释,请参见例如。当你寻找时,你会很快发现它不容易处理。你应该读一本prolog教程或一本好的教科书。这里有很多要解释的。Prolog进行回溯以找到解决方案。这意味着它会根据您给定的事实和规则探索尽可能多的选项,以获得成功。剪切(
)告诉Prolog不要在该点回溯。有关剪切运算符的解释,请参见例如。当你寻找答案时,你会很快发现这并不容易处理。仅仅基于链接的答案并不被认为是好的形式。你应该解释切割,然后参考链接了解更多细节。仅仅基于链接的答案不被认为是好的形式。你应该解释切割,然后参考链接了解更多细节。