本文主要是介绍人工智能 —— 状态空间的盲目搜索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、基本过程
(1)先把问题的初始状态作为当前扩展结点对其进行扩展,生成一组子结点
(2)然后检查问题的目标状态是否出现在这些子结点中。若出现,则搜索成功,找到了问题的解;若没出现,则再按照某种搜索策略从已生成的子结点中选择一个结点作为当前扩展结点。
(3)重复上述过程,直到目标状态出现在子结点中或者没有可供操作的结点为止。所谓对一个结点进行“扩展”是指对该结点用某个可用操作进行作用,生成该结点的一组子结点。
二、算法的数据结构和符号约定
Open表:用于存放刚生成的结点
Closed表:用于存放已经扩展或将要扩展的结点
S0:用表示问题的初始状态
三、广度优先搜索
(1)基本思想
从初始结点S0开始逐层向下扩展,在第n层结点还没有全部搜索完之前,不进入第n+1层结点的搜索。Open表中的结点总是按进入的先后排序,先进入的结点排在前面,后进入的结点排在后面。
(2)搜索算法的过程
- 把初始结点S0放入Open表中;
- 如果Open表为空,则问题无解,失败退出;
- 把Open表的第一个结点取出放入Closed表,并记该结点为n;
- 考察n是否为目标结点。若是,则得到问题的解,成功退出;
- 若结点n不可扩展,则转第(2)步;
这篇关于人工智能 —— 状态空间的盲目搜索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!