The Prolog the hard way学习笔记

简单入门:The prolog the hard way



第0章:为什么要学习Prolog


背景:Prolog和LISP都是两个主要研究人工智能算法的工具。Prolog:用于欧洲; LISP:用于美国

Prolog的程式:基于谓语逻辑的理论。定立物件与物件的关系,用询问目标的方式查询物件间的关系。系统会自动匹配和回溯,找到询问的答案

Prolog的模式匹配功能,使其适合快速开发一个语言的解析器。


第1章:配置开发环境


windows安装:安装Notepad++, 安装 SWI-Prolog的windows安装包,打开即可使用。

“?-”这样两个字符开头:对Prolog系统的查询,运用知识库判断查询 true or false.
"." :为结尾符号
输入输出, 参数的传递:实质上是执行语句的”副作用“(side effect).

例子:writeln('Hello world!').

           writeln:向当前的显示设备输出一个字符串并且换行


第2章:谁是谁的爸爸


example 1:

male(di).
male(jianbo).
female(xin).
female(yuan).
female(yuqing).
father(jianbo,di).
father(di,yuqing).
mother(xin,di).
mother(yuan,yuqing).
grandfather(X,Y):-father(X,Z),father(Z,Y).
grandmother(X,Y):-mother(X,Z),father(Z,Y).
daughter(X,Y):-father(X,Y),female(Y).
每行都代表一个字句(clause)。 ”:-“ 表规则(rule),其余为事实(fact)。 小写字母开头名:原子(atom,常量); 大写字母开头名:变量。
  ”,“ 表逻辑关系'且'; ”;“表逻辑关系‘或’。


?- consult('路径/文件名.pl').
"consult":让SWI-Prolog加载编写的程序,然后编译。  
或者直接在SWI-Prolog中:file - consult-选中文件-open



第3章:Prolog是如何回答问题的


example 2

parent(di,yuqing).
parent(keyuan,jianbo).
parent(jianbo,di).

ancestor(X,Y):-parent(X,Y).
ancestor(X,Y):-parent(X,Z),ancestor(Z,Y).
?- ancestor(keyuan,yuqing).    



"alt"





Prolog 从三方面证明给的查询( query)

匹配(unifing/matching)。

变量重命名(variable renaming)。

回溯(back-tracking)。-Prolog是用深度优先(depth-first search)的算法来寻找答案的。当一个规则或者是事实不符合时,Prolog会通过回溯的方式回到之前的状态,然后去尝试另外的规则或者是事实,知道你的查询(query)被证明为止。如果所有的可能性都搜索过了,你的查询仍然不能得到证实,那么Prolog会认为你的查询证实不了,返回”false”。







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值