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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。