有许多非常好的DFS python实现,例如this one,但它们都不包括成本。我希望能够记录DFS路径的总成本,但此实现将图表表示为集合字典。
graph = {'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])}
def dfs(graph, start):
visited, stack = set(), [start]
while stack:
vertex = stack.pop()
if vertex not in visited:
visited.add(vertex)
stack.extend(graph[vertex] - visited)
return visited
dfs(graph, 'A') # {'E', 'D', 'F', 'A', 'C', 'B'}
我认为套装不能充分记录成本。所以我觉得将图形表示为字典词典将是实现成本的好方法。即:
graph = {'A' : {'C' : 10,
'D' : 7}
etc.....
我的问题是,如何修改此算法以使用这种新类型的图形?我对python语法仍然非常不熟悉,所以看到这样的例子确实有帮助。
或者,如果有更简单的方式来表示费用,我可以接受建议
编辑:好的,这是一种不同的思考方式。如何修改上面的代码,以便它类似于集合处理嵌套字典?
EDIT2:我相信我已经自己解决了,现在我理解了词典的keys()函数会返回一个列表。