第六讲 状态空间搜索策略(1)
【实用】状态空间搜索策略PPT文档
5.3 启发式搜索策略
4、估价函数 为获得某些节点“希望”的启发信息,提供一个评定侯选扩展
节点的方法,以便确定哪个节点最有可能在通向目标的最佳路径 上。
f(n)——表示节点n的估价函数值 建立估价函数的一般方法:试图确定一个处在最佳路径上的节 点的概率;提出任意节点与目标集之间的距离量度或差别量度;或 者在棋盘式的博弈和难题中根据棋局的某些特点来决定棋局的得分 数。这些特点被认为与向目标节点前进一步的希望程度有关。
5.2 状态空间图搜索策略
5.2.3 深度优先搜索策略
提问:宽度优先搜索方法中OPEN表需要按什么方式进行操作?
定估义价3函采数用f是h4*这(、x样)的确含下定界有的h:(x深)一为个度启节发界点函的数限希的望的A算程深法序,越度称大为,优A其*先f算值法就搜。越索小。算法
(3) 把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED的扩展节点表中。 2 状态空间图搜索策略
第五章状态空间搜索策略
5.1 搜索的概念及种类 5.1.1 搜索的概念
定义 搜索:根据问题的实际情况,按照一定的策略或规则,
从知识库中寻找可利用的知识,Hale Waihona Puke 而构造出一条使问题获 得解决的推理路线
5.1 搜索的概念及种类
5.1.2 搜索的种类 1、状态空间图搜索:
包括三种状态空间图搜索方法,即宽度优先搜索、深度优 先搜索和状态空间图搜索。
123 84 765 提问:宽度优先搜索方法中OPEN表需要按什么方式进行操作? A.先进后出 B.先进先出
5.2 状态空间图搜索策略
5.2.3 深度优先搜索策略
1、定义 在此搜索中,首先扩展最新产生的(即最深的)节点。深度相等
人工智能状态空间搜索策略
7, OPEN中的节点按f值从小到大排序; 8, GO LOOP;
一个A算法的例子
283 164 75
123 84 765
定义评价函数:
f(n) = g(n) + h(n) g(n)为从初始节点到当前节点的代价值 h(n)为当前节点“不在位”的位置数
h计算举例
123 283 81 6 4 4 7 55 76
h(n) =4
283
A(6) 1 6 4
75
283 3
D(5) 1 4
765
2 8 3 s(4)
164 1 75
283 2
1 4 B(4)
765
283
1 6 4 C(6)
75
4
23
1 8 4 E(5)
765
283
1 4 F(6)
7 65
83 214 765
问题求解就是搜索过程 搜索对应的知识表示法:
状态空间表示法、与/或树表示法
(6)对节点n进行扩展,将它的所有后继节点放入OPEN表的末端, 并为这些后继节点设置指向父节点n的指针,然后转步骤(2)
宽度优先搜索
1, G:=G0(G0=s), OPEN:=(s), CLOSED:=( );
5.3 启发式搜索策略
5.3.1 启发信息与估价函数 5.3.2 最佳优先搜索 5.3.3 A*算法
需要重点掌握的问题
用宽度优先搜索和深度优先搜索求解八数 码问题;
用代价树的宽度优先搜索和深度优先搜索 求解推销员旅行问题;
用全局最佳优先搜索八数码问题。
状态空间搜索策略
搜索是人工智能的基本问题,是推理不可 分割的一部分
(修改)状态空间搜索策略-1
1 局部择优搜索
● 局部择优搜索:当一个节点被扩展后,按f(x)对每个子节 点计算估价值,并选择最小者作为下一个要考查的节点。 由于它每次都只是在子节点的范围中选择要考查的子节点 ,所以称为局部择优搜索。 深度优先搜索、代价树的深度优先搜索以及局部择优搜索 都是以子节点作为考察范围的,这是它们的共同处。 在局部择优搜索中,若令f(x)=g(x),则局部择优搜索就成 为代价树的深度优先搜索;若令f(x)=d(x),这里d(x)表示 节点x的深度,则局部择优搜索就成为深度优先搜索。所以 深度优先搜索和代价树的深度优先搜索可看作局部择优搜 索的两个特例。
8
全部可能的状态: (1,1)(1,2)(1,3) (2,1)(2,2)(2,3) (3,1)(3,2)(3,3)
A B
(1,1)
(1,2)
(1,3)
(2,1)
(2,2)
(2,3)
(3,1)
(2,3)
(3,3)
9
求解路径
A B
2,1)
(2,2)
(2,3)
(3,1)
5
6)针对M中子节点的不同情况: 对于那些未曾在G中出现过的M成员设置一个指向父 节点(即节点n)的指针,把它们放入OPEN。 对于那些先前曾在G中出现过的M成员,确定是否需 要修改其指向父节点(即节点n)的指针 对于对那些先前曾在G中出现过的、并已经扩展了的 M成员,确定是否需要修改其后继节点指向父节点的指 针
24
重排九宫问题
25
重排九宫问题
26
重排九宫问题
27
重排九宫问题
28
重排九宫问题
29
3 有界深度优先搜索
搜索过程: 1)把初始节点S0放入OPEN,置S0的深度d(S0)。 2)检查OPEN是否为空,是,无解,退出。 3)把OPEN第一个节点(并记该节点为n )取出放 入CLOSED。 4)考察节点n是否为目标节点,是,得解,退出。 5)若节点n的深度d(节点n)=dm,转2)。 6)若节点n不可扩展,转2)。 7)扩展节点n ,将其子节点放入OPEN的首部,并 为每一个子节点都配一个指向父节点的指针,然后 转2)。见p269例6.6
状态空间的搜索策略
状态空间的搜索策略图1 状态空间的搜索策略一般说来,搜索策略讨论对于具有树状结构图的问题状态空间更加方便。
因此,对于非树状结构图的问题,例如网状结构等,往往需要化为树状结构图,以便更好地应用搜索策略进行讨论。
(1)广度优先搜索——先进先出,生成的节点插入OPEN表的后面。
基本方法:从根节点S0开始,向下逐层逐个地对节点进行扩展与穷尽搜索,并逐层逐个地考察所搜索节点是否满足目标节点Sg的条件。
若到达目标节点Sg,则搜索成功,搜索过程可以终止。
注意:在广度优先搜索法的过程中,同一层的节点搜索次序可以任意;但在第n层的节点没有全部扩展并考察之前,不应对第n+1层的节点进行扩展和考察。
特点:显然,宽度优先搜索法是一种遵循规则的盲目性搜索,它遍访了目标节点前的每一层次每一个节点,即检查了目标节点前的全部的状态空间点,只要问题有解,它就能最终找到解,且最先得到的将是最小深度的解。
可见,宽度优先搜索法很可靠。
但是,当目标节点距离初始节点较远时将会产生许多无用的中间节点。
因此,速度慢,效率低,尤其对于庞大的状态空间实用价值差。
(2)深度优先搜索——后进先出,生成的节点插入OPEN表的前面。
基本方法:从根节点S0开始,始终沿着纵深方向搜索,总是在其后继子节点中选择一节点来考察。
若到达目标节点Sg,则搜索成功;若不是目标节点,则再在该节点的后继子节点中选一考察,一直如此向下搜索,直到搜索找到目标节点才停下来。
若到达某个子节点时,发现该节点既不是目标节点又不能继续扩展,就选择其兄弟节点再进行考察。
依此类推,直到找到目标节点或全部节点考察完毕,搜索过程才可以终止或结束。
特点:方式灵活,规则易于实现,对于有限状态空间并有解时,必能找到解。
例如,当搜索到某个分支时,若目标节点恰好在此分支上,则可较快地得到解。
故在一定条件下,可实现较高求解效率。
但是,在深度优先搜索中,一旦搜索进入某个分支,就将沿着该分支一直向下搜索。
这时,如果目标节点不在此分支上,而该分支又是一个无穷分支,则就不可能得到解。
状态空间搜索策略
开始
把S放入OPEN表
OPEN表为空表?
是 失败
否
把第一个节点(n)从OPEN表移至CLOSED表
n为目标节点吗?
是 成功
否
把n的后继节点放入OPEN表的末端, 提供返回节点n的指针
修改指针方向 重排OPEN表
图3.1 图搜索过程框图
3.2 盲目搜索
• 特点:不需重排OPEN表 • 种类:宽度优先、深度优先、等代价搜索等。
03
虽然问题求解可通过搜索方法, 也可用逻辑推理,但二者的侧 重点是不一样的。前者着重于 寻求问题解答的过程,而后者 强调前提(初始)问题空间 (公理集合)与问题解答间连 接的逻辑正确性。或者简单地 讲,搜索着重于发现 (Discovery),而推理强调证 明(Proof)。
搜索
在状态图中寻找目标或路径的基本方法 从初始节点,沿着与之相连的边,寻找目标节点的过程
过多无用节点。 ○ 用于删除节点的选择,即用于决定应删除哪些无用节点, 以免造成进一
步的时空浪费。
3.3 启发式搜索
3.3.1 启发式搜索策略和估价函数
特点:重排OPEN表,选择 最有希望的节点加以扩展
1
种类:有序搜索、A*算法 等
○ 盲目搜索可能带来 组合爆炸
○ 启发式信息 用来加速搜索过程 的有关问题领域的 特征信息。
3.2.1 宽度优先搜索
❖ 定义
以接近起始节点的程度逐必能 找❖ 到算法它。
广度(宽度)优先搜索 (Breadth-first search, BFS)
○ 优先在同一级节点中考察,只有当同一级节点考察完毕之后,才考 察下一级节点
○ 自顶向下一层一层逐渐生成的
75
10
11
《状态空间搜索》课件
应用领域
人工智能
状态空间搜索可以应 用于机器学习、自然 语言处理和图像识别 等人工智能领域。
游戏设计
状态空间搜索是游戏 中人物行动和决策的 基础,使游戏更具挑 战性和智能性。
自动规划和调 度
在生产、物流和交通 等领域中,状态空间 搜索可以优化资源规 划和任务调度。
数据分析
状态空间搜索可以帮 助发现数据中隐藏的 模式和关联,为决策 制定提供有力支持。
案例研究
人工智能
使用状态空间搜索优化机器学习 算法的参数选择,提高准确性和 效率。
游戏设计
通过状态空间搜索实现游戏中的 智能NPC行为,使游戏更具挑战 性。
自动规划和调度
利用状态空间搜索优化物流系统 的路径规划和车辆调度,降低成 本和提高效率。
《状态空间搜索。通过定义和搜索问题的 状态空间,我们能够找到最佳解决方案,并解决各种实际挑战。
定义与背景
状态空间搜索是一种以状态和操作为基础的搜索算法。它可用于查找特定问题的解决方案,并在搜索空间中找 到最佳路径。 状态空间搜索在人工智能、游戏设计、自动规划和调度以及数据分析等领域都有广泛的应用。
挑战和解决方案
1 空间复杂度
随着状态空间的增大,搜索算法需要占用更多的内存。优化技术和剪枝策略可以减少空 间需求。
2 时间复杂度
在大规模状态空间中搜索最优解需要花费较长的时间。智能的启发式函数可以提高搜索 效率。
3 剪枝技术和优化策略
通过剪掉冗余的搜索路径和使用启发式函数进行优化,可以加速状态空间搜索。
常见的搜索算法
盲目搜索算法
通过无信息的搜索策略,在状态空间中逐步探 索并找到解决方案。
最佳优先搜索算法
根据启发式函数评估搜索节点,并选择评估函 数值最小的节点进行扩展。
《状态空间搜索》PPT课件
精选ppt
3
• 另一种求解方法是:先从欲想达到的目标开始, 看哪些规则或合法移动能产生该目标以及应用这 些规则产生目标时需要哪些条件。这些条件就成 为我们要达到的新目标,即子目标。搜索就通过 反向的、连续的子目标不断地进行,一直到找到 问题给定的条件为止。这样就找到了一条从数据 到目标的移动或规则组成的链,尽管搜索方向和 它正好相反。这种方法称为目标驱动的推理或反 向推理。
765
765
精选ppt
28
宽度优先搜索
• 可使用的算符有,空格左移,右移,上移,下 移.
• 宽度优先搜索的图示如p267页的图6-15.
状态空间搜索状态空间搜索策略数据驱动和目标驱动的搜索图搜索的实现深度和广度优先搜索有界深度优先搜索有界深度优先搜索谓词演算推理的状态空间表示法逻辑的状态空间描述与或图讨论?基于递归的搜索?递归?递归搜索?模式驱动搜索?产生式系统?定义与历史?产生式系统示例?产生式系统搜索的控制?产生式系统的优点?状态空间搜索策略?数据驱动和目标驱动的搜索?状态空间可以从两个方向进行搜索
D
•
E F G HI J
•
K L M NO P Q R
•
ST
U
•
用于深度和广度优先搜索的例图
精选ppt
24
深度和广度优先搜索
• 例如在上面的深度和广度优先搜索图中,深度优 先搜索的顺序是:
• A,B,E,K,S,L,T,F,M,C,G,N, H,O,P,U,I,Q,J,R
• 而在广度优先搜索中结点的顺序是:
• end
• end;
• return FAIL
• end.
• 假设状态空间的深度优先回溯搜索中的回溯轨迹 如下:
状态空间搜索策略
希望:
• 引入启发知识;在保证找到最佳解的前提下;尽可能减 少搜索范围;提高搜索效率
• 搜索算法的效果: – 可以用启发能力的强弱来度量 – 考虑解路径的消耗值和求得路径所需搜索的消耗 值两者的某种组合最小 – 考虑搜索方法对求解所有可能遇见的问题;其平均 的组合消耗最小
问题的关键
• 如何寻找最有希望的节点 – 启发搜索过程中;要对OPEN表进行排 序;这就需要有一种方法来计算待扩展 节点有希望通向目标节点的不同程度 – 我们总希望能找到最有希望通向目标 节点的待扩展节点优先扩展
123 784
65
12 3 84 7 65
283 64
175
283 16 754
83 214 765
283 714 65
28 143 765
283 145 76
目标
深度优先搜索的性质
• 一般不能保证找到最优解 • 当深度限制不合理时;可能找不到解 • 最坏情况时;搜索空间等同于穷举
5 2 4 代价树的宽度优先搜索
基本思想
• 定义一个估价函数fEvaluation Function;对当前的 搜索状态进行评估;找出一个最有希望的节点来扩 展
• 估价函数的格式:
fn = gn + hn
fn:估价函数 gn:代价函数;
初始节点到节点n已实际付出的代价 hn:启发函数;
从节点n到目标节点的最优路径的估计代价
5 3 2 最佳优先搜索
否则转向第2步
5 2 2 宽度优先搜索策略
例:把宽度优先搜索应用于八数码难题时所生成的搜索树;这个问 题就是要把初始棋局变为如下目标棋局的问题:
123 84 765
5
283 164 75
第六讲状态空间搜索策略
搜索过程中不使用与问题有关的经验信息 采用固定策略对OPEN表排序 搜索效率低 不适合大空间的实际问题求解
6.2.2 广度优先搜索
基本思想:
从初始节点S0开始,逐层地对节点进行扩 展并考察它是否为目标节点。在第n层的 节点没有全部扩展并考察之前,不对第n +1层的节点进行扩展。
OPEN表中节点总是按进入的先后顺序排 列,先进入的节点排在前面,后进入的排 在后面。
广度优先搜索过程
1. 把初始节,退出。
3. 把OPEN表的第一个节点(记为节点n)取出 放入CLOSE表。
使问题从一个状态转变为另一个状态的操作称为算符。在产生式系统中, 一条产生式规则就是一个算符。
状态空间
由所有可能出现的状态及一切可用算符所构成的集合称为问题的状态空间。
(3)采用状态空间求解问题,可以用下面的一个三元组表示: (S,F,G)
其中S是问题初始状态的集合;F是算符的集合;G是目标状态的集合。
第六讲状态空间搜索策 略
2020年7月10日星期五
问题求解
问题求解是人工智能的核心问题之一 问题求解的目的
机器自动找出某问题的正确解决策略 更进一步,能够举一反三,具有解决同类问题的能力
是从人工智能初期的智力难题、棋类游戏等问题 的研究中开始形成和发展起来的一大类技术,搜 索技术是问题求解的主要手段之一
MC问题中的算子
将传教士或野人运到河对岸
Move-1m1c-lr:将一个传教士(m)一个野人(c)从左 岸(l)运到右岸(r)
所有可能操作
Move-1m1c-lr Move-2c-rl Move-1c-lr Move-1m-rl
Move-1m1c-rl Move-2m-lr Move-1c-rl
状态空间搜索策略(PPT45张)
– 根节点深度=0 – 其它节点深度=父节点深度+1
3.2.2 深度优先搜索
定义
首先扩展最新产生的(即最深的)节点。
算法
防止搜索过程沿着无益的路径扩展下去, 往往给出一个节点扩展的最大深度 ——深度界 限。 与宽度优先搜索算法最根本的不同在于: 将扩展的后继节点放在 OPEN 表的前端。 (算法
(目标状态)
规定:将牌移入空格的顺序为:从空格左边开始 顺时针旋转。不许斜向移动,也不返回先辈节点。 从图可见,要扩展26个节点,共生成46个节点 之后才求得解(目标节点)。
1
2 8 3 1 4 7 6 5
2 6
2 8 3 1 4 7 6 5
3 7 8
2 3 1 8 4 7 6 5
4 9
2 8 3 1 6 4 7 5
框图见教材)
• 深度优先搜索(Depth-first search ,DFS)
• 排序方式不同,对应的搜索算法不同
开始 把S放入OPEN表 是 OPEN表为空表? 否 把第一个节点(n)从OPEN表移至CLOSED表 失败
n为目标节点吗?
否 把n的后继节点放入OPEN表的末 端,提供返回节点n的指针
是
成功
修改指针方向
重排OPEN表 图3.1 图搜索过程框图
3.2 盲目搜索
• 搜索
– 在状态图中寻找目标或路径的基本方法
– 从初始节点,沿着与之相连的边,寻找目标节 点的过程
,按照原图的连接 关系,便形成一个树形的有向图
• 盲目搜索
– 无向导搜索/穷举式搜索 – 从初始节点,沿连接边逐一考察各个节点,或反 向进行
• 启发式(heuristic)搜索
状态空间搜索
广度优先搜索(Breadth-first Search)
搜索顺序:1->2->3->4->5->… “找眼镜”
广度优先搜索
实现:队列 空间开销: 可扩展结点 + 已扩展结点标记
广度优先搜索的实现框架
void BFS() {
while(队列可扩展且尚未到达目标状态) {
从队首依次取出队列中未扩展的结点进行扩 展,并将新结点加入队尾。 } }
状态空间搜索
适用范围和意义 盲目搜索方法 优化搜索技巧 参考习题 推荐材料
盲目搜索方法
定义
状态(state) 对问题在某一时刻进展情况的数学描述
状态转移(state-transition) 问题从一种状态到转移到另一种(或几种)状态的操作
状态空间(state space) 问题可以处于的所有状态
算法运行若干次(比如k次),验证F是否满足 值为1。
K是一个从理论上分析出来的界。 能以接近1的概率找到解。
状态空间搜索
适用范围和意义 盲目搜索方法 优化搜索技巧 参考习题 推荐材料
搜索优化技巧
改变搜索顺序 剪枝技巧
改变搜索顺序
每次都选择先扩展更接近目标状态的结点, 那么就会更快的找到最优解,并为剪枝提 供依据。
只有能够补偿策略本身所花费代价的剪枝,才能称得 上是好的剪枝。
举例
[例3,POJ 1011] 合并木棒 我们有n(n≤64)根小木棍,每根长度均不大 于50。现在需要将它们拼接成长度相同的 若干长木棍,并使得这些长木棍最短。问 如何拼接?
分析
此题也是很明显的搜索题 从小到大枚举每个拼成后的木棍长d 验证d是否可行
作业:
POJ 1167 公交车问题 (the buses) POJ 2817 木棒 提交poj,同时上传代码至ftp, 第十二次作业 目录中 提交时间:25号
状态空间搜索
最优化理论与应用
如何设计可采纳的启发式函数?
❖根据问题特征设计h,例如八数码问题
➢ h1位置不一致的棋子数目 ➢ h1 (n)=1+1+0+1+1+0+0+0=4 ➢ h2所有棋子到其目标位置的距离和 ➢ h2 (n)=1+2+0+1+1+0+0+0=5
283
123
结点n 1 6 4 目标 8 4
计算机与信息学院 刘勇
最优化理论与应用
八数码问题
令g *(n)为初始结点到结点n的深度 令h * (n)为位置不正确的数字个数
283 164 75
123 84 765
h*(n) 1
123 84
765
计算机与信息学院 刘勇
最优化理论与应用
1+5 283 164 75
0+4 2 8 3
164
7
5
left
75
765
计算机与信息学院 刘勇
最优化理论与应用
如何设计可采纳的启发式函数?
❖组合启发式函数:如果已有h1, h2 ,······, hm等可 采纳启发式函数,那么:
h = max(h1, h2 ,······, hm)
❖ 从但经 不验 知中 道学 具习 体:的已关知系某,些那特么征可以x1与定x义2和h有关, h=c1x1 +c2x2
可把状态空间记为三元状态(S,F,G)。
计算机与信息学院 刘勇
最优化理论与应用
2、状态空间的搜索策略
计算机与信息学院 刘勇
最优化理论与应用
3. 状态空间的一般搜索过程
AI_06搜索策略
2
6.1.2 状态空间表示法
➢ 状态空间表示法:是由“状态”和“算符”来表 示问题的一种方法。
➢ 状态:描述问题求解过程中任一时刻状况的数据 结构,一般用一组变量的有序组合表示: Sk=(Sk0,Sk1…) 当每一个分量确定时,就得到一个具体的状态。
p
p1 p2 p3
10
6.1.3 与/或树表示法
➢ 本原问题:不能再分解或变换,而且直接可解的 子问题为本原问题。
➢ 端节点:在与/或树中,没有子节点的节点称为 端节点。
➢ 终止节点:本原问题对应的节点称终止节点,终 止节点一定是端节点,反之不然。
➢ 可解节点:满足下列条件之一
▪ 它是一个终止节点。
题的解,成功退出; (5)如果节点n的深度d(n)=dm,则转第(2)步; (6)若节点n不可扩展,则转第(2)步; (7)扩展节点 n,将其子节点放入 Open表的首部,
并为每一个子节点设置指向父节点的指针,然后 转第(2)步。
(1,1,1)(1,2,2)
(1,2,2) (3,2,2) (3,2,2) (3,3,3)
(1,1,1)(1,1,3) (1,1,3)(1,2,3) (1,2,3)(1,2,2)
(3,2,2)(3,2,1) (3,2,1)(3,3,1) (3,3,1)(3,3,3)
有七个终止节点,对应七个本原问题,本原问题的 解左至右顺序。
23
813
2
4
765
24
283
7
4
615
9 23 184 765
10 28 143 765
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因此,广度优先搜索的本质是,以初始节 点为根节点,在状态空间图中按照广度优先的 原则,生成一棵搜索树。
广度优先搜索的特点
优点: 只要问题有解,用广度优先搜索总可以得到 解,而且得到的是路径最短的解。
2 83 14
7 65
23 1 8 4 20 7 65
11
28 3 14 76 5
25
23 1 84 7 65
26
1 23 84
7 65
28
27
1 23 84 7 65
1 23 7 84
65
21
23 18 4 76 5
22
23 4 18 76 5
24
23
2 34 18 7 65
2 34 1 85 76
16
28 14 3 76 5
17
28 1 43 7 65
19
18
28 1 43 7 65
2 48 13 7 65
Sg
12
28 3 14 5 76
但并未进行扩展)。
6. 若节点n不可扩展,则转第2步。 7. 扩展节点n,将其子节点放入OPEN表的首部,为每一个子节点
都配置指向父节点的指针,将每一个子节点的深度设置为d(n)+1, 然后转第2步。
如果问题有解,且其路径长度≤dm,则上述 搜索过程一定能求得解。但是,若解的路 径长度>dm,则上述搜索过程就得不到解。 这说明在有界深度优先搜索中,深度界限 的选择是很重要的。
要恰当地给出dm的值是比较困难的。即使 能求出解,它也不一定是最优解。
有界深度优先搜索的一些改进方法
1. 先深任度意优设先定搜一索个 ,较当小搜的索数达作到为了指dm定,的然深后度进界行限上d述m的仍有未界发 现目标节点,并且CLOSE表中仍有待扩展节点时,就将 这些节点送回OPEN表,同时增大深度界限dm,继续向 下以搜找索到。它如。此但不 此断时地找增到大的解dm不,一只定要是问最题优有解解。,就一定可
状态:问题在某一时刻所处的“位置”,“情况”等
根据问题所关心的因素,一般用向量形式表示,每一 位表示一个因素
状态可有多种表示方法: (左岸传教士数, 右岸传教士数, 左岸野人数, 右岸野人数, 船的位置) 或 (左岸传教士数, 左岸野人数, 船的位置)
初始状态:(0, 0, 0) 目标状态:(3, 3, 1)
缺点: 广度优先搜索盲目性较大,当目标节点距初 始节点较远时将会产生许多无用节点,搜索 效率低。
6.2.3 深度优先搜索
深度优先搜索与广度优先搜索的唯一区别 是:广度优先搜索是将节点n的子节点放入 到OPEN表的尾部,而深度优先搜索是把 节点n的子节点放入到OPEN表的首部。
深度优先搜索过程
5. 若节点n不可扩展,则转第2步。
6. 扩展节点n,将其子节点放入OPEN表的尾部, 并为每一个子节点都配置指向父节点的指针, 然后转第2步。
重排九宫的广度优先搜索
操作符:空格左移、上移、2 8右3 移、下移
S0 1 4 1 765
2 283 14 765
3 23 184 765
4 283 14 765
1. 把初始节点S0放入OPEN表。 2. 如果OPEN表为空,则问题无解,退出。
3. 把OPEN表的第一个节点(记为节点n)取出 放入CLOSE表。
4. 考察节点n是否为目标节点。若是,则求得了 问题的解,退出。
5. 若节点n不可扩展,则转第2步。
6. 扩展节点n,将其子节点放入OPEN表的首部, 并为每一个子节点都配置指向父节点的指针, 然后转第2步。
28 143 765
1 19 283
145
76
20
283 64 175
21
283 16 754
22
23 24
25 26
83 214 765
813 24 765
283 74 615
283 123 7 1 4 8 4 Sg 65 765
在上述广度优先算法中需要注意两个问题:
1、对于任意一个可扩展的节点,总是按照固定 的操作符的顺序对其进行扩展(空格左移、上 移、右移、下移)。
4
6.1.2 状态空间表示法
(1)很多问题的求解过程都可以看作是一个搜索过程。问题及其求解过 程可以用状态空间表示法来表示。
(2)状态空间用“状态”和“算符”来表示问题。
状态
状态用以描述问题在求解过程中不同时刻的状态,一般用一个向量表示:
算符
SK=(Sk0,Sk1,…)
使问题从一个状态转变为另一个状态的操作称为算符。在产生式系统中, 一条产生式规则就是一个算符。
CLOSE表用于存放将要扩展的节点。对一个节点的扩展是指:用所 有可适用的算符对该节点进行操作,生成一组子节点
OPEN表
状态节点 父节点
CLOSE表
编号 状态节点 父节点
搜索的一般过程
1. 把初始节点S0放入OPEN表,并建立目前只包含S0的图,记为G; 2. 检查OPEN表是否为空,若为空则问题无解,退出; 3. 把OPEN表的第一个节点取出放入CLOSE表,并计该节点为n; 4. 考察节点n是否为目标节点。若是,则求得了问题的解,退出; 5. 扩展节点n,生成一组子节点。把其中不是节点n先辈的那些子节点
宽度优先搜索 深度优先搜索 特点
搜索过程中不使用与问题有关的经验信息 采用固定策略对OPEN表排序 搜索效率低 不适合大空间的实际问题求解
6.2.2 广度优先搜索
基本思想:
从初始节点S0开始,逐层地对节点进行扩 展并考察它是否为目标节点。在第n层的 节点没有全部扩展并考察之前,不对第n +1层的节点进行扩展。
OPEN表中节点总是按进入的先后顺序排 列,先进入的节点排在前面,后进入的排 在后面。
广度优先搜索过程
1. 把初始节点S0放入OPEN表。 2. 如果OPEN表为空,则问题无解,退出。
3. 把OPEN表的第一个节点(记为节点n)取出 放入CLOSE表。
4. 考察节点n是否为目标节点。若是,则求得了 问题的解,退出。
问题表示 解的搜索
示例——八数码难题
在3×3的棋盘,摆有八个棋子,每个棋 子上标有1至8的某一数字。棋盘上还有 一个空格,与空格相邻的棋子可以移到 空格中。
28 3
1
4
76 5
12 3
8
4
76 5
初始状态
目标状态
如何将棋盘从某一初始状态变成最后的目标状 态?
问题示例
怎样找到 两点之间 的最短路 径呢?
记做集合M,并把这些子节点作为节点n的子节点加入G中; 6. 对于那些未曾在G中出现过的M成员设置一个指向父节点(即节点n)
的指针,并把它们放入OPEN表;(不在OPEN表) 7. 按某种搜索策略对OPEN表中的节点进行排序; 8. 转第2步。
一些说明
一个节点经一个算符操作后一般只生成一个子节点。但适用于 一个节点的算符可能有多个,此时就会生成一组子节点。这些 子节点中可能有些是当前扩展节点的父节点、祖父节点等,此 时不能把这些先辈节点作为当前扩展节点的子节点。
本质:以初始节点为根节点,在状态空间图中 按照深度优先的原则,生成一棵搜索树。
6.2.4 有界深度优先搜索
基本思想:
对深度优先搜索引入搜索深度的界限(设为dm),当搜索深度达 到了深度界限,而仍未出现目标节点时,就换一个分支进行搜索。
搜索过程:
1. 把初始节点S0放入OPEN表中,置S0的深度d(S0)=0。 2. 如果OPEN表为空,则问题无解,退出。 3. 把OPEN表的第一个节点(记为节点n)取出放入CLOSE表。 4. 考察节点n是否为目标节点。若是,则求得了问题的解,退出。 5. 若节点n的深度d(n)=dm,则转第2步(此时节点n位于CLOSE表,
第六章 问题求解与搜索策略
6.1 基本概念 6.2 状态空间的搜索策略 6.3 与/或树的搜索策略 6.4 搜索的完备性与效率
问题求解
问题求解是人工智能的核心问题之一 问题求解的目的
机器自动找出某问题的正确解决策略 更进一步,能够举一反三,具有解决同类问题的能力
是从人工智能初期的智力难题、棋类游戏等问题 的研究中开始形成和发展起来的一大类技术,搜 索技术是问题求解的主要手段之一
2. 为后了,找就到把最它优放解 入,到可R的增前设面一,个并表令R,dm每等找于到该目目标标节节点点S所g 对应的路径长度,然后继续搜索。由于后求得的解的路 径长度不会超过先求得的解的路径长度,所以后求得的 解一定是最优解。
重排九宫的有界深度优先搜索
设深度界限dm=4
2 83
S0
14 7 65
1
5 283 164 75
6
7
8
9 10
11 12
13
83 214 765
283 714
65
23 184 765
23 184 765
28 143 765
283 145 76
283 164 76
283 164 75
14
83 214 765
15
283 714 65
16
123 84
765
17 18
234 18 765
如果在搜索中一直找不到目标节点,而且OPEN表中不再有可 供扩展的节点,则搜索失败。
通过搜索得到的图称为搜索图,搜索图是状态空间图的一个子 集。由搜索图中的所有节点及反向指针所构成的集合是一棵树, 称为搜索树。根据搜索树可给出问题的解。