这一章主要介绍了搜索求解的相关算法。分别是启发式搜索,对抗搜索以及蒙特卡洛树搜索。
一·搜索算法:启发式搜索(有信息搜索)
在搜索的过程中利用与所求解问题相关的辅助信息,其代表算法为
贪婪最佳优
先搜索
(Greedy best-first search)
和
A*
搜索
。
下面以两个城市之间的最短距离为例介绍启发式搜索。
1.1搜索算法:贪婪最佳优先搜索
贪婪最佳优先搜索
(Greedy best-first search)
:评价函数
f(n)
=
启发函数
h(n)。
从Arad节点开始,寻找与之相邻的后继节点。寻找后继节点的依据是根据Figure3.22中的数据选择
h(n)最小的节点作为后继节点,以此类推,直到扩展到Bucharest。
不难看出此方法存在一些不足之处:
1.贪婪最佳优先搜索不是最优的。经过
Sibiu
到
Fagaras
到
Bucharest
的路径比经过
Rimnicu Vilcea
到
Pitesti
到
Bucharest
的路径要长
32
公里。
2.
启发函数代价最小化这一目标会对错误的起点比较敏感。考虑从
Iasi
到
Fagaras
的问题,由启发式
建议须先扩展
Neamt
,因为其离
Fagaras
最近,但是这是一条存在死循环路径
。
3.贪婪最佳优先搜索也是不完备的。所谓不完备即它可能沿着一条无限的路径走下去而不回来做其他的选择尝试,因此无法找到最佳路径这一答案。
4.在最坏的情况下,贪婪最佳优先搜索的时间复杂度和空间复杂度都是O(
),其中𝑏是节点的分支因子数目、𝑚是搜索空间的最大深度。
因此,需要设计一个良好的启发函数。于是就有了A*
算法 。
1.2 搜索算法:A*算法
定义评价函数:
f(𝑛) = g(𝑛) + ℎ(𝑛)

该博客主要介绍搜索求解的相关算法,包括启发式搜索(贪婪最佳优先搜索、A*算法)、对抗搜索(最小最大搜索、Alpha - Beta剪枝搜索)以及蒙特卡洛树搜索(单一状态蒙特卡洛规划、上限置信区间、蒙特卡洛树搜索)。
最低0.47元/天 解锁文章
1263

被折叠的 条评论
为什么被折叠?



