networkx.algorithms.traversal.breadth_first_search.bfs_edges¶

bfs_edges
(G, source, reverse=False, depth_limit=None, sort_neighbors=None)[source]¶ Iterate over edges in a breadthfirstsearch starting at source.
 Parameters
G (NetworkX graph)
source (node) – Specify starting node for breadthfirst search; this function iterates over only those edges in the component reachable from this node.
reverse (bool, optional) – If True traverse a directed graph in the reverse direction
depth_limit (int, optional(default=len(G))) – Specify the maximum search depth
sort_neighbors (function) – A function that takes the list of neighbors of given node as input, and returns an iterator over these neighbors but with custom ordering.
 Returns
edges – A generator of edges in the breadthfirstsearch.
 Return type
generator
Examples
To get the edges in a breadthfirst search:
>>> G = nx.path_graph(3) >>> list(nx.bfs_edges(G, 0)) [(0, 1), (1, 2)] >>> list(nx.bfs_edges(G, source=0, depth_limit=1)) [(0, 1)]
To get the nodes in a breadthfirst search order:
>>> G = nx.path_graph(3) >>> root = 2 >>> edges = nx.bfs_edges(G, root) >>> nodes = [root] + [v for u, v in edges] >>> nodes [2, 1, 0]
Notes
The naming of this function is very similar to edge_bfs. The difference is that ‘edge_bfs’ yields edges even if they extend back to an already explored node while ‘bfs_edges’ yields the edges of the tree that results from a breadthfirstsearch (BFS) so no edges are reported if they extend to already explored nodes. That means ‘edge_bfs’ reports all edges while ‘bfs_edges’ only reports those traversed by a nodebased BFS. Yet another description is that ‘bfs_edges’ reports the edges traversed during BFS while ‘edge_bfs’ reports all edges in the order they are explored.
Based on http://www.ics.uci.edu/~eppstein/PADS/BFS.py. by D. Eppstein, July 2004. The modifications to allow depth limits based on the Wikipedia article “Depthlimitedsearch”.
See also
bfs_tree()
,dfs_edges()
,edge_bfs()