コレクションとデキューを含むBFS コードに出くわしましたが、あまり理解できませんでした。ここの pythonistas の何人かが n00b を助けることができることを願っています。
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()は、私が理解していることから 1 つの値のみを返す必要があるため、ここで親と n を返す方法は?
3)訪問した一連のノードは新しいですか? ノードが必要な場合は、それらをリストに追加し続けますか?
前もって感謝します。
クレイグ