當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX bfs_edges用法及代碼示例


本文簡要介紹 networkx.algorithms.traversal.breadth_first_search.bfs_edges 的用法。

用法:

bfs_edges(G, source, reverse=False, depth_limit=None, sort_neighbors=None)

從源頭開始,在廣度優先搜索中迭代邊。

參數

GNetworkX 圖
source節點

指定廣度優先搜索的起始節點;該函數僅迭代可從此節點到達的組件中的那些邊。

reverse布爾型,可選

If True 反向遍曆有向圖

depth_limit整數,可選(默認=len(G))

指定最大搜索深度

sort_neighbors函數

將給定節點的鄰居列表作為輸入的函數,並在這些鄰居上返回 iterator,但具有自定義排序。

生成(Yield)

邊:節點的 2 元組

產生廣度優先搜索產生的邊。

注意

該函數的命名與 edge_bfs() 非常相似。不同之處在於,edge_bfs 會生成邊,即使它們延伸回已探索的節點,而此生成器會生成由廣度優先搜索 (BFS) 產生的樹的邊,因此如果它們延伸到已探索的節點,則不會報告邊探索過的節點。這意味著 edge_bfs 報告所有邊,而 bfs_edges 僅報告基於節點的 BFS 遍曆的邊。另一種說明是 bfs_edges 報告 BFS 期間遍曆的邊,而 edge_bfs 則按照探索的順序報告所有邊。

基於 D. Eppstein 於 2004 年 7 月在 PADS [1] 中實現的廣度優先搜索;進行修改以允許深度限製,如 [2] 中所述。

參考

1

http://www.ics.uci.edu/~eppstein/PADS/BFS.py.

2

https://en.wikipedia.org/wiki/Depth-limited_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)]

要以廣度優先搜索順序獲取節點:

>>> 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]

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.traversal.breadth_first_search.bfs_edges。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。