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


Python NetworkX edge_dfs用法及代碼示例


本文簡要介紹 networkx.algorithms.traversal.edgedfs.edge_dfs 的用法。

用法:

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

G 中邊的定向深度優先搜索,從 source 開始。

以深度優先搜索順序產生 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’)。

注意

這個函數的目標是訪問邊。它與 dfs_edges() 提供的更熟悉的節點深度優先遍曆不同,因為它不會在訪問每個節點後停止。在具有邊 [(0, 1), (1, 2), (2, 1)] 的有向圖中,如果不是此函數提供的函數,則不會訪問邊 (2, 1)。

例子

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

相關用法


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