मैंने हाल ही में दो डेटा संरचनाओं का उपयोग करके डिजस्ट्रा के एल्गोरिदम के चलने वाले समय की प्रारंभिक तुलना की, जावा-आधारित प्राथमिकता क्यूई (बाइनरी ढेर के आधार पर, यदि मैं ' मैं गलत नहीं हूँ), और एक फाइबोनैकी ढेर। मैंने अपनी गणना करने के लिए जावा की वर्तमान टाइममिलिस() का उपयोग किया। जिन परिणामों के साथ मैं समाप्त हुआ, वे काफी दिलचस्प हैं। यह मेरा testcases में से एक के लिए उत्पादन होता है:जावा पर डिजस्ट्रा: एक फाइबोनैकी ढेर बनाम दिलचस्प परिणाम का उपयोग करके दिलचस्प परिणाम प्राप्त करना
Running Dijkstra's with 8 nodes and 27 links
- Execution time with binary heap: 1 miliseconds
- Execution time with Fibonacci heap: 4 miliseconds
वैसे, मैं इस समय डेटा सेट पर कम, ऊपर ग्राफ मेरा सबसे बड़ा होने के साथ कर रहा हूँ (मैं और अधिक जल्द ही बनाने पर विचार किया)। लेकिन क्या इसका कोई मतलब है? मैंने हमेशा सोचा है कि फिबोनाची ढेर अन्य डेटा संरचनाओं की तुलना में अपने अमूर्त चलने वाले समय के कारण अन्य डेटा संरचनाओं की तुलना में तेज़ थे। मुझे सच में यकीन नहीं है कि यह 3-मिलीसेकंद अंतर कहाँ से आ रहा है। (मैं इसे इंटेल कोर आइवी ब्रिज i7-3630M प्रोसेसर पर चला रहा हूं, अगर यह मदद करता है।)
नोट: मैं this thread पर ठोकर खा रहा हूं जो इस मुद्दे को समझा सकता है, हालांकि मैं अभी भी स्पष्ट नहीं हूं कि फाइबोनैकी ढेर क्यों संस्करण अधिक समय ले रहा है। उस धागे के अनुसार, ऐसा इसलिए हो सकता है क्योंकि मेरा ग्राफ पर्याप्त घना नहीं है और इसलिए कमी की संख्या-कुंजी संचालन वास्तव में चमकने के लिए फाइबोनैकी ढेर के प्रदर्शन के लिए पर्याप्त नहीं है। क्या यह एकमात्र व्यावहारिक निष्कर्ष होगा, या क्या मैं कुछ और याद कर रहा हूं?
आपको एक डेटासेट को 8 नोड्स से बड़े परिमाण के कई आदेश और अर्थपूर्ण बेंचमार्क प्राप्त करने के लिए 27 लिंक की आवश्यकता होगी। – EJP
हाँ, मुझे अब मिल गया है। मुझे इसमें देखना होगा और देखें कि मैं क्या कर सकता हूं। धन्यवाद। –