人工智能导论IntroductiontoArtificialIntelligence.ppt
《人工智能导论IntroductiontoArtificialIntelligence.ppt》由会员分享,可在线阅读,更多相关《人工智能导论IntroductiontoArtificialIntelligence.ppt(42页珍藏版)》请在三一文库上搜索。
1、第2章 逻辑程序设计语言PROLOG 2.1 基本PROLOG 2.2 Turbo PROLOG程序设计 ,2.1 基本PROLOG 2.1.1 PROLOG的语句 1. 事实(fact) 格式 谓词名(项表). student(john). like(mary,music). abc. repeat. 功能 一般表示对象的性质或关系。 ,2. 规则(rule) 格式 谓词名(项表):-谓词名(项表),谓词名(项表). bird(X):-animal(X),has(X,feather). grandfather(X,Y):- father(X,Z),father(Z,Y). run:-star
2、t,step1(X),step2(X),end. 功能 一般表示对象间的因果关系、蕴含关系或对应关系。,3. 问题(question) 格式 ?-谓词名(项表),谓词名(项表). ? -student(john). ? -like(mary,X). 功能 问题表示用户的询问, 它就是程序运行的目标。,2.1.2 PROLOG的程序 PROLOG程序一般由一组事实、 规则和问题组成。问题是程序执行的起点, 称为程序的目标。 likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(jo
3、hn,X):-likes(X,reading),likes(X,music). friend(john,X):-likes(X,sports),likes(X,music). ?-friend(john,Y).,?-likes(mary,X). 或 ?-likes(mary,music). 或 ?-friend(X,Y). 或 ?-likes(bell,sports), likes(mary,music), friend(john,X).,2.1.3 PROLOG程序的运行机理 1. 自由变量与约束变量 2. 匹配合一 两个谓词可匹配合一, 是指两个谓词的名相同, 参量项的个数相同, 参量类型
4、对应相同, 并且对应参量项还满足下列条件之一: (1) 如果两个都是常量, 则必须完全相同。 (2) 如果两个都是约束变量, 则两个约束值必须相同。 (3) 如果其中一个是常量, 一个是约束变量, 则约束值与常量必须相同。 (4) 至少有一个是自由变量。,考虑下面的各组谓词是否可匹配合一? pre1(ob1,ob2,Z) pre1(ob1, ob3,Y) pre1(ob1,ob2,Z) pre1(ob1,X, ob3) pre1(ob1,ob2,Z) pre1(ob1,X,Y),3. 回溯 所谓回溯, 就是在程序运行期间, 当某一个子目标不能满足(即谓词匹配失败)时,控制就返回到前一个已经满足
5、的子目标(如果存在的话), 并撤消其有关变量的约束值, 然后再使其重新满足。 成功后, 再继续满足原子目标。如果失败的子目标前再无子目标, 则控制就返回到该子目标的上一级目标(即该子目标谓词所在规则的头部)使它重新匹配。回溯也是PROLOG的一个重要机制。,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,musi
6、c). ?-friend(john,Y). 则求解目标为 friend(john,Y). 新目标 likes(X,reading),likes(X,music).,2.2 Turbo PROLOG程序设计 2.2.1 程序结构 /* 注 释 */ 编译指令 constants 常量说明 domains 域说明 database 数据库说明 predicates 谓词说明 goal 目标语句 clauses 子句集,例 如果把上节的例子程序作为Turbo PROLOG程序, 则应改写为: DOMAINS name=symbol PREDICATES likes(name,name). frien
7、d(name,name) GOAL friend(john,Y), write(Y=, Y). CLAUSES likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,sports),likes(X,music). friend(john,X):-likes(X,reading),likes(X,music).,领域段 该段说明程序谓词中所有参量项所属的领域。 Turbo PROLOG的标准领域包括整数、实数、符号、串和符号等, 其具体说明如下表所
8、示。,谓词段 该段说明程序中用到的谓词的名和参量项的名(但Turbo PROLOG 的内部谓词无须说明) 子句段 该段是Turbo PROLOG程序的核心, 程序中的所有事实和规则就放在这里, 系统在试图满足程序的目标时就对它们进行操作。 目标段 该段是放置程序目标的地方。 目标段可以只有一个目标谓词, 例如上面的例子中就只有一个目标谓词; 也可以含有多个目标谓词, 如 goal readint(X),Y=X+3,write(Y=,Y). 就有三个目标谓词。 这种目标称为复合目标。,2.2.2 数据与表达式 1. 领域 1) 标准领域 整数、实数、 字符、 串和符号 2) 结构 结构也称复合对
9、象, 一般形式为 函子(参量表) likes(Tom, sports(football, basketball, table_tennis). reading(王宏,book(人工智能技术导论,西安电子科技大学出版社). friend(father(Li), father(Zhao).,复合对象在程序中的说明, 需分层进行。 例如, 对于上面的谓词 likes(Tom, sports(football, basketball, table_tennis). 在程序中可说明如下: domains name=symbol sy=symbol sp=sports(sy, sy, sy) predic
10、ates likes(name, sp),3) 表 表的一般形式 x1, x2, , xn 其中xi(i=1, 2, , n)为PROLOG的项, 一般要求同一个表的元素必须属于同一领域。不含任何元素的表称为空表, 记为 。 1, 2, 3 apple, orange, banana, grape, cane PROLOG,PROGRAMMING,in logic a, b, c, d, e name(LiMing), age(20),sex(male),addr(xian),表的说明方法是在其组成元素的说明符后加一个星号*。 如: domains lists=string* predicat
11、es pl(lists) 例如,谓词 p(name(Liming), age(20) 则需这样说明: domains rec=seg* seg=name(string);age(integer) predicates p(rec),2. 常量与变量 Turbo PROLOG的常量有整数、实数、 字符、串、符号、结构、表和文件这八种数据类型。同理, Turbo PROLOG的变量也就有这八种取值。另外, 变量名要求必须是以大写字母或下划线开头的字母、数字和下划线序列, 或者只有一个下划线。 这后一种变量称为无名变量。,3. 算术表达式 Turbo PROLOG提供了五种最基本的算术运算:加、减、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 导论 IntroductiontoArtificialIntelligence
链接地址:https://www.31doc.com/p-2579195.html