كيف يمكنني العثور على علاقات دائرية في رسم بياني باستخدام Python وNetworkx؟

StackOverflow https://stackoverflow.com/questions/9382660

سؤال

ضع في اعتبارك أن لدي الرسم البياني التالي:

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

ما هي أسهل طريقة للعثور على أن A -> B -> C -> A هي علاقة دائرية؟هل توجد مثل هذه الوظيفة مدمجة بالفعل في NetworkX أو في مكتبة Python أخرى سهلة الاستخدام؟

هل كانت مفيدة؟

المحلول

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']]

نصائح أخرى

استخدم بحث العمق أولاً لاكتشاف الدورات في الرسم البياني.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top