我有一個有向網絡,其中可能有也可能沒有循環。我需要找到它們并消除循環。如果我有一個 networkx DiGraph (G),我可以找到所有的循環cycle_nodes = nx.simple_cycles(G)這創建了一個循環返回生成器。但是,我不想返回所有循環,list(cycle_nodes)因為許多循環都是彼此的子集,修復一個將修復其他循環。相反,我只想找到循環的第一個實例。作為cycle_nodes發電機,我試過next(cycle_nodes)只返回第一個實例。但是,我發現返回第一個實例所需的時間與返回所有實例所需的時間相比并不?。簂ist(cycle_nodes) : 58snext(cycle_nodes) : 44s這僅僅是由于我的圖表的性質(即第一個循環沿著搜索順序很遠),還是有更有效的方法來返回任何循環(不一定需要是第一個)?我懷疑可能有更快的方法的原因是因為當我運行時nx.is_directed_acyclic_graph(G),它只需要一兩秒鐘并返回 False,所以它顯然在一秒鐘左右找到至少一個循環。
添加回答
舉報
0/150
提交
取消