Cut (逻辑编程)
词条百科 4
(了解如何以及何时删除此模板信息)。
切,在Prolog中,是一个目标,写成 !,它总是成功的,但不能被回溯。切断可以用来防止不必要的回溯,这可能会增加不必要的解决方案和/或查询的空间/时间开销。
切断应该少用。虽然切分可以插入到包含错误的代码中,但如果不需要测试,在适当的地方用注释说明,是很好的做法,因为切分保证了测试的真实性。
一些程序员将切分称为有争议的控制设施,因为它只是为了效率而加入的,并不是一个霍恩条款。
类型
绿色切分
使用纯效率的切分被称为绿色切分。绿色切割是用来使程序更有效率而不改变其输出。例子。
gamble(X) :- gotmoney(X), ! gamble(X) :- gotcredit(X),+ gotmoney(X)。
这就是所谓的绿色切割运算符。!告诉解释器停止寻找替代品;但是,如果gotmoney(X)失败,它将检查第二条规则。尽管在第二条规则中检查gotmoney(X)似乎是多余的,因为Prolog/的出现取决于前面gotmoney(X)的失败,否则第二条规则就不会首先被评估。添加+ gotmoney(X)可以确保第二条规则始终有效,即使xxx条规则被意外删除或改变,或在第二条规则之后移动。

红色切割
不属于绿色切割的切割被称为红色切割,例如。
gamble(X) :- gotmoney(X), ! gamble(X) :- gotcredit(X)。
削减运算符和规则的顺序需要正确放置以确定其逻辑意义。如果出于任何原因,xxx条规则被删除(例如,通过剪切和粘贴事故)或移到第二条规则之后,第二条规则将被破坏,即规则+ gotmoney(X)不能保证。
内容来源于网络,本内容不代表16map.com立场,内容投诉举报请联系16map.com客服。如若转载,请注明出处:https://16map.com/wiki/nmjeaixlnite