1.启发法
例如二维勾股定理推广到三维
2.爬山法
一种贪心算法
山麓问题:可能困在局部最大值中,即能够看到山顶,实际却不可达
高原问题:有相似的良好的局部最大值,但必须移动到另一个高原
山脊问题:访问百货公司,但在错误的楼层中
解决方法:回溯到上一个节点,尝试不同的方向
3.最陡爬坡法
有点像梯度下降
4.最佳优先搜索算法
维持开放列表和封闭列表
封闭节点不在探索,形成解的基础
开放节点是搜索边缘的节点,以后可能进一步探索
解不一定是最佳
5.集束搜索
搜索通过搜索树逐层扩展,但只有最好的W节点得到了扩展,W称为集束
最优解:
6.分支定界法(统一代价搜索)
通常,把全部可行解空间反复地分割为越来越小的子集,称为分支;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。
解决包括TSP,01背包问题
7.低估值的分支定界法
低估剩余距离的值来增强分支定界法
8.采用动态规划的分支定界法
即剪枝
9.A*搜索算法
综合7和8
高级搜索算法:
10.约束满足搜索
在解决问题前简化问题
11.与或树
处理的问题包含博弈或拼图
12.双向搜索
有可能产生“前沿问题”,即前后两端搜索试图相遇会产生指数级存储需求