Python Networkx检测循环/圆

2024-09-27 20:18:05 发布

您现在位置:Python中文网/ 问答频道 /正文

给出以下示例:

是否有可能检测到网络中的环路(I1, I2,I3, C6, C7, I5)?在

我尝试了:simple_cycles→它可以很好地处理3个节点,但不能超过3个。在

我需要检测包含所有节点和“input”节点("I1")和“output”("I3")的圆。在


Tags: 网络示例inputoutput节点simplei3cycles
2条回答

我重新创建了你的图表:

import networkx as nx

g = nx.DiGraph([('P', 'I0'), ('I0', 'I1'), ('I1', 'I2'),
                ('I2', 'I3'), ('I1', 'I5'), ('I5', 'C7'),
                ('C7', 'C6'), ('C6', 'I3'), ('I3', 'C9')])

您搜索的是简单循环,但上图中没有:

^{pr2}$

所以你必须在无向图中搜索循环。你必须把你的图转换成无向图。对于无向图,cycle_basis函数是您似乎需要的:

>>> nx.cycle_basis(g.to_undirected())
[['I5', 'C7', 'C6', 'I3', 'I2', 'I1']]

是的,如果您使用方法nx.simple_cycles(G),您将得到图中的一组节点的循环,这些节点在一个循环中(正如我所理解的那样)。有关详细信息,请查看this。在

相关问题 更多 >

    热门问题