29
● 启发式搜索策略
假设初始状态、算符和目标状态的定义都是完全确定的,然后决定一
个搜索空间。因此,问题就在于如何有效地搜索这个给定空间。 启发信息按其用途可分为下列3种: (1) 用于决定要扩展的下一个节点,以免像在宽度优先或深度优先搜索 中那样盲目地扩展。 (2) 在扩展一个节点的过程中,用于决定要生成哪一个或哪几个后继节 点,以免盲目地同时生成所有可能的节点。
22ห้องสมุดไป่ตู้
有深度界限的深度优先搜索算法如下: (1) 把起始节点S放到未扩展节点OPEN表中。如果此节点为一目标节点,则得 到一个解。 (2) 如果OPEN为一空表,则失败退出。 (3) 把第一个节点(节点n)从OPEN表移到CLOSED表。 (4) 如果节点n的深度等于最大深度,则转向(2)。 (5) 扩展节点n,产生其全部后裔,并把它们放入OPEN表的前头。如果没有后 裔,则转向(2)。 (6) 如果后继节点中有任一个为目标节点,则求得一个解,成功退出;否则,
度依次扩展节点的,那么这种搜索就叫做宽度优先搜索(breadth-first search)。
从图可见,这种搜索是逐层进行的;在对下一层的任一节点进行搜索之前,必 须搜索完本层的所有节点。
14
宽度优先搜索算法如下: (1) 把起始节点放到OPEN表中(如果该起始节点为一目标节点,则求得 一个解答)。 (2) 如果OPEN是个空表,则没有解,失败退出;否则继续。 (3) 把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED扩展节
1
状态图的例子:
设有三枚钱币,其排列处在“正,正,反”状态,现允许每次 可翻动其中任意一个钱币,问只允许操作三次的情况下,如何 翻动钱币使其变成“正,正,正”或“反,反,反”状态。 若“正面”用“1”表示,“反面”用“0”表示,则问题化成求 解从初始状态(1,1,0)到目标状态(1,1,1)或(0,0,0)的路 径问题,且该路径的长度为3。 (1,1,0)--------->(1,1,1)或(1,1,0)--------->(0,0,0)