最新三章状态空间搜索策略
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ 重复上述过程,直到目标状态出现或不再有可供操作的状 态及算符时为止。
第三章 状态空间搜索策略
节点扩展 概念 ➢扩展:就是用合适的算符对某个节点进行操作生成一组 后继节点,扩展过程实际上就是求后继节点的过程。
➢已扩展节点:对状态空间图中的某个节点,如果求出了 它的后继节点,则此节点为已扩展的节点。
(4)若OPEN表非空,选择OPEN表中的第一 个节点,把它从OPEN表移出,并放人 CLOSED表中,将此节点记为节点n。
(5)考察节点n是否为目标节点,若是,则问 题有解,并成功退出。问题的解即可从 图G中沿着指针从n到S0的这条路径得到。
OPEN表中;对于已在G中出现过 的M中的那些节点,确定是否需要 修改指向父节点(n节点)的指针; 对于那些先前已在G中出现并且已 在CLOSED表中的那些M中的节点, 确定是否需要修改通向它们后继节 点的指针。
然后转第(2)步。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
例3.1 八数码难题:设在3×3的一个方格棋盘上,摆放着8 个数码1、2、3、4、5、6、7、8,有一个方格是空格,其 初始状态如下图(a)所示,要求对空格执行下列的操作(或算 符): 左移,上移,右移,下移。 使8个数据最终按下图(b)
第三章 状态空间搜索策略
算法3.1 状态空间图的一般搜索算法
(1)建立一个只含有初始节点S0的搜索图G, 把S0放人OPEN表中。
(2)建立CLOSED表,且置为空表。
(7)对那些未曾在G中出现过的M中的 节点,设置一个指向父节点(即节 点n)的指针,并把这些节点加入
(3)判断OPEN表是否为空表,若为空,则问 题无解,退出。
(3)把OPEN表中的第一个节点(记为节点n)移出,并放人
CLOSED表中。
(4)判断节点n是否为目标节点,若是,则求解结束,并用
回溯法找出解的路径,退出;否则继续执行(5)。
(5)若节点n不可扩展,转第(2)步;否则继续执行(6)步。
(6)对节点n进行扩展,将它的所有后继节点放人OPEN表 的末端,并为这些后继节点设置指向父节点n的指针,
三章状态空间搜索策略
第三章 状态空间搜索策略
我们通过例子引入状态空间搜索的概念。
例1 走迷宫是人们熟悉的 一种游戏,如图就是一个 迷宫。如果我们把该迷宫 的每一个格子以及入口和 出口都作为节点,把通道 作为边,则该迷宫可以由 一个有向图表示。
Hale Waihona Puke Baidu三章 状态空间搜索策略
第三章 状态空间搜索策略
第三章 状态空间搜索策略
在搜索过程中,未扩展节点表OPEN 中的节点排序准则是:“先入先出”, 即先进入的节点排在前面,后进入的 节点排在后面。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
算法3.2 状态空间图的宽度优先搜索算法
(1)把初始节点S0放人OPEN表中。
(2)如果OPEN表是空表,则没有解,失败退出;否则继续。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
第三章 状态空间搜索策略
第三章 状态空间搜索策略
搜索法求解问题的基本思想:
➢ 首先将问题的初始状态(初始节点)当作当前状态,选择一 适当的算符作用于当前状态,生成一组后继状态(后继节 点),然后检查这组后继状态中有没有目标状态。
➢ 如果有,则说明搜索成功,从初始状态到目标状态的一系 列算符即是问题的解;若没有,则按照某种控制策略从已 生成的状态中再选一个状态作为当前状态。
时,将会产生大量的无用节点。
➢ 搜索策略是完备的。只要问题有解,宽度优先搜索总可以 找到它的解,而且是搜索树中,从初始节点到目标节点的 路径最短的解。
3.2.3 深度优先搜索
基本思想:首先扩展最新产生的(即
最深的)节点。即从初始节点So开始,
在其后继节点中选择一个节点,对其 进行考察,若它不是目标节点,则对 该节点进行扩展,并再从它的后继节 点中选择一个节点进行考察。依次类 推,一直搜索下去。当到达某个既非 目标节点又无法继续扩展的节点时, 才选择其兄弟节点进行考察。
(6)扩展节点n生成一组不是n的祖先的后继 节点,并将它们记为集合M,将M中的 这些节点作为n的后继节点加入图G中。
(8)按某一任意方式或按某种策略重排 OPEN表中节点的顺序。
(9)转第(3)步。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
➢ 在搜索过程中,生成了一个图G,它是问题状态空间图的 一部分,称为搜索图。
➢ 由搜索图G中的所有节点及设置的指向父节点的反向指针, 所构成的集合T,称为搜索树。
➢ 在搜索过程中,问题的解就是从初始节点So到目标节点路
径上的算符所构成的序列。
➢ 路径是通过目标节点按设置的指针指向初始节点So回溯而
得到的。
3.2.2 宽度优先搜索策略
宽度优先搜索又称为广度优先搜索。
基本思想:是从初始节点开始,逐层 对节点进行依次扩展,并考察它是否 为目标节点。在对下层节点进行扩展 (或搜索)之前,必须完成对当前层的 所有节点的扩展(或搜索)。
➢未扩展节点:对状态空间图中的某个节点,如果尚未求 出它的后继节点,则此节点称为未扩展节点。
第三章 状态空间搜索策略
状态空间图的一般搜索策略:
在对状态空间图搜索求解时,将未扩展的节点存于一个名为 OPEN的表中,而将已扩展的节点存于一个名为CLOSED的 表中。
第三章 状态空间搜索策略
搜索的目的是为了寻找初始节点到目标节点的路径,所以 在搜索过程中就得随时记录搜索轨迹。我们用一个称为 CLOSED表的动态数据结构来专门记录考查过的节点(已 扩展的节点)。CLOSED表中存储的是一棵不断成长的搜 索树。 另一方面,还得不断地把待考查的节点(未扩展的节点) 组织在一起,并做某种排列,以便控制搜索的方向和顺序。 我们采用一个称为OPEN表的动态数据结构,来专门登记 当前待考查的节点。
的格式摆放,图(b)称为目标状态Sg。要求寻找从初始状态
到目标状态的路径。
2
8
1
7
6
S0 (a) 初始状态
31
2
48
57
6
Sg (b) 目标状态
第三章 状态空间搜索策略
解的路径为:
So→3→8→16→27→Sg
第三章 状态空间搜索策略
宽度优先搜索的特点: ➢ 搜索盲目性较大,效率低。当目标节点距离初始节点较远
第三章 状态空间搜索策略
节点扩展 概念 ➢扩展:就是用合适的算符对某个节点进行操作生成一组 后继节点,扩展过程实际上就是求后继节点的过程。
➢已扩展节点:对状态空间图中的某个节点,如果求出了 它的后继节点,则此节点为已扩展的节点。
(4)若OPEN表非空,选择OPEN表中的第一 个节点,把它从OPEN表移出,并放人 CLOSED表中,将此节点记为节点n。
(5)考察节点n是否为目标节点,若是,则问 题有解,并成功退出。问题的解即可从 图G中沿着指针从n到S0的这条路径得到。
OPEN表中;对于已在G中出现过 的M中的那些节点,确定是否需要 修改指向父节点(n节点)的指针; 对于那些先前已在G中出现并且已 在CLOSED表中的那些M中的节点, 确定是否需要修改通向它们后继节 点的指针。
然后转第(2)步。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
例3.1 八数码难题:设在3×3的一个方格棋盘上,摆放着8 个数码1、2、3、4、5、6、7、8,有一个方格是空格,其 初始状态如下图(a)所示,要求对空格执行下列的操作(或算 符): 左移,上移,右移,下移。 使8个数据最终按下图(b)
第三章 状态空间搜索策略
算法3.1 状态空间图的一般搜索算法
(1)建立一个只含有初始节点S0的搜索图G, 把S0放人OPEN表中。
(2)建立CLOSED表,且置为空表。
(7)对那些未曾在G中出现过的M中的 节点,设置一个指向父节点(即节 点n)的指针,并把这些节点加入
(3)判断OPEN表是否为空表,若为空,则问 题无解,退出。
(3)把OPEN表中的第一个节点(记为节点n)移出,并放人
CLOSED表中。
(4)判断节点n是否为目标节点,若是,则求解结束,并用
回溯法找出解的路径,退出;否则继续执行(5)。
(5)若节点n不可扩展,转第(2)步;否则继续执行(6)步。
(6)对节点n进行扩展,将它的所有后继节点放人OPEN表 的末端,并为这些后继节点设置指向父节点n的指针,
三章状态空间搜索策略
第三章 状态空间搜索策略
我们通过例子引入状态空间搜索的概念。
例1 走迷宫是人们熟悉的 一种游戏,如图就是一个 迷宫。如果我们把该迷宫 的每一个格子以及入口和 出口都作为节点,把通道 作为边,则该迷宫可以由 一个有向图表示。
Hale Waihona Puke Baidu三章 状态空间搜索策略
第三章 状态空间搜索策略
第三章 状态空间搜索策略
在搜索过程中,未扩展节点表OPEN 中的节点排序准则是:“先入先出”, 即先进入的节点排在前面,后进入的 节点排在后面。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
算法3.2 状态空间图的宽度优先搜索算法
(1)把初始节点S0放人OPEN表中。
(2)如果OPEN表是空表,则没有解,失败退出;否则继续。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
第三章 状态空间搜索策略
第三章 状态空间搜索策略
搜索法求解问题的基本思想:
➢ 首先将问题的初始状态(初始节点)当作当前状态,选择一 适当的算符作用于当前状态,生成一组后继状态(后继节 点),然后检查这组后继状态中有没有目标状态。
➢ 如果有,则说明搜索成功,从初始状态到目标状态的一系 列算符即是问题的解;若没有,则按照某种控制策略从已 生成的状态中再选一个状态作为当前状态。
时,将会产生大量的无用节点。
➢ 搜索策略是完备的。只要问题有解,宽度优先搜索总可以 找到它的解,而且是搜索树中,从初始节点到目标节点的 路径最短的解。
3.2.3 深度优先搜索
基本思想:首先扩展最新产生的(即
最深的)节点。即从初始节点So开始,
在其后继节点中选择一个节点,对其 进行考察,若它不是目标节点,则对 该节点进行扩展,并再从它的后继节 点中选择一个节点进行考察。依次类 推,一直搜索下去。当到达某个既非 目标节点又无法继续扩展的节点时, 才选择其兄弟节点进行考察。
(6)扩展节点n生成一组不是n的祖先的后继 节点,并将它们记为集合M,将M中的 这些节点作为n的后继节点加入图G中。
(8)按某一任意方式或按某种策略重排 OPEN表中节点的顺序。
(9)转第(3)步。
第三章 状态空间搜索策略
第三章 状态空间搜索策略
➢ 在搜索过程中,生成了一个图G,它是问题状态空间图的 一部分,称为搜索图。
➢ 由搜索图G中的所有节点及设置的指向父节点的反向指针, 所构成的集合T,称为搜索树。
➢ 在搜索过程中,问题的解就是从初始节点So到目标节点路
径上的算符所构成的序列。
➢ 路径是通过目标节点按设置的指针指向初始节点So回溯而
得到的。
3.2.2 宽度优先搜索策略
宽度优先搜索又称为广度优先搜索。
基本思想:是从初始节点开始,逐层 对节点进行依次扩展,并考察它是否 为目标节点。在对下层节点进行扩展 (或搜索)之前,必须完成对当前层的 所有节点的扩展(或搜索)。
➢未扩展节点:对状态空间图中的某个节点,如果尚未求 出它的后继节点,则此节点称为未扩展节点。
第三章 状态空间搜索策略
状态空间图的一般搜索策略:
在对状态空间图搜索求解时,将未扩展的节点存于一个名为 OPEN的表中,而将已扩展的节点存于一个名为CLOSED的 表中。
第三章 状态空间搜索策略
搜索的目的是为了寻找初始节点到目标节点的路径,所以 在搜索过程中就得随时记录搜索轨迹。我们用一个称为 CLOSED表的动态数据结构来专门记录考查过的节点(已 扩展的节点)。CLOSED表中存储的是一棵不断成长的搜 索树。 另一方面,还得不断地把待考查的节点(未扩展的节点) 组织在一起,并做某种排列,以便控制搜索的方向和顺序。 我们采用一个称为OPEN表的动态数据结构,来专门登记 当前待考查的节点。
的格式摆放,图(b)称为目标状态Sg。要求寻找从初始状态
到目标状态的路径。
2
8
1
7
6
S0 (a) 初始状态
31
2
48
57
6
Sg (b) 目标状态
第三章 状态空间搜索策略
解的路径为:
So→3→8→16→27→Sg
第三章 状态空间搜索策略
宽度优先搜索的特点: ➢ 搜索盲目性较大,效率低。当目标节点距离初始节点较远