पृष्ठभूमि: चाओ जू ने कुछ समय पहले निम्नलिखित प्रश्न पोस्ट किए थे: " क्या कोई ज्ञात तुलना सॉर्टिंग एल्गोरिदम हैं जो सॉर्टिंग नेटवर्क को कम नहीं करते हैं, जैसे कि प्रत्येक तत्व की तुलना बार की जाती है? "। ऐसा लगता है कि हम समस्या से थोड़े चिपके हुए हैं; मैंने 2009 में वैलेंटाइन पोलिशचुक के साथ इसी समस्या पर चर्चा की है, और हम कहीं नहीं मिले।
कुछ नए विचार प्राप्त करने के लिए, मैंने सबसे सरल संभव सवाल के साथ आने की कोशिश की, जिसमें समान स्वाद है और पूरी तरह से तुच्छ नहीं है। इसलिए निम्नलिखित प्रश्न
प्रश्न: आपको दो छांटे गए सूची दिए गए हैं, जिनमें से प्रत्येक तत्वों के साथ है। क्या आप सूचियों को मर्ज कर सकते हैं ताकि प्रत्येक तत्व केवल O ( 1 ) बार की तुलना में हो ?
स्वाभाविक रूप से, आउटपुट एक सॉर्ट की गई सूची होनी चाहिए जिसमें सभी तत्व शामिल हैं।
[यह तुच्छ निकला, जवाब "नहीं" है।]
प्रश्न 2: आपको दो छांटे गए सूची दिए गए हैं, उनमें से प्रत्येक में तत्व हैं। क्या आप सूचियों को मर्ज कर सकते हैं ताकि प्रत्येक तत्व की तुलना केवल O ( 1 ) समय से की जाए, यदि आपको तत्वों के एक छोटे से अंश को त्यागने की अनुमति है ?
अधिक सटीक रूप से, आउटपुट एक क्रमबद्ध सूची होनी चाहिए जिसमें तत्व होते हैं, और एक "trashcan" जिसमें T ( n ) तत्व होते हैं। T ( n ) मान को आप कितना छोटा कर सकते हैं ? हो रही टी ( एन ) = n तुच्छ है। T ( n ) = n / 100 जैसी कोई चीज सीधे तरीके से करनी चाहिए। लेकिन क्या आप टी ( एन ) = ओ ( एन ) प्राप्त कर सकते हैं ?
टिप्पणियाँ:
हम यहां तुलना मॉडल का उपयोग करते हैं। नियतात्मक एल्गोरिदम केवल, हम सबसे खराब मामलों की गारंटी में रुचि रखते हैं।
ध्यान दें कि दोनों सूचियों में बिल्कुल तत्व हैं। यदि हमारे पास n तत्वों के साथ एक सूची और दूसरे में 1 तत्व है, तो इसका उत्तर स्पष्ट रूप से "नहीं" है; हालाँकि, यदि दोनों सूचियाँ लंबी हैं, तो ऐसा लगता है कि कोई "लोड बैलेंसिंग" करने में सक्षम हो सकता है।
इस बार किसी भी प्रकार का एल्गोरिथ्म मान्य है। यदि आपका एल्गोरिथ्म बिल्डिंग ब्लॉक के रूप में छँटाई नेटवर्क का उपयोग करता है, तो यह पूरी तरह से ठीक है।