Python判断无向图中是否存在环
时间: 2023-10-07 22:09:09 浏览: 87
可以使用深度优先搜索(DFS)来判断无向图中是否存在环。
具体的实现步骤如下:
1. 初始化一个visited数组来表示每个节点是否被访问过。初始时所有节点都未被访问过。
2. 对于无向图中的每个节点,如果该节点未被访问过,则从该节点开始进行深度优先搜索。
3. 在深度优先搜索的过程中,对于每个相邻的节点,如果该节点未被访问过,则将其标记为已访问,并将其加入递归栈中。
4. 如果在深度优先搜索过程中遇到一个已经被访问过的节点,则说明存在环,返回True。
5. 如果深度优先搜索完所有节点后都没有发现环,则返回False。
下面是Python实现代码:
```python
def isCycleUtil(v, visited, parent, graph):
visited[v] = True
for i in graph[v]:
if not visited[i]:
if isCycleUtil(i, visited, v, graph):
return True
elif parent != i:
return True
return False
def isCycle(graph):
visited = [False] * len(graph)
for i in range(len(graph)):
if not visited[i]:
if isCycleUtil(i, visited, -1, graph):
return True
return False
```
其中,graph是一个邻接表,表示无向图中每个节点的相邻节点。如果isCycle(graph)返回True,则说明无向图中存在环。
阅读全文