啥使用用广度搜索(bfs)啥时候用深度搜索(dfs)
【啥使用用广度搜索(bfs)啥时候用深度搜索(dfs)】 参见九章里面马克助教的回答 "https://www.jiuzhang.com/qa/623/"
1.BFS是用来搜索最短径路的解是比较合适的,比如求最少步数的解,最少交换次数的解,因为BFS搜索过程中遇到的解一定是离根最近的,所以遇到一个解,一定就是最优解,此时搜索算法可以终止。这个时候不适宜使用DFS,因为DFS搜索到的解不一定是离根最近的,只有全局搜索完毕,才能从所有解中找出离根的最近的解。(当然这个DFS的不足,可以使用迭代加深搜索ID-DFS去弥补)2.空间优劣上,DFS是有优势的,DFS不需要保存搜索过程中的状态,而BFS在搜索过程中需要保存搜索过的状态,而且一般情况需要一个队列来记录。3.DFS适合搜索全部的解,因为要搜索全部的解,那么BFS搜索过程中,遇到离根最近的解,并没有什么用,也必须遍历完整棵搜索树,DFS搜索也会搜索全部,但是相比DFS不用记录过多信息,所以搜素全部解的问题,DFS显然更加合适。
■网友
这个问题太泛了,依业务需要而定。哪种方法更容易找到你要的东西,就用哪种搜索。
■网友
根据问题的规模和估计的解得位置来看吧。然后就应该是内存和栈空间的使用了吧。
推荐阅读
- 为啥使用迅雷下东西会断网
- 苹果为啥要推出5.5寸iPhone ? iPad mini 2 与它该怎么样区分使用用途
- 电路中的ESD是啥使用Verilog实现的吗
- 为啥使用speed test测速软件测试联通4g的速度与平时下载时不同
- 稀疏编码中,为啥使用对数代价函数作为目标函数的惩罚项可以获得稀疏解
- 微软SoRa软件无线电平台有啥使用技巧
- 在Rcnn中为啥使用IoU非极大值抑制?
- 最初为啥使用微信,以及离放弃微信还有多久?
- 父母的高度决定视野的广度吗?
- 在企业内部网络建设过程中为啥使用VLSM做子网划分