06秋计本人工智能导论练习讲评1_第1页
06秋计本人工智能导论练习讲评1_第2页
06秋计本人工智能导论练习讲评1_第3页
06秋计本人工智能导论练习讲评1_第4页
06秋计本人工智能导论练习讲评1_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、.:.;06秋计本人工智能导论练习讲评1什么是prolog?prolog是Programming in LOGic的缩写,意思就是运用逻辑的言语编写程序。prolog不是很高深的言语,相反,比较起其他的一些程序文语,例如c、basic等等言语, prolog是更加容易了解的言语。假设他从来没有接触过计算机编程,那么祝贺他,他将很容易的进入prolog世界。假设他曾经是其他言语的高手,他就需求完全丢弃他原来的编程思绪,否那么是很难掌握prolog的。练习讲评2一个例子逻辑思想在我们日常生活中比比皆是,prolog正是把这种思想用文字描画出来的计算机言语。还是首先举个例子吧。 比如一群年轻人正在恋

2、爱,每个人都有本人心中所追求的对象:张学友爱王菲张学友爱周慧敏王菲爱谢廷峰周慧敏爱张学友谢廷峰爱王菲谢廷峰爱周慧敏刘德华爱周慧敏.我们说两个年轻人要相互都喜欢,他们就算是一对情侣,那么上面的谁和谁是情侣呢?这应该算是一道最简单逻辑推理标题了,那么我们如何用prolog言语实现呢?“张学友爱王菲是一条知的现实,用prolog言语来表达就是:爱(张学友,王菲). 留意1:这里是为了阅读方便才运用汉字的,真正的prolog是不允许运用除了根本字符以外字符的,也就是说,上面的句子必需写成love(zhangxueyou,wanfei).,电脑才可以真正的了解。留意2:最末尾的“.一定不能掉,它表示一个

3、句子终了。留意3:上面词汇对于电脑来说并没有真正的含义,所以我们完全可以用 ai(zxy,wf).来表达这个关系,更进一步,我们甚至可以用 xxx(a,b).来表达,只需他本人心里清楚xxx表示爱,a表示张学友,b表示王菲就可以了。留意4:张学友和王菲的顺序也没有特别的规定,他完全可以把他们换个位置:爱(王菲,张学友). 只需他心里清楚它表达的意思就行了,而以后都遵照这种被爱的人在前面的顺序,就不会出错。其他的现实我就不写了,他可以参照上面的例子本人把知现实翻译成prolog的语句。那么情侣的概念怎样定义呢?也很简单!情侣(某人甲,某人乙):-爱(某人甲,某人乙),爱(某人乙,某人甲).:-在

4、prolog中表示“假设的意思,我们运用它来定义规那么。上面这句话的意思就是,某人甲和某人乙是情侣的规那么就是:某人甲爱某人乙,并且某人乙爱某人甲。上面用来分隔两个爱的句子的“,表示并且的意思。当然为了可以让电脑运转,这个句子要改为英文的:lovers(X,Y):-love(X,Y),love(Y,X). 留意:在prolog中以小写字符开头的字符串代表确知的事物,比如love表示爱这种关系,而zhangxueyou表示张学友。而以大写字母开头的字符串表示未确定的事物,翻译成汉语就是某某。完好的可运转的prolog程序如下:我的拼音不好,要是什么人的名字拼写错了,请原谅:love(zhangx

5、ueyou,wanfei).love(zhangxueyou,zouhuimin).love(wanfei,xietinfen).love(zouhuimin,zhangxueyou).love(xietinfen,wanfei).love(xietinfen,zouhuimin).love(liudehua,zouhuimin).lovers(X,Y):-love(X,Y),love(Y,X).我们可以看出来,完好的prolog程序是有现实和规那么组成的。现适用来储存一些数据,而规那么用来储存某种可以推理出来的关系。假设把上面的程序调入prolog解释器关于prolog解释器,在后面有引见然

6、后就可以对以上的程序进展讯问。prolog解释器的提示符号为“?-,他只需求在在这个提示符后面输入本人的句子就可以了。让我们来看第一个讯问:?-love(zhangxueyou,wanfei).现实上我们的讯问完全和程序中的第一条现实一样,这个讯问是“是非讯问,也就是说电脑回答的答案是yes或者no。上面的讯问的含义是:就他所知,张学友爱王菲么?由于我们的程序中间有这样的现实,所以解释器将回答。yes.假设我们问:?-love(zhangxueyou,liudehua). 解释器将回答no.由于它没有发现love(zhangxueyou,liudehua).这个现实。在讯问中我们可以运用大写字

7、母代表未知的事物,让解释器找到答案。例如:?-love(zhangxueyou,X).这句话讯问的是:张学友都喜欢那些人。解释器将给出答案:X=wanfei;X=zouhuimin;no.留意1:上面的两个“;是人工输入的,当解释器找到一个答案之后,它将这个答案输出,并且等待用户的进一步输入,假设用户输入“;,解释器将继续寻觅其他的答案,假设输入的是别的符号,解释器将终止查询。最后那个no.是由于,系统在输出了zouhuimin这个答案以后,用户输入“;,表示还想知道其他的答案,而解释器又找不到其他的答案了,于是输出no.来终止查询。我们再看一个例子:?-love(X,zouhuimin).X

