क्या यह कुर्कल के एल्गोरिथ्म का सघन संस्करण है?


15

लगभग एक साल पहले, एक मित्र और मैंने सामान्य बाउंड (पूर्व-सॉर्ट किए गए किनारों को संभालने के बिना तुलना में घने रेखांकन के लिए क्रुस्ल के एल्गोरिथ्म को लागू करने का एक तरीका सोचा । विशेष रूप से, हम प्रीपेड मैट्रिसेस का उपयोग करते हुए प्राइम के समान ही सभी मामलों में प्राप्त करते हैं।हे(लॉग)Θ(n2)

मैंने अपने ब्लॉग में एल्गोरिथ्म के बारे में थोड़ा सा पोस्ट किया है , जिसमें C ++ कोड और बेंचमार्क शामिल हैं, लेकिन यहाँ सामान्य विचार है:

  • प्रत्येक जुड़े घटक के लिए एक प्रतिनिधि नोड बनाए रखें। प्रारंभ में, सभी नोड स्वयं का प्रतिनिधित्व करते हैं।

  • एक वेक्टर को बनाए रखें dist[i]जैसे कि, हर घटक के लिए i, सबसे हल्का घटक-क्रॉसिंग एज घटना है i

  • जब विभाजन को पार करने वाले सबसे हल्के किनारे को खोजते हैं, तो बस यह पाते हैं iकि dist[i]रैखिक समय में, का वजन कम करता है।

  • सीमैंसीजेमैं,=मिनट{मैं,,जे,}मैंजे

सबसे हल्के किनारे के संकुचन और उक्त किनारे की खोज इस प्रकार दोनों को रैखिक समय में किया जा सकता है। एमएसटी को खोजने के लिए हम इसे बार करते हैं। वास्तव में यह पता लगाने के लिए थोड़ा बहीखाता की आवश्यकता है कि हम किस किनारे को एमएसटी में जोड़ना चाहते हैं, लेकिन जटिलता नहीं बढ़ाते हैं। इस प्रकार रनटाइम । कार्यान्वयन छोरों के लिए सिर्फ एक जोड़ी है।n-1Θ(n2)

क्या कृषकाल का यह संस्करण साहित्य में प्रसिद्ध है?

जवाबों:


19

हे(n2)हे(n2)

  1. इसके बजाय प्राइमे-डेज़्स्ट्रा-जर्नकी का उपयोग करें और फिर किनारों को सॉर्ट करने के लिए सम्मिलन अनुक्रम प्राप्त करें जो क्रुस्काल देगा, या

  2. पेपर में वर्णित क्वाडट्री निकटतम जोड़ी डेटा संरचना का उपयोग करें, क्रुस्काल को एक मानक एग्लोमेरेटिव क्लस्टरिंग प्रक्रिया के रूप में देख रहे हैं, जहां हम प्रत्येक चरण में निकटतम दो समूहों को एक सुपरक्लस्टर में विलय करते हैं, जिसमें "निकटतम" को दो समूहों को जोड़ने वाले सबसे छोटे किनारे की लंबाई के रूप में परिभाषित किया गया है। ।

समाधान 2 आत्मा के समान है जो आप वर्णन करते हैं लेकिन समूहों के बीच की दूरी को ट्रैक रखने के तरीके का विवरण थोड़ा अलग है। आप क्लस्टर दूरी मैट्रिक्स की पंक्ति-वार मिनीमा रखते हैं, जिससे आप वैश्विक न्यूनतम खोजने के लिए रैखिक-समय में पंक्ति-मिनीमा की इस सूची को स्कैन कर सकते हैं, जबकि मेरा पेपर एक ही मैट्रिक्स पर एक चतुर्भुज को ओवरले करता है और प्रत्येक में न्यूनतम का ट्रैक रखता है। चतुर्वर्ग। आपकी विधि सरल है, लेकिन कुछ अन्य गतिशील निकटतम जोड़ी समस्याओं के लिए कम लचीली है (यह इस तथ्य पर निर्भर करता है कि दो समूहों के विलय से अन्य समूहों के लिए उनकी दूरी कम हो जाती है, इस समस्या के लिए सही है लेकिन दूसरों के लिए जरूरी नहीं है)।

हे(n2)हे(n2)हे(n)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.