人工智能与专家系统第四章智能程序设计课件.ppt

上传人(卖家):三亚风情 文档编号:3362987 上传时间:2022-08-23 格式:PPT 页数:34 大小:476.51KB
下载 相关 举报
人工智能与专家系统第四章智能程序设计课件.ppt_第1页
第1页 / 共34页
人工智能与专家系统第四章智能程序设计课件.ppt_第2页
第2页 / 共34页
人工智能与专家系统第四章智能程序设计课件.ppt_第3页
第3页 / 共34页
人工智能与专家系统第四章智能程序设计课件.ppt_第4页
第4页 / 共34页
人工智能与专家系统第四章智能程序设计课件.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、第四章第四章 PROLOG语言与智能程序设计语言与智能程序设计第一节第一节 PROLOG语言的基本知识语言的基本知识第二节第二节 PROLOG程序设计基础程序设计基础第三节第三节 对回溯的控制对回溯的控制第四节第四节 PROLOG的基本程序段的基本程序段第一节第一节 PROLOG语言的基本知识语言的基本知识一、一、PROLOG语言简介语言简介二、二、PROLOG语言的特点语言的特点1、PROLOG语言是一种描述型语言语言是一种描述型语言2、数据和程序是统一的、数据和程序是统一的3、自动实现模式匹配和回溯、自动实现模式匹配和回溯4、程序易于编写和阅读、程序易于编写和阅读5、语句类型少,语法简明、

2、语句类型少,语法简明第一节第一节 PROLOG语言的基本知识语言的基本知识三、三、PROLOG语言的三种基本语句语言的三种基本语句1、事实、事实含义含义表示对象具有某种性质,或某几个对象之间的关系表示对象具有某种性质,或某几个对象之间的关系形式形式谓词(对象谓词(对象1,对象,对象2,对象,对象n),),n为任意正整数为任意正整数 裸谓词裸谓词注意:注意:对象之间用逗号分开对象之间用逗号分开全部对象用括号括住全部对象用括号括住谓词必须以小写字母开头谓词必须以小写字母开头每个事实都用一个实心句点结束每个事实都用一个实心句点结束第一节第一节 PROLOG语言的基本知识语言的基本知识示例示例man(

3、zhangsan).is(sun,big).on(book,table).on(f,c).on(c,b).on(b,a).on(e,d).block(a).block(b).abcfde第一节第一节 PROLOG语言的基本知识语言的基本知识最简单的最简单的PROLOG程序由两部分组成程序由两部分组成谓词部分谓词部分定义谓词定义谓词predicates name(symbol,symbol,)字句部分字句部分列出所有事实列出所有事实clauses name(对象对象1,对象对象2,).第一节第一节 PROLOG语言的基本知识语言的基本知识一个简单的程序一个简单的程序predicatesis(sy

4、mbol,symbol)has(symbol,symbol)clausesis(“王王”,”年龄小年龄小”).is(“刘刘”,”个头高个头高”).is(“李李”,”有音乐天才有音乐天才”).has(“张张”,”书书”).goal:is(“刘刘”,”个头高个头高”)yesgoal:is(“王王”,”有音乐天才有音乐天才”)nogoal:has(“张张”,”书书”)yesgoal:has(“书书”,”张张”)no第一节第一节 PROLOG语言的基本知识语言的基本知识2、规则、规则含义含义表示事物成立所要遵循的法则,即事物之间的新关系表示事物成立所要遵循的法则,即事物之间的新关系形式形式事实事实D

5、if 事实事实A,事实,事实B,事实,事实C,事实事实D:-事实事实A,事实,事实B,事实,事实C,注意:注意:规则头只能有一个事实规则头只能有一个事实规则体部可有多个事实规则体部可有多个事实规则体中各个事实之间用逗号连接表示规则体中各个事实之间用逗号连接表示“与与”关系关系每个规则都用一个实心句点结束每个规则都用一个实心句点结束第一节第一节 PROLOG语言的基本知识语言的基本知识示例示例predicatesmother(symbol,symbol)grandmother(symbol,symbol)clausesmother(“钱钱”,”孙孙”).mother(“孙孙”,”李李”).mot

