搜索问题的形式化定义

这里讨论的是无信息的搜索算法的形式化定义。

它的前提是:

1.初始状态已知。

2.环境已知。

在1、2下可以推得:3.每一步行动之后的状态已知。

在这样的前提下,我们讨论问题的形式化定义。

一个问题可以用5个组成部分形式化描述:

1.初始状态: initialstate : state

2.行动:getaction(s) : state -> action set //给定状态得到该状态下可采取的行动

3.转移模型/行动的描述:result(s,a): state * action -> state //给定状态以及采取的行动,得到后继状态

4.目标测试:test(s): state -> bool //确定给定的状态是不是目标状态

5.路径耗散: cost(s,a,s'):state * action * state -> costvalue

以上5个部分组成一个数据结构,作为算法的输入,解是从初始状态到目标状态的一组行动序列。所有解中总耗散最小的为最优解。

algorithm(problem): problem->action seq

可以看出,如果把状态看作一个点、行为就是一条边。从而通过输入的问题我们就能建立出一张对应的图。那么求解问题的过程就是图的搜索过程。

搜索的步骤:

1.确定当前状态是否是目标状态

2.根据当前可采取的行动拓展状态得到新的状态集。

3.从中选择一个状态继续考虑。

不同搜索之间的差别在于如何选择一个状态--即搜索策略。

猜你喜欢

转载自www.cnblogs.com/sleeploke/p/9155905.html
今日推荐