我碰到一個BFS code其中涉及集合和deques,但我不明白它太多。我希望這裏的一些pythonistas能幫助你解決問題。Python BFS與集合
from collections import deque
def bfs(g, start):
queue, enqueued = deque([(None, start)]), set([start])
while queue:
parent, n = queue.popleft()
yield parent, n
new = set(g[n]) - enqueued
enqueued |= new
queue.extend([(n, child) for child in new])
問題:
1)| =運營商似乎位操作有關係 - 我不知道它是如何涉及BFS,任何提示?
2)popleft()應該從我的理解中只返回一個值,那麼它如何在這裏返回parent和n?
3)是否新該系列節點訪問過?如果我需要這些節點,我是否會將它們附加到列表中?
在此先感謝。
克雷格