试基于图的深度优先搜索策略写一算法, 判别以邻接表方式存储的有向图中是否存 在由顶点 v i 到顶点 v j 的路径( i≠ j )
时间: 2024-12-20 21:18:05 浏览: 5
基于图的深度优先搜索(DFS,Depth First Search)策略,我们可以编写一个简单的算法来判断从顶点 vi 到顶点vj是否存在路径。以下是用Python编写的算法:
```python
def has_path(graph, start, end):
# graph是一个邻接列表,表示有向图,如 {v1: [v2], v2: [v1, v3], ...}
def dfs(node, target):
if node == target:
return True
for neighbor in graph[node]:
if dfs(neighbor, target):
return True
return False
# 调用DFS函数从起点开始查找
return dfs(start, end) if start != end else False
# 使用示例:
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
print(has_path(graph, 'A', 'F')) # 如果存在路径会返回True,反之False
```
在这个算法中,`has_path` 函数接收图、起始顶点和目标顶点作为参数。它首先检查起始顶点是否就是目标顶点,如果是则直接返回True。然后对起始顶点的所有邻居递归地应用DFS,如果发现任何一个邻居通过 DFS 找到了目标,则说明从起始顶点到目标顶点存在路径。
阅读全文