【发布时间】:2013-05-20 18:32:25
【问题描述】:
鉴于此代码...
import Queue
def breadthFirstSearch(graph, start, end):
q = Queue.Queue()
path = [start]
q.put(path)
while not q.empty():
path = q.get()
lastNode = path[len(path) - 1]
if lastNode == end:
return path
for linkNode in graph[lastNode]:
if linkNode not in path:
newPath = []
newPath = path + [linkNode]
q.put(newPath)
其中graph是表示有向图的字典,例如{'stack':['overflow'], 'foo':['bar']},即stack指向overflow,foo指向bar。
这种广度优先搜索可以进一步优化吗?因为我打算在一个非常大的字典上使用它。
【问题讨论】:
-
虽然这可能不是一个大的优化,但
Queue.Queue旨在用于多个线程之间的同步。如果只需要一个简单的队列数据结构,请改用collections.deque,避免同步开销。 -
当我使用它时,我得到了不同的答案,但我不知道为什么......
标签: python optimization dictionary