用于人工智能的Prolog语言.pptx

上传人:莉*** 文档编号:87247370 上传时间:2023-04-16 格式:PPTX 页数:31 大小:170.52KB
返回 下载 相关 举报
用于人工智能的Prolog语言.pptx_第1页
第1页 / 共31页
用于人工智能的Prolog语言.pptx_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《用于人工智能的Prolog语言.pptx》由会员分享,可在线阅读,更多相关《用于人工智能的Prolog语言.pptx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 Prolog 是一种逻辑程序设计语言,基于一阶谓词逻辑,是典型的叙述型语言(Declaration Language)。Prolog语言的特点:(1)建立在一阶谓词逻辑和归结原理基础上,有自动推理功能。(2)用Prolog设计应用程序时,仅需指明领域中各对象间的关系和决策规 则,而应用这些知识的推理由Prolog 完成。(3)Prolog应用程序,由数据库和规则库组成。(4)Prolog程序设计要做三件事,即说明事实、定义规则、提出问题。4.1 归结原理与Prolog语言第1页/共31页Prolog 有三种形式的语句:1.B:-A1,A2,An.含义是 A1 A2.An B,相当于A1A2

2、An B。可视作人工智能系统中的推理规则。也可将该句看作一个过程,B为过程头,是过程名,而A1,A2,An 为过程体。2.A1,A2,An.含义是 A1 A2.An F,相当于A1A2 An,可视作推理的目标,或称目标子句。3.B.含义是公式B无条件地为真。可视作已知的事实。x(M(x)R(x)M(“张三”)R(“张三”)如三段论:推理规则:R(X):-M(X).事实:M(张三).目标:R(张三).Prolog语句:第2页/共31页证明公式:(M(X)R(X)M(张三)R(张三)恒真即证明公式:(M(X)R(X)M(张三)R(张三)恒假化成公式集:(M(X)R(X)M(张三),R(张三)子句集

3、:M(X)R(X),M(张三),R(张三)推理规则事实目标子句 B:-A1,A2,An.和子句B.都是仅有一个正文字的子句。称作定子句。目标子句 A1,A2,An.是没有正文字出现的子句。定子句和目标子句统成为Horn子句。Prolog 子句都是Horn子句。第3页/共31页用Prolog证明三段论:推理规则:R(X):-M(X).事实:M(张三).目标:R(张三).M(张三).完整的Prolog程序:predicatesM(symbol)R(symbol)clauses R(X):-M(X).M(zhsan).goal R(zhsan).运行第4页/共31页4.2 家庭关系程序示例下图是一个

4、表示家庭关系的实例:PamTomAnnBobLizPatJimparent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).用Prolog 语句表示为:第5页/共31页完整的Prolog程序:predicates parent(symbol,symbol)clausesparent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).此程序可

5、以回答的问题:1.bob是pat的父母吗?parent(bob,pat).2.liz是pat的父母吗?parent(liz,pat).3.谁是liz的父母?parent(X,liz).4.谁是谁的父母?parent(X,Y).1.系统回答2.系统回答3.系统回答4.系统回答第6页/共31页5.谁是jim的祖父母?分析:程序中并没有直接的祖父母关系。此问题可分两步:(1)谁是jim 的父母?假设是Y,(2)谁是Y 的父母?假设是X,XjimYparentparentgrandparentProlog目标语句:parent(Y,jim),parent(X,Y).6.类似的问题可以是:“谁是tom的

6、孙子?”prolog目标语句:parent(tom,X),parent(X,Y).5.系统回答6.系统回答parent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).clauses第7页/共31页以上程序说明的几个重要观点:(1)在Prolog中定义一个关系是容易的,可以通过满足关系的n个对象来表达。(2)对程序中已定义的关系,用户可以轻而易举地询问Prolog 系统。(3)关系的对象可以是常量(如:tom,ann),也可以是变量(如:X,Y)。(4)向系统提出问

7、题,可由一个或多个目标组成。(5)一个Prolog 程序由一些子句(clauses)组成。每个子句用句号结束。(6)对一个问题的回答是肯定的或者是否定的,取决于相应的目标是否满足。在肯定回答的情况下,说相应的目标是可满足的,而且这个目标成功了。否则,说目标不可满足,目标失败了。(7)如果有多个回答都满足目标,那么Prolog 将尽可能多地回答。第8页/共31页Predicates parent(symbol)clausesparent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(

8、pat,jim).male(tom).male(bob).male(jim).female(pam).female(liz).female(pat).female(ann).在示例程序中,添加有关性别的信息:第9页/共31页在Prolog中定义offspring(后代)关系对所有的X和Y,Y是X的后代,如果X是Y的父母。对应的prolog 语句为:offspring(Y,X):-parent(X,Y).子句头子句体注意:以上定义的是直接后代关系。对于间接后代:对所有的X和Y,Y是X的后代,如果Z是Y的父母,且Z是X的后代。offspring(Y,X):-parent(Z,Y),offsprin

9、g(Z,X).对应的prolog 语句为:XYZparentoffspringoffspring第10页/共31页关于sister的规则定义:predicatesparent(symbol,symbol)sister(symbol,symbol)female(symbol)male(symbol)clausesparent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).male(tom).male(bob).male(jim).female(pam).female

