2012-02-21 9 views
7

पर विचार करें मैं निम्नलिखित ग्राफ है:पाइथन और नेटवर्कक्स के साथ ग्राफ में परिपत्र संबंध कैसे प्राप्त कर सकते हैं?

A -> B 
B -> C 
C -> D 
C -> A 

क्या सबसे आसान तरीका है कि एक को मिल रहा है -> बी -> सी -> एक एक परिपत्र संबंध है? क्या ऐसा कोई फ़ंक्शन पहले से ही नेटवर्कएक्स में बनाया गया है या पाइथन लाइब्रेरी का उपयोग करने में आसान है?

उत्तर

9

networkx.simple_cycles यह आपके लिए करता है।

>>> import networkx as nx 
>>> G = nx.DiGraph() 
>>> G.add_edge('A', 'B') 
>>> G.add_edge('B', 'C') 
>>> G.add_edge('C', 'D') 
>>> G.add_edge('C', 'A') 
>>> nx.simple_cycles(G) 
[['A', 'B', 'C', 'A']] 
5

ग्राफ़ में चक्रों का पता लगाने के लिए Depth-First Search का उपयोग करें।

संबंधित मुद्दे