मुझे पायथन में एक बड़े (10^7 नोड्स) ग्राफ में हेरफेर करने में सक्षम होना चाहिए। प्रत्येक नोड/किनारे से संबंधित डेटा न्यूनतम है, कहें, स्ट्रिंग की एक छोटी संख्या। मेमोरी और गति के मामले में, यह करने का तरीका सबसे कुशल क्या है?पायथन में सबसे कुशल ग्राफ डेटा संरचना क्या है?
डिक्ट्स का एक नियम लागू करने के लिए अधिक लचीला और आसान है, लेकिन मैं सहजता से सूचियों की सूची को तेज़ी से उम्मीद करता हूं। सूची विकल्प भी आवश्यकता होगी कि मैं डेटा संरचना से अलग रखना है, जबकि dicts तरह कुछ के लिए अनुमति होगी:
graph[I][J]["Property"]="value"
आप क्या सुझाव है?
हां, मुझे दक्षता से मेरा क्या मतलब है पर थोड़ा स्पष्ट होना चाहिए था। इस विशेष मामले में मेरा मतलब यादृच्छिक पहुंच पुनर्प्राप्ति के संदर्भ में है।
स्मृति में डेटा लोड करना एक बड़ी समस्या नहीं है। यह एक बार और सभी के लिए किया जाता है। समय लेने वाला हिस्सा नोड्स पर जा रहा है, इसलिए मैं जानकारी निकाल सकता हूं और जिस मीट्रिक में दिलचस्पी रखता हूं उसे माप सकता हूं।
मैंने प्रत्येक नोड को कक्षा बनाने के लिए विचार नहीं किया था (गुण सभी नोड्स के लिए समान हैं) लेकिन ऐसा लगता है जैसे कि ओवरहेड की एक अतिरिक्त परत जोड़ना होगा? मैं उम्मीद कर रहा था कि किसी को भी इसी तरह के मामले के साथ कुछ सीधा अनुभव होगा कि वे साझा कर सकते हैं। आखिरकार, सीएस में ग्राफ सबसे आम अमूर्तताओं में से एक हैं।
नेटवर्कएक्स बहुत अच्छा है, लेकिन दुख की बात है कि इसमें 10^7 नोड्स हैंडलिंग हैं। मैं नियमित रूप से 16 जीबी रैम पर जा रहा हूं जिसमें केवल 2 एम नोड्स 15 एम किनारों और कुछ int विशेषताएँ हैं। उस से कुछ भी प्रशंसक प्राप्त करने के बारे में भूल जाओ। – Sint