局部搜索 local search
- 不是系统的探索从初始状态开始的路径,考虑对某个或某些状态评价和修改
- 适用于关注solution的状态,而不是路径的代价
- algorithm: simulated annealing模拟退火,genetic algorithm遗传
- 通常不保留搜索路径
- 内存占用小,在系统算法难以解决的大型的甚至无限的问题找到合理解
- 状态空间地形图:横轴是状态空间,纵轴是启发式代价函数或目标函数。代价函数:找到最低点。目标函数:找到最高点。
爬山法 hill-climbing
以八皇后问题为例。
- local search一般用完整状态形式化 (complete-state formulation),也就是每个状态都在棋盘上放8个皇后,每列一个。
- successor 后继:移动某个皇后到这列的另一个位置,一个状态的后继有56个。
- 启发式评估函数 h h h是形成相互攻击的皇后对数量,它的全局最小值为0,也就是找到解才会达到这个值。
- 如果有多个后继都有最小的 h h h值,随机选择一个。
- 当遇到局部最大值(较低的山峰、山脊、高原)会卡住。(山肩有可能卡住)
对爬山法的优化:
- 允许侧向移动的爬山法:在不能向上的时候允许侧向移动(有最大次数限制避免在