盲目搜索(Blind search)
不考虑问题本身的特性,按预定的路线进行搜索。
效率不高,不便于复杂问题的求解
宽度优先搜索(BFS)算法思想:
使用广度优先搜索在访问了起始顶点v 之后,由v 出发,依次访问v 的各个未曾被访问过的邻接顶点w1, w2, …, wt,然后再顺序访问w1, w2, …, wt 的所有还未被访问过的邻接顶点。再从这些访问过的顶点出发,再访问它们的所有还未被访问过的邻接顶点,… 如此做下去,直到图中所有顶点都被访问到为止。
深度优先搜索(NFS)算法思想:
DFS 在访问图中某一起始顶点v 后,由v 出发,访问它的任一邻接顶点w1;再从w1 出发,访问与w1邻接但还没有访问过的顶点w2;然后再从w2 出发,进行类似的访问,… ,如此进行下去,直至到达所有的邻接顶点都被访问过的顶点u 为止。接着,退回一步,退到前一次刚访问过的顶点,看是否还有其它没有被访问的邻接顶点。如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的访问;如果没有,就再退回一步进行搜索。重复上述过程,直到连通图中所有顶点都被访问过为止。
有界深度优先搜索
过程总体上按深度优先算法方法进行,但对搜索深度需要给出一个深度限制dm,当深度达到了dm的时候,如果还没有找到解答,就停止对该分支的搜索,换到另外一个分支进行搜索。
改进方法:(迭代加深搜索)
先任意给定一个较小的数作为dm,然后按有界深度算法搜索,若在此深度限制内找到了解,则算法结束;如在此限制内没有找到问题的解,则增大深度限制dm,继续搜索。