6、her(“王王”,”张张”).grandmother(X,Y)if mother(X,Z),mother(Z,Y)goal:grandmother(“钱钱”,”李李”)yesgoal:grandmother(“孙孙”,”张张”)no第一节第一节 PROLOG语言的基本知识语言的基本知识3、询问、询问含义含义询问对象之间某种关系是否成立的疑问句询问对象之间某种关系是否成立的疑问句形式形式goal:事实事实1,事实,事实2,事实,事实3,事实,事实n n为任意正整数为任意正整数 注意:注意:各个事实之间用逗号连接表示各个事实之间用逗号连接表示“与与”关系关系表示:表示:“事实事实1,事实,事实2,

7、事实,事实3,事实,事实n”同时成立吗?同时成立吗?第一节第一节 PROLOG语言的基本知识语言的基本知识四、项四、项1、项的定义、项的定义项项 =常量常量原子:对象的名字、谓词函数名(小写字母开头)原子:对象的名字、谓词函数名(小写字母开头)数字数字变量变量暂时不能命名或不需要命名的对象暂时不能命名或不需要命名的对象以大写字母开头以大写字母开头匿名变量:匿名变量:on(_,a);mother(_,”李李”)自由变量和约束变量自由变量和约束变量第一节第一节 PROLOG语言的基本知识语言的基本知识结构结构又称复合项,是由一组其他对象组成的单个对象又称复合项,是由一组其他对象组成的单个对象包括:

8、包括:函数项:函数项:readchar(X)、mother(“李李”,“孙孙”)表:表:a,b,c表达式:表达式:2*3+17结构的嵌套结构的嵌套accident(date(year,month,day),who,place)第一节第一节 PROLOG语言的基本知识语言的基本知识2、项的匹配规则、项的匹配规则(1)若)若A、B是项,是项,A是自由变量,则是自由变量,则B无论是何值,无论是何值,A可以可以被被B匹配匹配(2)常量与自身匹配成功)常量与自身匹配成功(3)结构的每一对应成分匹配,则匹配成功)结构的每一对应成分匹配,则匹配成功第一节第一节 PROLOG语言的基本知识语言的基本知识五、表

9、五、表1、概念、概念表是具有相同类型对象的有序集合表是具有相同类型对象的有序集合如:如:1,2,3、a,b,c、a,b(f,c),d、2、表头、表尾、表头、表尾表头表头表中第一个元素表中第一个元素表尾表尾表中的其余部分,可以是另一张表表中的其余部分,可以是另一张表3、表的匹配、表的匹配表中的常量完全相同才匹配表中的常量完全相同才匹配表中的变量可与任何对象匹配表中的变量可与任何对象匹配表头只与一个分量匹配,表尾可与一个表匹配表头只与一个分量匹配,表尾可与一个表匹配第二节第二节 PROLOG程序设计基础程序设计基础一、一、PROLOG程序的组成程序的组成1、前提部分(条件)、前提部分(条件)包括有

10、关的事实和规则包括有关的事实和规则2、问题部分(目标)、问题部分(目标)问题求解的目标结果问题求解的目标结果二、二、PROLOG程序的设计步骤程序的设计步骤1、说明事实、说明事实2、定义规则、定义规则3、明确目标、明确目标第二节第二节 PROLOG程序设计基础程序设计基础三、判定规则中变量值的原则三、判定规则中变量值的原则1、在同一条规则中,所有相同名字的变量具有相同的内容、在同一条规则中,所有相同名字的变量具有相同的内容2、如果规则头中的变量被约束了,则规则体中的同名变量也被约束、如果规则头中的变量被约束了,则规则体中的同名变量也被约束为相同的内容为相同的内容3、当规则头中的变量未被约束时,

