Я наткнулся на BFS-код , который включает в себя коллекции и запросы, но я не мог понять это много. Я надеюсь, что некоторые из питонистов здесь могут помочь 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 () должен возвращать только одно значение из того, что я понимаю, так как он возвращает parent и n здесь?
3) Является ли новым серией посещенных узлов? Если я хочу узлы, я просто продолжаю добавлять их в список?
Заранее спасибо.
Craig