首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >广度优先或深度优先搜索

广度优先或深度优先搜索
EN

Stack Overflow用户
提问于 2010-05-13 03:33:10
回答 4查看 5.4K关注 0票数 7

我知道这个算法是如何工作的,但不能决定何时使用哪种算法?

是否有一些指导原则,其中一个比其他或任何考虑因素表现更好?

非常感谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-13 03:38:26

如果你想找到一个步数最短的解决方案,或者如果你的树有无限的高度(或者非常大),你应该首先使用广度。

如果你有一棵有限的树,并且想要用最少的内存遍历所有可能的解决方案,那么你应该首先使用深度。

如果你正在寻找下棋的最佳走法,你可以使用iterative deepening,它是两者的组合。

IDDFS结合了深度优先搜索的空间效率和广度优先搜索的完整性(当分支因子有限时)。

票数 17
EN

Stack Overflow用户

发布于 2010-05-13 04:22:39

如果图有一些有意义的“自然分层”(例如,越近的节点代表“更接近”的结果),并且目标结果可能位于离起点更近的位置,或者起点“搜索成本更低”,则BFS通常很有用。

当你想找到最短路径时,BFS是一个自然而然的选择。

如果您的图是无限的或按语法生成的,那么您可能希望在冒险进入更近的层之前搜索更近的层,因为在到达更近的节点之前探索远程节点的成本很高。

如果由于内存/磁盘/局部性问题,访问更多的远程节点会更加昂贵,那么BFS可能会更好。

票数 1
EN

Stack Overflow用户

发布于 2010-05-13 04:24:45

使用哪种方法通常取决于应用程序(即,例如,拓扑排序需要深度优先搜索,而用于寻找最大流的Ford-Fulkerson算法需要广度优先搜索。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2822139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档