ch1 prolog基础

ch1 prolog基础

ID:37199268

大小:47.00 KB

页数:10页

时间:2019-05-19

ch1 prolog基础_第1页
ch1 prolog基础_第2页
ch1 prolog基础_第3页
ch1 prolog基础_第4页
ch1 prolog基础_第5页
资源描述:

《ch1 prolog基础》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Ch1Prolog基础目标子句(goalclause)、事实(facts)、规则(rules)合起来称为Horn子句,因而得名Horn子句逻辑。Prolog可以作为专家系统来使用,但它本身却是作为一种程序设计语言而设计出来的。把Horn子句逻辑变为一种程序设计语言的2个重要因素:(1)严格的搜索顺序或程序控制;(2)副效应。1.程序控制Prolog不使用随机搜索策略,而总是使用同一种策略。系统保持一个当前目标,始终从左到右进行求解。当求解一个特定子目标时,当前目标中待求解的那个子目标将被其规则右边的那

2、些子目标所代替。所谓的“谓词”,就是相当于其他编程语言中的过程或者子例程。它们之间的区别在于一个Prolog谓词对于一个单个提问可以返回多个结果或者没有结果(即失败)。例:parent(Person,Parent):-mother(Person,Parent).parent(Person,Parent):-father(Person,Parent).sibling(Person,Sibling):-mother(Person,Mother),mother(Sibling,Mother).sibling

3、(Person,Sibling):-father(Person,Father),father(Sibling,Father).fullBolodeSibling(Person,Sibling):-mother(Person,Mother),mother(Sibling,Mother),father(Person,Father),father(Sibling,Father).1.1失败(fail)如果目标失败了,则说明定理中完全不存在针对该目标的解。1.2回溯1.3改进家庭定理问题在于:选择了一个不好的

4、方式来形式化这个定理。原因是从考虑实体间的关系开始的。如果首先考虑实体本身呢?person("Bill","male").person("John","male").person("pam","female").parent("Bill","John").parent("Pam","Bill").father(Person,Father):-person(Father,"male"),parent(Person,Father).1.4递归如何定义“祖先”关系?ancestor(Person,Ances

5、tor):-parent(Person,Ancestor).ancestor(Person,Ancestor):-parent(Person,P1),ancestor(P1,Ancestor).递归具有非常强大的功能,但也有一点难于控制。使用递归时,要记住:(1)递归必须能够前进;(2)递归必须能够终止。1.5副效应(sideeffects)例:ancestor("Pam",X),write("AncestorofPam:",X),nl().AncestorofPam:BillX=BillAncest

6、orofPam:JohnX=John2SolutionsPIE给出的结果和自己给出的结果混在一起,怎么办?一个简单的办法是确保该目标没有解,例如:ancestor("Pam",X),write("AncestorofPam:",X),nl(),fail.AncestorofPam:BillAncestorofPam:JohnNosolutionsFail是一个预先定义的谓词,它总是失败,没有解。注意:(1)目标本身不存在单一的解,从而使想要的全部解都作为副效应形式给出;(2)副效应在失败计算中也存在。

7、建议:将计算性代码与执行输入输出的代码分开。2.Prolog算符2.1算符简单论域(simpledomains):字符串、数、符号、字符。复合论域(compounddomains):简单论域的一个集合。例如:person(Name,Gender)注意上面的式子既不是事实,也不是谓词。person就是所谓的算符。例:father(person("Bill","male"),person("John","male")).father(person("Pam","male"),person("Bill","

8、male")).grandFather(Person,GrandFather):-father(Father,GrandFather),father(Person,Father).>grandFather(X,Y).X=person(Pam,male),Y=person(John,male)1Solution2.2深入理解算符算符的一个重要特性:一个算符的多个参数可以通过常见的Prolog变量和绑定值被分离和检查。例:parent(person("Bil

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。