मैं निर्भरता के ग्राफ को प्रबंधित करने के लिए नेटवर्कक्स के साथ थोड़ा सा खेल रहा हूं। चलो कहते हैं कि मैं इस ग्राफ़ जो प्रत्येक अक्षर एक सर्वरनेटवर्कक्स (पायथन) के साथ ग्राफ ट्रैवर्सल
>>> G = nx.Graph()
>>> G.add_edge("A","B")
>>> G.add_edge("A","H")
>>> G.add_edge("H","C")
>>> G.add_edge("B","C")
>>> G.add_edge("B","D")
A
/ \
H B
/ /\
C C D
प्रतिनिधित्व करते हैं तो यहां हम देख सकते हैं कि एक शुरू करने से पहले हम बी शुरू करने के लिए एच और बी शुरू करने के लिए और एच हम सी शुरू करने की आवश्यकता शुरू करने के लिए और उसके बाद की जरूरत है चलो वी सी और डी
शुरू करने के लिए Networkx साथ एक सा नगण्य द्वारा की जरूरत मैंने पाया कि मैं एक DFS ट्रेवर्सल
print nx.dfs_successors(G,"A")
{A:[H,B], H:[C], B:[D] }
करके कि प्राप्त कर सकते हैं लेकिन मुझे लगता है कि विधि के साथ एक समस्या है कि। जैसा कि आप देख सकते हैं कि पेड़ में दो समान पत्र कब होते हैं, नेटवर्कक्स ने केवल उनमें से एक को अंतिम संरचना (जो सही है) में डालना चुना है, लेकिन मुझे पूरी संरचना की आवश्यकता है मैं संरचना में जोड़ने के लिए नेटवर्कक्स को कैसे मजबूर कर सकता हूं बी: [डी, सी] ??
मैं
>>> nx.dfs_successors(G,"B")
{'B': ['C', 'D']}
करके तो सब कुछ "आंतरिक रूप से" सही है, तो यह सिर्फ dfs_successors है कि यह जिस तरह से मैं चाहता हूँ में नहीं प्रदर्शित करता है कि सटीक करना चाहते हैं।
आप
ग्राफ ड्राइंग के लिए धन्यवाद। यही वह है जिसे मैंने "सोचा" नेटवर्कक्स मेरी पीठ में कर रहा था। इस प्रकार मेरा सवाल होगा: नेटवर्कक्स के साथ मेरे उदाहरण में एक पेड़ कैसे बनाते हैं? स्पष्ट रूप से मेरे लिए आदर्श क्या होगा जब मैं G.add_edge ("बी", "सी") बना देता हूं, एक नया नोड "सी" एच – Johny19
से कनेक्ट होने पर पुन: उपयोग करने की असर पैदा करता है तो आपको नया कॉल करना होगा कुछ और नोड करें। सी 1 और सी 2, शायद। नेटवर्कएक्स मेरे ज्ञान के लिए एक ही लेबल के साथ कई नोड्स की अनुमति नहीं देता है। – brentlance
लेकिन मुझे नोड की आवश्यकता है। जैसा कि मैंने मुख्य धागे में कहा था। मेरा नोड servername हैं, मैं नामों को नहीं बदल सकता अन्यथा मुझे नहीं पता कि कौन सा है ... लेकिन वास्तव में ग्राफ जो थॉर्स्टन क्रांज "गलत" नहीं है, यह सही है, बी "सी और डी" पर निर्भर करता है । यह सिर्फ इतना है कि एल्गोरिदम "dfs_successors()" आउटपुट है कि बी केवल डी पर निर्भर करता है और यह गलत है यदि मेरा पेड़ नेटवर्कक्स के साथ संभव नहीं है, तो क्या यह किसी अन्य lib के साथ संभव होगा? धन्यवाद – Johny19