人工智能之(搜索推理技术1-图盲目搜索)

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

P+3
空格移动规则
顺序
规则
左移
前提条件
应用结果
P 位置与 P-1 位置上的元素互换
1
P≠1,4,7
2
3
上移
下移
P≠1,2,3
P≠7,8,9
P-3
P+3
4
右移
P≠3,6,9
P+1 P-3
1 4 7
2 5 8
3 6 9
P-1
P
P+3
P+1
为了记录后继节点与父节点之间的指针,我们将
长度为 9 的数组扩大到长度为 11 的数组,其中 一个元素记录该节点的父节点标志,另一个元素
状态空间法与图的对应关系 状态空间中: 状态 初始状态 图中有: 节点 初始节点
目标状态
操作符
目标节点
有向弧
解的含义:
在状态空间中,解是从初始状态到目标状态的
操作符序列
在图中,解是从初始节点到目标节点的一条路 径
图的搜索策略:图搜索过程的一般步骤(基本
思路、框架),经过细化后得到具体算法: 盲目搜索技术(深度、宽度、代价优先算法) 启发式搜索技术(有序算法、A*算法)
起始节点的父节点标志和操作符:
不作记录或记录为负
搜索过程(按照程序运行方式)
① 起始节点放到OPEN表
2 8 3 1 0 4
2 8 3 1 4 7 6 5 7 6 5
② OPEN不为空,继续
③ 将第一个节点 n 从 OPEN 表中移出,并放到 CLOSED表中 OPEN表
CLOSED表 1 0 0 2 8
1 1 1 1 2 2 3 3
1 2 3 4 2 3 1 4
2 2 2 2 2 0 2 0 2
8 8 0 8 8 8 8 2 3
3 3 3 3 3 3 3 3 0
1 0 1 1 1 2 7 1 1
0 1 8 6 4 1 1 8 8
4 4 4 4 0 4 4 4 4
7 7 7 7 7 7 0 7 7
6 6 6 0 6 6 6 6 6
状态空间法
②问题的求解
搜索技术
问题归约法
谓词逻辑法 推理技术
盲目与启发式搜索:状态空间法、图的搜索技术
与或树搜索:问题归约法、与或图的特例的搜索
技术
博弈树搜索:状态空间法+问题归约法、双人博
弈的特殊搜索技术
消解原理:谓词逻辑法、推理技术
• 在介绍图搜索策略之前,让我们来看一个例子。
例子:从某王姓家族的四代中找王A的后代且其寿命为X的人。
CLOSED表
1 0 0 2 8 3 1 0 4 7 6 5
节 点 n
2 1
1
2
8
3
0
1
4
7
6
5
④ 扩展节点 n 1 1 2 8 3 0 1 4
2 8 3 1 4 7 6 5 7 6 5
0
2
8
8
3
3
2
7
1
1
4
4
7
0
6
6
5
5
⑤ 将节点 n 的所有后继节点放到 OPEN 表的末 端,并提供这些后继节点回到 n 的指针 OPEN表 1 1 1 2 2 3 4 2 2 2 2 0 0 8 8 8 3 3 3 3 1 1 1 2 8 6 4 1 4 4 0 4 7 7 7 7 6 0 6 6 5 5 5 5
1
4
2
8
3
1
4
0
7
6
5
父 符
⑥ 后继节点中无目标节点,转到②
② OPEN表不为空,继续
③ 将第一个节点 n 从 OPEN 表中移出,并放到 CLOSED 表中
OPEN表
1 1 1 2 3 4 2 2 2 0 8 8 3 3 3 1 1 1 8 6 4 4 4 0 7 7 7 6 0 6 5 5 5
1 3
2
1 7
4
8
1 6
3
4 5
2
1 7 8 6
3
4 5
8
6
3
4 5
2
1 7
8
4 6
3
5
8 2 1
3 4
2 7
8 1
3 4 1
2 8
3 4
2 1
3 8 4
2 1
8 6
3 4
2 1
8 6
3 4
2 1
8 4 3
2 1
8 4
3 5
7
6
5
6
5
7
6
5
7
6
5
7
5
7
5
7
6
5
7
6
8 2 7 1 6
3 4 5
2 7 6
CLOSED 表是存放已被扩展过的节点(包括 有后继节点的非端节点和无后继节点的端节
点)
流程图
注意几点:
①搜索过程产生的节点和指针构成一棵隐式定义的 状态空间树的子树,称之为搜索树
② 宽度优先搜索方法能够保证在搜索树中找到 一条通向目标节点的最短途径(所用操作符
最少)
例:八数码问题
初始状态 2 8 3 1 7 6 4 5 目标状态 1 2 3 8 7 2 操作符: 1 空 3 4 6 4 5
扩展)
扩展节点的原则:先扩展出来的节点随后优先被 扩展(生成其所有的后继节点)
宽度优先搜索算法:
① 把起始节点放到 OPEN 表中(如果该起始节点 为一目标节点,则得到解) ② 如果 OPEN 是个空表,则无解,失败退出; 否则继续下一步
③ 把第一个节点(记作节点 n )从 OPEN 表移出, 并把它放入 CLOSED 的已扩展节点表中
节点n 3 1 0 4 7 6 5
④ 扩展节点n
0 0 2 8 3 1 扩 展 0 4 7 6 5
2 8 3 1 4 7 6 5
2
2 2 2
8
0 8 8
3
3 3 3
0
1 1 1
1
8 6 4
4
4 4 0
7
7 7 7
6
6 0 6
5
5 5 5
⑤ 将节点 n 的所有后继节点放到 OPEN 表的末
端,并提供这些后继节点回到 n 的指针 OPEN表 1 1 1 1 2 3 2 2 2 0 8 0 8 0 2 3 3 3 0 1 1 8 1 8 6 3 4 4 4 1 7 7 7 0 CLOSED 4 7 6 5 6 6 0 5 5 5
(先扩展的节点画在左边)
OPEN与CLOSED表的存储形式的简化
CLOSED
OPEN
加入扩展节点
C
1 2 1 1 3 1 2 4 1 3
O
5 1 4 6 2 2 7 8 9 10 11 12 13 14
2 3 3 4 4 5 5 6
3 1 4 1 4 2 3 4
状态:1 状态:2 状态:3 状态: 4 状态: 5 状态: 6 状态: 7 状态: 8 状态: 9 状态:10 状态: 11 状态: 12 状态: 13 状态: 14
8 1
3 4 5
1
2 8
3 4 5
2 1 7
3 8 6
4
2
8 6
3 4 5
2 1 7
8 6 5
3
2 1 4 6
8 3 5
2 1 7
8 4
3 5 6
7
6
5
1
7
4
7
8
1
3
8 2
3 1 4
2
8
3
2 7
8 1
3 4
1
2
3
1 8
2
3 4
2
7 6
4
5
7
6 1
4
5
7
8
6
4
5
7
6
5
6
5
7
6
5
目标 节点
生成后继节 点的顺序
图搜索中的两个重要记号(符号):
OPEN 表:
存放待扩展的节点
CLOSED 表:存放已扩展的节点 注意:在与或树搜索中也要用到这两张表
数据结构中图的遍及:从图某一个节点出发, 访问遍图中其余节点,且每一个节点仅仅被访问 一次。 当前图的搜索技术中,有两个特殊之处: 搜索前,图并没有生成好,需要边生成图边搜索 搜索从起始节点(初始状态)开始,到目标节点 (目标状态)结束,不需要搜索所有可能的节点
5 5 5 5 5 5 5 5 5
10 11
4
1
2
8
3
1
6
4
0
7
5
4
5 5 6 7
4
2 3 4 4
2
2 2 8 2
8
8 8 0 8
3
0 3 3 3
1
1 1 2 7
6
4 4 1 1
4
3 5 4 4
7
7 7 7 6
5
5 6 6 0
0
0 0 5 5
12
13
14
15 16
目标节点
8
16
3
4
1
1
2
2
3
3
0
8
13
14
1
4
2
8
8
3
3
0
1
2
4
1
5
4
7
7
0
6
6
5
1 8
7
2
3 4
14 15 15
16 16
3 2 4
3 4
8 2 2
1 1
1 8 8
2 2
3 3 3
3 3
2 7 7
7 8
0 0 1
8 0
4 4 4
4 4
7 6 6
0 7
6 1 5
6 6
5 5 0
5 5
6
5
目标节点
最后的CLOSED表:
1 2 3 4 5 6 7 8 9


