首先先来说明常见的搜索方式:(本人目前遇到的 以后遇到新的搜索方法继续更新)
1.dfs(深度优先搜索)。2.bfs(广度优先搜索)3.迭代加深搜索(IDA*)
一.dfs
搜索方式是按照人为设定方向进行搜索不撞南墙不回头 所以适合做找解是否存在的问题 找最优解一般不会用
其优点是空间开销少(因为状态的记录利用回溯是可以用一块内存空间来实现的)
二,bfs
搜索方式是由当前节点 同时向下一次可能方向的节点拓展 适用于找最优解问题
其缺点是空间开销大 因为 每个节点必须记录目前的状态信息(不像dfs可以用一块内存做修改)
三,迭代加深搜索
搜索方式是利用dfs 模拟bfs 我们每次设一个最大层maxd 表示搜索的最大深度 当dfs搜索到此深度是回溯
不难脑补出dfs 模拟bfs的画面 有许多看似bfs的题目要用此方法解决 因为这个省空间 (甚至省时间 当bfs转移代价过大时 而dfs的转移可能是o(1)的)(uva 旋转游戏)