Xie-AI-第8章-人工智能程序设计.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Xie-AI-第8章-人工智能程序设计.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Xie_AI_ 人工智能 程序设计
- 资源描述:
-
1、主 讲:谢 榕 武汉大学国际软件学院第八章第八章 人工智能程序设计人工智能程序设计内容提要:概述函数型程序设计语言LISP逻辑型程序设计语言PROLOGLISP和PROLOG的比较8.1 8.1 概述概述程序设计语言分类人工智能编程语言人工智能编程语言及其发展人工智能编程方法 vs.传统方法1.1.程序设计语言分类程序设计语言分类提问:世界上有多少种程序设计语言?提问:世界上有多少种程序设计语言?BillKinnersley1991年搜集整理出了一份TheLanguageList(http:/people.ku.edu/nkinners/LangList/Extras/langlist.htm
2、),其中列出2500多种程序设计语言并附有简要介绍。Language Categories(1)Language Categories(1)过程性语言过程性语言Procedural Language: A language which states how to compute the result of a given problem. This term encompasses both imperative and functional languages.命令式语言命令式语言Imperative Language: A language which operates by a sequ
3、ence of commands that change the value of data elements. Imperative languages are typified by assignments and iteration.声明性语言声明性语言Declarative Language: A language which operates by making descriptive statements about data, and relations between data. The algorithm is hidden in the semantics of the l
4、anguage. This category encompasses both applicative and logic languages. Examples of declarative features are set comprehensions and pattern-matching statements.http:/people.ku.edu/nkinners/LangList/Extras/classif.htmLanguage Categories(2)Language Categories(2)应用型语言应用型语言Applicative Language: A langu
5、age that operates by application of functions to values, with no side effects. A functional language in the broad sense.功能性语言功能性语言Functional Language: In the narrow sense, a functional language is one that operates by use of higher-order functions, building operators that manipulate functions direct
6、ly without ever appearing to manipulate data. Example: FP.定义型语言定义型语言Definitional Language: An applicative language containing assignments interpreted as definitions. Example: Lucid.单赋值语言单赋值语言Single Assignment Language: An applicative language using assignments, with the convention that a variable ma
7、y appear on the left side of an assignment only once within the portion of the program in which it is active.Language Categories(3)Language Categories(3)数据流语言数据流语言Dataflow Language: A language suitable for use on a dataflow architecture. Necessary properties include freedom from side effects, and th
8、e equivalence of scheduling constraints with data dependencies. Examples: Val, Id, SISAL, Lucid.逻辑型语言逻辑型语言Logic Language: A logic language deals with predicates or relationships p(X,Y). 约束型语言约束型语言Constraint Language: A language in which a problem is specified and solved by a series of constraining r
9、elationships.面向对象语言面向对象语言Object-Oriented Language: A language in which data and the functions which access it are treated as a unit.并发型语言并发型语言Concurrent Language: A concurrent language describes programs that may be executed in parallel.Language Categories(4)Language Categories(4)第四代语言第四代语言Fourth Ge
10、neration Language (4GL): A very high-level language. It may use natural English or visual constructs. Algorithms or data structures may be selected by the compiler.查询语言查询语言Query Language: An interface to a database.规范性语言规范性语言Specification Language: A formalism for expressing a hardware or software d
11、esign.汇编语言汇编语言Assembly Language: A symbolic representation of the machine language of a specific computer.中间语言中间语言Intermediate Language: A language used as an intermediate stage in compilation. May be either text or binary.元语言元语言Metalanguage: A language used for the formal description of another lan
12、guage.1.1.程序设计语言分类程序设计语言分类常见程序设计语言大体上分为:q过程性语言q函数性语言q逻辑性语言q面向对象语言提问:世界上有多少种程序设计语言?提问:世界上有多少种程序设计语言?BillKinnersley1991年搜集整理出了一份TheLanguageList(http:/people.ku.edu/nkinners/LangList/Extras/langlist.htm),其中列出2500多种程序设计语言并附有简要介绍。过程性语言过程性语言如BASIC、FORTRAN、PASCAL、C等。特点:必须告诉程序每一步走的详细算法。函数性语言函数性语言函数性语言的代表:表处
13、理语言LISP(List Processing)。美国麻省理工学院的J.McCarthy及其研究小组于1960年首先设计和推出的第一个人工智能程序设计语言。LISP程序由一组函数组成,程序的执行过程就是调用函数和求值的过程。但它还不是纯函数语言,是基于-函数的语言。最擅长符号处理,世界上许多著名人工智能系统都是用LISP写成的。逻辑性语言逻辑性语言逻辑性语言的典型代表:PROLOG (Programming in Logic)。法国马塞大学的A.Comerauer及其研究小组于1972年开发的,以谓词逻辑为基础的通用程序设计语言。程序由一系列表达逻辑的规则和数据组成,用户程序不需告诉计算机“怎
14、么做”,只告诉它“做什么”。可称为面向目标的语言。面向对象程序设计语言面向对象程序设计语言20世纪80年代以来,面向对象程序设计(Object-Oriented Programming)语言开始流行,典型代表是Smalltalk,但最流行的却是C+语言。下一代程序设计语言下一代程序设计语言.q过程性语言q函数性语言q逻辑性语言q面向对象语言2.2. 人工智能语言人工智能语言人工智能语言是一类适应于人工智能人工智能和知识工程知识工程领域领域的、具有符号处理符号处理和逻辑推理能力逻辑推理能力的计算机程序设计语言。能用来编写程序求解非数值计算非数值计算、知识处理知识处理、推推理理、规划规划、决策决策
15、等具有智能的各种复杂问题。典型的人工智能语言主要有LISPLISP、PROLOGPROLOG、SmalltalkSmalltalk、C+C+等。3.3.人工智能编程语言及其发展人工智能编程语言及其发展编程语言编程语言描述描述IPL很早期的表处理语言LISP目前应用最广泛的逻辑型语言INTERLISP新近开发的一种LISP方言,比纯粹LISP的规模大,并提供更广泛的数组能力。SAILALGOL语言的变种,具有支持相关存储器等附加特性。PLANNER一种便于目标定向处理的早期语言。KPL一种能够支持复杂框架结构的语言。PROLOG一种基于规则的语言,把程序写为提供对象关系的规则。图:逻辑型编程语言
16、的分类4.4.人工智能编程方法人工智能编程方法 vs.vs.传统方法传统方法传统方法q解决问题的思路与冯.诺依曼式计算机结构相吻合。q当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。q通常把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。人工智能编程方法q建立知识库(包含事实和推理规则),程序根据环境和输入信息以及所要解决的问题来决定自己的行动。q灵活性、对话能力、有自我解释能力和学习能力。q对解决一些条件和目标不大明确或不完备的非结构化问题比传统方法好。q通常采用启发式、试探法策略来解决问题。8.2 8.2 函数型
17、程序设计语言函数型程序设计语言LISPLISP概述LISP语言的数据结构LISP程序结构LISP语言的基本函数LISP语言的递归和迭代LISP程序设计的一般步骤LISP语言程序举例1.1.概述概述L1SP是LISt Processing(表处理)的缩写。LISP是最早和最重要的逻辑型编程语言之一,1958年由美国McCarthy提出,并于1960年发表了他的第一篇关于LISP的论文。语言特点q 主要数据结构是表,程序和数据形式一样,都是符号表达式,简称为S表达式。q 主要的控制结构是递归,用于问题求解、过程描述。q 程序由一组函数组成,程序的执行过程是函数的调用过程。q 程序以交互方式运行,便
18、于开发各类程序。q 能够产生更复杂的函数和解释程序。流行的版本比较多,比较有名的是Mac LISP,Inter LISP,UCI LISP,Common LISP等。2.LISP2.LISP语言的数据结构语言的数据结构数据结构表结构或S表达式语法表示(S表达式):=原子|(S表达式), S表达式)3.LISP3.LISP程序结构程序结构LISP程序由函数定义函数定义和函数调用函数调用两大部分构成。例:设某函数为f(x)=2x+5x+4,试用LISP语言编程。解:(1)定义函数F,自变量规定为X,则有(DEFUNF(X)(+(4(+(*2X)(*5X)函数定义的基本形式(DEFUN(函数名 变量
19、1 变量2 变量3.变量n) 函数定义体)函数调用的基本形式(函数名 变量1 变量2 变量3.变量n)例:设某函数为f(x)=2x+5x+4,试用LISP语言编程。解:(2)调用格式为(F2),假设自变量X=2,则F返回值18。4.LISP4.LISP语言的基本函数语言的基本函数输入输出函数q(READ)-等待用户在键盘上输入一个S表达式q(READCH)-读入一个字符q(PRINT X)-换行打印变量X的值表处理函数q(CARL)-取出表L的表头q(CDRL)-取出表L的表尾q(CONS)-把S表达式作为一个原子加到表中q(APPEND.-将n个表中的元素合并为一个新表qLIST.-把n个S
20、表达式作为元素括在一起构成一张新表算术函数5.LISP5.LISP语言的递归和迭代语言的递归和迭代递归递归q在过程或函数里调用自身qLISP语言中,递归的应用将简化数据结构,使程序设计简洁优美,并且易于读懂。迭代迭代q 在许多程序设计语言中,迭代被用作主要的控制结构。在LISP程序设计中也可实现迭代。q 迭代的一般算法如下:(1)设置循环初值。(2)由循环定参量值,决定是否退出循环,若是则转(5),否则转(3)。(3)完成某一预定的计算和操作过程。(4)修改循环判定参量,转(2)。(5)结束。例:用递归实现例:用递归实现FIBONACCIFIBONACCI数列数列FIBONACCI数列为1,2
21、,3,5,8,13,其数学表达式为u假定n5,求第6个FIBONACCI数,则函数调用结果为(FIBONACCI 5) 136.LISP6.LISP程序设计的一般步骤程序设计的一般步骤将问题用递归的表处理方式表示,即问题概念化根据问题求解要求,设计问题求解的搜索推理过程根据所设计的求解过程,定义所需要的工作函数根据求解过程,给出函数调用的顺序根据问求解目标和解评价准则,给出程序结束标志7.LISP7.LISP语言程序举例:梵塔难题语言程序举例:梵塔难题1 1梵塔难题描述梵塔难题描述q设三根柱子为A、B、C,n个圆盘从小到大为1,2,n(n为有限正整数)。q初始状态:圆盘DISK(1,2,n)全
22、在柱子A上。q目标状态圆盘全在柱子C上。q移动规则为每次只移动一个圆盘,但大盘不能放在小盘上。2 2问题求解步骤问题求解步骤q用递归算法求解梵塔难题的步骤:先将A柱上n个圆盘中的上面(n一1)个圆盘移至缓冲的B柱上。再将最大的圆盘n从A柱移到C柱。逐步将圆盘(1,2,n1)从B柱移到C柱。3 3定义函数定义函数qTRANSFER函数定义一个TRANSFER函数以实现将n个圆盘从X柱移到Y柱。qMOVE函数定义一个MOVE函数,其功能为移动一个圆盘,并打印输出。梵塔难题的梵塔难题的LISPLISP程序及运行结果程序及运行结果8.3 8.3 逻辑型程序设计语言逻辑型程序设计语言PROLOGPROL
23、OG概述PROLOG的基本数据结构PROLOG程序的基本结构PROLOG的三种基本语句PROLOG语言程序举例1.1.概述概述PROLOG:PR0gramming LOGicPROLOG语言是一种逻辑型语言1981年10月,日本宣布它的第5代计算机研制计划,并将PROLOG语言作为其核心机器语言,从此,PROLOG举世瞩目,各国无不在竞相研究与开发。1972年由法国马赛大学的A.Colmerauer设计和实现的。PROLOGPROLOG的语言版本的语言版本 1979年,苏格兰爱丁堡大学开发的Dec-10 PROLOGDec-10 PROLOG 1986年,美国Quintus计算机公司用于UNI
24、X操作系统下的Quintus Quintus PROLOGPROLOG Turbo PROLOGTurbo PROLOG1986年美国Borland公司开发的一种编译型语言,主要在IBM PC系列及其兼容机,MS-DOS环境下运行。 PDC PROLOGPDC PROLOGTurbo PROLOG版本从2.0以后改名为PDC(PROLOG Development Center-PDC)PROLOG,它把运行环境扩展到OS/2操作系统。 Visual PROLOGVisual PROLOGVisual PROLOG是基于PROLOG语言的可视化集成开发环境,是PDC推出的基于Windows环境的
25、智能化编程工具。目前,Visual PROLOG是国际上研究和开发智能化应用的主流工具之一。软件的下载地址为:http:/www.visual-2.PROLOG2.PROLOG的基本数据结构的基本数据结构表放在中括号 内的若干同类元素的有序序列。表中的元素可以是常量、变量、项或表,元素之间用逗号隔开。例如:abcd1,3,5,2,4,6,the,robot,moves,up 2.PROLOG2.PROLOG的基本数据结构的基本数据结构项:=|:=|:=|:=(,)|例如:own(Mary,(computer(Pentium 600, win 2000)表示Mary拥有一台CPU为Pentium
展开阅读全文