10、(liz).female(ann).female(pat).sister(X,Y):-parent(Z,X),parent(Z,Y),female(X).goalsister(X,pat).运行Pat的姐妹是谁?第11页/共31页predicatesparent(symbol,symbol)sister(symbol,symbol)female(symbol)male(symbol)different(symbol,symbol)clausesparent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,p

11、at).parent(pat,jim).male(tom).male(bob).male(jim).female(pam).female(liz).female(ann).female(pat).sister(X,Y):-parent(Z,X),parent(Z,Y),female(X),different(X,Y).different(X,Y):-XY.goalsister(X,pat).改进的sister规则:运行Pat的姐妹是谁?第12页/共31页mother规则:对所有的X和Y,X是Y的母亲,如果X是Y的父母,并且,X为女性。用prolog规则表示为:mother(X,Y):-pare

12、nt(X,Y),female(X).predicatesparent(symbol,symbol)mother(symbol,symbol)female(symbol)male(symbol)clausesparent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).mother(X,Y):-parent(X,Y),female(X).male(tom).male(bob).male(jim).female(pam).female(liz).female(ann).

13、female(pat).goalmother(pat,X).Pat是谁的母亲?运行第13页/共31页4.3 Turbo Prolog程序结构一个Turbo Prolog程序通常包括5个部分。如下:/*注释 */domains域说明database数据库说明predicates谓词说明goal目标说明clauses子句说明/*注释 */1.域说明部分,说明谓词对象的数据类型。2.数据库说明部分,包含一些数据库谓词的定义,是说明用于动态数据库管理的谓词。如果程序不需要动态数据库,该部分可省略。3.谓词说明部分,定义程序中除内部谓词以外的所有谓词。4.在目标部分,说明程序的目标。一个程序目标可以由多

14、个字目标复合而成。5.子句部分,列出全部事实和规则,也可看作是程序的静态数据。第14页/共31页/*程序名:Wordsmith 文件名:prog0501.pro */*目 标:查找并打印一单词的同义词或反义词。*/domainsword,syn,ant=symbolpredicatessynonym(word,syn)antonym(word,ant)goalsynonym(brave,X),antonym(brave,Y),write(brave 的同义词是:,X),nl,write(brave 的反义词是:,Y),nl.clausessynonym(brave,daring).synony

15、m(honest,truthful).synonym(modern,new).synonym(rare,uncommon).antonym(brave,cowardly).antonym(honest,dishonest).antonym(mordern,ancient).antonym(rare,common).4.4 Turbo Prolog程序分析第15页/共31页/*程序名:Thesaurus 文件名:prog0502.pro */*目 标:建立一个打印单词的同义词和反义词的小词典。*/domainsword,syn1,syn2,syn3,ant1,ant2,ant3=symbolpr

16、edicatessynonym(word,syn1,syn2,syn3)antonym(word,ant1,ant2,ant3)goalsynonym(brave,S1,S2,S3),antonym(brave,A1,A2,A3),write(brave 的同义词是:),nl,write(S1,S2,S3,),write(brave 的反义词是:),nl,write(A1,A2,A3,.),nl.clausessynonym(brave,daring,defiant,courageous).synonym(honest,truthful,open,sincere).synonym(modern

17、,new,novel,recent).synonym(rare,uncommon,scrace,infrequent).antonym(brave,cowardly,fearful,timid).antonym(honest,dishonest,crooked,deceltful).antonym(mordern,ancient,old,obsolete).antonym(rare,common,ordinary,ubiquitous).多元谓词、多元子句第16页/共31页/*程序名:Presidents 文件名:prog0503.pro */*目 标:使用混合对象类型举例。*/domains

