2012-03-29 30 views
7

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसमें बड़े ग्राफ पर चल रहे एल्गोरिदम शामिल होंगे। सबसे बड़े दो में लगभग 300k और 600k शिखर होते हैं (मुझे लगता है कि काफी स्पष्ट है)। मैं एक जावा लाइब्रेरी ढूंढने की उम्मीद कर रहा हूं जो कि बड़े आकार के ग्राफ को नियंत्रित कर सकता है, और कुछ छोटे आकार के वृक्ष भी, जैसा कि मैं उपयोग कर रहा हूं एल्गोरिदम में से एक में एक पेड़ में एक ग्राफ को विघटित करना शामिल है। आदर्श रूप से लाइब्रेरी में चौड़ाई पहली खोज और डिजस्ट्रा या अन्य सबसे कम-पथ एल्गोरिदम शामिल होंगे।बड़े (600k ऊर्ध्वाधर तक) ग्राफिक्स को संग्रहीत करने और प्रसंस्करण के लिए जावा लाइब्रेरी

पर another question आधार पर, मैं कुछ पुस्तकालयों (JGraphT, JUNG, jdsl, yworks) को देखकर किया गया है लेकिन मैं एक मुश्किल समय जानने कितने कोने वे वास्तविक संभाल कर सकते हैं हो रही है। उनके प्रलेखन को देखते हुए, मुझे लगता है कि JUNG FAQ में थोड़ा सा पाया गया था, जिसमें कहा गया था कि यह आसानी से 150k ऊर्ध्वाधर के ऊपर के ग्राफ को संभाल सकता है, जो अभी भी मेरे ग्राफ से थोड़ा छोटा है ... मुझे उम्मीद है कि किसी ने यहां एक का उपयोग किया है या इन पुस्तकालयों में से अधिक और मुझे बता सकते हैं कि क्या मुझे आवश्यक ग्राफ आकारों को संभाला जाएगा, या यदि कोई अन्य लाइब्रेरी है जो बेहतर होगी।

रिकॉर्ड के लिए मुझे किसी भी विज़ुअलाइजेशन टूल की आवश्यकता नहीं है; यह डेटा संरचनाओं में ग्राफ और पेड़ों का प्रतिनिधित्व करने और उन पर चलने वाले एल्गोरिदम का प्रतिनिधित्व करने के बारे में सख्ती से है।

पृष्ठभूमि अगर कोई वास्तव में परवाह करता है: एक कक्षा के लिए मुझे एक शोध पत्र में वर्णित एक एल्गोरिदम लागू करना है, और पेपर में प्रयोग किए जाने वाले प्रयोगों को जितना संभव हो उतना चलाएं। मैं उपयोग कर रहे पेपर और डेटासेट here पाया जा सकता है। मेरे प्रोफेसर का कहना है कि मैं किसी भी पुस्तकालय का उपयोग कर सकता हूं जब तक कि मैं बता सकता हूं कि एल्गोरिदम/डेटा संरचनाओं का समय/स्थान जटिलता क्या है।

+1

बस [JGraphT] (http://jgrapht-users.107614.n3.nabble.com/Max-limit-of-vertices-td1194057.html) पर कुछ जानकारी मिली। जाहिर है, इन ग्राफों को कोई समस्या नहीं है ... – Maltiriel

उत्तर

3

आपको Neo4J पर एक नज़र डालना चाहिए जो एक ग्राफिकल डेटाबेस है जो आपकी समस्याओं के लिए एक अच्छा समाधान हो सकता है।

+0

धन्यवाद, मैं अब इसमें देख रहा हूं। यह निश्चित रूप से उन डेटासेट को संभाल सकता है। – Maltiriel

+1

मैं पहली बार इन-मेमोरी पुस्तकालयों में से एक को आजमा रहा हूं, जैसा कि पेपर में किया गया है, इसलिए मुझे लगता है कि मेरा प्रोफेसर बेहतर होगा, लेकिन अगर यह काम नहीं करता है तो मैं नियो 4 जे के साथ जाऊंगा। यह उपयोग करना आसान लगता है और इसमें मुझे आवश्यक सभी एल्गोरिदम हैं। सलाह के लिये धन्यवाद! – Maltiriel

3

चेकआउट JGraph भी। हालांकि यह विज़ुअलाइजेशन की ओर उन्मुख है।

इसके अलावा, शायद Apache Hama - बड़े वैज्ञानिक गणनाओं के लिए एक वितरित कंप्यूटिंग ढांचा जैसे मैट्रिक्स, ग्राफ और नेटवर्क एल्गोरिदम। ट्विटर ऐ, पथ खोजने, वितरण प्रणाली, आदि

+0

हम्म। मैंने जो जानकारी देखी है, ऐसा लगता है कि यह उपयुक्त नहीं होगा ... उपयोगकर्ता मैनुअल में वे उदाहरण के लिए स्विंग के बारे में जाकर शुरू करते हैं। मैं विज़ुअलाइज़ेशन सामान के साथ गड़बड़ नहीं करना चाहता हूं। क्या यह संभव है, क्या आप जानते हैं? – Maltiriel

+0

@ माल्टिरियल, आप ग्राफ मॉडल स्टैंडअलोन पर संभावित रूप से काम कर सकते हैं। हालांकि, अगर आपको ग्राफ को देखने की आवश्यकता नहीं है, तो यह एक ओवरकिल है। – tenorsax

+0

अतिरिक्त सुझावों के लिए धन्यवाद। मैं जो कर रहा हूं उसके लिए हामा थोड़ा सा हो सकता है, लेकिन अन्ना बहुत दिलचस्प लगती है। इससे पहले कि मैं अपनी खोज में किसी एक में नहीं आया हूं। – Maltiriel

1

Cassovary https://github.com/twitter/cassovary -Project कर सकते हैं -

Annas भी आपकी रुचि हो सकती - खुला स्रोत जावा रूपरेखा है कि ग्राफ़ थ्योरी के क्षेत्र में डेवलपर्स और शोधकर्ताओं के लिए बनाया गया था स्मृति में स्कैला (इस प्रकार JVM) के साथ बहुत बड़े ग्राफ को संभाल लें।

वैकल्पिक रूप से, GraphChi के जावा संस्करण भी बड़ा रेखांकन संभाल कर सकते हैं, डिस्क का उपयोग करके: http://code.google.com/p/graphchi-java/

हालांकि, GraphChi नहीं कुशल सटीक कम से कम-पथ प्रकार एल्गोरिदम के लिए किया जाएगा, के रूप में वे तेजी से यादृच्छिक अभिगम की आवश्यकता है।