ट्री शाटन

ट्री शाटन एक शाटन एल्गोरिथ्म है जो शाटन किए जाने वाले अवयवों से एक बाइनरी खोज ट्री बनाता है, और फिर ट्री को (क्रम में) ट्रैवर्स करता है ताकि अवयव शाटन किए गए क्रम में सामने आएं। इसका विशिष्ट उपयोग अवयवों को ऑनलाइन शाटन करना है: प्रत्येक निवेशन के बाद, अब तक देखे गए अवयवों के सेट केवल शाटन क्रम में उपलब्ध है।

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

दक्षता
बाइनरी खोज ट्री में एक मद (आइटम) जोड़ना औसतन एक $O(n²)$ प्रक्रम है (बड़े O नोटेशन में)। n मद जोड़ना एक $O(n log n)$ प्रक्रम है, जिससे ट्री शाटन एक 'तीव्र शाटन' प्रक्रम बन जाता है। असंतुलित बाइनरी ट्री में एक मद जोड़ने के लिए सबसे खराब स्थिति में $O(n log n)$ काल की आवश्यकता होती है: जब ट्री एक श्रृंखलित सूची (अपभ्रष्ट ट्री) जैसा दिखता है। इसके परिणामस्वरूप इस शाटन एल्गोरिदम के लिए $O(n log n$ काल की सबसे खराब स्थिति उत्पन्न होती है। यह सबसे खराब स्थिति तब होती है जब एल्गोरिदम पहले से ही शाटन सेट पर काम करता है, या जो लगभग शाटन, उत्क्रमित या लगभग उत्क्रमित होता है। हालाँकि, अपेक्षित $Θ(n)$ काल को सरणी में शफ्लिंग करके प्राप्त किया जा सकता है, लेकिन यह समान मद के लिए मदद नहीं करता है।

स्व-संतुलित बाइनरी खोज ट्री का उपयोग करके सबसे खराब स्थिति वाली गतिविधि में सुधार किया जा सकता है। ऐसे ट्री का उपयोग करते हुए, एल्गोरिदम में $O(log n)$ सबसे खराब स्थिति वाला निष्पादन होता है, इस प्रकार तुलनात्मक शाटन के लिए कोटि-इष्टतम होती है। हालाँकि, ट्री शाटन एल्गोरिदम को द्रुतशाटन या हीपशाटन जैसे स्थान में एल्गोरिदम के विपरीत, ट्री के लिए अलग मेमोरी आवंटित करने की आवश्यकता होती है। अधिकांश सामान्य प्लेटफार्मों पर, इसका अर्थ है कि हीप मेमोरी का उपयोग करना होगा, जो कि द्रुतशाटन और हीपशाटन की तुलना में एक महत्वपूर्ण निष्पादन हिट है। बाइनरी खोज ट्री के रूप में स्प्ले ट्री का उपयोग करते समय, परिणामी एल्गोरिदम (जिसे स्प्लेशाटन कहा जाता है) में अतिरिक्त गुण होता है कि यह एक अनुकूली शाटन है, जिसका अर्थ है कि इसका चलन काल लगभग शाटन किए गए इनपुट के लिए $O(n log n)$ से तेज़ है।

उदाहरण
स्यूडोकोड में निम्नलिखित ट्री शाटन एल्गोरिदम तुलनीय मद के संग्रह को स्वीकार करता है और मद को आरोही क्रम में आउटपुट करता है:

undefined

एक सरल फंक्शनल प्रोग्रामिंग रूप में, एल्गोरिदम (हास्केल में) कुछ इस प्रकार दिखेगा:

उपरोक्त कार्यान्वयन में, निवेशन एल्गोरिदम और पुनःप्राप्ति एल्गोरिदम दोनों हैं, $O(n)$ सबसे खराब स्थिति है।

बाहरी संबंध

 * Tree Sort of a Linked List
 * Tree Sort in C++
 * Tree Sort in C++