盲目搜索算法

盲目搜索算法指的是不使用领域知识的不知情搜索算法。主要包括三种算法:深度优先搜索(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的完备和优选。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Travis.X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值