【发布时间】:2014-05-05 17:08:54
【问题描述】:
graph={ 0:[1,3,4], 1:[0,2,4], 2:[1,6], 3:[0,4,6], 4:[0,1,3,5], 5:[4], 6:[2,3] }
def bfs(graph, start, path=[]):
queue = [start]
while queue:
vertex = queue.pop(0)
if vertex not in path:
path.append(vertex)
queue.extend(graph[vertex] - path)
return path
print bfs(graph, 0)
伙计们!有人可以帮我处理这个 bfs 代码吗?我不明白如何解决这个排队问题。
【问题讨论】:
-
“解决”是什么意思?解决方案应该是什么?此外,请注意在 Python 中将默认参数设置为
[]。见this article。 -
我认为通过“解决此队列行”,他的意思是,诊断以
queue.extend开头的行上发生的错误。即TypeError: unsupported operand type(s) for -: 'list' and 'list' -
顺便提一下,OP,请注意函数定义中的
path=[]- 如果您多次运行此函数,您可能会得到令人惊讶的结果。请参阅this 关于默认可变参数的问题。
标签: python algorithm graph breadth-first-search