bfs_predecessors#
- bfs_predecessors(G, source, depth_limit=None, sort_neighbors=None)[源代码]#
从源返回宽度优先搜索中前置任务的迭代器。
- 参数
- G网络X图表
- source结点
指定广度优先搜索的起始节点
- depth_limit整型,可选(默认值=len(G))
指定最大搜索深度
- sort_neighbors功能
接受给定节点的邻居列表作为输入的函数,并返回 迭代器 超过这些邻居,但有定制的订单。
- 返回
- PRED:迭代器
(节点,前置任务)迭代器,其中
predecessor
是的前身node
在从开始的广度优先搜索中source
。
笔记
根据D.eppstein于2004年7月发布的http://www.ics.uci.edu/~eppstein/pads/bfs.py。根据维基百科的文章“深度限制搜索”修改允许深度限制。
实例
>>> G = nx.path_graph(3) >>> print(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)]) >>> print(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]) >>> print(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]) >>> print(sorted(nx.bfs_predecessors(N, source=2))) [(3, 2), (4, 3), (5, 3), (6, 5), (7, 4)]