2024-09-27 20:18:05 发布
网友
给出以下示例:
是否有可能检测到网络中的环路(I1, I2,I3, C6, C7, I5)?在
(I1, I2,I3, C6, C7, I5)
我尝试了:simple_cycles→它可以很好地处理3个节点,但不能超过3个。在
simple_cycles
我需要检测包含所有节点和“input”节点("I1")和“output”("I3")的圆。在
("I1")
("I3")
我重新创建了你的图表:
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')])
您搜索的是简单循环,但上图中没有:
所以你必须在无向图中搜索循环。你必须把你的图转换成无向图。对于无向图,cycle_basis函数是您似乎需要的:
cycle_basis
>>> nx.cycle_basis(g.to_undirected()) [['I5', 'C7', 'C6', 'I3', 'I2', 'I1']]
是的,如果您使用方法nx.simple_cycles(G),您将得到图中的一组节点的循环,这些节点在一个循环中(正如我所理解的那样)。有关详细信息,请查看this。在
nx.simple_cycles(G)
我重新创建了你的图表:
您搜索的是简单循环,但上图中没有:
^{pr2}$所以你必须在无向图中搜索循环。你必须把你的图转换成无向图。对于无向图,
cycle_basis
函数是您似乎需要的:是的,如果您使用方法
nx.simple_cycles(G)
,您将得到图中的一组节点的循环,这些节点在一个循环中(正如我所理解的那样)。有关详细信息,请查看this。在相关问题 更多 >
编程相关推荐