使用BFS而非DFS在有向图中查找周期的任何优点

时间:2014-03-17 18:06:06

标签: algorithm graph-algorithm

这是一个面试问题。

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

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

3 个答案:

答案 0 :(得分:1)

在执行BFS时,您将在仅开发O(B^d)个节点时找到循环,其中B是分支因子,d是从源到的循环+标头的大小它。 (如果BFS的来源在循环中,则循环的长度)。

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

答案 1 :(得分:0)

使用哪种算法来找到解决方案的答案通常是"它取决于"。

是什么样的图表?统计上,周期发生在哪里?如果图形非常深,并且周期往往发生在浅部分,那么BFS显然是可取的。

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

答案 2 :(得分:-1)

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

Why DFS and not BFS for finding cycle in graphs