【问题标题】:Finding loops in graph having an adjacency list (data structure)在具有邻接列表(数据结构)的图中查找循环
【发布时间】:2026-01-20 00:50:01
【问题描述】:

我正在尝试查看有向图(或实际上是多个图)是否有循环。 我有一个如下的邻接列表:

1: [4]
4: [5]
5: [6]
9: [10]
10: [11]
11: [12]
12: [13]
13: [10]

我能够创建算法来查找图是否有循环并且它正在工作,但我现在卡住了,因为它在该列表上不起作用,因为该邻接列表上有 2 个断开连接的图。

所以我的问题是如何找到邻接列表中有多少个图来分别处理它们,或者是否有更好的方法来处理这个问题,我唯一的目的是找出任何一个中是否存在循环列表中可能的图表,只是一个真/假。

【问题讨论】:

    标签: algorithm graph adjacency-list


    【解决方案1】:

    算法

    让我们在图中执行一系列深度优先搜索。那些。从我们从未访问过的每个顶点开始,我们将启动深度优先搜索,当进入顶点时将其涂成灰色,退出时将其涂成黑色。而如果深度优先搜索试图去灰色的顶点,这意味着我们找到了一个循环(如果图是无向的,那么从某个顶点开始深度优先搜索试图去祖先的情况是不存在的)计算)。 循环本身可以通过遍历祖先数组来恢复。

    Here你会找到一个相当清晰和好的解决方案。

    【讨论】:

    • 谢谢,您的想法为我指明了正确的方向!