一、最基本的搜索算法:回溯算法
回溯算法是所有搜索算法中最为基本的一种算法,其采用了一种“走不通就掉头”思想作为其控制结构。
二、搜索算法分类:bfs与dfs
dfs:栈的思想(先进后出)优先兄弟节点。容易超时,多用于求可行解。
bfs:队列的思想(先进先出)优先儿子节点。容易消耗大量内存,多用于求最优解。
总结:搜索算法从最终的算法实现上来看,都可以划分成两个部分——控制结构(扩展节点的方式)和产生系统(扩展节点),
而所有的算法优化和改进主要都是通过修改其控制结构来完成的。其实,在这样的思考过程中,我们已经不知不觉地将一个具体的问题抽象成了一个图论的模型——树,
即搜索算法的使用第一步在于搜索树的建立。
第二部分 搜索算法的优化
一、双向广度搜索
广度搜索虽然可以得到最优解,但是其空间消耗增长太快。但如果从正反两个方向进行广度搜索,理想情况下可以减少二分之一的搜索量,从而提高搜索速度。
二、分支定界(俗称剪枝)
分支定界实际上是A*算法的一种雏形,为了有效地选择下一扩展结点,以加速搜索的进程,在每一活结点处,计算一个函数值(限界),
并根据这些已计算出的函数值,从当前活结点表中选择一个最有利的结点作为扩展结点,使搜索朝着解空间树上有最优解的分支推进,以便尽快地找出