18、name,party,state=symbolbirth_year,year_in,year_out=integerpredicatespresident(name,party,state,birth_year,year_in,year_out)goalpresident(X,democrat,S,Yb,Yi,Yo),nl,write(X,-democrat),nl,write(State-,S),nl,write(Birth_year-,Yb),nl,write(Year_in-,Yi),nl,write(Year_out-,Yo),nl,nl.clausespresident(elsenh

19、ower,republican,texas,1890,1953,1961).president(kennedy,democrat,massachusetts,1917,1961,1963).president(johnson,democrat,texas,1908,1963,1969).president(nixon,republican,california,1913,1969,1974).president(ford,republican,nebraska,1913,1974,1977).president(carter,democrat,georgia,1924,1977,1981).混

20、合域的使用第17页/共31页/*程序名:Rlatives 文件名:prog0504.pro */*目 标:规则结构举例 */domainsperson=symbolpredicatesmale(person)female(person)parents(person,person,person)sister(person,person)who_is_the_sistergoalwho_is_the_sister.clauses/*事 实 */male(Frank).male(Sam).female(Mary).female(Debbie).parents(Sam,Frank,Mary).pare

21、nts(Debbie,Frank,Mary)./*规 则 */who_is_the_sister:-sister(Sister,Brother),write(Sister,is the sister of,Brother,.),nl.sister(Sister,Brother):-female(Sister),male(Brother),parents(Sister,Father,Mother),parents(Brother,Father,Mother).目标中使用规则第18页/共31页domainsman=symbolpredicateschoice(man)short_height(ma

22、n)medium_height(man)tall_height(man)black_hair(man)brown_hair(man)blond_hair(man)old_car(man)new_car(man)sports_car(man)kathy_choice(man)who_is_the_choicegoalwho_is_the_choice.clauses/*事 实 */choice(bill).choice(jim).choice(mark).choice(robert).choice(willy)./*规 则 */who_is_the_choice:-kathy_choice(Ch

23、oice),write(Kathys choice is,Choice,.),nl.kathy_choice(Choice):-choice(Choice),tall_height(Choice),blond_hair(Choice),sports_car(Choice).choice(tom).choice(frank).short_height(mark).short_height(willy).medium_height(jim).medium_height(tom).tall_height(jim).tall_height(robert).tall_height(frank).blac

24、k_hair(bill).black_hair(willy).brown_hair(jim).brown_hair(tom).blond_hair(mark).blond_hair(robert).blond_hair(frank).new_car(mark).new_car(willy).new_car(frank).old_car(mark).old_car(tom).sports_car(jim).sports_car(robert).简单数据库第19页/共31页/*程序名:Europair 文件名:prog0506.pro */*目 标:否定谓词应用举例 */domainscountr

