一、搜索漫谈
把问题表示为树(问题的解空间就是树),转换为树搜索问题
二、搜索的优化
1、爬山法
(1)原理:
是优化的深度优先搜索策略,使用贪心方法确定搜索的方向。使用启发式测度来排序节点扩展的顺序。深度优先是可着一条路拓展到底,而爬山法是让它在拓展的时候,先找启发式测度最小拓展。
(2)具体实现:
① 构造由根组成的单元素栈S
② If栈顶是目标节点,就停止
③ 否则弹出栈顶S
④ 将S的子节点按照启发测度由大到小的顺序压入S
⑤ 如果栈空就失败,否则就回到2,进行循环
2、Best-First搜索算法:
(1)原理:
① 结合深度优先和广度优先的优点;
② 根据一个评价函数,在目前产生的左右节点中选择具有最小评价函数值的节点进行扩展;
③ 具有全局优化观念,而爬山策略仅具有局部优化观念
BF是不管当前的点是按照深度优先还是广度优先,只要它的评价函数最小,我就先扩展它。
(2)具体实现:
(2) 使用方法:
① 使用评价函数构造一个堆H,首先构造由根组成的单元素堆
② 如果堆的根r 是目标节点,那么就停止
③ 否则从堆中删除r ,