सबसे पहले, दोनों एल्गोरिदम सभी इनपुट के लिए "काम" करते हैं। सवाल प्रदर्शन को लेकर है।
उस सवाल के जवाब एक तरह के भद्दे हैं। एक एल्गोरिथ्म को कहने का एक तरीका समान रूप से दूसरे की तुलना में अधिक कुशल है अगर कुछ (समस्या-विशिष्ट) इनपुट आकार है जैसे कि किसी भी बड़े इनपुट आकार के लिए अधिक कुशल एल्गोरिदम कम "कम्प्यूटेशनल चरण" लेगा, आमतौर पर कुछ सार उपाय, जैसे। तुलनाओं की संख्या।
उत्तरों का विचार यह है कि एक asymptotically अधिक कुशल एल्गोरिदम को अभी भी उस इनपुट आकार से पहले अधिक चरणों की आवश्यकता हो सकती है । यह मामला हो सकता है कि asymptotically अधिक कुशल एल्गोरिदम को सभी इनपुट के लिए कम चरणों की आवश्यकता होती है, लेकिन यह मामला होने की आवश्यकता नहीं है और व्यवहार में आमतौर पर ऐसा नहीं होता है। तो "सही" उत्तर का एक बेहतर शब्दांकन होगा "एक्ससंभवतः छोटे इनपुट को छोड़कर सभी इनपुट के लिए एक बेहतर विकल्प होगा ”।
शब्दांकन अभी भी उतना महान नहीं है। सबसे पहले, कई और कारक यह तय करने में जाते हैं कि एल्गोरिथ्म एक "बेहतर विकल्प" क्या है, लेकिन मैं उन्हें दे दूँगा कि इस मामले में इरादा काफी स्पष्ट है। असली मुद्दा "छोटा" और "बड़ा" है। मेरे पसंदीदा कागजों में से एक है , सबसे तेज़ और सबसे कम एल्गोरिथ्म सभी अच्छी तरह से परिभाषित समस्याओं के लिए । इस पत्र में एक एल्गोरिथ्म का वर्णन किया गया है, जो किसी फ़ंक्शन के विनिर्देशन और एक प्रमाण देता है कि इसे बहुपद समय में गणना की जा सकती है, जो एक कारक के भीतर इष्टतम समय जटिलता में उस फ़ंक्शन की गणना करेगा5प्लस एक additive शब्द। उदाहरण के लिए, यदि मैंने इसे फंक्शन स्पेसिफिकेशन के रूप में बबल सॉर्ट के कार्यान्वयन और सरल प्रमाण के रूप में प्रदान किया जो कि यह थाओ (n2), यह एक छँटाई एल्गोरिथ्म का उत्पादन होगा जो था ओ ( एन एलजीn )। वास्तव में, यह एक एल्गोरिथ्म का उत्पादन करेगा जो था5 सी एन एलजीn + o ( n lg)n ) कहाँ पे सीएसिम्पटोटली * इष्टतम एल्गोरिथ्म का निरंतर कारक था । ये अद्भुत है। बस एक ही समस्या है: निरंतर शब्द - में छिपा हुआo ( n lg)n )इस उदाहरण में - लगभग किसी भी वास्तविक समस्या के लिए एल्गोरिथ्म को लगभग निश्चित रूप से पूरी तरह से संभव बनाता है। "पूरी तरह से अनम्य" से मेरा क्या मतलब है? मेरा मतलब है कि एल्गोरिथ्म पूरा होने से पहले ब्रह्मांड की गर्मी मौत कई बार खत्म हो जाएगी। फिर भी, उपयुक्त रूप से "बड़े" इनपुट के लिए यह बुलबुला सॉर्ट की तुलना में तेज़ होगा। मेरा कहना है कि यह लगभग निश्चित रूप से संभव नहीं है कि किसी भी तरह से "उपयुक्त रूप से बड़े" इनपुट के साथ लिखना संभव हो, इस पर अकेले गणना करें।
किसी भी दर पर, मैं सही उत्तर कैसे लिखूंगा: "एक्स से कम चरणों की आवश्यकता है Y पर्याप्त रूप से बड़े इनपुट्स पर "। यह अभी भी थोड़ा अस्पष्ट है क्योंकि" चरण "की कई धारणाएं हैं जो लागू हो सकती हैं और एक एल्गोरिथ्म एक मीट्रिक द्वारा एक से अधिक कुशल और किसी अन्य द्वारा कम कुशल हो सकती है। यह शब्दांकन" बेहतर "के मूल्य निर्णय से बचता है। पसंद ", असमान रूप से कम कुशल एल्गोरिदम या यहां तक कि कम कुशल एल्गोरिदम चुनने के लिए कई कारण हैं जब निरंतर कारक / शर्तें निर्दिष्ट की जाती हैं जैसे कि कैश-दक्षता या कार्यान्वयन सादगी।
* यहाँ एक सूक्ष्मता है। Asymptotically इष्टतम एल्गोरिथ्म एक बदतर निरंतर कारक हो सकता है,सी, एक asymptotically गैर-इष्टतम एल्गोरिथ्म की तुलना में। मुझे लगता है कि इसका सबसे अच्छा मूल्य होगासी किसी भी asymptotically इष्टतम एल्गोरिथ्म के लिए, लेकिन यह बोधगम्य है कि स्पर्शोन्मुख दक्षता में एक मामूली लाभ को निचोड़ने के लिए, बड़े पैमाने पर जटिलता को जोड़ा जाता है जो लगातार कारक को बढ़ाता है।