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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。