bfs_predecessors#
- bfs_predecessors(G, source, depth_limit=None, sort_neighbors=None)[source]#
Returns an iterator of predecessors in breadth-first-search from source.
- Parameters:
- GNetworkX graph
- sourcenode
Specify starting node for breadth-first search
- depth_limitint, optional(default=len(G))
Specify the maximum search depth
- sort_neighborsfunction (default=None)
A function that takes an iterator over nodes as the input, and returns an iterable of the same nodes with a custom ordering. For example,
sorted
will sort the nodes in increasing order.
- Returns:
- pred: iterator
(node, predecessor) iterator where
predecessor
is the predecessor ofnode
in a breadth first search starting fromsource
.
Notes
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 “Depth-limited-search”.
Examples
>>> G = nx.path_graph(3) >>> dict(nx.bfs_predecessors(G, 0)) {1: 0, 2: 1} >>> H = nx.Graph() >>> H.add_edges_from([(0, 1), (0, 2), (1, 3), (1, 4), (2, 5), (2, 6)]) >>> dict(nx.bfs_predecessors(H, 0)) {1: 0, 2: 0, 3: 1, 4: 1, 5: 2, 6: 2} >>> M = nx.Graph() >>> nx.add_path(M, [0, 1, 2, 3, 4, 5, 6]) >>> nx.add_path(M, [2, 7, 8, 9, 10]) >>> sorted(nx.bfs_predecessors(M, source=1, depth_limit=3)) [(0, 1), (2, 1), (3, 2), (4, 3), (7, 2), (8, 7)] >>> N = nx.DiGraph() >>> nx.add_path(N, [0, 1, 2, 3, 4, 7]) >>> nx.add_path(N, [3, 5, 6, 7]) >>> sorted(nx.bfs_predecessors(N, source=2)) [(3, 2), (4, 3), (5, 3), (6, 5), (7, 4)] ----
Additional backends implement this function
- cugraphGPU-accelerated backend.
sort_neighbors
parameter is not yet supported.