Pow is Pow_tmp * X.
这里截断符号暗示“若是已经选择了某个法则 , 那么决不许可回溯并选择统一谓詞的其他法则” 。 是以 , 这将会发生合理成果 。
文章插图
文章插图
6此时我们可能已经意识到上一节中给出的两递归法则也会发生近似的、不但愿的成果 , 而这可以经由过程在它们的遏制前提平分别插手截断而加以避免 。 插手截断后的法式如图所示 。
总而言之 , 若是在遏制前提处可能用到递归法则 , 那么必需在递归谓词的遏制前提中插手截断符号 。
文章插图
文章插图
截断与谓词fail的联用1截断的另一个常用体例是与谓词fail联用 。 fail是一个Prolog尺度谓词 , 因为它老是掉败 , 因而可引起回溯 。 截断可设置在fail前面 , 以防止掉败后的回溯 。
考虑图中的法式 。 这里截断与fail联用可以包管当一个雇员知足某个表白其不合适候选前提的法则时 , 在其它任何法则都不再考虑 。 例如 , 一个员工小于50岁 , 谓词fail将使方针eligible掉败 , 而截断则包管在其它两个eligible法则中都不考虑他 。
文章插图
2该当注重 , 截断与fail联用凡是可用否认谓词“\+”取代 , \+是Prolog另一个尺度谓词 , 若是方针X掉败 , 则方针\+(X)当作功;若是X当作功 , 则会掉败 。 是以上面法式可以重写为图片中的形式 。
这里把三个eligible法则合当作为一个法则 , 这两种编程体例中哪种可读性更高呢?关于这一问题存在争议 , 因为这取决于对截断的理解水平 。
2Prolog的根基概念和语律例则
文章插图
操纵截断节制回溯水平的原因尽管回溯是Prolog说话中最有效的机制之一 , 但基于下述来由 , 有时我们但愿节制回溯的水平:
?我们可能不但愿Prolog得出问题的全数解 , 因为有些解对我们来说可能没有任何用处;
?一旦找到一个特定的解 , 就没有需要去找其它更多的解 , 而其它解可能现实上是不准确的;
【SWI-Prolog的截断机制】?年夜量回溯会使法式运行的效率很低 , 此中有两个原因 , 一是回溯要破费一些时候才能完当作 , 二是回溯中Prolog所做的标识表记标帜要占用年夜量的计较机内存 。
文章插图
注重事项可以测验考试调试与之有关的Prolog法式 , 领会其工作机制 。
推荐阅读
- Excel 2007 中,怎么计算度分秒的正弦
- 电脑常用的七种快捷键
- 怎么样在爱剪辑中添加视频的字幕
- Excel如何根据多列的多个条件进行查询
- 用PS做一个不规则的照片切割效果
- 朋友圈里的哪些人最缺爱?
- 家常小蛋糕的做法
- 自热火锅的操作流程
- 小苏打蒸馒头的做法
- 用奶粉做蛋糕的做法