状态空间的盲目搜索
根据状态空间所采用的数据结构的不同,可分为图搜索算法和树搜索算法。由于图搜索算法且一般问题都可用树搜索算法解决,于是主要讨论树搜索算法,包括一般和代价树。
一般树的盲目搜索主要包括深度优先和广度优先两种搜索算法。
广度优先算法
也称为宽度优先算法,是一种先生成的节点先扩展的策略。
算法精髓:从初始节点$S_0$
开始逐层向下扩展,在第n
层还没有完全搜索完之前不会进入第n+1
层的搜索。Open
表中的节点总是按进入的先后排序,先进入的节点排在前面。
算法描述:
- 把初始节点
$S_0$
放入Open
表中 - 如果
Open
表为空,则问题无解,失败退出 - 把
Open
表的第一个节点取出,放入Closed
表,并记该节点为n
- 考察节点
n
是否为目标节点,若是,则得到问题的解,成功退出 - 若节点
n
不可扩展,则转第二步 - 扩展节点
n
,将其子节点放入Open
表的尾部,并未每一个子节点设置指向父节点的指针,然后转到第二步。