11、如果规则体中的同名变量被约束、当规则头中的变量未被约束时,如果规则体中的同名变量被约束了,则规则头中的同名变量和规则体中的其他同名变量也被约束为相了,则规则头中的同名变量和规则体中的其他同名变量也被约束为相同的内容同的内容4、如果多条规则中有相同名字的变量,则这些同名变量不相关、如果多条规则中有相同名字的变量,则这些同名变量不相关5、只有规则在使用时,规则中的变量才被约束、只有规则在使用时,规则中的变量才被约束第二节第二节 PROLOG程序设计基础程序设计基础四、四、PROLOG程序的目标求解过程程序的目标求解过程1、匹配与回溯、匹配与回溯predicatesperson(symbol,sym

12、bol)clausesperson(z,m).person(y,w).person(c,w).person(l,m).goal:person(X,m)X=zX=l第二节第二节 PROLOG程序设计基础程序设计基础predicates likes(symbol,symbol)clauseslikes(zhang,flower).likes(zhang,wine).likes(wang,wine).likes(wang,zhang).goal:likes(wang,X)X=wineX=zhanggoal:likes(zhang,X),likes(wang,X)X=wine第二节第二节 PROLOG

13、程序设计基础程序设计基础2、包含多个子目标的问题求解过程、包含多个子目标的问题求解过程goal:事实事实1,事实,事实2,事实,事实n3、示例、示例dish(pork).dish(fish).main(rice).main(bread).fruit(apple).fruit(orange).meal(D,M,F)if dish(D),main(M),fruit(F).goal:meal(D,M,F)第二节第二节 PROLOG程序设计基础程序设计基础五、规则的递归描述五、规则的递归描述1、概念、概念在规则中,将自身作为一个成份,则称此规则是递归的在规则中,将自身作为一个成份,则称此规则是递归的如

14、:如:on(a4,a3).on(a3,a2).on(a2,a1).top(An,A1)if on(An,A1).top(An,A1)if on(A2,A1),top(An,A2).goal:top(a4,a1)a1a2a3a4第二节第二节 PROLOG程序设计基础程序设计基础2、示例、示例(1)求)求0n 1)1(0 1!nnnnpower(0,1).power(N,Y)if N1=N-1,power(N1,Y1),Y=N*Y1goal:power(2,Y)Y=2(2)求表的长度求表的长度length(,0).length(HT,X)if length(T,X1),X=X1+1goal:len

15、gth(a,b,c,X)X=3第二节第二节 PROLOG程序设计基础程序设计基础(3)x是否是表中的一个是否是表中的一个member(X,X_).member(X,_Y)if member(X,Y).goal:member(b,a,b,c)yes(4)求表中最后一个元素求表中最后一个元素last(X,X).last(YZ,P)if last(Z,P).goal:last(a,b,c,Y)Y=c第二节第二节 PROLOG程序设计基础程序设计基础(5)表的连接)表的连接append(,L,L).append(HL1,L2,HL3,)if append(L1,L2,L3)goal:append(L1

16、,L2,a,b,c)第三节第三节 对回溯的控制对回溯的控制一、截断一、截断1、示例、示例predicates person(symbol,symbol)clauses person(z,m).person(y,w).person(c,w).person(l,m).goal:person(A,_),person(B,_),ABgoal:person(A,_),person(B,_),AB,!A=z,B=yA=z,B=yA=z,B=cA=z,B=lA=y,B=zA=y,B=cA=y,B=lA=c,B=zA=c,B=yA=c,B=lA=l,B=zA=l,B=yA=l,B=c第三节第三节 对回溯的控制

17、对回溯的控制2、“!”的概念的概念“!”表示截断,系统内部谓词,不带任何变元表示截断,系统内部谓词,不带任何变元作为目标,求解立即成功,即该谓词总是取真值作为目标,求解立即成功,即该谓词总是取真值成功后,不能回溯,即穿过成功后,不能回溯,即穿过!的回溯是不可能的的回溯是不可能的goal:h1,h2,!,h3,h4第三节第三节 对回溯的控制对回溯的控制predicates person(symbol,symbol)clauses person(z,m).person(y,w).person(c,w).person(l,m).goal:person(A,_),person(B,_),ABgoal:

