माता-पिता और दादा-दादी दोनों नोड के लिए स्प्ले ट्री रोटेशन एल्गोरिदम को क्यों ध्यान में रखता है?


25

मुझे यह समझ में नहीं आया कि स्प्ले ट्री डेटा संरचना में रोटेशन न केवल रेटिंग नोड के माता-पिता को ध्यान में रख रहा है, बल्कि दादा-दादी (जिग-ज़ैग और ज़िग-ज़िग ऑपरेशन) भी है। निम्नलिखित काम क्यों नहीं करेगा:

उदाहरण के लिए, हम पेड़ पर एक नया नोड डालते हैं, हम जाँचते हैं कि हम बाएं या दाएं सबट्री में सम्मिलित करते हैं या नहीं। यदि हम बाईं ओर सम्मिलित करते हैं, तो हम परिणाम को घुमाते हैं, और दाएं उपप्रकार के लिए इसके विपरीत। फिर से यह इस तरह से sth होगा

Tree insert(Tree root, Key k){
    if(k < root.key){
        root.setLeft(insert(root.getLeft(), key);
        return rotateRight(root);
    }
    //vice versa for right subtree
}

आपको पूरी "स्प्ले" प्रक्रिया से बचना चाहिए, क्या आपको नहीं लगता है?

जवाबों:


30

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

सिर्फ घूमने के लिए बुरा उदाहरण

n2/2Ω(n)Ω(n)

बुरा उदाहरण जारी रहा

यह बुरा उदाहरण स्लेटोर और टारजन के मूल स्प्ले ट्री पेपर में दिखाई देता है।

एक्सएक्सएक्स

बुरी मिसाल को तोड़ना

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

हे(लॉगn)Ω(n)

अधिक संक्षेप में: Splaying नोड्स को तेज़ी से और धीरे-धीरे ऊपर की ओर ले जाता है।


मुझे लगता है कि रोटेशन एल्गोरिदम बिल्कुल समान हैं, मेरा बस छोटा और अधिक समझने योग्य है। दादा-दादी को देखने के बजाय मैं केवल एक घूर्णन कदम में माता-पिता पर विचार करता हूं। क्या यह ठीक उसी परिणाम को नहीं बनाता है?
बबेरू 02

मुझे लगता है कि आप दो SPLAYING अल्गोस, एक ऊपर नीचे, दूसरे नीचे ऊपर, और मेरा नहीं का जिक्र कर रहे हैं, क्या यह सही है? मैं अपने एलो बनाम बॉटम अप बंटवारे का जिक्र कर रहा था
बीबर ०२
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.