算法之宽度搜索和深度搜索

本文介绍了宽度优先搜索(BFS)和深度优先搜索(DFS)两种图的搜索算法。BFS从初始节点开始逐层向下扩展,适用于寻找最短路径问题,如走迷宫。DFS则沿着树的深度遍历,适用于遍历所有可达节点。文章通过走迷宫的例子进一步阐述了这两种搜索策略的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

宽度优先搜索

定义:宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。

 

之所以称之为宽度优先算法,是因为算法自始至终一直通过已找到和未找到顶点之间的边界向外扩展,就是说,算法首先搜索和s距离为k的所有顶点,然后再去搜索和S距离为k+l的其他顶点。

 

搜索过程:从初始结点开始,逐层向下扩展,即第n层搜索未完成,不得进入下一层搜索

一、初始结点入队,进入循环

二、取出队列的第一个元素

三、判断该结点是不是目标结点,如果是目标结点,则问题解决,跳出循环

四、如果该结点不是目标结点,判断其是否能够扩展,若不能,跳到步骤二

五、如果该结点能扩展,将其子结点放入队列的尾部

六、跳到步骤二

 

经典问题(走迷宫)

给定一个二维数组 inta[10][10] = {0 , 1 , 0 , 0 , 0

0 , 1 , 0 , 1 , 0

0 , 0 , 0 , 0 , 0

0 , 1 , 1 , 1 , 0

0 , 0 , 0 , 1 , 0 } ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值