人工智能程序设计语言(PPT 69张)

  • 格式:ppt
  • 大小:655.00 KB
  • 文档页数:60

下载文档原格式

  / 60
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

22.02.2019
20
华北电力大学
表处理函数
表处理是LISP的主要特色,下面仅给出最常用 的几个:
1) CAR函数 功能 取出表中的表头。 如 CAR′(LISP Language Program)) 返回值 LISP 2) CDR函数 功能 取出表中的表尾 如 (CDR′(LISP Language Program)) 返回值 (Language Program)
22.02.2019 10 华北电力大学
综述-混合型语言 (1) LOGLISP。该语言在LISP的基础上增加 了表达合一、 回溯等机制的系统函数,从而在保 持LISP特色的同时又有了逻辑程序设计能力。 (2) FUNLOG。该语言在 PROLOG 之外又增 加了函数定义机制, 系统以归结语义执行 PROLOG程序, 以归约语义求解函数。 (3) POPLOG。这是POP-11、PROLOG和 LISP的混合型语言, 三种成分各有一个增量式编 译器。具有归结语义的函数型语言又可分为N-语 言、F-语言和R-语言。
“DEFUN”是定义函数 的关键字 “函数名”可以是系 统的内部函数(名), 也 可以是用户用 DEFUN定义的函数 (名)
22.02.2019
18
华北电力大学
一个LISP程序
(DEFUN HANOI (a b c n) (COND ((= n 1) (MOVE-DISK a c)) (T (HANOI a c b (- n 1)) (MOVE-DISK a c) (HANOI b a c (- n 1)))) (DEFUN MOVE-DISK(from to) (TERPRI) (PRINC ″Move Disk From″) (PRINwk.baidu.com from) (PRINC ″To″) (PRINC to)) (HANOI ′a′b′c 3)
22.02.2019
22
华北电力大学
算术函数
LISP的算术表达式也是用函数表示的,称为算 术函数 举例说明
(+2 5) 表示2+5,返回值为7 (-(*4 8)(/10 5))表示4×8-10/5,返回值为30
22.02.2019
23
华北电力大学
求值与赋值函数
撇号′
是禁止求值函数QUOTE的简写形式
22.02.2019
8
华北电力大学
综述-面向对象语言
面向对象语言 20世纪80年代以来,面向对象程序设计 (Object OrientedProgramming,简称OOP) 异军突起,发展迅速。OOP以其信息隐蔽、封 装、继承、多态、消息传递等一系列优良机制, 大大改善了软件的复杂性、模块性、重用性和 可维护性,有望从根本上解决软件的生产效率 问题。另一方面,由于面向对象程序设计的类、 对象、继承等概念,与人工智能特别是知识表 示和知识库产生了天然的联系。
功能 如果P1为真,则COND函数的值为e1。否则, 判断P2,……直到某个Pi真为止,然后将对应的ei作为函数 值。若没有一个Pi的值为非NIL,则COND的返回值为NIL。 特别地,Pi也可以为逻辑常量T,这时则对其对应的各表达 式求值,并把最后一个表达式的值作为COND的返回值
22.02.2019
27
华北电力大学
条件函数
例如:
(COND((NULL x)0) ((ATOM x)1) ((LISTP x)(LENGTH x))) 其语义是,若x的值为NIL,则COND的返 回值为0;若x为原子,则COND的返回值为1;若 x的值为表,则COND的返回值为表的长度
22.02.2019
28
华北电力大学
赋值函数有多个
SET函数是最基本的一个
功能 例如: 把S─表达式赋给变量 (SET′X′8); (SET′Y′(a b c)); (SET′Z(CDRY); X 得到值8 Y 得到值(a b c) Z 得到值(b c)
22.02.2019
24
华北电力大学
谓词函数
返回值为逻辑值真或假的函数称为谓词函数 真和假分别用T和NIL表示 谓词函数也有多个,仅给出常用的几个:
22.02.2019
6
华北电力大学
综述-逻辑型语言
逻辑型语言 逻辑型程序设计语言起源于PROLOG (PROgramming in LOGic)。 PROLOG语言 首先由法国马塞大学的Colmerauer和它的研究 小组于1972年研制成功,后来在欧洲得到进一 步发展。特别是1981年日本宣布要以PROLOG 作为他们正在研制的新一代计算机——智能计 算机的核心语言,更使PROLOG举世瞩目,迅 速风靡世界。
(1) 原子谓词ATOM 功能 检测其参数是否为原子,是则T,否则NIL 例如: (ATOM′a);返回T (ATOM′(a b));返回NIL
22.02.2019
25
华北电力大学
谓词函数
(2) 相等谓词EQUAL
功能 例如: 判断两个参数是否逻辑相等 (EQUAL′a′a); (EQUAL′(a b)′(a c)); 返回T 返回NIL
人工智能程序设计语言
22.02.2019
1
内容
综述 函数型程序设计语言LISP 逻辑性程序设计语言PROLOG PROLOG程序设计
22.02.2019
2
华北电力大学
内容
综述 函数型程序设计语言LISP 逻辑性程序设计语言PROLOG PROLOG程序设计
22.02.2019
22.02.2019
13
华北电力大学
综述-混合型语言
3.
这类语言著名的有: (1) SPOOL。日本IBM分部于1985年推出 的以面向对象思想扩充的PROLOG (2) Orient 84K。Keio大学于1984年发表的 基于PROLOG和Smalltalk 的并行执行语言。 (3) Vulan。 一种面向对象的逻辑型语言。
22.02.2019
12
华北电力大学
综述-混合型语言
(3) CommonLoops。 它是基于CommonLisp的函 数型OOP语言, 由Xerox公司于1985 年推出。 (4) CLOS (CommonLisp Objetc System)。它是 Xerox公司于1986 年推出的一个CommonLoops与New Flavors的后继产品。 (5) CommonObjects。它是由HP公司于 1983~1985年实现的又一个基于CommonLisp 的OOP 语言。 (6) OBJ2 也是一种面向对象的函数型语言。
22.02.2019
14
华北电力大学
内容
综述 函数型程序设计语言LISP 逻辑性程序设计语言PROLOG PROLOG程序设计
22.02.2019
15
华北电力大学
函数型程序设计语言LISP
LISP是第一个人工智能程序设计语言 LISt Processing,表处理语言 1960年由MIT的麦卡锡和他的研究小组设计, 擅长表处理,即符号处理 许多人工智能系统用LISP语言编写 LISP被誉为人工智能的数学,是人工智能研究 和开发的主要工具
3
华北电力大学
综述
人工智能所解决的问题
并非一般的数值计算或数据处理问题 是要实现对脑功能的模拟和再现
人工智能程序
面向问题 面向逻辑 支持知识表示 能描述逻辑关系和抽象概念 处理对象更多的是知识,或者说是符号 常规程序设计语言受限
4 华北电力大学
22.02.2019
22.02.2019 11 华北电力大学
综述-混合型语言
2. 在LISP语言的基础上再扩充面向对象机制而产生 的语言, 称为函数型的面向对象程序设计语言(亦称为面 向对象的LISP)。 这种语言现已成为一个家族, 其中比 较著名的有: (1) Flavors 由 MIT 的 Lisp Machine 小组于 1979 年研制而成, 它的基语言是Symbolics Common LISP。 (2)LOOPS(Lisp-Object-Oriented Programming System )。它是在InterLisp-D环境上实现的基于LISP的 OOP语言, 由Xerox公司于1983年推出。
22.02.2019 9 华北电力大学
综述-混合型语言
1.
函数型与逻辑型语言的结合方式有耦合型 和统一型两类。 统一型又可分为具有归结语义 的函数型语言和集成式语言两个子类。 耦合型语言意为将具有归约语义的函数型 语言和具有归结语义的逻辑型语言组合在一起, 并在二者之间提供一个接口而形成的一种混合 型语言。 其典型代表有:
22.02.2019
7
华北电力大学
综述-逻辑型语言
现在PROLOG几乎在人工智能的所有领域 都获得了应用, 成为与LISP并驾齐驱的甚至更 加流行的智能程序设计语言。 由于PROLOG语言是一种逻辑型程序设计 语言, 因此用它编写的程序也就是逻辑程序,即 在PROLOG程序中一般不需告诉计算机“怎么 做”, 而只需告诉它“做什么”。因 此,PROLOG亦属陈述性语言。与通常的过程性 程序设计语言相比, PROLOG是更高级的语言。
(3)判空表函数NULL
功能 判断参数是否为空表,是则返回T,否则返回NIL
22.02.2019
26
华北电力大学
条件函数
条件函数类似于分支语句,其作用是控制程序的流程
(COND(P1 e1) (P2 e2) … (Pn en)) 其中Pi(i=1,...,n)为谓词,ei(i=1,...,n)为一个或多个S─表达式 格式
22.02.2019 21 华北电力大学
表处理函数
3) CONS函数 功能 将S─表达式作为表头加到表中去 如 (CONS′My′(LISP Language Program)) 返回值 (My LISP Language Program) 4) APPEND函数 功能 将n个表中的元素合并成一个新表 如 (APPEND′(TIGER LION)′(DOG CAT)) 返回值 (TIGER LION DOG CAT) 5) LIST函数 功能 把n个S─表达式作为元素构成一张新表 如 (LIST′YELLOW′RED′BLUE) 返回值 (YELLOW RED BLUE)
22.02.2019
16
华北电力大学
函数型程序设计语言LISP
LISP语言的主要特点:
LISP程序由一组函数组成,程序的执行过程 是函数的调用过程 程序和数据在形式上是相同的,即都是符号 表达式,简称为S─表达式 递归是LISP语言的主要控制结构 程序以交互方式运行
22.02.2019
19
两个函数 前者调用 后者
函数调用部分只有一个 函数调用
22.02.2019
华北电力大学
LISP的基本函数
LISP的函数一律使用前缀表示方式,分为内部函 数(基本或系统函数)和用户自定义函数两类 基本函数的种类有十多个,仅给出主要的几类
表处理函数 算数函数 求值与赋值函数 谓词函数 条件函数
17
华北电力大学
LISP的程序结构
LISP的程序一般由函数的定义和函数的调用两部分组成。其一般 格式为: (DEFUN(<函数名>(<形参表>)<函数体>) (<函数名>(<形参表>)<函数体>)

(<函数名>(<形参表>)<函数体>)) (<函数名><实参表>) (<函数名><实参表>) … (<函数名><实参表>)
自定义函数
自定义函数的格式为: (DEFUN<函数名>(<形参表>) <函数体>) 其中函数体,又可能是用户自定义的函数或 LISP基本函数的某种组合
22.02.2019
29
华北电力大学
例 定义求N!的LISP函数 阶乘的公式是 n!=n×(n-1)! 1!=1 0!=1 该函数的最后一行中又调用了它自己 其LISP函数如下: →这个函数N!是递归定义的 (DEFUNN!(n) (COND((=n 0)1) ((=n 1)1) (T(* n(N!(- n 1))))))
综述
人工智能程序设计语言
函数型语言 逻辑性语言 面向对象语言 混合型语言
22.02.2019
5
华北电力大学
综述-函数型语言
函数型语言 LISP是一种函数型程序设计语言。LISP程 序由一组函数组成,程序的执行过程就是一系 列的函数调用和求值过程。但LISP还不是纯函 数型语言,准确地讲,它是基于λ--函数的语言。 除LISP外,20世纪70年代J.Backus还提出了一 种称为FP的所谓纯函数型程序设计语言。但该 语言现在还限于理论研究,实现上还存在一定 困难。