人工智能程序设计语言-2015分解优秀PPT.ppt

上传人:1398****507 文档编号:55640712 上传时间:2022-10-31 格式:PPT 页数:69 大小:917KB
返回 下载 相关 举报
人工智能程序设计语言-2015分解优秀PPT.ppt_第1页
第1页 / 共69页
人工智能程序设计语言-2015分解优秀PPT.ppt_第2页
第2页 / 共69页
点击查看更多>>
资源描述

《人工智能程序设计语言-2015分解优秀PPT.ppt》由会员分享,可在线阅读,更多相关《人工智能程序设计语言-2015分解优秀PPT.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、人工智能程序设计语言人工智能程序设计语言华北电力高校计算机系华北电力高校计算机系 10/30/20221内容内容综述函数型程序设计语言LISP逻辑性程序设计语言PROLOGPROLOG程序设计10/30/20222华北电力高校华北电力高校内容内容综述函数型程序设计语言LISP逻辑性程序设计语言PROLOGPROLOG程序设计10/30/20223华北电力高校华北电力高校综述综述人工智能所解决的问题并非一般的数值计算或数据处理问题是要实现对脑功能的模拟和再现人工智能程序面对问题面对逻辑支持学问表示能描述逻辑关系和抽象概念处理对象更多的是学问,或者说是符号常规程序设计语言受限10/30/20224

2、华北电力高校华北电力高校综述综述人工智能程序设计语言函数型语言逻辑性语言面对对象语言混合型语言10/30/20225华北电力高校华北电力高校综述综述-函数型语言函数型语言函数型语言LISP是一种函数型程序设计语言。LISP程序由一组函数组成,程序的执行过程就是一系列的函数调用和求值过程。但LISP还不是纯函数型语言,精确地讲,它是基于-函数的语言。除LISP外,20世纪70年头J.Backus还提出了一种称为FP的所谓纯函数型程序设计语言。但该语言现在还限于理论探讨,实现上还存在确定困难。10/30/20226华北电力高校华北电力高校综述综述-逻辑型语言逻辑型语言逻辑型语言逻辑型程序设计语言起

3、源于PROLOG(PROgramminginLOGic)。PROLOG语言首先由法国马塞高校的Colmerauer和它的探讨小组于1972年研制成功,后来在欧洲得到进一步发展。特殊是1981年日本宣布要以PROLOG作为他们正在研制的新一代计算机智能计算机的核心语言,更使PROLOG举世瞩目,快速风靡世界。10/30/20227华北电力高校华北电力高校综述综述-逻辑型语言逻辑型语言现在PROLOG几乎在人工智能的全部领域都获得了应用,成为与LISP并驾齐驱的甚至更加流行的智能程序设计语言。由于PROLOG语言是一种逻辑型程序设计语言,因此用它编写的程序也就是逻辑程序,即在PROLOG程序中一般

4、不需告知计算机“怎么做”,而只需告知它“做什么”。因此,PROLOG亦属陈述性语言。与通常的过程性程序设计语言相比,PROLOG是更高级的语言。10/30/20228华北电力高校华北电力高校综述综述-面对对象语言面对对象语言面对对象语言面对对象语言 20世纪世纪80年头以来,面对对象程序设年头以来,面对对象程序设计计(ObjectOrientedProgramming,简称,简称OOP)异军突起,发展快速。异军突起,发展快速。OOP以其信息隐藏、封以其信息隐藏、封装、继承、多态、消息传递等一系列优良机制,装、继承、多态、消息传递等一系列优良机制,大大改善了软件的困难性、模块性、重用性和大大改善

5、了软件的困难性、模块性、重用性和可维护性,有望从根本上解决软件的生产效率可维护性,有望从根本上解决软件的生产效率问题。另一方面,由于面对对象程序设计的类、问题。另一方面,由于面对对象程序设计的类、对象、继承等概念,与人工智能特殊是学问表对象、继承等概念,与人工智能特殊是学问表示和学问库产生了自然的联系。示和学问库产生了自然的联系。10/30/20229华北电力高校华北电力高校综述综述-混合型语言混合型语言混合型语言混合型语言 1.函数型与逻辑型相结合的语言函数型与逻辑型相结合的语言 函数型与逻辑型语言的结合方式有耦合函数型与逻辑型语言的结合方式有耦合型和统一型两类。型和统一型两类。统一型又可分

