2016-10-27 6 views
6

मेरे पास एक बहुत बड़े नेटवर्क के लिए डेटा है जो काफी स्पैस है। मैं सोच रहा था कि दो नोड्स जुड़े हुए हैं या नहीं, यह एक्सेस करने के लिए सबसे आसान मेमोरी प्रभावी तरीका क्या होगा।जूलिया में एक बहुत ही स्पैस नेटवर्क मैट्रिक्स को परिभाषित करने का सबसे प्रभावी तरीका क्या है?

एन नोड्स के साथ

जाहिर है, एक एन * एन मैट्रिक्स रखते हुए कि अंतरिक्ष मैं स्टोर के मामले में कुशल नहीं है। तो मैं शायद नीचे की तरह समीपता सूची रखने के बारे में सोचा:

Array(Vector{Int64}, N_tmp) 

कहाँ N_tmp < = एन, के रूप में कई नोड्स किसी भी कनेक्शन नहीं हो सकता है।

क्या आप मेरी मदद कर सकते हैं वहाँ बेहतर तरीके या शायद संकुल कि स्मृति और पहुंच के मामले में बेहतर कर रहे हैं या नहीं?

+1

एक निर्माण in'sparse() जूलिया में 'समारोह नहीं है। क्या आपने कोशिश की है [it] (http://docs.julialang.org/en/release-0.5/stdlib/arrays/#sparse-vectors-and-matrices)? – zwlayer

+0

मुझे इसके बारे में पता है, लेकिन मुझे लगता है कि अन्य डेटा संरचनाओं के साथ बेहतर करना संभव है। –

उत्तर

8

LightGraphs.jl में, हम (मूल रूप से, वैक्टर का एक वेक्टर) प्रत्येक नोड के लिए पड़ोसियों के स्टोर करने के लिए निकटता सूचियों का उपयोग। यह हमें वस्तु हार्डवेयर पर नोड्स के लाखों लोगों के सैकड़ों करने के लिए पैमाने पर करने के लिए अनुमति देता है तेजी से पहुँच है कि ज्यादातर ग्राफ संचालन के लिए देशी विरल मैट्रिक्स डेटा संरचना धड़कता है प्रदान करते हुए, बड़े विरल रेखांकन के लिए बहुत अच्छा स्मृति उपयोग प्रदान करता है।

आप सोच सकते हैं कि क्या LightGraphs अपनी आवश्यकताओं सीधे को पूरा करेगा।

अतिरिक्त जानकारी के साथ संपादित करें: हम पड़ोसियों के एक क्रमबद्ध सूची संग्रहीत - यह हमें किनारे निर्माण पर एक प्रदर्शन हिट देता है, लेकिन यह बहुत तेजी से बाद में लुकअप करने के लिए बनाता है।

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