1.Hill Climbing
不同于DFS或BFS,爬山法采用了启发式的搜索策略。通过使用评估函数,根据具体情况,扩展评估函数值大的或者小的进行扩展节点。
对于8-puzzle问题,f(n)表示节点n处误置个数。按f(n)大的先入栈,先扩展f(n)小的。每次扩展都是扩展当前,也即局部最小的节点。
与DFS最大的差别就是扩展规则,从DFS的按顺序扩展,变为按f(n)扩展,就这点差别。
2.Best-First Search
BestFS也是使用了评估函数f(n),但是它使用堆来记录所有节点的f(n),每次从所有的f(n)里选最小的,进行扩展。
从Hill Climbing的局部变到全局。
嗯,就这点差别。
3.A*
跟BestFS差不多,也是全局找,就是f(n)=g(n)+h*(n),又因为h*(n)不可知,又用了h(n)来估计。
4.Backtracing
通过有策略的DFS,来不去搜索那些根本不可能产生最优解的节点。
比如讲,当前可行解是10,你在搜索另一个分支的时候,还没结束就已经20了,显然没有必要继续搜索下去了。
通过约束函数,界函数来进行剪枝,减少不必要的搜索。
5.Branch Bound
分支限界是Backtracking的增强版。
通过上界、下界的共同作用,加快剪枝。
先写这么多吧。