6、为具有归结语统一型又可分为具有归结语义的函数型语言和集成式语言两个子类。义的函数型语言和集成式语言两个子类。耦合型语言意为将具有归约语义的函数耦合型语言意为将具有归约语义的函数型语言和具有归结语义的逻辑型语言组合在一型语言和具有归结语义的逻辑型语言组合在一起起,并在二者之间供应一个接口而形成的一种并在二者之间供应一个接口而形成的一种混合型语言。混合型语言。其典型代表有:其典型代表有:10/30/202210华北电力高校华北电力高校综述综述-混合型语言混合型语言(1)LOGLISP。该语言在LISP的基础上增加了表达合一、回溯等机制的系统函数,从而在保持LISP特色的同时又有了逻辑程序设计实力。

7、(2)FUNLOG。该语言在PROLOG之外又增加了函数定义机制,系统以归结语义执行PROLOG程序,以归约语义求解函数。(3)POPLOG。这是POP-11、PROLOG和LISP的混合型语言,三种成分各有一个增量式编译器。具有归结语义的函数型语言又可分为N-语言、F-语言和R语言。10/30/202211华北电力高校华北电力高校综述综述-混合型语言混合型语言2.函数型与面对对象相结合的语言函数型与面对对象相结合的语言 在在LISP语言的基础上再扩充面对对象机制而产生语言的基础上再扩充面对对象机制而产生的语言的语言,称为函数型的面对对象程序设计语言称为函数型的面对对象程序设计语言(亦称为亦称

8、为面对对象的面对对象的LISP)。这种语言现已成为一个家族这种语言现已成为一个家族,其中其中比较著名的有:比较著名的有:(1)Flavors 由由 MIT 的的 Lisp Machine 小组于小组于 1979 年研制而成年研制而成,它的基语言是它的基语言是Symbolics Common LISP。(2)LOOPS(Lisp-Object-OrientedProgramming System)。它是在。它是在InterLisp-D环境上环境上实现的基于实现的基于LISP的的OOP语言语言,由由Xerox公司于公司于1983年年推出。推出。10/30/202212华北电力高校华北电力高校综述综

9、述-混合型语言混合型语言(3)CommonLoops。它是基于CommonLisp的函数型OOP语言,由Xerox公司于1985年推出。(4)CLOS(CommonLispObjetcSystem)。它是Xerox公司于1986年推出的一个CommonLoops与NewFlavors的后继产品。(5)CommonObjects。它是由HP公司于19831985年实现的又一个基于CommonLisp的OOP语言。(6)OBJ2也是一种面对对象的函数型语言。10/30/202213华北电力高校华北电力高校综述综述-混合型语言混合型语言3.逻辑型与面对对象相结合的语言逻辑型与面对对象相结合的语言 这

10、类语言著名的有这类语言著名的有:(1)SPOOL。日本。日本IBM分部于分部于1985年推出年推出的以面对对象思想扩充的的以面对对象思想扩充的PROLOG语言。语言。(2)Orient 84K。Keio高校于高校于1984年发表年发表的基于的基于PROLOG和和Smalltalk 的并行执行语言。的并行执行语言。(3)Vulan。一种面对对象的逻辑型语言。一种面对对象的逻辑型语言。10/30/202214华北电力高校华北电力高校内容内容综述函数型程序设计语言LISP逻辑性程序设计语言PROLOGPROLOG程序设计10/30/202215华北电力高校华北电力高校函数型程序设计语言函数型程序设计

11、语言LISPLISP是第一个人工智能程序设计语言LIStProcessing,表处理语言1960年由MIT的麦卡锡和他的探讨小组设计,擅长表处理,即符号处理很多人工智能系统用LISP语言编写LISP被誉为人工智能的数学,是人工智能探讨和开发的主要工具10/30/202216华北电力高校华北电力高校函数型程序设计语言函数型程序设计语言LISPLISP语言的主要特点:LISP程序由一组函数组成,程序的执行过程是函数的调用过程程序和数据在形式上是相同的,即都是符号表达式,简称为S表达式递归是LISP语言的主要限制结构程序以交互方式运行10/30/202217华北电力高校华北电力高校LISP的程序结构