25、y=symbolpredicateseuro_pair(country,country)border(country,country)find_non_border_pairgoalfind_non_border_pair.clauseseuro_pair(France,Germany).euro_pair(France,Spain).euro_pair(France,Italy).euro_pair(Germany,Spain).euro_pair(Germany,Italy).euro_pair(Spain,Italy).border(France,Germany).border(Fran

26、ce,Spain).border(France,Italy).find_non_border_pair:-euro_pair(X,Y),not(border(X,Y),write(X,-,Y),nl.否定谓词的应用第20页/共31页domainspersonal_library=book(title,author,publisher,year)collector,title,author,publisher=symbolyear=integerpredicatescollection(collector,personal_library)clausescollection(kahn,book(

27、The Computer and the Brain,von Neumann,Yale University Press,1958).collection(kahn,book(Symbolic Logic,Lewis Carroll,Dover Publications,1958).collection(john,book(Database:A Primer,C.J.Date,Addison-Wesley,1983).collection(john,book(Problem-Solving Methods in AI,Nils Nilsson,McGraw-Hill,1971).collect

28、ion(smith,book(Alice,in Wonder land,Lewis Carroll,The New American Library,1960).collection(smith,book(Fables of Aesop,Aesop-Calder,Dover Publications,1967).复合对象的应用第21页/共31页personal_librarybooktitleauthorpublisheryear域结构图域第0层(结构)第1层(对象)Domain Structure Diagramcollectioncollectorbooktitleauthorpublis

29、heryear谓词结构图Predicate Structure Diagram谓词 (主函子)函子第0层第1层第2层第22页/共31页domainspersonal_library=book(title,author,publication)publication=publication(publisher,year)collector,title,author,publisher=symbolyear=integerpredicatescollection(collector,personal_library)clausescollection(kahn,book(The Computer

30、and the Brain,von Neumann,publication(Yale University Press,1958).collection(kahn,book(Symbolic Logic,Lewis Carroll,publication(Dover Publications,1958).collection(john,book(Database:A Primer,C.J.Date,publication(Addison-Wesley,1983).collection(john,book(Problem-Solving Methods in AI,Nils Nilsson,pu

31、blication(McGraw-Hill,1971).collection(smith,book(Alice,in Wonder land,Lewis Carroll,publication(The New American Library,1960).collection(smith,book(Fables of Aesop,Aesop-Calder,publication(Dover Publications,1967).三层域结构和四层谓词结构第23页/共31页personal_librarybooktitleauthorpublicationyear域结构图域第0层第1层Domain

32、 Structure Diagramcollectioncollectorbooktitleauthorpublisheryear谓词结构图Predicate Structure Diagram谓词 (主函子)函子第0层第1层第2层publisher第2层publisher第3层第24页/共31页4.5 表与递归表是含有任意数目的其他对象的一个对象。一个包含1,2,3的表可被写成:1,2,3表中的每个项被称为一个元素。在域说明中需要对表类型进行说明。如:domainsintegerlist=integer*predicatesnumber(integerlist)表头:是表中的第一个元素。如:

33、表a,b,c中a是表头。表尾:是表中除表头外的另一张表。如:表a,b,c中b,c是表尾。空表:没有元素的表。对于表c,c是表头,是表尾。a,b,c,d,ab,c,d,bc,d,cdd 第25页/共31页Prolog 提供一种使表头和表尾明确分开的方法:用逗号将元素分开,用|号将表头和表尾分开。如:a,b,c 等价于a|b,c 等价于 a|b|c 等价于a|b|c|打印表中元素的例子:domainslist=integer*predicateswrite_a_list(list)clauses write_a_list().write_a_list(H|T):-write(H),nl,write

34、_a_list(T).goal write_a_list(1,2,3).第26页/共31页表元素记数的例子:domainslist=integer*predicateslength_of(list,integer)clauseslength_of(,0).length_of(_|T,L):-length_of(T,TailLength),L=TailLength+1.goallength_of(1,2,3,L).第27页/共31页domains list=integer*predicates add1(list,list)clauses add1(,)./*boundary condition

35、*/add1(Head|Tail,Head1|Tail1):-/*separate the head*/*from the rest of the list*/Head1=Head+1,/*add 1 to the first element*/add1(Tail,Tail1)./*call element with the rest of the list*/goal add1(1,2,3,4,NewList).修改表,对表中的每个元素加1为了将1加至空表上的所有元素,只需生成另一张空表。为了将1加至其它表上的所有元素,将1加至表头,并使它成为结果表的表头,然后将1加至表尾的每个元素,并使它

36、成为新的表尾。第28页/共31页表合并:domains integerlist=integer*predicates append(integerlist,integerlist,integerlist)clauses append(,List,List).append(X|L1,List2,X|L3):-append(L1,List2,L3).goal append(1,2,3,4,5,Newlist).第29页/共31页4.6 文件与数据库Prolog 打开及关闭文件有8个内部谓词:openread谓词,打开文件用于读操作。openwrite谓词,打开文件用于写操作。openappend谓词,打开文件,在文件尾拼加。openmodify谓词,打开文件用于读和写操作。closfile谓词,用于关闭指定的文件。readdevice谓词,重新设置当前读设备,或获取当前读设备的名字。writedevice谓词,重新设置当前写设备,或获取当前写设备的名字。第30页/共31页感谢您的观看!第31页/共31页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