用于人工智能的Prolog语言.ppt_第1页
用于人工智能的Prolog语言.ppt_第2页
用于人工智能的Prolog语言.ppt_第3页
用于人工智能的Prolog语言.ppt_第4页
用于人工智能的Prolog语言.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用于人工智能的Prolog语言,归结原理与Prolog语言,家庭关系程序示例,TurboProlog程序结构,表与递归,Prolog程序分析,本章主要内容:,文件与数据库,字符串处理,回溯及控制,输入与输出,Prolog是一种逻辑程序设计语言,基于一阶谓词逻辑,是典型的叙述型语言(DeclarationLanguage)。Prolog语言的特点:(1)建立在一阶谓词逻辑和归结原理基础上,有自动推理功能。(2)用Prolog设计应用程序时,仅需指明领域中各对象间的关系和决策规则,而应用这些知识的推理由Prolog完成。(3)Prolog应用程序,由数据库和规则库组成。(4)Prolog程序设计要做三件事,即说明事实、定义规则、提出问题。,4.1归结原理与Prolog语言,Prolog有三种形式的语句:,1.B:-A1,A2,An.,含义是A1A2.AnB,相当于A1A2AnB。可视作人工智能系统中的推理规则。也可将该句看作一个过程,B为过程头,是过程名,而A1,A2,An为过程体。,2.A1,A2,An.,含义是A1A2.AnF,相当于A1A2An,可视作推理的目标,或称目标子句。,3.B.,含义是公式B无条件地为真。可视作已知的事实。,x(M(x)R(x)M(“张三”)R(“张三”),如三段论:,推理规则:R(X):-M(X).,事实:M(张三).,目标:R(张三).,Prolog语句:,证明公式:(M(X)R(X)M(张三)R(张三)恒真,即证明公式:(M(X)R(X)M(张三)R(张三)恒假,化成公式集:(M(X)R(X)M(张三),R(张三),子句集:M(X)R(X),M(张三),R(张三),推理规则,事实,目标,子句B:-A1,A2,An.和子句B.都是仅有一个正文字的子句。称作定子句。,目标子句A1,A2,An.是没有正文字出现的子句。,定子句和目标子句统成为Horn子句。Prolog子句都是Horn子句。,用Prolog证明三段论:,推理规则:R(X):-M(X).,事实:M(张三).,目标:R(张三).,M(张三).,完整的Prolog程序:,predicatesM(symbol)R(symbol)clausesR(X):-M(X).M(zhsan).goalR(zhsan).,运行,4.2家庭关系程序示例,下图是一个表示家庭关系的实例:,parent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).,用Prolog语句表示为:,完整的Prolog程序:,predicatesparent(symbol,symbol)clausesparent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).,此程序可以回答的问题:,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.系统回答,5.谁是jim的祖父母?,分析:程序中并没有直接的祖父母关系。此问题可分两步:,(1)谁是jim的父母?假设是Y,(2)谁是Y的父母?假设是X,X,jim,Y,parent,parent,grandparent,Prolog目标语句:,parent(Y,jim),parent(X,Y).,6.类似的问题可以是:,“谁是tom的孙子?”,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,以上程序说明的几个重要观点:,(1)在Prolog中定义一个关系是容易的,可以通过满足关系的n个对象来表达。,(2)对程序中已定义的关系,用户可以轻而易举地询问Prolog系统。,(3)关系的对象可以是常量(如:tom,ann),也可以是变量(如:X,Y)。,(4)向系统提出问题,可由一个或多个目标组成。,(5)一个Prolog程序由一些子句(clauses)组成。每个子句用句号结束。,(6)对一个问题的回答是肯定的或者是否定的,取决于相应的目标是否满足。在肯定回答的情况下,说相应的目标是可满足的,而且这个目标成功了。否则,说目标不可满足,目标失败了。,(7)如果有多个回答都满足目标,那么Prolog将尽可能多地回答。,Predicatesparent(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(liz).female(pat).female(ann).,在示例程序中,添加有关性别的信息:,在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),offspring(Z,X).,对应的prolog语句为:,X,Y,Z,parent,offspring,offspring,关于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(liz).female(ann).female(pat).sister(X,Y):-parent(Z,X),parent(Z,Y),female(X).goalsister(X,pat).,运行,Pat的姐妹是谁?,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,pat).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的姐妹是谁?,mother规则:,对所有的X和Y,,X是Y的母亲,,如果X是Y的父母,,并且,X为女性。,用prolog规则表示为:,mother(X,Y):-parent(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).female(pat).,goalmother(pat,X).,Pat是谁的母亲?,运行,4.3TurboProlog程序结构,一个TurboProlog程序通常包括5个部分。如下:,/*注释*/domains域说明database数据库说明predicates谓词说明goal目标说明clauses子句说明/*注释*/,1.域说明部分,说明谓词对象的数据类型。,2.数据库说明部分,包含一些数据库谓词的定义,是说明用于动态数据库管理的谓词。如果程序不需要动态数据库,该部分可省略。,3.谓词说明部分,定义程序中除内部谓词以外的所有谓词。,4.在目标部分,说明程序的目标。一个程序目标可以由多个字目标复合而成。,5.子句部分,列出全部事实和规则,也可看作是程序的静态数据。,/*程序名:Wordsmith文件名:*/*目标:查找并打印一单词的同义词或反义词。*/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).synonym(honest,truthful).synonym(modern,new).synonym(rare,uncommon).antonym(brave,cowardly).antonym(honest,dishonest).antonym(mordern,ancient).antonym(rare,common).,4.4TurboProlog程序分析,/*程序名:Thesaurus文件名:*/*目标:建立一个打印单词的同义词和反义词的小词典。*/domainsword,syn1,syn2,syn3,ant1,ant2,ant3=symbolpredicatessynonym(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,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).,多元谓词、多元子句,/*程序名:Presidents文件名:*/*目标:使用混合对象类型举例。*/domainsname,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(elsenhower,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).,混合域的使用,/*程序名:Rlatives文件名:*/*目标:规则结构举例*/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).parents(Debbie,Frank,Mary).,/*规则*/who_is_the_sister:-sister(Sister,Brother),write(Sister,isthesisterof,Brother,.),nl.sister(Sister,Brother):-female(Sister),male(Brother),parents(Sister,Father,Mother),parents(Brother,Father,Mother).,目标中使用规则,domainsman=symbolpredicateschoice(man)short_height(man)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(Choice),write(Kathyschoiceis,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).black_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).,简单数据库,/*程序名:Europair文件名:*/*目标:否定谓词应用举例*/domainscountry=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(France,Spain).border(France,Italy).find_non_border_pair:-euro_pair(X,Y),not(border(X,Y),write(X,-,Y),nl.,否定谓词的应用,domainspersonal_library=book(title,author,publisher,year)collector,title,author,publisher=symbolyear=integerpredicatescollection(collector,personal_library)clausescollection(kahn,book(TheComputerandtheBrain,vonNeumann,YaleUniversityPress,1958).collection(kahn,book(SymbolicLogic,LewisCarroll,DoverPublications,1958).collection(john,book(Database:APrimer,C.J.Date,Addison-Wesley,1983).collection(john,book(Problem-SolvingMethodsinAI,NilsNilsson,McGraw-Hill,1971).collection(smith,book(Alice,inWonderland,LewisCarroll,TheNewAmericanLibrary,1960).collection(smith,book(FablesofAesop,Aesop-Calder,DoverPublications,1967).,复合对象的应用,域结构图,域,第0层(结构),第1层(对象),DomainStructureDiagram,collection,collector,book,title,author,publisher,year,谓词结构图,PredicateStructureDiagram,谓词(主函子),函子,第0层,第1层,第2层,domainspersonal_library=book(title,author,publication)publication=publication(publisher,year)collector,title,author,publisher=symbolyear=integerpredicatescollection(collector,personal_library)clausescollection(kahn,book(TheComputerandtheBrain,vonNeumann,publication(YaleUniversityPress,1958).collection(kahn,book(SymbolicLogic,LewisCarroll,publication(DoverPublications,1958).collection(john,book(Database:APrimer,C.J.Date,publication(Addison-Wesley,1983).collection(john,book(Problem-SolvingMethodsinAI,NilsNilsson,publication(McGraw-Hill,1971).collection(smith,book(Alice,inWonderland,LewisCarroll,publication(TheNewAmericanLibrary,1960).collection(smith,book(FablesofAesop,Aesop-Calder,publication(DoverPublications,1967).,三层域结构和四层谓词结构,personal_library,book,title,author,publication,year,域结构图,域,第0层,第1层,DomainStructureDiagram,collection,collector,book,title,author,publisher,year,谓词结构图,PredicateStructureDiagram,谓词(主函子),函子,第0层,第1层,第2层,publisher,第2层,publisher,第3层,4.5表与递归,表是含有任意数目的其他对象的一个对象。,一个包含1,2,3的表可被写成:1,2,3,表中的每个项被称为一个元素。,在域说明中需要对表类型进行说明。如:,domainsintegerlist=integer*predicatesnumber(integerlist),表头:是表中的第一个元素。如:表a,b,c中a是表头。,表尾:是表中除表头外的另一张表。如:表a,b,c中b,c是表尾。,空表:没有元素的表。对于表c,c是表头,是表尾。,a,b,c,d,a,b,c,d,b,c,d,c,d,d,Prolog提供一种使表头和表尾明确分开的方法:用逗号将元素分开,用|号将表头和表尾分开。如:,a,b,c等价于a|b,c等价于a|b|c等价于a|b|c|,打印表中元素的例子:,domainslis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论