假如图G采用邻接表储存,利用广度优先遍历算法,求顶点u到顶点v的最短路径python代码
时间: 2024-03-18 09:40:23 浏览: 76
假设图G采用邻接表储存,每个顶点的邻接表存储了以它为起点的所有边和对应的终点。利用广度优先遍历算法,可以求顶点u到顶点v的最短路径,Python代码如下:
```python
def bfs_shortest_path(G, u, v):
queue = [(u, [u])]
visited = set()
while queue:
(node, path) = queue.pop(0)
if node not in visited:
visited.add(node)
for neighbor in G[node]:
if neighbor == v:
return path + [neighbor]
else:
queue.append((neighbor, path + [neighbor]))
return None
# 示例
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
print(bfs_shortest_path(graph, 'A', 'F'))
# 输出: ['A', 'C', 'F']
```
在上述示例中,我们定义了一个图G,它采用字典表示邻接表。然后,我们调用`bfs_shortest_path()`函数,并传入图G,以及起点u和终点v。该函数使用广度优先遍历算法,找到起点u到终点v的最短路径,并以列表的形式返回。在示例中,我们找到了从顶点A到顶点F的最短路径:['A', 'C', 'F']。
阅读全文
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20250102104920.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)