Cut (逻辑编程)

编辑
本词条由“匿名用户” 建档。
(了解如何以及何时删除此模板信息)。 切,在Prolog中,是一个目标,写成 !,它总是成功的,但不能被回溯。切断可以用来防止不必要的回溯,这可能会增加不必要的解决方案和/或查询的空间/时间开销。 切断应该少用。虽然切分可以插入到包含错误的代码中,但如果不需要测试,在适当的地方用注释说明,是很好的做法,因为切分保证了测试的真实性。 一些程序员将切分称为有争议的控制设施,因为它...

Cut (逻辑编程)

编辑

(了解如何以及何时删除此模板信息)。

切,在Prolog中,是一个目标,写成 !,它总是成功的,但不能被回溯。切断可以用来防止不必要的回溯,这可能会增加不必要的解决方案和/或查询的空间/时间开销。

切断应该少用。虽然切分可以插入到包含错误代码中,但如果不需要测试,在适当的地方用注释说明,是很好的做法,因为切分保证了测试的真实性。

一些程序员将切分称为有争议的控制设施,因为它只是为了效率而加入的,并不是一个霍恩条款

类型

编辑

绿色切分

使用纯效率的切分被称为绿色切分。绿色切割是用来使程序更有效率而不改变其输出。例子。

gamble(X) :- gotmoney(X), ! gamble(X) :- gotcredit(X),+ gotmoney(X)。

这就是所谓的绿色切割运算符。!告诉解释器停止寻找替代品;但是,如果gotmoney(X)失败,它将检查第二条规则。尽管在第二条规则中检查gotmoney(X)似乎是多余的,因为Prolog/的出现取决于前面gotmoney(X)的失败,否则第二条规则就不会首先被评估。添加+ gotmoney(X)可以确保第二条规则始终有效,即使xxx条规则被意外删除或改变,或在第二条规则之后移动。

Cut (逻辑编程)

红色切割

不属于绿色切割的切割被称为红色切割,例如。

gamble(X) :- gotmoney(X), ! gamble(X) :- gotcredit(X)。

削减运算符和规则的顺序需要正确放置以确定其逻辑意义。如果出于任何原因,xxx条规则被删除(例如,通过剪切和粘贴事故)或移到第二条规则之后,第二条规则将被破坏,即规则+ gotmoney(X)不能保证。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/190333/

(1)
词条目录
  1. Cut (逻辑编程)
  2. 类型
  3. 绿色切分
  4. 红色切割

轻触这里

关闭目录

目录