




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用于人工智能的Prolog语言归结原理与Prolog语言家庭关系程序示例TurboProlog程序结构表与递归Prolog程序分析本章主要内容:文件与数据库字符串处理回溯及控制输入与输出Prolog是一种逻辑程序设计语言,基于一阶谓词逻辑,是典型的叙述型语言(DeclarationLanguage)。Prolog语言的特点:(1)建立在一阶谓词逻辑和归结原理基础上,有自动推理功能。(2)用Prolog设计应用程序时,仅需指明领域中各对象间的关系和决策规则,而应用这些知识的推理由Prolog完成。(3)Prolog应用程序,由数据库和规则库组成。(4)Prolog程序设计要做三件事,即说明事实、定义规则、提出问题。4.1归结原理与Prolog语言Prolog有三种形式的语句:1. B:-A1,A2,…,An.含义是A1
A2...An
B,相当于~A1~A2…~An
B。可视作人工智能系统中的推理规则。也可将该句看作一个过程,B为过程头,是过程名,而{A1,A2,…,An}为过程体。2. A1,A2,…,An.含义是A1
A2...An
F,相当于~A1~A2…~An,可视作推理的目标,或称目标子句。3. B.含义是公式B无条件地为真。可视作已知的事实。x(M(x)R(x))M(“张三”)R(“张三”)如三段论:推理规则: R(X):-M(X).事实: M("张三").目标: R("张三").Prolog语句:用Prolog证明三段论:推理规则:R(X):-M(X).事实: M("张三").目标: R("张三"). M("张三").完整的Prolog程序:predicates M(symbol) R(symbol)clauses R(X):-M(X). M("zhsan").goal R("zhsan").运行4.2家庭关系程序示例下图是一个表示家庭关系的实例:PamTomAnnBobLizPatJim parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim).用Prolog语句表示为:完整的Prolog程序:predicates parent(symbol,symbol)clauses parent(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,XjimYparentparentgrandparentProlog目标语句: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).clausesPredicates parent(symbol)clauses parent(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).在示例程序中,添加有关性别的信息:关于sister的规则定义:predicates parent(symbol,symbol) sister(symbol,symbol) female(symbol) male(symbol)
clauses parent(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).goal sister(X,pat).运行Pat的姐妹是谁?mother规则:对所有的X和Y,X是Y的母亲,如果X是Y的父母,并且,X为女性。用prolog规则表示为:mother(X,Y):- parent(X,Y), female(X).predicates parent(symbol,symbol)
mother(symbol,symbol) female(symbol) male(symbol)clauses parent(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).goal mother(pat,X).Pat是谁的母亲?运行4.3TurboProlog程序结构一个TurboProlog程序通常包括5个部分。如下:/* 注释 */domains
域说明database 数据库说明predicates 谓词说明goal 目标说明clauses 子句说明/* 注释 */1.域说明部分,说明谓词对象的数据类型。2.数据库说明部分,包含一些数据库谓词的定义,是说明用于动态数据库管理的谓词。如果程序不需要动态数据库,该部分可省略。3.谓词说明部分,定义程序中除内部谓词以外的所有谓词。4.在目标部分,说明程序的目标。一个程序目标可以由多个字目标复合而成。5.子句部分,列出全部事实和规则,也可看作是程序的静态数据。/*程序名:Wordsmith文件名:*//*目标:查找并打印一单词的同义词或反义词。*/domains word,syn,ant=symbolpredicates synonym(word,syn) antonym(word,ant)goal synonym(brave,X), antonym(brave,Y), write("brave的同义词是:",X),nl, write("brave的反义词是:",Y),nl.clauses synonym(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文件名:*//*目标:建立一个打印单词的同义词和反义词的小词典。*/domains word,syn1,syn2,syn3, ant1,ant2,ant3=symbolpredicates synonym(word,syn1,syn2,syn3) antonym(word,ant1,ant2,ant3)goal synonym(brave,S1,S2,S3), antonym(brave,A1,A2,A3), write("brave的同义词是:"),nl, write(S1,",",S2,",",S3,","), write("brave的反义词是:"),nl, write(A1,",",A2,",",A3,"."),nl.
clauses synonym(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文件名:*//*目标:使用混合对象类型举例。*/domains name,party,state=symbol birth_year,year_in,year_out=integerpredicates president(name,party,state,birth_year,year_in,year_out)goal president(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.clauses president(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). 混合域的使用domains man=symbolpredicates choice(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_choicegoal who_is_the_choice.clauses /*事实*/ choice(bill). choice(jim). choice(mark). choice(robert). choice(willy).
/*规则*/who_is_the_choice:- kathy_choice(Choice), write("Kathy'schoiceis",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文件名:*//*目标:否定谓词应用举例*/domains country=symbolpredicates euro_pair(country,country) border(country,country) find_non_border_pairgoal find_non_border_pair.clauses euro_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.
否定谓词的应用personal_librarybooktitleauthorpublisheryear域结构图域第0层(结构)第1层(对象)DomainStructureDiagramcollectioncollectorbooktitleauthorpublisheryear谓词结构图PredicateStructureDiagram谓词(主函子)函子第0层第1层第2层domains personal_library=book(title,author,publication) publication=publication(publisher,year) collector,title,author,publisher=symbol year=integerpredicates collection(collector,personal_library)clauses collection(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))).三层域结构和四层谓词结构4.5表与递归表是含有任意数目的其他对象的一个对象。一个包含1,2,3的表可被写成:[1,2,3]表中的每个项被称为一个元素。在域说明中需要对表类型进行说明。如:domains integerlist=integer*predicates number(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提供一种使表头和表尾明确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业劳动合同范本:全员适用版
- 追讨合同违约金起诉书范本
- 快递企业委托代理合同
- 汽车保险合同模板
- 土地租赁经营权合同书样本
- 技术研发劳动合同规定
- 机织服装的绿色包装设计考核试卷
- 无线传输技术在野生动物保护中的应用考核试卷
- 方便食品市场趋势与消费者需求分析考核试卷
- 批发商客户关系持续优化策略研究考核试卷
- 颈动脉斑块预防课件
- 成品粮储藏技术规范
- 【上市公司财务造假驱动因素探究文献综述3100字】
- 20cr球化退火工艺
- 2024年辽宁省沈阳市中考数学模拟练习卷(含答案)
- 第一单元《华夏古韵》-原始狩猎图 课件 2023-2024学年人教版初中音乐八年级下册
- 主题班会调整心态缓解压力课件
- 解读民法典之物权编实用教育课件
- 通用电子嘉宾礼薄
- 仓库保管工国家职业标准
- 酒水知识与酒吧管理课件
评论
0/150
提交评论