Graph DFS,在无向图中寻找圆

Graph DFS,在无向图中寻找圆,graph,geometry,depth-first-search,Graph,Geometry,Depth First Search,这是我处理这个问题的方法。但这似乎并不像我预期的那样有效。怎么了 def dfs(图形、开始、访问=无): ''查找图中是否有圆,如果有,返回True'' 如果访问==无: 访问=设置() 已访问。添加(开始) 对于图形[开始]中的下一步: 如果下一次访问: 返回真值 其他: dfs(图表、下一步、已访问) return False由于它是一个无向图,您必须照顾当前节点的父节点,假设您从节点1到节点2,然后在遍历节点2的边缘时,您将再次找到节点1,并且它已经被访问过,因此答案将返回true,即循

这是我处理这个问题的方法。但这似乎并不像我预期的那样有效。怎么了

def dfs(图形、开始、访问=无):
''查找图中是否有圆,如果有,返回True''
如果访问==无:
访问=设置()
已访问。添加(开始)
对于图形[开始]中的下一步:
如果下一次访问:
返回真值
其他:
dfs(图表、下一步、已访问)

return False

由于它是一个无向图,您必须照顾当前节点的父节点,假设您从节点1到节点2,然后在遍历节点2的边缘时,您将再次找到节点1,并且它已经被访问过,因此答案将返回true,即循环存在,但情况可能并非如此,因此,您需要添加另一个参数来检查相邻节点是否不是当前节点的父节点。在这里,父节点是指DFS遍历中当前节点的前一个节点。

由于它是一个无向图,您必须照顾当前节点的父节点,假设您从节点1到节点2,然后,在遍历节点2的边缘时,您将再次找到节点1,并且它已经被访问过,因此答案将返回true,即循环存在,但情况可能并非如此,因此您需要添加另一个参数来检查相邻节点是否不是当前节点的父节点。在这里,父节点是指DFS遍历中当前节点的直接前置节点