使用 BFS 检查循环图

Checking a graph for cycles using BFS

假设我们用广度优先搜索(BFS)在图G上构造一棵树,并确定图中没有边连接BFS树中属于同一层的节点。这是否意味着该图没有循环?

不,不是。考虑以下有向图:

如果我们从节点1开始BFS,则搜索在节点3结束。每个顶点都在一个单独的层中,因此图中没有连接属于同一层的节点的边。但是,该图包含一个循环。

我们还可以构造一个无向图的反例:

第一层包含节点1。第二层包含节点2和4。第三层包含节点3。唯一有多个节点的层是第二层,它的两个节点没有连接边缘。同样,同一层节点之间的图中没有边,但图中包含一个循环。