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


Python NetworkX find_cycle用法及代碼示例

本文簡要介紹 networkx.algorithms.cycles.find_cycle 的用法。

用法:

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

返回通過深度優先遍曆找到的循環。

循環是指示循環路徑的邊列表。有向邊的方向由 orientation 控製。

參數

G圖形

有向/無向圖/多重圖。

source節點,節點列表

遍曆開始的節點。如果沒有,則任意重複選擇一個源,直到搜索到圖中每個節點的所有邊。

orientation無 | ‘original’ | ‘reverse’ | ‘ignore’(默認值:無)

對於有向圖和有向多重圖,邊遍曆不需要尊重邊的原始方向。當設置為‘reverse’ 時,每條邊都以相反的方向遍曆。當設置為‘ignore’ 時,每條邊都被視為無向。當設置為‘original’ 時,每條邊都被視為有向邊。在所有三種情況下,產生的邊元組都會添加最後一個條目來指示該邊被遍曆的方向。如果方向為無,則屈服邊沒有指示方向。方向受到尊重,但未報告。

返回

edges有向邊

有向邊列表,指示循環所采用的路徑。如果沒有找到循環,則會引發異常。對於圖,邊的形式為(u, v),其中uv 是由遍曆確定的邊的尾部和頭部。對於多重圖,邊的形式為 (u, v, key) ,其中 key 是邊的鍵。當圖有向時,uv 始終按實際有向邊的順序排列。如果orientation不是None,則邊元組將擴展以包括該邊上的遍曆方向(‘forward’或‘reverse’)。

拋出

NetworkXNoCycle

如果沒有找到循環。

例子

在此示例中,我們構造了一個 DAG,並在第一次調用中發現沒有定向循環,因此引發了異常。在第二次調用中,我們忽略了邊方向,發現存在一個無向循環。請注意,第二個調用在有效遍曆無向圖的同時找到了有向環,因此我們找到了“undirected cycle”。這意味著這種 DAG 結構不會形成有向樹(也稱為多樹)。

>>> G = nx.DiGraph([(0, 1), (0, 2), (1, 2)])
>>> nx.find_cycle(G, orientation="original")
Traceback (most recent call last):
    ...
networkx.exception.NetworkXNoCycle: No cycle found.
>>> list(nx.find_cycle(G, orientation="ignore"))
[(0, 1, 'forward'), (1, 2, 'forward'), (0, 2, 'reverse')]

相關用法


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