如何使用带字典的堆来实现单源最短路径算法?
How to use heaps with dictionaries to implement single source shortest path algorithm?
我选择将我的图形表示为嵌套字典:
graph = {'A': {"B": 20, 'D': 80, 'G' :90},
'B': {'F' : 10},
'F':{'C':10,'D':40},
'C':{'D':10,'H':20,'F':50},
'D':{'G':20},
'G':{'A':20},
'E':{'G':30,'B':50},
'H':{}}
并且从上一个问题中,我被指示使用堆来实现 dijkstra 单源最短路径算法。问题是,在我检查了堆的文档之后,发现我不能直接将它与字典一起使用,而是与列表一起使用。我怎么做?我的解决方案有什么问题?
你仍然可以使用堆,即使它需要一个列表。 graph.keys()
returns 字典中的键列表。然后可以使用键构建堆,如果需要查找顶点,可以使用字典查找。
vertexes = graph[heap.pop()]
.
我选择将我的图形表示为嵌套字典:
graph = {'A': {"B": 20, 'D': 80, 'G' :90},
'B': {'F' : 10},
'F':{'C':10,'D':40},
'C':{'D':10,'H':20,'F':50},
'D':{'G':20},
'G':{'A':20},
'E':{'G':30,'B':50},
'H':{}}
并且从上一个问题中,我被指示使用堆来实现 dijkstra 单源最短路径算法。问题是,在我检查了堆的文档之后,发现我不能直接将它与字典一起使用,而是与列表一起使用。我怎么做?我的解决方案有什么问题?
你仍然可以使用堆,即使它需要一个列表。 graph.keys()
returns 字典中的键列表。然后可以使用键构建堆,如果需要查找顶点,可以使用字典查找。
vertexes = graph[heap.pop()]
.