python 存储数据到有向无环图寻找路径_python判断无向图环是否存在的示例
时间: 2023-07-27 15:16:35 浏览: 100
python判断无向图环是否存在的示例
对于存储数据到有向无环图寻找路径,可以使用 Python 中的 networkx 库,具体实现可以参考以下代码:
```python
import networkx as nx
# 创建一个有向无环图
G = nx.DiGraph()
# 添加节点
G.add_node(1)
G.add_node(2)
G.add_node(3)
# 添加边
G.add_edge(1, 2)
G.add_edge(2, 3)
# 查找路径
path = nx.shortest_path(G, source=1, target=3)
print(path) # 输出 [1, 2, 3]
```
对于判断无向图环是否存在,可以使用深度优先搜索算法来实现,具体实现可以参考以下代码:
```python
def has_cycle(G, v, visited, parent):
visited[v] = True # 标记当前节点为已访问
for neighbor in G[v]:
if not visited[neighbor]:
if has_cycle(G, neighbor, visited, v):
return True
elif parent != neighbor:
return True
return False
# 创建一个无向图
G = {
1: [2, 3],
2: [1, 4],
3: [1, 4],
4: [2, 3, 5],
5: [4]
}
# 判断是否存在环
visited = {v: False for v in G}
has_cycle = False
for v in G:
if not visited[v]:
if has_cycle(G, v, visited, -1):
has_cycle = True
break
print(has_cycle) # 输出 True
```
需要注意的是,以上代码只适用于无向图,对于有向图需要使用拓扑排序等算法进行判断。
阅读全文