python判断无向图节点成环
时间: 2023-07-08 09:30:50 浏览: 92
python判断无向图环是否存在的示例
可以使用深度优先搜索(DFS)来判断无向图节点是否成环。具体步骤如下:
1. 初始化一个空的集合visited,用于记录已经遍历过的节点。
2. 对于无向图中的每个节点v,如果v不在visited集合中,则从v开始进行DFS遍历。
3. 在DFS遍历中,对于每个节点u,如果u不在visited集合中,则将u加入visited集合,并对u的所有未被访问过的邻居节点进行DFS遍历。
4. 在DFS遍历中,如果遇到一个已经在visited集合中的节点w,则说明无向图中存在环,返回True。
5. DFS遍历结束后,如果没有发现环,则返回False。
下面是使用Python实现的代码:
```python
def has_cycle(graph):
visited = set()
def dfs(node, parent):
visited.add(node)
for neighbor in graph[node]:
if neighbor == parent:
continue
if neighbor in visited:
return True
if dfs(neighbor, node):
return True
return False
for node in graph:
if node not in visited:
if dfs(node, None):
return True
return False
```
其中,graph是一个字典,表示无向图中每个节点的邻居节点。例如,对于无向图{(1, 2), (2, 3), (3, 1)},可以表示为{1: [2, 3], 2: [1, 3], 3: [1, 2]}。
阅读全文