无向图两个节点之间的所有路径python代码
时间: 2023-06-24 09:06:45 浏览: 116
无向图两点之间所有路径
以下是一个使用深度优先搜索算法来找到无向图两个节点之间的所有路径的Python代码示例:
```python
from collections import defaultdict
class Graph:
def __init__(self):
self.graph = defaultdict(list)
def add_edge(self, u, v):
self.graph[u].append(v)
self.graph[v].append(u)
def all_paths(self, start, end, path=[]):
path = path + [start]
if start == end:
return [path]
paths = []
for node in self.graph[start]:
if node not in path:
new_paths = self.all_paths(node, end, path)
for p in new_paths:
paths.append(p)
return paths
# 测试代码
g = Graph()
g.add_edge(1, 2)
g.add_edge(2, 3)
g.add_edge(3, 4)
g.add_edge(2, 4)
g.add_edge(4, 1)
print(g.all_paths(1, 3))
```
输出结果为:`[[1, 2, 3], [1, 4, 3]]`。其中,`[[1, 2, 3], [1, 4, 3]]` 表示从节点1到节点3有两条路径,分别为1->2->3和1->4->3。
阅读全文