मैं एक ऐसे अनुप्रयोग पर काम कर रहा हूं जो Djikstra के एल्गोरिदम को प्रदर्शित करता है, और इसका उपयोग करने के लिए, मुझे अपने तत्वों के मूल्य में कमी होने पर ढेर संपत्ति को पुनर्स्थापित करने की आवश्यकता है।मिनी-हीप आधारित प्राथमिकता कतार के लिए ओ (लॉगन) कमी-कुंजी ऑपरेशन को कैसे कार्यान्वित करें?
जटिलता के बारे में समस्या यह है कि जब एल्गोरिथ्म एक तत्व के मूल्य में परिवर्तन, आंतरिक संरचना में उस तत्व के सूचकांक (इस मामले में ढेर) प्राथमिकता कतार के लिए इस्तेमाल किया अज्ञात है। इस तरह, मुझे इंडेक्स को पुनर्प्राप्त करने के लिए वर्तमान में ओ (एन) खोज करने की आवश्यकता है, इससे पहले कि मैं वास्तविक कम-कुंजी निष्पादित कर सकूं।
इसके अलावा, मैं ऑपरेशन के लिए आवश्यक वास्तविक कोड के बारे में बिल्कुल निश्चित नहीं हूं। मैं अपनी प्राथमिकता कतार के लिए डी-हीप here का उपयोग कर रहा हूं। स्यूडोकोड मदद करेगा, लेकिन जावा में एक उदाहरण पसंद करेंगे कि यह कैसे किया जाना चाहिए।
http://en.m.wikipedia.org/wiki/Dijkstra's_algorithm#Running_time देखें। –
उपर्युक्त लिंक से: "एक वेनिला बाइनरी ढेर पर कमी-कुंजी चरण में ओ (| वी |) लुक-अप से बचने के लिए, हेप के इंडेक्स में प्रत्येक चरम पर मैपिंग एक पूरक इंडेक्स को बनाए रखना आवश्यक है (और इसे जारी रखें प्राथमिकता कतार जी परिवर्तन के रूप में दिनांक), इसे इसके बजाय केवल ओ (लॉग | वी |) समय लेते हैं। " – Brainstorm
@ ब्रेनस्टॉर्म मैंने मैपिंग का उपयोग करने पर विचार किया लेकिन मैं अन्य परिचालनों पर होने वाले प्रभाव के बारे में चिंतित था। मुझे लगता है कि यह एकमात्र तरीका है हालांकि इसे किया जा सकता है। – jathanasiou