邻接表创建无向图算最短路径
时间: 2023-11-05 11:17:15 浏览: 84
无向图最短路径
创建无向图的邻接表可以使用数组和链表结合的方式,每个数组元素对应一个顶点,每个数组元素中存放一个链表,链表中存放与该顶点相邻的其他顶点。
对于求无向图中两个顶点之间的最短路径,可以使用广度优先搜索算法。具体步骤如下:
1. 创建一个队列,用于存放待访问的顶点。
2. 初始化距离数组,表示起点到其他顶点的距离,将起点的距离初始化为0,其余顶点的距离初始化为正无穷。
3. 将起点加入队列中。
4. 从队列中取出一个顶点,遍历该顶点的邻接表中的所有顶点,如果该顶点的距离还未被更新,则更新该顶点的距离,并将其加入队列中。
5. 重复步骤4,直到队列为空。
6. 最终距离数组中存储的即为起点到其他顶点的最短距离。
以下是示例代码实现:
```python
def shortest_path(adj_list, start):
queue = [start]
distance = [float('inf')] * len(adj_list)
distance[start] = 0
while queue:
curr = queue.pop(0)
for neighbor in adj_list[curr]:
if distance[neighbor] == float('inf'):
distance[neighbor] = distance[curr] + 1
queue.append(neighbor)
return distance
```
其中adj_list表示邻接表,start表示起点。函数返回一个数组,存储起点到其他顶点的最短距离。
阅读全文