AI PROLOG语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
emt aee aba l one ae h a na g r am dan c on ne c t nte
查询/ 目标
5
4.2 Prolog语言概述
一、所有的Prolog语句由项(term)构成
1. 常量
原子(atom):Prolog的符号值 以小写字母开始的一串字母、数字、下划线或用单引 号界定的一串任何可打印的ASCII字符。
2. 匹配合一
两谓词可匹配合一,指谓词名相同,参数个数和类型对应相同,另: a) 若两个均为常量,则必须相同; b) 若两个为约束变量,则两约束值相同; c) 若一个为常量,一个为变量,则约束值与常量相同; d) 至少有一个自由变量。 例:p(“ob1”,”ob2”,z). p(“ob1”,X,Y). 只有当1) X被约束为”ob2”,
例如,likes(bill,book).
是一个名为like的关系,表示对象bill和book之间有喜欢的 关系。
2020/10/16
7
2、规则 由几个互相有依赖性的简单句(谓词)组成,用来描
述事实之间的依赖关系。从形式上看,规则由左边表示结 论的后件谓词和右边表示条件的前提谓词组成。
bird(X):-animal(X),has(X,feather). 表示凡是动物并且有羽毛,那么它就是鸟。 3、目标(问题)
http://www.swi-prolog.org/ 安装文件(注意顺序安装):
SWI-Prolog for MS-Windows(version 5.4.7 ) SWI-Prolog-Editor
2020/10/16
11
不安装SWI-Prolog-Editor
2020/10/16
12
2020/10/16
Prolog的基本语句仅有三种,即事实、规则和目标。
Prolog是陈述性语言,一旦给它提交必要的事实和规则之后, Prolog就使用内部的演绎推理机制自动求解程序给定的目标, 而不需要在程序中列出详细的求解步骤。
1、事实
事实用来说明一个问题中已知的对象和它们之间的关系。 在Prolog程序中,事实由谓词名及用括号括起来的一个或几 个对象组成。谓词和对象可由用户自己定义。
பைடு நூலகம்
13
2020/10/16
14
在线资源
1. Learn Prolog Now! by Patrick Blackburn, Johan Bos, and Kristina Striegnitz
http://www.learnprolognow.org/
2. ON-LINE GUIDE TO PROLOG PROGRAMMING by ROMAN BARTÁK
Lisp语言创始人 McCarthy
目前C、C++使用比较多。 专家系统开发语言或开发工具。
如:CLIPS语言。
2020/10/16
1
二、逻辑程序设计语言(说明性语言)
1. Prolog是唯一广泛使用的逻辑程序设计语言;
易于表达人的思维,主要应用于专家系统、规划、自然 语言理解、机器定理证明等人工智能相关问题的求解。
vertical(line(point(1,1),point(1,3))). yes
horizontal(line(point(1,1),point(2,Y))). Y=1; no
horizontal(line(point(2,3),P)).
P = point(_G434,3) ;
2020/10/16
no
3
【例4.2】求解以下六个英语单词的纵横字谜 问题。
abalone, abandon, anagram, connect, elegant, enhance
事实
规则
2020/10/16
4
2020/10/16
aac ab and on
aan e l egant
or e e nhan c e
目标的结构与事实或规则相同,可以是一个简单的谓 词,也可以是多个谓词的组合。目标分内、外两种,内部 目标写在程序中,外部目标在程序运行时由用户手工键入。
?-student(john). 表示“john是学生吗?”
2020/10/16
8
三、Prolog运行机理
1. 自由变量与约束变量
自由变量即无值的变量,约束变量即有值的变量。
第四章 PROLOG语言
4.1 逻辑程序设计概述 4.2 Prolog语言概述
➢ Prolog实验环境 ➢ 在线资源
4.3合一与控制流 4.4 表处理
➢ 基本概念 ➢ 表处理及其应用举例
2020/10/16
0
4.1 逻辑程序设计概述
一、LISP、PROLOG是常用的人工智能语言。 LISP——函数程序设计语言, 20世纪50年代后期。 PROLOG——逻辑程序设计语言,20世纪70年代中期。
2
【例4.1】:水平线与垂直线问题。
使用两个谓词:vertical/2 和 horizontal/2
事实 什么是真的? vertical(line(point(X,Y),point(X,Z))).
horizontal(line(point(X,Y),point(Z,Y))).
需要做什么?
查询/ 目标
2) Y、Z的约束值相同或至少有一个自由变量时,才可匹配合一。
2020/10/16
9
3. 通过提问查询知识库;使用分号( ;)查询多 个解(multiple answers);
分号有特定的含义:表示结束当前合一,回溯查找其 它可满足的解。
2020/10/16
10
四、Prolog实验环境
SWI-Prolog(推荐使用!)
2. 区别于命令式语言和函数式语言,逻辑式语言 都支持说明性程序设计风范;
1)根据问题约束的高层描述来构建程序;
2)告诉计算机“什么是真的”和“需要做什么”,而 不是“怎样做”;
3)允许程序员集中精力对待求解问题(一个封闭的世 界)的描述,而不是写一些诸如“下一步做什么”之 类的底层算法指令。
2020/10/16
整数
2. 变量
以大写字母开始一串字母、数字和下划线; 下划线(_)表示匿名变量; 注意与命令式语言中变量的区别。
3. 结构(谓词/复杂项)
谓词演算的原子命题 2020/10/16 functor(term_1,...,term_n) 算符(项1,…,项n) 6
二、Prolog语言及其基本结构
查询/ 目标
5
4.2 Prolog语言概述
一、所有的Prolog语句由项(term)构成
1. 常量
原子(atom):Prolog的符号值 以小写字母开始的一串字母、数字、下划线或用单引 号界定的一串任何可打印的ASCII字符。
2. 匹配合一
两谓词可匹配合一,指谓词名相同,参数个数和类型对应相同,另: a) 若两个均为常量,则必须相同; b) 若两个为约束变量,则两约束值相同; c) 若一个为常量,一个为变量,则约束值与常量相同; d) 至少有一个自由变量。 例:p(“ob1”,”ob2”,z). p(“ob1”,X,Y). 只有当1) X被约束为”ob2”,
例如,likes(bill,book).
是一个名为like的关系,表示对象bill和book之间有喜欢的 关系。
2020/10/16
7
2、规则 由几个互相有依赖性的简单句(谓词)组成,用来描
述事实之间的依赖关系。从形式上看,规则由左边表示结 论的后件谓词和右边表示条件的前提谓词组成。
bird(X):-animal(X),has(X,feather). 表示凡是动物并且有羽毛,那么它就是鸟。 3、目标(问题)
http://www.swi-prolog.org/ 安装文件(注意顺序安装):
SWI-Prolog for MS-Windows(version 5.4.7 ) SWI-Prolog-Editor
2020/10/16
11
不安装SWI-Prolog-Editor
2020/10/16
12
2020/10/16
Prolog的基本语句仅有三种,即事实、规则和目标。
Prolog是陈述性语言,一旦给它提交必要的事实和规则之后, Prolog就使用内部的演绎推理机制自动求解程序给定的目标, 而不需要在程序中列出详细的求解步骤。
1、事实
事实用来说明一个问题中已知的对象和它们之间的关系。 在Prolog程序中,事实由谓词名及用括号括起来的一个或几 个对象组成。谓词和对象可由用户自己定义。
பைடு நூலகம்
13
2020/10/16
14
在线资源
1. Learn Prolog Now! by Patrick Blackburn, Johan Bos, and Kristina Striegnitz
http://www.learnprolognow.org/
2. ON-LINE GUIDE TO PROLOG PROGRAMMING by ROMAN BARTÁK
Lisp语言创始人 McCarthy
目前C、C++使用比较多。 专家系统开发语言或开发工具。
如:CLIPS语言。
2020/10/16
1
二、逻辑程序设计语言(说明性语言)
1. Prolog是唯一广泛使用的逻辑程序设计语言;
易于表达人的思维,主要应用于专家系统、规划、自然 语言理解、机器定理证明等人工智能相关问题的求解。
vertical(line(point(1,1),point(1,3))). yes
horizontal(line(point(1,1),point(2,Y))). Y=1; no
horizontal(line(point(2,3),P)).
P = point(_G434,3) ;
2020/10/16
no
3
【例4.2】求解以下六个英语单词的纵横字谜 问题。
abalone, abandon, anagram, connect, elegant, enhance
事实
规则
2020/10/16
4
2020/10/16
aac ab and on
aan e l egant
or e e nhan c e
目标的结构与事实或规则相同,可以是一个简单的谓 词,也可以是多个谓词的组合。目标分内、外两种,内部 目标写在程序中,外部目标在程序运行时由用户手工键入。
?-student(john). 表示“john是学生吗?”
2020/10/16
8
三、Prolog运行机理
1. 自由变量与约束变量
自由变量即无值的变量,约束变量即有值的变量。
第四章 PROLOG语言
4.1 逻辑程序设计概述 4.2 Prolog语言概述
➢ Prolog实验环境 ➢ 在线资源
4.3合一与控制流 4.4 表处理
➢ 基本概念 ➢ 表处理及其应用举例
2020/10/16
0
4.1 逻辑程序设计概述
一、LISP、PROLOG是常用的人工智能语言。 LISP——函数程序设计语言, 20世纪50年代后期。 PROLOG——逻辑程序设计语言,20世纪70年代中期。
2
【例4.1】:水平线与垂直线问题。
使用两个谓词:vertical/2 和 horizontal/2
事实 什么是真的? vertical(line(point(X,Y),point(X,Z))).
horizontal(line(point(X,Y),point(Z,Y))).
需要做什么?
查询/ 目标
2) Y、Z的约束值相同或至少有一个自由变量时,才可匹配合一。
2020/10/16
9
3. 通过提问查询知识库;使用分号( ;)查询多 个解(multiple answers);
分号有特定的含义:表示结束当前合一,回溯查找其 它可满足的解。
2020/10/16
10
四、Prolog实验环境
SWI-Prolog(推荐使用!)
2. 区别于命令式语言和函数式语言,逻辑式语言 都支持说明性程序设计风范;
1)根据问题约束的高层描述来构建程序;
2)告诉计算机“什么是真的”和“需要做什么”,而 不是“怎样做”;
3)允许程序员集中精力对待求解问题(一个封闭的世 界)的描述,而不是写一些诸如“下一步做什么”之 类的底层算法指令。
2020/10/16
整数
2. 变量
以大写字母开始一串字母、数字和下划线; 下划线(_)表示匿名变量; 注意与命令式语言中变量的区别。
3. 结构(谓词/复杂项)
谓词演算的原子命题 2020/10/16 functor(term_1,...,term_n) 算符(项1,…,项n) 6
二、Prolog语言及其基本结构