Предположим, у меня есть следующий график в сети x
import networkx as nx
g = nx.Graph()
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(3, 1)
g.add_edge(4, 2)
Так что это в основном 3-1-0-2-4
строка.
Есть ли networkx
способ выполнить поиск BFS "волнами"? Примерно так:
for x in nx.awesome_bfs_by_waves_from_networkx(g, 0):
print(x)
# should print
# [1, 2]
# [3, 4]
Другими словами, я хочу найти все окрестности с 1 кольцом, затем с 2 кольцами и т. Д.
Я могу сделать это с помощью очереди, но я заинтересован в использовании инструментов networkx
, если это возможно. Также можно использовать несколько итераторов с разными значениями depth_limit
, но я надеюсь, что можно найти более красивый способ.
UPD: Для меня важно иметь ленивое решение, которое не будет требовать обхода всего графа, потому что мой график может быть довольно большим, и я хочу иметь возможность прекратить обход рано, если это необходимо.