第10章 人工智能程序设计

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

智能基

人工础主讲: 蔡自兴教授

主讲:蔡自兴

第十章人工智能程序设计10.1 符号和逻辑处理编程语言

101符号和逻辑处理编程语言

10.2 LISP语言

10.3 PROLOG语言

10.4 专用开发工具与人工智能机104专用开发工具与人工智能机

对符号和逻辑处理编程语言的要求

具有表结构形式

便于表示知识和逻辑计算

具有识别数据确定控制匹配模式和进行自具有识别数据、确定控制匹配模式和进行自

动演绎的能力

能够建立框架结构便于聚集各种知识和信能够建立框架结构,便于聚集各种知识和信

息,并作为一个整体存取

具有以最适合于特定任务的方式把程序与说

明数据结合起来的能力

具有并行处理的能力

现有的符号和逻辑处理语言编程语言

图10.1逻辑型编程语言的分类

10.2

LISP语言

10.2.1LISP的特点和数据结构LISP 语言的特点

主要数据结构是表

的特点和数据结构特性表简单

最主要的控制结构为递归

程序内外一致程序内外致

能够产生更复杂的函数和解释程序对事物的约束发生在尽可能晚的时刻数据和过程都可以表示成表交互方式运行

数据结构

原子

LISP中最小的符号单位

各种性质或属性可附加到单个原子上

最重要的属性除其名字外是值

递归地定义为括号内零个或n个元素的序列表的数据结构(CONS单元)

控制结构

变量约束及其辖域

变量约束到值上

建立函数

辖域

CAR和CDR

CDR返回表中除第一个元素之外的其余部分

CAR返回表中的第一个元素

SET和SETQ

赋值函数

SET使第二个自变量为第一个自变量的值

Q个求值

SETQ不对第一个变量求值

APPEND 、LIST 和CONS

APPEND 把所有作为自变量的表内各元素串

在一起

LIST 用自变量造出一张表,每个自变量成为用自变量造出张表每个自变量成为

表中的一个元素

作用于一张表,在其中插入一个新的CONS 作用于张表,在其中插入个新的第一元素

EVAL

DEFUN

建立新函数

T和NIL

逻辑上的真与假

AND、OR及NOT

COND

条件函数

PROG

10.2.2LISP的基本函数

GET和PUTPROP

GET检索特征值

PUTPROP存放特征值、替代特征值

LAMBDA

定义匿名函数

READ和PRINT

对话

10.2.3递归和迭代

递归

执行的一部分涉及到再次执行该函数

迭代

约束某些变量

①约束某些变量;

②测试变量以检查出口(停止)条件是否适

用若适用则进行③

用。若适用,则进行③;

③以某种方法改变变量的值;

④返回②。

10.2.4LISP编程举例

LISP程序设计的一般步骤

程序设计的般步骤

将问题用递归的表处理方式表示,即问题的

概念化。

根据问题求解的要求,设计问题求解的搜索

推理过程。

根据所设计的求解过程定义所需要的工作

根据所设计的求解过程,定义所需要的工作

函数。

根据求解过程,给出函数调用的顺序。

根据求解过程给出函数调用的顺序

根据问题求解的目标和解的评价准则,给出

程序结束的标志。

程序结束的标志

10.3PROLOG语言

10.3.1项的定义

语法与数据结构

子句

事实

规则

问题

表结构

匹配(Matching)

M t hi

设法满足一个目标从事实和规则的顶部开始

搜索。

找到一个与之匹配的事实或规则的头。

找不到相匹配的事实或规则的头,则目标失败。

设法重新满足这一目标。

设法重新满足这目标。

合一(Unification)

合(U ifi ti

①对事实子句(或规则)中的变量进行换名,使其不与

目标中的变量同名对变量受囿表进行初始化

目标中的变量同名,对变量受囿表进行初始化。

②检查目标子句与事实子句(或规则)的下一个相异项

是否不存在;若不存在,则结束合过程,合成功是否不存在;若不存在,则结束合一过程,合一成功,返回合一过程中产生的变量受囿表;若存在,则转③。

③根据合一原则,判断目标子句与事实子句(或规则)

的下一个相异项是否可合一。若可合一,就把这两项加入到变量受囿表中,并对目标子句和事实子句(或加入到变量受囿表中并对目标子句和事实子句(或规则)中的有关变量进行置换,然后转②;若不可合一,则结束合一过程,释放变量受囿表,返回不可合一信息。

信息

回溯(Backtracking)

B kt ki

①把问题语句作为初始目标,并置其为激发状态,开始

执行该目标

执行该目标。

②系统处于激发状态时,先为该目标保存必要的回溯信

息,然后判断它是否是单子句组成的目标。如果是息,然后判断它是否是单一子句组成的目标。如果是就转③;否则就依次从左到右求解激发目标的各个子目标。当所有的子目标都得到满足时,激发目标就成功返回否则激发目标就失败返回

功返回。否则,激发目标就失败返回。

③系统执行一个由单一子句组成的激发目标时,就从事

实规则库中取出与激发目标子句句首谓词符号相同的子句子集,从该子句子集的顶部开始查找可与激发目标合一的子句。

相关文档
最新文档