8、=zhangxueyou;X=xietinfen;X=liudehua;no.在上面的讯问中,我们只涉及到对现实的查询,下面我们来看规那么的用法。?- lovers(X,Y).X = zhangxueyou Y = zouhuimin ;X = wanfeiY = xietinfen ;X = zouhuiminY = zhangxueyou ;X = xietinfenY = wanfei ;no我们看到lovers(X,Y).找出了系统中一切的恋人。不过每对恋人被显示了两次,这是由于prolog是思索顺序的,也就是说lovers(a,b).和lovers(b,a).并不等价。这一点在后面的

9、学习中,他会了解。再看一个例子:?- lovers(wanfei,Y). Y = xietinfen ;no讯问王菲的恋人,结果是xietinfen。呵呵,还挺聪明的。我们看到同样是lovers,根据其参数不同,功能也不同,这也是prolog的一个大特点。最后让我们编写一个寻觅情敌的规那么来终了这一节内容吧。rival_in_love(X,Y):-love(X,Z),not(love(Z,X),love(Z,Y).这段程序可以了解为:Y是X的情敌的条件是:X喜欢Z(代表某个人),而Z不喜欢X,而Y是Z喜欢的人。哈哈,这不正是情敌的条件嘛。?- rival_in_love(X,Y). X = z

10、hangxueyouY = xietinfen ;X = xietinfenY = zhangxueyou ;X = liudehuaY = zhangxueyou ; no好了,他本人分析一下为什么会是这样的答案吧。练习讲评3看完上面的例子,不知道能否提起了他对prolog的兴趣。假设他感兴趣的话,那么让我们继续来看prolog可以做一些什么事情吧。实际上来说运用c言语可以编制任何种类的程序,甚至连prolog言语都是运用c言语编写的。不过对于急于开发运用程序的用户,最关怀的是如何最经济最有效率的开发程序,prolog为他多提供了一个选择的余地。prolog很适宜于开发有关人工智能方面的程序

11、,例如:专家系统、自然言语了解、定理证明以及许多智力游戏。曾经有人预言prolog将成为下一代计算机的主要言语,虽然这个梦想目前还很难实现,不过世界上曾经有许多prolog的运用实例了。他要坚信,它绝对不是那种只在实验室发扬作用的言语,之所以大多数人都不了解它,是由于它的运用范围比较特殊而已。prolog有许多缺乏之处,但是这并不影响它在逻辑推理方面的强大功能,不过最好的方法是运用某种普通言语和prolog结合,普通言语完成计算、界面之类的操作,而prolog那么专心实现逻辑运算的操作。例如:他编写一个下棋程序,用prolog来让电脑思索如何下棋,而用Visual Basic来编写界面。我们将

12、在以后引见这方面的技术。总之,prolog在许多方面将极大的减少他的编程负担,所以赶快来了解一下它吧, 也许他日后遇到什么难题,可以运用prolog迎刃而解,到那个时候,他就知道今天的学习没有白费了。练习讲评4我个人总结了prolog的以下几个特点,由于叫做特点,所以自然要和其他的言语进展比较。1. prolog程序没有特定的运转顺序,其运转顺序是由电脑决议的,而不是编程序的人。从这个意义上来说,prolog程序不是真正意义上的程序。所谓程序就是按照一定的步骤运转的计算机指令,而prolog程序的运转步骤不由人来决议。它更像一种描画型的言语,用特定的方法描画一个问题,然后由电脑自动找到这个问题

13、的答案。举个极端的例子,他只需求把某个数学标题通知它,它就会自动的找到答案,而不像运用其他的言语一样,必需人工的编制出某种算法。 2. prolog程序中没有if、when、case、for这样的控制流程语句前面曾经说了,程序的运转方式有电脑本人决议,当然就用不到这些控制流程的语句了。通常情况下,程序员不需求了解程序的运转过程,只需求注重程序的描画能否全面,不过prolog也提供了一些控制流程的方法,这些方法和其他言语中的方法有很大的区别,希望他在以后的学习当中可以融会贯穿。3. prolog程序和数据高度一致在prolog程序中,是很难分清楚哪些是程序,哪些是数据的。现实上,prolog中的

14、一切东西都有一样的方式,也就是说数据就是程序,程序就是数据。举一个其他言语的例子:假设想用c言语编写一个计算某个数学表达式的程序很简单(比如:a=2+54),由于这是一段程序。但是假设想编写一个计算用户输入的表达式的值的程序就很困难了。由于用户输入的是一段数据(字符串),假设想让c言语处置这个字符串,就需求很多方面的技术。那么正是由于在c言语中,程序和数据是分开的。而在prolog就不存在这个问题,他甚至可以很轻松的编写处置其它prolog程序的程序。4. prolog程序实践上是一个智能数据库prolog的原理就是关系数据库,它是建立在关系数据库的根底上的。在以后的学习中他会发现它和SQL数据库查询言语有很多类似之处。运用prolog可以很方便的处置数据。5. 强大的递归功能在其它的言语中,他也许曾经接触过递归程序了。递归是一种非常简约的方式,它可以有效的处理许多难题。而在prolog中,递归的功能得到了充分的表达,他甚至都会感到惊奇,递归通畅又如此宏大的才干。练习讲评5系统实现:从JAVA程序传送噪声规范差和

温馨提示

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

评论

0/150

提交评论