刘 静


Artificial Intelligence (AI)
liuj@sdutcm.edu.cn
理工学院
2009年春季
上一章中我们研究了知识表示方法,为人工
智能问题的求解打下了基础。从问题表示到问题
的解决,有一个求解的过程。接下来要研究的是 实现求解的过程,采用的基本方法包括搜索和推 理。本章先介绍搜索技术,将要讨论问题求解的 搜索原理,包括一些早期的搜索技术或用于解决
2
3
2ቤተ መጻሕፍቲ ባይዱ
8
3
7
1
4
0
6
5
…………………. 一直继续下去,而且不产生已经产生过的节点 (状态),防止死循环。在程序中每一个新产 生的节点必须与 OPEN 和 CLOSED 表中状态
进行比较,判断是否已经产生过,只保留从未
产生过的节点
最后的OPEN表:
9 10 11 12 3 3 2 1 2 2 2 2 3 8 8 0 4 3 3 8 1 0 1 1 8 6 6 4 0 4 0 3 7 1 7 7 6 7 5 6 5 5 4 5
15
C
16 17
18
19 20
21
22 23
24
25 26
O
27
7 8 9 10 11 12 13 14 14 15 15 16 16
4 3 3 3 2 1 1 4 3 2 4 3 4
状态:15 状态:16 状态:17 状态:18 状态:19 状态:20 状态:21 状态:22 状态:23 状态:24 状态:25 状态:26 状态:27
比较简单问题的搜索原理和一些比较新的能够求
解比较复杂问题的搜索原理,包括AO*算法、遗
传算法和模拟退火算法等。
第3章 搜索推理原理
3.1 图的搜索策略
3.2 盲目搜索 3.3 启发式搜索 3.4 与或树搜索(补充) 3.5 博弈树搜索(补充)
3.6 消解原理
解决实际问题的两个关键之处: ①问题的表达
王A:寿命47,有儿子王B1、王B3、王B2 王B1:寿命77,有儿子王C1、王C2
王B3:寿命52,有儿子王D1
王B2:寿命65,有儿子王E1、王E2 王F1:寿命32
王G1:寿命96
王C2:寿命87,有儿子王F1 王D1:寿命77,没有儿子
王E1:寿命57,有儿子王G1
王E2:寿命92,有儿子王H1 王C1:寿命27,没有儿子 王H1:寿命51
④ 扩展节点 n 。如果没有后继节点,则转向第 ②步
⑤ 把 n 的所有后继节点放到OPEN表的末端,
并提供从这些后继节点回到 n 的指针
⑥ 如果 n 的任一个后继节点是个目标节点,则 找到一个解(反向追踪得到从目标节点到起始 节点的路径),成功退出,否则转向第②步
说明:
OPEN 表是存放待扩展的节点,从数据结构 上来说,它是一个先进先出的队列
状态:长度为9的一维数组
( q 1 , q2 , … , q 9 )
其中,qi 取 0 , 1 , … , 8 个数,0 表示空格,且取值
互不相同
如果记空格的位置为P,这时空格的移动规则是: 1 4 7 2 5 8 3 6 9 数字表示位置 1 2 3 4 5 6 7 8 9 P-3
P-1
P
P+1
Q
X
X
Q
Q Q
Q
假设,每个节点的分支数为10;10000节点/秒; 1000字节/节点
记录操作符的序号
父 操 节 作 点 符
状态
OPEN表的存储形式:队列
队列:一种先进先出的线性表,允许在表的一
端进行插入、另一端进行删除
删除端(队头)
插入端(队尾)
CLOSED表的存储形式:也可以用队列
特殊的队列:只进不出的队列,只允许在表的 一端进行插入 父 符
插入端(队尾)
某一个节点的父节点标志: 记录CLOSED表中的父节点的序号
例:迷宫问题
(1,1) N
(2,3)
N (2,4) W E (3,4) E (4,4) S (3,3) E (3,2) S (2,2) S (3,1)
2N 1W
(1,4)

