ट्री शाटन

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

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

दक्षता
बाइनरी खोज ट्री में एक आइटम जोड़ना औसतन एक $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++