盲目搜索算法指的是不使用领域知识的不知情搜索算法。主要包括三种算法:深度优先搜索(DFS)广度优先搜索(BFS)迭代加深(DFS-ID)的深度优先搜索

è¿éåå¾çæè¿°

深度优先搜索:1->2->3  1->2->4->5 1->6->7 1->6->8

广度优先搜索:1->2 1->6 1->2->3 1->2->4 1->6->7 1->6->8 1->2->4->5

每种搜索算法都有一个共同属性,即维护两个列表:开放列表(OPEN)封闭列表(CLOSE)

开放列表:包含树中所有等待搜索(或扩展)的节点 。

封闭列表:包含所有已经探索过的节点和不再考虑的节点。

深度优先搜索是用表示开放列表,栈是先进后出的数据结构。

广度优先搜索是用队列表示开放列表,队列是先进先出的数据结构。

以上图为例,假设5是终点

深度优先搜索:

Open=[1];                          Closed=[]

Open=[2,6];                       Closed=[1]

Open=[3,4,6];                    Closed=[2,1]

Open=[4,6];                       Closed=[3,2,1]

Open=[5,6];                       Closed=[4,3,2,1]

广度优先搜索:

Open=[1];                          Closed=[]

Open=[2,6];                       Closed=[1]

Open=[6,3,4];                    Closed=[2,1]

Open=[3,4,7,8];                 Closed=[6,2,1]

Open=[4,7,8];                    Closed=[3,6,2,1]

Open=[7,8,5];                    Closed=[4,3,6,2,1]

Open=[8,5];                       Closed=[7,4,3,6,2,1]

Open=[5];                          Closed=[8,7,4,3,6,2,1]

 

选深度优先搜索还是广度优先搜索?

当树很深、分支因子不大、在树中解出现的位置相对较深时,选择深度优先搜索。

当搜索树的分支因子不太大、在树中解出现的位置在合理的深度级别、路径不是非常深的时候,选择广度优先搜索。

 

迭代加深的深度优先搜索(DFS-ID)

DFS-ID使用深度界限零,执行DFS的状态空间。

以上图为例:

DFS-ID:1->2 1->6 2->3 2->4->5 6->7 6->8 4->5

使用DFS-ID若没有找到目标,就会执行另一个DFS,深度界限为1,每次迭代深度界限加1,搜索都要重新开始。

 

总结

BFS是完备和优选的(在各种约束下),但过量的空间需求使其在应用上受到阻碍。

DFS既不是完备也不是优选的,DFS可能变得非常长或迷失在无限的路径中,但是空间需求合理。

DFS-ID同时具备DFS和BFS的有利性,即DFS的合理空间以及BFS的完备和优选。

 

 

 

 

 

 

 

 

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