4S
3E
X
节目 点标
例:四皇后问题
Q Q Q Q
Q Q
Q Q
Q Q Q
Q Q
Q Q
Q
X
Q Q Q Q
Q Q Q
Q Q Q Q
3.2 盲目搜索
盲目搜索是指无问题先验信息的搜索技术
特点:
OPEN表中节点的排列是人为规定的 一般只适合于求解比较简单的一些问题
图的盲目搜索技术分成: 宽度优先搜索技术
深度优先搜索技术
等代价(代价优先)搜索技术
3.2.1 宽度优先搜索
宽度优先搜索:以接近起始节点的程度依次扩展 节点的搜索技术(即:离起始节点近的节点先被
8
0
4
4
7
7
6
6
5
5
1
2 8 3 1 0 4 7 6 5
3 1 2 2 0 3 1 8 4 7 6 5
8 3 1 0 2 3 1 8 4 7 6 5
16 8 3 1 2 3 0 8 4 7 6 5
1 4 1 6 2 3 8 0 4 7 6 5
目标节点
先生成的 节点在左
2
7
2
2 1 7 6 8 3 4 5
若X=57,下面讨论一种可通用的图搜索策略求解此问
题。 如果是一个N代的家族表中找其寿命为X的人,我 们最可能用的手工方法是从家族表的开始往下,例中 还要求所找的人是某人的后代,就比较复杂了。如果
用图来表示,就很容易了。图中把姓氏省去,每个成
员的后代按例子中给出名字的先后顺序。图示为:
3.1 图搜索策略
相关文档
最新文档