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)
,其中u
和v
是由遍曆確定的邊的尾部和頭部。對於多重圖,邊的形式為(u, v, key)
,其中key
是邊的鍵。當圖有向時,u
和v
始終按實際有向邊的順序排列。如果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')]
相關用法
- Python NetworkX find_induced_nodes用法及代碼示例
- Python NetworkX find_threshold_graph用法及代碼示例
- Python NetworkX from_dict_of_dicts用法及代碼示例
- Python NetworkX from_scipy_sparse_array用法及代碼示例
- Python NetworkX from_pandas_adjacency用法及代碼示例
- Python NetworkX from_scipy_sparse_matrix用法及代碼示例
- Python NetworkX full_join用法及代碼示例
- Python NetworkX from_dict_of_lists用法及代碼示例
- Python NetworkX from_pydot用法及代碼示例
- Python NetworkX from_edgelist用法及代碼示例
- Python NetworkX floyd_warshall_predecessor_and_distance用法及代碼示例
- Python NetworkX freeze用法及代碼示例
- Python NetworkX from_nested_tuple用法及代碼示例
- Python NetworkX from_graph6_bytes用法及代碼示例
- Python NetworkX from_prufer_sequence用法及代碼示例
- Python NetworkX from_pandas_edgelist用法及代碼示例
- Python NetworkX from_numpy_matrix用法及代碼示例
- Python NetworkX from_sparse6_bytes用法及代碼示例
- Python NetworkX from_agraph用法及代碼示例
- Python NetworkX from_numpy_array用法及代碼示例
- Python NetworkX negative_edge_cycle用法及代碼示例
- Python NetworkX voronoi_cells用法及代碼示例
- Python NetworkX numerical_edge_match用法及代碼示例
- Python NetworkX inverse_line_graph用法及代碼示例
- Python NetworkX LFR_benchmark_graph用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.cycles.find_cycle。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。