टूर्नामेंट क्रम

टूर्नामेंट क्रम एक श्रेणीकरण एल्गोरिदम है। यह क्रम में अगला अवयव ढूंढने के लिए प्राथमिकता कतार का उपयोग करके सरल चयन क्रम में सुधार करता है। अनुभवहीन चयन क्रम में, n अवयवों के अगले अवयव का चयन करने के लिए O(n) संक्रिया की आवश्यकता होती है; टूर्नामेंट क्रम में, इसमें O(log n) संक्रिया होते हैं O(n) में प्रारंभिक टूर्नामेंट बनाने के बाद)। टूर्नामेंट क्रम, हीप्सॉर्ट का ही एक रूप है।

सामान्य अनुप्रयोग
टूर्नामेंट प्रतिस्थापन चयन क्रम का उपयोग बाहरी श्रेणीकरण एल्गोरिदम के लिए प्रारंभिक रन संगृहीत करने के लिए किया जाता है। वैचारिक रूप से, एक बाहरी फ़ाइल पढ़ी जाती है और उसके अवयवों को प्राथमिकता कतार में डाल दिया जाता है जब तक कि कतार पूरी न हो जाए। न्यूनतम अवयव को फिर कतार से निकाला जाता है और पहले रन के भाग के रूप में लिखा जाता है। अगले इनपुट अवयव को पढ़ा जाता है और कतार में डाल दिया जाता है, और मिनट को फिर से चुना जाता है और रन में जोड़ा जाता है। एक छोटी सी युक्ति है कि यदि कतार में जोड़ा जाने वाला नया अवयव रन में जोड़े गए अंतिम अवयव से कम है, तो अवयव का क्रम मान बढ़ जाता है, इसलिए यह अगले रन का भाग होगा, इसलिए यह अगले रन का भाग होगा। औसतन, एक रन प्राथमिकता कतार की क्षमता से 100% लंबा होगा।

टूर्नामेंट क्रम का उपयोग n-वे विलय में भी किया जा सकता है।

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

कार्यान्वयन
निम्नलिखित हास्केल में टूर्नामेंट क्रम का कार्यान्वयन है, जो स्टेपानोव और केरशेनबाम द्वारा योजना कोड पर आधारित है।

संदर्भ

 * Kershenbaum et al 1988, "Higher Order Imperative Programming"