单源最短路径贪心算法代码
时间: 2023-07-22 16:56:58 浏览: 83
下面是一个基于贪心算法的单源最短路径算法的伪代码:
```python
# 初始化图和距离数组
graph = {} # 图的邻接表表示
distances = {} # 距离数组
visited = set() # 已访问节点集合
def dijkstra(start):
# 初始化距离数组
for node in graph:
distances[node] = float('inf')
distances[start] = 0
# 选择距离最小的节点
while len(visited) < len(graph):
min_distance = float('inf')
min_node = None
for node in graph:
if node not in visited and distances[node] < min_distance:
min_distance = distances[node]
min_node = node
# 标记节点为已访问
visited.add(min_node)
# 更新与当前节点相邻节点的距离
for neighbor, weight in graph[min_node]:
new_distance = distances[min_node] + weight
if new_distance < distances[neighbor]:
distances[neighbor] = new_distance
return distances
```
上述代码使用了一个图的邻接表来表示图,其中图的每个节点对应一个列表,列表中存储了与该节点相邻的节点及其边权重。距离数组用来存储从起点到每个节点的最短距离,初始值为无穷大。在算法中,每次选择距离最小且未访问过的节点作为当前节点,然后更新与当前节点相邻节点的距离。最后返回距离数组。
请注意,这只是一个伪代码示例,具体实现可能需要根据实际情况进行调整和优化。
阅读全文