prolog杂记

prolog杂记Prolog 没有复杂的语法 程序仅含有事实 规则和目标三种类型的语句 且都用谓词表示 一旦给它递交必要的事实和规则之后 就使用内部的演绎推理机制自动求解程序给定的目标 而不需要在程序中列出详细的求解步骤 1 事实 fact 格式 谓词名 项表 例子 注意末尾的 不能省略 student john 约翰是学生 like mary music 玛丽喜欢音乐 2 规则

1.事实(fact)
格式:〈谓词名〉 (〈项表〉).
例子:(注意末尾的.不能省略)




student(john).//约翰是学生 like(mary,music).//玛丽喜欢音乐

2.规则(rule)一般表示对象间的因果关系、蕴含关系或对应关系
格式:〈谓词名〉(〈项表〉):-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}.

bird(X):-animal(X),has(X,feather). run:-start,step1(X),step2(X),end. 

其中:-表示if 其左边为规则的结论,右边为前提。逗号表示and(逻辑与)
同一谓词名的事实或规则必须集中排列在一起

3.问题(question)——表示用户的询问, 它是程序运行的目标。
格式: ?-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}.

?-student(john). ?-like(mary,X). 

例:

 likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,reading),likes(X,music). friend(john,X):-likes(X,sports),likes(X,music). ?-friend(john,Y). 则求解目标:friend(john,Y). 新目标: likes(X,reading),likes(X,music).

两个谓词可匹配合一, 是指两个谓词的名相同, 参量项的个数相同, 参量类型对应相同, 并且对应参量项还满足下列条件:
(1) 如果两个都是常量, 则必须完全相同。
(2) 如果两个都是约束变量, 则两个约束值必须相同。
(3) 如果其中一个是常量, 一个是约束变量, 则约束值与常量必须相同。
(4) 至少有一个是自由变量。
例:










pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X ,Y)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225075.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午10:11
下一篇 2026年3月17日 上午10:11


相关推荐

  • Python 读取txt文件

    Python 读取txt文件1.首先将数据加载到Python中,看需要做哪些处理。2、从显示的内容可以看出,两个数字之间是以空格,作为分隔符,这里读成一行了。使用sep=””处理,打印查看效果。3、使用分隔符后,分成了三列。但是还有一个问题,第一行被当成了表头,解决方法:使用names=[]给每列命名~ok啦,现在可以实现读取txt文件的任务了~…

    2022年5月30日
    60
  • Web之真假分页

    Web之真假分页

    2021年11月16日
    66
  • java深拷贝和浅拷贝_java数组copyof

    java深拷贝和浅拷贝_java数组copyof实现拷贝有几点:1)实现Cloneable接口2)重写Object类中的clone方法,并将可见性从protect改为public3)克隆需要调用super.clone(),也就是Object的实现方法浅拷贝和深拷贝的区别:浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深拷贝不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。以下代码说明了浅拷…

    2026年4月14日
    4
  • Razor语法大全(cshtml语法)

    Razor语法大全(cshtml语法)本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078.htmlRazor是基于framewor4以上写的一个开源项目:https://github.com/Antaris/RazorEngine/Razor是包含了模板引擎和动态编译两部分。本部分就简单记录了模板引擎的一些语法,之后用Razor做一个代码生成器,就使用Razor的语法来。Razo

    2022年6月16日
    64
  • 时序图读法

    时序图读法时序图读法从上到下 从左到右 高电平在上 低电平在下 高阻态在中间 双线表示可能高也可能低 视数据而定 交叉线表示状态的高低变化点 可以是高变低 也可以是低变高 也可以不变 竖线是生命线 代表时序图的对象在一段时期内的存在 时序图中每个对象和底部中心都有一条垂直段的虚线 这就是对象的生命线 对象的消息存在于两条生命线之间 时序要满足建立时间和

    2026年3月16日
    1
  • 深度搜索算法查找最短路径的方法_深度优先搜索算法

    深度搜索算法查找最短路径的方法_深度优先搜索算法如图,百度地图上有5个地点,各个地点间是单向的路径,试求出从1到5的最短路径。从图中可以得到一个5*5的二维矩阵,利用深度搜索算法,求出最短路径。从最后的运行结果,可以直观的看出搜索的过程代码实现如下:#include"pch.h"#include<stdio.h>#include<stdlib.h>#include<vector&g…

    2025年6月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号