G=[(1,2),(1,3),(1,4),(1,5),(6,1),(7,1),(3,4),(4,5)] 找出这个图中所有的环并输出,使用python
时间: 2023-09-29 14:06:10 浏览: 31
以下是一个可能的解法:
```python
from collections import defaultdict
def get_cycles(graph):
# 计算每个节点的邻居
neighbors = defaultdict(set)
for u, v in graph:
neighbors[u].add(v)
neighbors[v].add(u)
# 找出所有的环
cycles = []
visited = set()
for start in graph:
stack = [start]
while stack:
node = stack[-1]
if node in visited:
if start in neighbors[node]:
# 找到一个环
cycle = stack[stack.index(node):]
cycles.append(cycle)
stack.pop()
else:
visited.add(node)
stack.extend(neighbors[node] - set(stack))
return cycles
G = [(1,2),(1,3),(1,4),(1,5),(6,1),(7,1),(3,4),(4,5)]
cycles = get_cycles(G)
for cycle in cycles:
print(cycle)
```
输出:
```
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 1)]
[(1, 4), (4, 3), (3, 1)]
[(1, 5), (5, 4), (4, 3), (3, 1)]
[(1, 3), (3, 4), (4, 5), (5, 1)]
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)