第三章状态空间搜索策略方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由搜索图G中的所有节点及设置的指向父节点的反向指针, 所构成的集合T,称为搜索树。
在搜索过程中,问题的解就是从初始节点So到目标节点路
径上的算符所构成的序列。
路径是通过目标节点按设置的指针指向初始节点So回溯而
得到的。
3.2.2 宽度优先搜索策略
宽度优先搜索又称为广度优先搜索。
基本思想:是从初始节点开始,逐层 对节点进行依次扩展,并考察它是否 为目标节点。在对下层节点进行扩展 (或搜索)之前,必须完成对当前层的 所有节点的扩展(或搜索)。
已扩展节点:对状态空间图中的某个节点,如果求出了 它的后继节点,则此节点为已扩展的节点。
未扩展节点:对状态空间图中的某个节点,如果尚未求 出它的后继节点,则此节点称为未扩展节点。
第三章 状态空间搜索策略
状态空间图的一般搜索策略:
在对状态空间图搜索求解时,将未扩展的节点存于一个名为 OPEN的表中,而将已扩展的节点存于一个名为CLOSED的表中。
(4)若OPEN表非空,选择OPEN表中的第一个 节点,把它从OPEN表移出,并放人 CLOSED表中,将此节点记为节点n。
(5)考察节点n是否为目标节点,若是,则问 题有解,并成功退出。问题的解即可从 图G中沿着指针从n到S0的这条路径得到。
OPEN表中;对于已在G中出现过的M 中的那些节点,确定是否需要修改 指向父节点(n节点)的指针;对于 那些先前已在G中出现并且已在 CLOSED表中的那些M中的节点,确 定是否需要修改通向它们后继节点 的指针。
第三章 状态空间搜索策略
有界深度优先搜索算法的深度界限的选择很重要。选择 过大,可能会影响搜索的效率;选择的过小,有可能求 不到解。
有界深度优先搜索策略是不完备的。对于某些问题,可 能它的解就位于某一分支较深的位置,而界限值选取的 没有那么大,就会导致找不到问题的解。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
走迷宫其实就是从该有 向图的初始节点(入口)
S1 S2 S3
出发,寻找目标节点 S0 S4 S5 S6
(出口)的问题,或者是 寻找通向目标节点(出
S7 S8 S9 Sg
口)的路径的问题。
迷宫的有向图表示
第三章 状态空间搜索策略
例2 在一个3×3的方格棋盘上放置着1,2,3,4,5,6,7,8八个 数码,每个数码占一格,且有一个空格。这些数码可在棋 盘上移动,其移动规则是:与空格相邻的数码方可移入空 格。现在的问题是:对于指定的初始棋局和目标棋局(如 图),给出数码的移动序列。该问题称为八数码难题或重排 九宫问题。
第三章 状态空间搜索策略
搜索的目的是为了寻找初始节点到目标节点的路径,所以 在搜索过程中就得随时记录搜索轨迹。我们用一个称为 CLOSED表的动态数据结构来专门记录考查过的节点(已扩 展的节点)。CLOSED表中存储的是一棵不断成长的搜索树。
另一方面,还得不断地把待考查的节点(未扩展的节点) 组织在一起,并做某种排列,以便控制搜索的方向和顺序。 我们采用一个称为OPEN表的动态数据结构,来专门登记当 前待考查的节点。
否则继续第(7)步。
(7)扩展节点n,将其后继节点放入OPEN表的前端,并为其 设置指向节点的指针,转第(2)步。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
例3.3 设八数码难题的初始状态及目标状态分别如下图(a) 和图(b)所示,试用有界深度优先搜索策略求解问题。深度 界限dm=5。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
第三章 状态空间搜索策略
深度优先搜索的特点: 搜索策略是完备的。搜索若进入某一分支,则沿着这一
分支一直搜索下去,对于有限的状态空间图,从理论上 讲,解总是能够找到的。
搜索效率低。由于某些分支可能扩展得很深,而解又不 在这些分支上,这就无疑会降低搜索的效率。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
3.1.2 搜索的种类
搜索分为盲目搜索和启发式搜索两种。
盲目搜索:又称无信息搜索。即在搜索过程中,只按预先规 定的搜索控制策略进行搜索。问题本身的特性对搜索控制策 略没有任何影响,搜索带有盲目性,效率不高,只用于解决 比较简单的问题。
启发式搜索:又称有信息搜索。指在搜索求解过程中,根据 问题本身的特性来不断地改变或调整搜索的方向,使搜索朝 着最有希望的方向前进,加速问题的求解,并找到最优解。 搜索求解的效率高,易于求解复杂的问题,但抽取出问题的 相关特性和信息难。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
3.1 搜索的概念及种类 3.2 盲目搜索策略 3.3 启发式搜索策略
第三章 状态空间搜索策略
我们通过例子引入状态空间搜索的概念。
例1 走迷宫是人们熟悉的 一种游戏,如图就是一个 迷宫。如果我们把该迷宫 的每一个格子以及入口和 出口都作为节点,把通道 作为边,则该迷宫可以由 一个有向图表示。
3.2.4 有界深度优先搜索
在深度优先搜索中,为了避免搜索过程沿着无穷的路径一直 搜索下去,往往对一个节点扩展的最大深度进行限制。
任何节点如果达到了深度界限,就把它作为没有后继节点进 行处理,而对另一个分支进行搜索。
搜索树中节点深度(d)定义: (1)搜索树中初始节点的深度为0。 (2)任何其他节点的深度等于其父辈节点的深度加上1。
(3)把OPEN表中的第一个节点(记为节点n)移出,并放人
CLOSED表中。
(4)判断节点n是否为目标节点,若是,则求解结束,并用
回溯法找出解的路径,退出;否则继续执行(5)。
(5)若节点n不可扩展,转第(2)步;否则继续执行(6)步。
(6)对节点n进行扩展,将它的所有后继节点放人OPEN表的 末端,并为这些后继节点设置指向父节点n的指针,然
第三章 状态空间搜索策略
3.1 搜索的概念及种类
3.1.1 搜索的概念
现实世界中的大多数问题都是非结构化问题,一般不存在现 成的求解方法来求解这样的问题,而只能利用已有的知识一 步一步地摸索着前进。
搜索:是一种求解问题的方法,是寻找从问题初始事实到最 终答案的推理路线的一种过程。
搜索包含两层含义:一是根据问题的实际情况,按照一定的 策略,从知识库中寻找可利用的知识,从而构造出一条使问 题获得解决的推理路线;另一是找到的这条路线是时空复杂 度最小的求解路线。
后转第(2)步。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
例3.1 八数码难题:设在3×3的一个方格棋盘上,摆放着8 个数码1、2、3、4、5、6、7、8,有一个方格是空格,其初 始状态如下图(a)所示,要求对空格执行下列的操作(或算 符): 左移,上移,右移,下移。 使8个数据最终按下图(b)
如果有,则说明搜索成功,从初始状态到目标状态的一系 列算符即是问题的解;若没有,则按照某种控制策略从已 生成的状态中再选一个状态作为当前状态。
重复上述过程,直到目标状态出现或不再有可供操作的状 态及算符时为止。
第三章 状态空间搜索策略
节点扩展 概念 扩展:就是用合适的算符对某个节点进行操作生成一组 后继节点,扩展过程实际上就是求后继节点的过程。
时,将会产生大量的无用节点。
搜索策略是完备的。只要问题有解,宽度优先搜索总可以 找到它的解,而且是搜索树中,从初始节点到目标节点的 路径最短的解。
3.2.3 深度优先搜索
基本思想:首先扩展最新产生的(即
最深的)节点。即从初始节点So开始,
在其后继节点中选择一个节点,对其 进行考察,若它不是目标节点,则对 该节点进行扩展,并再从它的后继节 点中选择一个节点进行考察。依次类 推,一直搜索下去。当到达某个既非 目标节点又无法继续扩展的节点时, 才选择其兄弟节点进行考察。
节点表CLOSED中; (4)考察节点n是否为目标节点,若是,则找到问题的解,
用回溯法求解的路径,退出; (5)若节点n不可扩展,则转第(2)步; (6)扩展节点n ,将其后继节点放到OPEN表的前端,并为其
设置指向节点n的指针,然后转第(2)步。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
深度优先搜索与宽度优先搜索的区别就在于:在对节 点n进行扩展时,其后继节点在OPEN表中的存放位置。
宽度优先搜索是将后继节点放入OPEN表的末端—— “先入先出”。
深度优先搜索是将后继节点放入OPEN表的前端—— “后入先出”。
例3.2 对例3.1的八数码难题, 利用深度优先方法进行搜索求 解问题。
在搜索过程中,未扩展节点表OPEN中 的节点排序准则是:“后入先出”, 即后进入的节点排在前面,先进入的 节点排在后面。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
算法3.3 状态空间图的深度优先搜索算法
(1)把初始节点S0放人OPEN表;
(2)如果OPEN表为空,则问题无解,退出; (3)从OPEN表中将其第一个节点(节点n)移出,放入已扩展
状态空间图对问题的求解就相当于在有向图上寻找一条从某 一节点(初始状态节点)到另一节点(目标状态节点)的路径。
第三章 状态空间搜索策略
搜索法求解问题的基本思想:
首先将问题的初始状态(初始节点)当作当前状态,选择一 适当的算符作用于当前状态,生成一组后继状态(后继节 点),然后检查这组后继状态中有没有目标状态。
第三章 状态空间搜索策略
算法3.1 状态空间图的一般搜索算法
(1)建立一个只含有初始节点S0的搜索图G, 把S0放人OPEN表中。
(2)建立CLOSED表,且置为空表。
(7)对那些未曾在G中出现过的M中的 节点,设置一个指向父节点(即节 点n)的指针,并把这些节点加入
(3)判断OPEN表是否为空表,若为空,则问 题无解,退出。
第三章 状态空间搜索策略
算法3.4 有界深度优先搜索算法
(1)把初始节点So放入OPEN表中。 (2)如果OPEN表为空,则问题无解,退出。
(3)把OPEN表中的第一个节点n从OPEN表移到CLOSED表。
(4)考察节点n是否为目标节点,若是,则求得问题的解, 退出;否则继续执行第(5)步。
(5)如果节点n的深度dn等于最大深度dm,则转第(2)步。 (6)如果节点n不可扩展,即没有后继节点,则转第(2)步;
在搜索过程中,未扩展节点表OPEN中 的节点排序准则是:“先入先出”, 即先进入的节点排在前面,后进入的 节点排在后面。
第三ቤተ መጻሕፍቲ ባይዱ 状态空间搜索策略
第三章 状态空间搜索策略
算法3.2 状态空间图的宽度优先搜索算法
(1)把初始节点S0放人OPEN表中。
(2)如果OPEN表是空表,则没有解,失败退出;否则继续。
第三章 状态空间搜索策略
3.2 盲目搜索策略
3.2.1 状态空间图的搜索策略
状态空间表示法:是一种用状态和算符表示问题的方法。
当把一个待求解的问题表示为状态空间以后,就可以通过对 状态空间的搜索,实现对问题的求解。
状态空间图:状态空间的图示表示问题形式。状态空间图是 一个有向图,节点表示状态,有向边(弧)表示算符。
(6)扩展节点n生成一组不是n的祖先的后继 节点,并将它们记为集合M,将M中的这 些节点作为n的后继节点加入图G中。
(8)按某一任意方式或按某种策略重 排OPEN表中节点的顺序。
(9)转第(3)步。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
在搜索过程中,生成了一个图G,它是问题状态空间图的一 部分,称为搜索图。
2
8
3
1
4
7
6
5
初始棋局
8
1
3
2
4
7
6
5
目标棋局
第三章 状态空间搜索策略
状态空间(图)是一类问题的抽象表示,有许多智力问 题(如Hanoi塔问题、旅行商问题、八皇后问题、农夫过 河问题等)和实际问题(如路径规划、定理证明、演绎推 理、机器人行动规划等)都可以归结为在状态空间(图) 中寻找目标或路径的问题。因此,研究状态空间搜索具 有普遍意义。
的格式摆放,图(b)称为目标状态Sg。要求寻找从初始状态
到目标状态的路径。
2
8
3
1
4
7
6
5
S0 (a) 初始状态
1
2
3
8
4
7
6
5
Sg (b) 目标状态
第三章 状态空间搜索策略
解的路径为:
So→3→8→16→27→Sg
第三章 状态空间搜索策略
宽度优先搜索的特点: 搜索盲目性较大,效率低。当目标节点距离初始节点较远
3.2.5 代价树的宽度优先搜索
搜索代价问题:在实际问题的搜索求解中,在将一个状态变 换成另一个状态时,往往所付出的操作代价(或费用)是不一 样的,也就是状态空间图中各有向边的代价是不一样的。这 是前面讨论搜索算法没有考虑的。
相关文档
最新文档