Algorithm DFS和BFS的实际用途是什么?

Algorithm DFS和BFS的实际用途是什么?,algorithm,graph,graph-algorithm,depth-first-search,breadth-first-search,Algorithm,Graph,Graph Algorithm,Depth First Search,Breadth First Search,我在今天的采访中被问到了这个问题。我告诉他们它的遍历和DFS可以用来查看图是否连通。他们说这太简单了 DFS和BFS的一些更重要的实际用途是什么?。当我听到DFS或BFS时,我总是想到这一点 注意:这并不能直接回答您的问题 在阅读你的问题时,我想到了以下几点: DFS: 在无限的树上不可用(因为您可能会沿着无限的树枝往下走)。或者,如果搜索图中存在循环,您必须采取预防措施,避免永远在循环中运行 您很可能不会首先找到最近的解决方案 您只需要O(深度)内存 BFS 您找到的第一个解决方案是最近

我在今天的采访中被问到了这个问题。我告诉他们它的遍历和DFS可以用来查看图是否连通。他们说这太简单了


DFS和BFS的一些更重要的实际用途是什么?

。当我听到DFS或BFS时,我总是想到这一点

注意:这并不能直接回答您的问题


在阅读你的问题时,我想到了以下几点:

DFS:

  • 在无限的树上不可用(因为您可能会沿着无限的树枝往下走)。或者,如果搜索图中存在循环,您必须采取预防措施,避免永远在循环中运行
  • 您很可能不会首先找到最近的解决方案
  • 您只需要O(深度)内存
BFS

  • 您找到的第一个解决方案是最近的解决方案之一
  • 您将需要相当多的内存,因为搜索树可能已经变得非常广泛,深度非常小
  • 无需任何预防措施即可在无限树和循环结构上工作
当然,你会在维基百科上找到更多

BFS:

  • 最小生成树或最短路径
  • 点对点网络
  • 搜索引擎爬虫
  • 社交网络网站-找到与使用BFS的人有给定距离k的人,直到k级
  • DFS:

  • 最小生成树
  • 拓扑排序
  • 解决有一个解决方案的谜题/迷宫

  • Wikipedia的页面和应用程序部分。Pham Trung。为什么没有正确的答案?DFS和BFS确实有实际应用,不是吗?如果有这么多正确答案,你怎么能将答案标记为正确,而且这个问题永远不会有准确完整的答案。但是有一个正确的答案。有DFS和BFS的应用。如果要遵循你的逻辑,那么很多关于SO的最受欢迎的问题都必须被视为离题。此外,不同的人以不同的角度回答,这肯定会帮助提问者更好地理解问题。@Smith42女士,是的,这也非常有助于理解。:)哈哈,这是一个非常有趣的例子。但是如果你有一个节点有无限多的子节点,BFS和DFS有同样的缺点。@Jim Mischel:你是对的。但我还没有在现实生活中看到这一点。你有例子吗?没有,但是我也没有无限深树的例子。但是考虑一些类似的情况,其中根节点可以有一个非常大的(基本上无限的)数量的孩子。如果你一直添加节点而不执行delete-min,就会发生这种情况。@Jim Mischel:Infinite depth通常是由于状态空间太大而无法跟踪循环的结果。例如,在国际象棋(没有时间限制)中,实际上并不存在一个有无限多步的游戏,但出于实际原因,你可能不想努力检测循环。有趣的是,人们有时使用“真实世界”和“实际”这两个术语,然后继续列出他们认为适用的计算主题。我本以为“建造能承载更多重量的桥梁”或“提高飞机燃油消耗效率”等答案会更好(但在本例中并不准确)。