什么时候需要恢复现场
一共两类搜索,提高课搜索里有详细介绍。如果是棋盘这种整体作为状态时,才需要恢复现场。如果是每个格子作为状态时,不需要恢复现场。
内部搜索:棋盘内的一个点到另一个点(不需要恢复)
外部搜索:整个棋盘看作一个点(需要恢复)
比如
c
|
a<- x ->b
|
d
由x扩展出来的a,b,c,d,x的状态就没有改变所以就不需要恢复
说人话就是,这个点还能不能用(下次用这个点的时候状态会不会改变,如果每次用的时候状态都一样就需要恢复),如果只用这一次不再用了就不需要恢复,否则就需要恢复
只有可行性路径搜索(最优性也是需要的因为他还要搜其他路)和连通性的dfs不需要恢复现场, 其他的dfs题都写吧~
剪枝:通过当前状态避免一些不必要的遍历过程,相当于剪掉搜索树的某些枝条。一般分为可行性剪枝(如一个迷宫,问能否从起点到达目标点之类),最优性剪枝(最小步数,求最值,这个很好剪),迭代加深(A*(太菜了没学会),没怎么了解)适合深度不是很深,但是每次扩展的结点数很多的搜索问题。
tql
nb