【问题标题】:any advantages of using BFS over DFS for finding cycles in directed graph使用 BFS 优于 DFS 在有向图中查找循环的任何优势
【发布时间】:2014-03-17 18:06:06
【问题描述】:

这是一道面试题。

在有向图中如何找到循环?是否可以使用 BFS 找到,为什么 BFS 优于 DFS。

AFAIK,在这种情况下,DFS 显然是赢家,因为它很容易找到循环并且在内存方面更有效。那么在这种情况下使用 BFS 有什么好处,我不知道。

【问题讨论】:

  • BFS 可以找到最短周期。
  • 您能详细说明一下吗?
  • DFS 发现 any 循环。 BFS 可用于查找节点所属的最短循环

标签: algorithm graph-algorithm


【解决方案1】:

在做 BFS 时,你会发现循环只在开发 O(B^d) 节点时,其中B 是分支因子,d 是循环的大小 + 从源到它的标头。 (如果BFS的源在循环中,则循环的长度)。

DFS 无法保证这一点,并且可能会在找到循环之前发现整个图。

【讨论】:

    【解决方案2】:

    使用哪种算法找到解决方案的答案通常是“视情况而定”。

    它是什么样的图表?从统计上讲,周期发生在哪里?如果一个图很深,并且在浅层容易发生循环,那么 BFS 显然是更可取的。

    可以通过使用迭代深化来减轻 BFS 的内存使用。

    【讨论】:

      【解决方案3】:

      在有向图中,当且仅当back edge 存在时,才会出现循环。后边是指向自身或指向其祖先的边

      Why DFS and not BFS for finding cycle in graphs

      【讨论】:

      • 它没有回答如何在 BFS 中使用这个事实以及何时比 DFS 更好的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 2018-11-10
      相关资源
      最近更新 更多