算法笔记之DFS与 BFS

基本思想:

深度优先搜索(DFS,Depth-First Search): 

它从某个状态开始,不断的转移状态直到无法转移状态,然后回退到前一步的状态,继续转移到其它状态,如此不继重复,直至找到最终的解。

宽度优先搜索(BFS,Breadth-First Search):

总是先搜索距离初始状态近的状态,也就是说,它是按照开始状态--->只需1次转移就可以到达的所有状态---->只需2次转移就可以到达的所有状态---->.....这样的顺序进行搜索,复杂度为 O(状态数X转移的方式)。 ----一般使用队列


实现方式:
1, DFS,一般使用栈的方式来实现,直接使用递归函数是最方便直接的;
2, BFS, 则使用队列的FIFO原则来实现BFS;
   
使用方式的比较:
1, 大多情况下使用深度优先搜索实现好,递归函数可以简短地编写,而且状态的管理也更简单,
2, 在求取最短路时深度优先搜索需要反复经过同样的状态,所以此时还是使用宽度优先搜索为好。也就是在求某经过路径时使用DFS, 在求最短路径时,则使用BFS.
使用内存的比较:宽度优先搜索会把状态逐个状态放入队列,因此通常需要与状态数成正比的内存空间。宽度优先搜索会把状态逐个状态放入队列,因此通常需要与状态数成正比的内存空间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值