12、的程序结构LISP的程序一般由函数的定义和函数的调用两部分组成。其一般格式为:(DEFUN()()()()()()“DEFUN”是定义函数的关键字“函数名”可以是系统的内部函数(名),也可以是用户用DEFUN定义的函数(名)10/30/202218华北电力高校华北电力高校一个一个LISP程序程序(DEFUNHANOI(abcn)(COND(=n1)(MOVE-DISKac)(T(HANOIacb(-n1)(MOVE-DISKac)(HANOIbac(-n1)(DEFUNMOVE-DISK(fromto)(TERPRI)(PRINCMoveDiskFrom)(PRINCfrom)(PRINCTo

13、)(PRINCto)(HANOIabc3)两个函数前者调用后者函数调用部分只有一个函数调用10/30/202219华北电力高校华北电力高校LISP的基本函数的基本函数LISP的函数一律运用前缀表示方式,分为内部函数(基本或系统函数)和用户自定义函数两类基本函数的种类有十多个,仅给出主要的几类表处理函数算数函数求值与赋值函数谓词函数条件函数10/30/202220华北电力高校华北电力高校表处理函数表处理函数表处理是LISP的主要特色,下面仅给出最常用的几个:1)CAR函数功能取出表中的表头。如CAR(LISPLanguageProgram)返回值 LISP2)CDR函数功能取出表中的表尾如(CD

14、R(LISPLanguageProgram)返回值(LanguageProgram)10/30/202221华北电力高校华北电力高校表处理函数表处理函数3)CONS函数功能将S表达式作为表头加到表中去如(CONSMy(LISPLanguageProgram)返回值(MyLISPLanguageProgram)4)APPEND函数功能将n个表中的元素合并成一个新表如(APPEND(TIGERLION)(DOGCAT)返回值(TIGERLIONDOGCAT)5)LIST函数功能把n个S表达式作为元素构成一张新表如(LISTYELLOWREDBLUE)返回值(YELLOWREDBLUE)10/30/

15、202222华北电力高校华北电力高校算术函数算术函数LISP的算术表达式也是用函数表示的,称为算术函数举例说明(+25)表示2+5,返回值为7(-(*48)(/105)表示48-10/5,返回值为3010/30/202223华北电力高校华北电力高校求值与赋值函数求值与赋值函数撇号是禁止求值函数QUOTE的简写形式赋值函数有多个SET函数是最基本的一个功能把S表达式赋给变量例如:(SETX8);X得到值8(SETY(abc);Y得到值(abc)(SETZ(CDRY);Z得到值(bc)10/30/202224华北电力高校华北电力高校谓词函数谓词函数返回值为逻辑值真或假的函数称为谓词函数真和假分别用

16、T和NIL表示谓词函数也有多个,仅给出常用的几个:(1)原子谓词ATOM功能检测其参数是否为原子,是则T,否则NIL例如:(ATOMa);返回T(ATOM(ab);返回NIL10/30/202225华北电力高校华北电力高校谓词函数谓词函数(2)相等谓词EQUAL功能推断两个参数是否逻辑相等例如:(EQUALaa);返回T(EQUAL(ab)(ac);返回NIL(3)判空表函数NULL功能推断参数是否为空表,是则返回T,否则返回NIL10/30/202226华北电力高校华北电力高校条件函数条件函数条件函数类似于分支语句,其作用是限制程序的流程格式(COND(P1e1)(P2e2)(Pnen)其中

17、Pi(i=1,.,n)为谓词,ei(i=1,.,n)为一个或多个S表达式功能假如P1为真,则COND函数的值为e1。否则,推断P2,直到某个Pi真为止,然后将对应的ei作为函数值。若没有一个Pi的值为非NIL,则COND的返回值为NIL。特殊地,Pi也可以为逻辑常量T,这时则对其对应的各表达式求值,并把最终一个表达式的值作为COND的返回值10/30/202227华北电力高校华北电力高校条件函数条件函数例如:(COND(NULLx)0)(ATOMx)1)(LISTPx)(LENGTHx)其语义是,若x的值为NIL,则COND的返回值为0;若x为原子,则COND的返回值为1;若x的值为表,则CO

18、ND的返回值为表的长度10/30/202228华北电力高校华北电力高校自定义函数自定义函数自定义函数的格式为:(DEFUN()其中函数体,又可能是用户自定义的函数或LISP基本函数的某种组合10/30/202229华北电力高校华北电力高校例例 定义求定义求N!的的LISP函数函数阶乘的公式是n!n(n-1)!1!10!1其LISP函数如下:(DEFUNN!(n)(COND(=n0)1)(=n1)1)(T(*n(N!(-n1)该函数的最终一行中又调用了它自己这个函数N!是递归定义的10/30/202230华北电力高校华北电力高校例例 HANOI(DEFUNHANOI(abcn)当只有一个盘子时,

19、干脆将a上的盘子移动到c上(COND(n1)(MOVEDISKac)其他状况,通过递归,先将柱a上的n1个盘子通过柱c移到柱b上(T(HANOIacb(n1)再将柱a上的一个盘子移动到柱c上(MOVEDISKac)最终再通过递归,将柱b上的n1个盘子通过柱a移动到柱c上(HANOIbac(n1)函数MOVE-DISK起显示的作用,表示从柱from到柱to移动了一个盘子(DEFUNMOVEDISK(fromto)TERPRI是回车换行函数,PRINC是显示参数的函数(TERPRI)(PRINC”MoveDiskFrom”)(PRINCfrom)(PRINC”To”)(PRINCto)10/30/

20、202231华北电力高校华北电力高校内容内容综述函数型程序设计语言LISP逻辑性程序设计语言PROLOGPROLOG程序设计10/30/202232华北电力高校华北电力高校逻辑型程序设计语言逻辑型程序设计语言PROLOG1972年,法国马赛高校的Alain.Colmerauer提出了Prolog的雏型1975年,Prolog被用于问题求解系统,此后在很多领域获得了应用,如关系数据库、定理证明、智能问题求解、计算机帮助设计、规划生成等领域Prolog语言是以一阶谓词逻辑的Horn子句集为语法,以Robinson的消解原理为工具,加上深度优先的限制策略而形成的人工智能通用程序设计语言10/30/2

21、02233华北电力高校华北电力高校Horn逻辑逻辑文字:原子公式文字:原子公式(正文字正文字)或原子公式的否定或原子公式的否定(负文字负文字)P,Q,R子句:若干文字的析取子句:若干文字的析取 PQR在数理逻辑中,霍恩子句(在数理逻辑中,霍恩子句(Horn Clause)是带有最多)是带有最多一个确定文字的子句一个确定文字的子句(文字的析取文字的析取)Horn子句:子句:子句子句L1L2 Ln中假如至多只含一个正文字,中假如至多只含一个正文字,那么该子句称为那么该子句称为Horn子句。子句。Horn子句子句P Q1 Q2 Qn通常表示为:通常表示为:P Q1,Q2,Qn10/30/202234

22、华北电力高校华北电力高校Horn逻辑逻辑Horn子句的类型:子句的类型:过程:P Q1,Q2,Qn事实:P 目标:Q1,Q2,Qn空子句:10/30/202235华北电力高校华北电力高校Horn逻辑逻辑例例:过程:过程:AT(dog,x)AT(Zhang,x)事实:事实:AT(Zhang,train)目标:目标:AT(dog,train)首先目标中过程调用首先目标中过程调用AT(dog,train)与过程名与过程名AT(dog,x)匹配,合一为匹配,合一为train/x,调用过程,调用过程AT(Zhang,x),从而,从而产生新目标产生新目标 AT(Zhang,train),与事实匹配,产生目

23、,与事实匹配,产生目标标 。因而调用成功,输出。因而调用成功,输出“是是”。10/30/202236华北电力高校华北电力高校Prolog的基本特点的基本特点Prolog既是一种逻辑程序设计语言,又是一个逻辑系统Prolog是一种描述性语言,是一种面对问题的语言,只须要告知它要做什么,即给出问题的形式描述,而不须要知道应当如何做Prolog完全依靠匹配、回溯来进行搜寻Prolog有很强的描述实力10/30/202237华北电力高校华北电力高校内容内容综述函数型程序设计语言LISP逻辑性程序设计语言PROLOGPROLOG程序设计PROLOG语句PROLOG程序PROLOG程序的运行机理其它10/

24、30/202238华北电力高校华北电力高校PROLOG的语句的语句PROLOG语言只有三种语句,分别为:事实(fact)规则(rule)问题(question)10/30/202239华北电力高校华北电力高校事实事实(fact)格式格式().谓词名是以小写英文字母打头的字母、数字、下谓词名是以小写英文字母打头的字母、数字、下划线等组成的字符串划线等组成的字符串项表是以逗号隔开的项序列项表是以逗号隔开的项序列 例如:例如:student(john).like(mary,music).功能功能 一般表示对象的性质或关系一般表示对象的性质或关系 作为特殊情形,事实也可以只有谓词名而无参量作为特殊情形

25、,事实也可以只有谓词名而无参量 例如:例如:abc.repeat.10/30/202240华北电力高校华北电力高校规则规则(rule)格式格式 ():-(),().“:-”号表示号表示“if”左部的谓词是规则的结论(亦称为头)左部的谓词是规则的结论(亦称为头)右部的谓词是规则的前提(亦称为体)右部的谓词是规则的前提(亦称为体)表示零次或多次重复表示零次或多次重复逗号表示逗号表示and(逻辑与逻辑与)例如:例如:bird(X):-animal(X),has(X,feather).grandfather(X,Y):-father(X,Z),father(Z,Y).功能功能 一般表示对象间的因果关系

26、、蕴含关系或对应关系一般表示对象间的因果关系、蕴含关系或对应关系作为特殊情形,规则中的谓词也可以只有谓词名而无参量作为特殊情形,规则中的谓词也可以只有谓词名而无参量例如:例如:run:-start,step1(X),step2(X),end.10/30/202241华北电力高校华北电力高校问题问题(question)格式格式?-(),().例如:?-student(john).?-like(mary,X).功能功能 问题表示用户的询问,是程序运行的目标问题表示用户的询问,是程序运行的目标10/30/202242华北电力高校华北电力高校Prolog的一些内建谓词的一些内建谓词Prolog供应了一

27、些有用的内建谓词(Built-inPredicates)内建谓词和用户定义谓词运用方式类似常用内建谓词等价谓词:=永真和永假:true;fail载入程序文件:consult/1终端输出write/1;nl/010/30/202243华北电力高校华北电力高校PROLOG程序程序PROLOG程序一般由一组事实、规则和问题组成。问题是程序执行的起点,称为程序的目标。例如下面就是一个PROLOG程序。likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane,smith).friend(john,X):-likes(X,read

28、ing),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).?-friend(john,Y).四条事实两条规则一个问题10/30/202244华北电力高校华北电力高校PROLOG程序的运行机理程序的运行机理PROLOG程序的运行是从目标动身,并不断进行匹配、合一、归结,有时还要回溯,直到目标被完全满足或不能满足时为止匹配?合一?回溯?10/30/202245华北电力高校华北电力高校PROLOG程序的运行机理程序的运行机理自由变量与约束变量自由变量与约束变量PROLOG中称无值的变量为自由变量,有值的变量为约束变量一个变量

29、取了某值就说该变量约束于某值或者说该变量被某值所约束或者说该变量被某值实例化了10/30/202246华北电力高校华北电力高校PROLOG程序的运行机理程序的运行机理匹匹协协作作一一:指指两两个个谓谓词词的的名名相相同同,参参量量项项的的个个数数相相同同,参量类型对应相同,并且对应参量项满足下列条件之一参量类型对应相同,并且对应参量项满足下列条件之一 (1)假如两个都是常量,则必需完全相同假如两个都是常量,则必需完全相同(2)假如两个都是约束变量,则两个约束值必需相同假如两个都是约束变量,则两个约束值必需相同(3)假假如如其其中中一一个个是是常常量量,一一个个是是约约束束变变量量,则则约约束束

30、值值与常量必需相同与常量必需相同(4)至少有一个是自由变量至少有一个是自由变量例如:下面的两个谓词例如:下面的两个谓词 pre1(“ob1”,“ob2”,Z).pre1(ob1,X,Y).只只有有当当变变量量X被被约约束束为为ob2,且且Y、Z的的约约束束值值相相同同或或者者至至少少有有一一个个是是自自由由变变量量时时,它它们们才才是是匹匹协协作作一一的的10/30/202247华北电力高校华北电力高校PROLOG程序的运行机理程序的运行机理回溯回溯在在程程序序运运行行期期间间,当当某某一一个个子子目目标标不不能能满满足足(即即谓谓词词匹匹配配失失败败)时时,限限制制就就返返回回到到前前一一个

31、个已已经经满满足足的的子子目目标标(假假如如存存在在的的话话),并并撤撤消消其其有有关关变变量量的的约约束束值值,然然后后再再使使其其重重新新满满足足。成成功功后后,再再接接着着满满足足原原子子目目标标。假假如如失失败败的的子子目目标标前前再再无无子子目目标标,则则限限制制就就返返回回到到该该子子目目标标的的上上一一级级目目标标(即即该该子子目目标标谓谓词词所所在在规规则则的的头头部部)使使它它重重新新匹匹配配。回回溯溯也也是是PROLOG的的一一个个重要机制重要机制10/30/202248华北电力高校华北电力高校设所给的询问是?-friend(john,Y).(john和谁是挚友?)则求解目

32、标为friend(john,Y).这时,系统对程序进行扫描,找寻能与目标谓词匹协作一的事实或规则头部。明显,程序中前面的四条事实均不能与目标匹配,而第五个语句的左端即规则PROLOG程序的运行过程程序的运行过程10/30/202249华北电力高校华北电力高校friend(john,X):-likes(X,reading),likes(X,music).头部可与目标谓词匹协作一。但由于这个语句又是一个规则,所以其结论要成立则必需其前提全部成立。于是,对原目标的求解就转化为对新目标likes(X,reading),likes(X,music).的求解。这实际是经归结,规则头部被消去,而目标子句变为

33、?-likes(X,reading),likes(X,music).现在依次对子目标likes(X,reading)和likes(X,music)求解PROLOG程序的运行过程程序的运行过程10/30/202250华北电力高校华北电力高校子目标的求解过程与主目标完全一样,也是从头对程序进行扫描,不断进行测试和匹协作一等,直到匹配成功或扫描完整个程序为止。可以看出,对第一个子目标like(X,reading)的求解因无可匹配的事实和规则而立刻失败,进而导致规则friend(john,X):-likes(X,reading),likes(X,music).的整体失败。于是,刚才的子目标likes(

34、X,reading)和likes(X,music)PROLOG程序的运行过程程序的运行过程10/30/202251华北电力高校华北电力高校被撤消,系统又回溯到原目标friend(john,X)这时,系统从该目标刚才的匹配语句处(即第五句)向下接着扫描程序中的子句,试图重新使原目标匹配,结果发觉第六条语句的左部,即规则friend(john,X):-likes(X,sports),likes(X,music).的头部可与目标为谓词匹配。但由于这个语句又是一个规则,于是,这时对原目标的求解,就又转化为依次对子目标likes(X,sports)和likes(X,music)PROLOG程序的运行过程

35、程序的运行过程10/30/202252华北电力高校华北电力高校的求解。这次子目标likes(X,sports)与程序中的事实立刻匹配成功,且变量X被约束为bell。于是,系统便接着求解其次个子目标。由于变量X已被约束,所以这时其次个子目标事实上已变成了likes(bell,music).由于程序中不存在事实likes(bell,music),所以该目标的求解失败。于是,系统就放弃这个子目标,并使变量X复原为自由变量,然后回溯到第一个子目标,重新对它进行求解。由于系统已经记住了刚才已同第一子目标谓词匹配过的事实的位置,所以重新求解时,便从下一个事实起先测试。PROLOG程序的运行过程程序的运行过

36、程10/30/202253华北电力高校华北电力高校易见,当测试到程序中第三个事实时,第一个子目标便求解成功,且变量X被约束为mary。这样,其次个子目标也就变成了likes(mary,music).再对它进行求解。这次很快成功。由于两个子目标都求解成功,所以,原目标friend(john,Y)也成功,且变量Y被约束为mary(由Y与X的合一关系)。于是,系统回答:Y=mary程序运行结束。上面只给出了问题的一个解。假如须要和可能的话,系统还可把john的全部挚友都找出来。我们把上述程序的运行过程再用示意图描述如下:PROLOG程序的运行过程程序的运行过程10/30/202254华北电力高校华北

37、电力高校图 PROLOG程序运行机理示例 PROLOG程序的运行过程程序的运行过程10/30/202255华北电力高校华北电力高校例:例:Hanoi塔塔如图,目的是把左边的全部盘子移到右边的杆子上。一次只能移动一个盘子,你可以运用中间的杆子作为临时存放盘子的地方。小盘子必需放在大盘子之上10/30/202265华北电力高校华北电力高校例:例:Hanoi塔塔假如要移动N个盘子,就要分三步走:把N-1个盘子移动到中间的杆子上(把中间的杆子作为临时存放盘子的位置)把最终一个盘子干脆移到右边的杆子上最终把中间杆子上的盘子移到右边的杆子上(把左边的杆子作为临时存放盘子的位置)10/30/202266华北

38、电力高校华北电力高校例:例:Hanoi塔塔hanoi(N):-move(N,left,middle,right).move(1,A,_,C):-inform(A,C),!.move(N,A,B,C):-N1isN-1,move(N1,A,C,B),inform(A,C),move(N1,B,A,C).inform(Loc1,Loc2):-nl,write(Moveadiskfrom-Loc1-to-Loc2).主程序为hanoi/1,它的参数为盘子的数目。它调用递归谓词move来完成任务。三个杆子的名字分别为left、middle、right10/30/202267华北电力高校华北电力高校TheEnd10/30/202269华北电力高校华北电力高校

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

当前位置:首页 > pptx模板 > 商业计划书

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

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