18、person(A,_),person(B,_),AB,!goal:person(A,_),!,person(B,_),ABgoal:person(A,_),person(B,_),!,ABgoal:!,person(A,_),person(B,_),AB12 个解个解1个解个解3个解个解无解无解12个解个解第三节第三节 对回溯的控制对回溯的控制二、失败二、失败1、示例、示例predicates person(symbol,symbol)outputclauses person(z,m).person(y,w).person(c,w).person(l,m).output if person(X

19、,_),write(“姓名姓名:”,X),nlgoal:output姓名:姓名:zyesgoal:person(X,_),write(“姓姓名:名:”),),nl姓名:姓名:z姓名:姓名:y姓名:姓名:c姓名:姓名:l第三节第三节 对回溯的控制对回溯的控制predicates person(symbol,symbol)outputclauses person(z,m).person(y,w).person(c,w).person(l,m).output if person(X,_),write(“姓名姓名:”,X),nl,failgoal:output 姓名:姓名:z 姓名:姓名:y 姓名:姓

20、名:c 姓名:姓名:l no第三节第三节 对回溯的控制对回溯的控制2、”fail”的概念的概念是系统内部谓词,不带任何变元,表示失败是系统内部谓词,不带任何变元,表示失败作为目标,求解立即失败,引起回溯作为目标,求解立即失败,引起回溯goal:h1,h2,fail,h33、!与与fail相结合的例子相结合的例子not-equal(X,Y)if equal(X,Y),!,fail.not-equal(X,Y).equal(X,X).goal:not-equal(6,7)yesgoal:not-equal(6,6)no第四节第四节 PROLOG的基本程序段的基本程序段一、常量段一、常量段用来说明符

21、号常量用来说明符号常量由由“constant”标识标识在常量说明中,系统不区分大小写在常量说明中,系统不区分大小写可有多个常量段可有多个常量段每个常量要先定义后使用每个常量要先定义后使用例如:例如:constantpi=3.14159zero=0num=50第四节第四节 PROLOG的基本程序段的基本程序段二、域段二、域段由由domains标识标识1、标准域、标准域char标准标准ASCII码中任意一个字符,被单引号括起来码中任意一个字符,被单引号括起来integerrealstring由双引号括起来的字符序列由双引号括起来的字符序列symbolu以小写字母开始,由若干字母、数字、下划线组成的

22、序列以小写字母开始,由若干字母、数字、下划线组成的序列u双引号括起来的字符序列双引号括起来的字符序列若谓词参数采用标准域,则域段可省略若谓词参数采用标准域,则域段可省略若谓词参数采用非标准域,则需在域段中说明若谓词参数采用非标准域,则需在域段中说明第四节第四节 PROLOG的基本程序段的基本程序段2、表域、表域=*例如:例如:domains myint=integer mylist=myint*predicatesmember(myint,mylist)clausesmember(X,X_).member(X,_Y)if member(X,Y)domains mylist=integer*pr

23、edicatesmember(integer,mylist)第四节第四节 PROLOG的基本程序段的基本程序段3、复合对象域、复合对象域=(,)例如:例如:domains person=person(name,address)name=name(first,last)address=address(street,city,state)street=street(number,streetname)city,state,streetname=stringfirst,last=stringnumber=integer第四节第四节 PROLOG的基本程序段的基本程序段三、谓词段三、谓词段由由pred

24、icates标识标识谓词谓词(域域1,域域2,域域n)域可为标准域,也可为非标准域域可为标准域,也可为非标准域例如:例如:predicates person(symbol,symbol)或或domains name,sex=symbolpredicates person(name,sex)第四节第四节 PROLOG的基本程序段的基本程序段四、子句段四、子句段由由clauses标识标识一个子句是一个事实或一个规则一个子句是一个事实或一个规则子句段是程序的核心子句段是程序的核心子句段中包含事实语句和规则语句子句段中包含事实语句和规则语句五、目标段五、目标段由由goal标识标识内部目标内部目标在目标段提出的目标在目标段提出的目标外部目标外部目标在人机交互环境下提出的目标在人机交互环境下提出的目标

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(人工智能与专家系统第四章智能程序设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|