当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX edge_bfs用法及代码示例


本文简要介绍 networkx.algorithms.traversal.edgebfs.edge_bfs 的用法。

用法:

edge_bfs(G, source=None, orientation=None)

source 开始,对 G 中的边进行定向广度优先搜索。

以广度优先搜索顺序生成 G 的边,一直持续到生成所有边。

参数

G图形

有向/无向图/多重图。

source节点,节点列表

遍历开始的节点。如果没有,则任意重复选择一个源,直到搜索到图中每个节点的所有边。

orientation无 | ‘original’ | ‘reverse’ | ‘ignore’(默认值:无)

对于有向图和有向多重图,边遍历不需要尊重边的原始方向。当设置为‘reverse’ 时,每条边都以相反的方向遍历。当设置为‘ignore’ 时,每条边都被视为无向。当设置为‘original’ 时,每条边都被视为有向边。在所有三种情况下,产生的边元组都会添加最后一个条目来指示该边被遍历的方向。如果方向为无,则屈服边没有指示方向。方向受到尊重,但未报告。

生成(Yield)

edge有向边

指示广度优先搜索所采用的路径的有向边。对于图,edge 的形式为(u, v),其中uv 是由遍历确定的边的尾部和头部。对于多重图, edge 的形式为 (u, v, key) ,其中 key 是边的关键。当图是有向时,uv 始终按实际有向边的顺序排列。如果orientation不是None,则边元组将扩展以包括该边上的遍历方向(‘forward’或‘reverse’)。

注意

该函数的目标是访问边。它与更熟悉的节点广度优先搜索不同,如networkx.algorithms.traversal.breadth_first_search.bfs_edges,因为一旦访问了每个节点,它就不会停止。在具有边 [(0, 1), (1, 2), (2, 1)] 的有向图中,如果不是此函数提供的函数,则不会访问边 (2, 1)。

该函数的命名与bfs_edges非常相似。区别在于 ‘edge_bfs’ 会产生边,即使它们延伸回已探索的节点,而 ‘bfs_edges’ 会产生由广度优先搜索 (BFS) 产生的树的边,因此如果它们延伸到已经探索过的节点。这意味着 ‘edge_bfs’ 报告所有边,而 ‘bfs_edges’ 仅报告基于节点的 BFS 遍历的边。另一种说明是 ‘bfs_edges’ 报告 BFS 期间遍历的边,而 ‘edge_bfs’ 按探索的顺序报告所有边。

例子

>>> nodes = [0, 1, 2, 3]
>>> edges = [(0, 1), (1, 0), (1, 0), (2, 0), (2, 1), (3, 1)]
>>> list(nx.edge_bfs(nx.Graph(edges), nodes))
[(0, 1), (0, 2), (1, 2), (1, 3)]
>>> list(nx.edge_bfs(nx.DiGraph(edges), nodes))
[(0, 1), (1, 0), (2, 0), (2, 1), (3, 1)]
>>> list(nx.edge_bfs(nx.MultiGraph(edges), nodes))
[(0, 1, 0), (0, 1, 1), (0, 1, 2), (0, 2, 0), (1, 2, 0), (1, 3, 0)]
>>> list(nx.edge_bfs(nx.MultiDiGraph(edges), nodes))
[(0, 1, 0), (1, 0, 0), (1, 0, 1), (2, 0, 0), (2, 1, 0), (3, 1, 0)]
>>> list(nx.edge_bfs(nx.DiGraph(edges), nodes, orientation="ignore"))
[(0, 1, 'forward'), (1, 0, 'reverse'), (2, 0, 'reverse'), (2, 1, 'reverse'), (3, 1, 'reverse')]
>>> list(nx.edge_bfs(nx.MultiDiGraph(edges), nodes, orientation="ignore"))
[(0, 1, 0, 'forward'), (1, 0, 0, 'reverse'), (1, 0, 1, 'reverse'), (2, 0, 0, 'reverse'), (2, 1, 0, 'reverse'), (3, 1, 0, 'reverse')]

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.traversal.edgebfs.edge_bfs。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。