"असीम रूप से अधिक कुशल" कहने से क्या मतलब है?


12

इसका क्या मतलब है जब हम कहते हैं कि एक एल्गोरिथ्म X की तुलना में अधिक कुशल है Y ?

  • X सभी आदानों के लिए एक बेहतर विकल्प होगा।
  • X छोटे इनपुट को छोड़कर सभी इनपुट के लिए एक बेहतर विकल्प होगा।
  • X बड़े इनपुट को छोड़कर सभी इनपुट के लिए एक बेहतर विकल्प होगा।
  • Y छोटे इनपुट के लिए एक बेहतर विकल्प होगा।

इस सवाल का लिंक यहाँ है।

http://quiz.geeksforgeeks.org/algorithms-analysis-of-algorithms-question-16/


मैंने सोचा कि एक एल्गोरिथ्म और अधिक asymptotically कुशल सभी इनपुट के लिए काम करना चाहिए, लेकिन मुझे इसके पीछे का कारण नहीं मिल रहा है "यह छोटे लोगों को छोड़कर सभी इनपुट के लिए काम करता है"।


बड़े इनपुट एल्गोरिथ्म में बोतल की गर्दन को उजागर करता है। क्या मैं इंजीनियरिंग के संदर्भ में रखूंगा।
एपीवेट चेंटावीबुल

जवाबों:


14

सबसे पहले, दोनों एल्गोरिदम सभी इनपुट के लिए "काम" करते हैं। सवाल प्रदर्शन को लेकर है।

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

उत्तरों का विचार यह है कि एक asymptotically अधिक कुशल एल्गोरिदम को अभी भी उस इनपुट आकार से पहले अधिक चरणों की आवश्यकता हो सकती है । यह मामला हो सकता है कि asymptotically अधिक कुशल एल्गोरिदम को सभी इनपुट के लिए कम चरणों की आवश्यकता होती है, लेकिन यह मामला होने की आवश्यकता नहीं है और व्यवहार में आमतौर पर ऐसा नहीं होता है। तो "सही" उत्तर का एक बेहतर शब्दांकन होगा "Xसंभवतः छोटे इनपुट को छोड़कर सभी इनपुट के लिए एक बेहतर विकल्प होगा ”।

शब्दांकन अभी भी उतना महान नहीं है। सबसे पहले, कई और कारक यह तय करने में जाते हैं कि एल्गोरिथ्म एक "बेहतर विकल्प" क्या है, लेकिन मैं उन्हें दे दूँगा कि इस मामले में इरादा काफी स्पष्ट है। असली मुद्दा "छोटा" और "बड़ा" है। मेरे पसंदीदा कागजों में से एक है , सबसे तेज़ और सबसे कम एल्गोरिथ्म सभी अच्छी तरह से परिभाषित समस्याओं के लिए । इस पत्र में एक एल्गोरिथ्म का वर्णन किया गया है, जो किसी फ़ंक्शन के विनिर्देशन और एक प्रमाण देता है कि इसे बहुपद समय में गणना की जा सकती है, जो एक कारक के भीतर इष्टतम समय जटिलता में उस फ़ंक्शन की गणना करेगा5प्लस एक additive शब्द। उदाहरण के लिए, यदि मैंने इसे फंक्शन स्पेसिफिकेशन के रूप में बबल सॉर्ट के कार्यान्वयन और सरल प्रमाण के रूप में प्रदान किया जो कि यह थाO(n2), यह एक छँटाई एल्गोरिथ्म का उत्पादन होगा जो था O(nlgn)। वास्तव में, यह एक एल्गोरिथ्म का उत्पादन करेगा जो था5cnlgn+o(nlgn) कहाँ पे cएसिम्पटोटली * इष्टतम एल्गोरिथ्म का निरंतर कारक था । ये अद्भुत है। बस एक ही समस्या है: निरंतर शब्द - में छिपा हुआo(nlgn)इस उदाहरण में - लगभग किसी भी वास्तविक समस्या के लिए एल्गोरिथ्म को लगभग निश्चित रूप से पूरी तरह से संभव बनाता है। "पूरी तरह से अनम्य" से मेरा क्या मतलब है? मेरा मतलब है कि एल्गोरिथ्म पूरा होने से पहले ब्रह्मांड की गर्मी मौत कई बार खत्म हो जाएगी। फिर भी, उपयुक्त रूप से "बड़े" इनपुट के लिए यह बुलबुला सॉर्ट की तुलना में तेज़ होगा। मेरा कहना है कि यह लगभग निश्चित रूप से संभव नहीं है कि किसी भी तरह से "उपयुक्त रूप से बड़े" इनपुट के साथ लिखना संभव हो, इस पर अकेले गणना करें।

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

* यहाँ एक सूक्ष्मता है। Asymptotically इष्टतम एल्गोरिथ्म एक बदतर निरंतर कारक हो सकता है,c, एक asymptotically गैर-इष्टतम एल्गोरिथ्म की तुलना में। मुझे लगता है कि इसका सबसे अच्छा मूल्य होगाc किसी भी asymptotically इष्टतम एल्गोरिथ्म के लिए, लेकिन यह बोधगम्य है कि स्पर्शोन्मुख दक्षता में एक मामूली लाभ को निचोड़ने के लिए, बड़े पैमाने पर जटिलता को जोड़ा जाता है जो लगातार कारक को बढ़ाता है।


2

जब वे कुछ इस तरह से कहते हैं तो आमतौर पर लोगों का क्या मतलब होता है:

अगर TA तथा TB एल्गोरिदम के दो रन-टाइम लागत कार्य हैं A तथा B क्रमशः मॉडल एक्स में, फिर TAo(TB)

कई कैविएट यहां लागू होते हैं: Xनिर्दिष्ट करने की आवश्यकता है, और हमें परिभाषित करना होगा कि "रनिंग-टाइम कॉस्ट" का क्या मतलब है, वास्तव में। समय लगभग कभी जांच का विषय नहीं है। कई अन्य लागत उपाय हैं। यह स्पष्ट नहीं है कि लैंडौ संकेतन दक्षता के बारे में कोई सहायक बयान देता है। और इसी तरह।

विशेष रूप से, आपके द्वारा दिए गए किसी भी कथन का अनुसरण नहीं किया जाता है, भले ही लोग अक्सर दूसरे का सुझाव देते हों।

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

आपको हमारे संदर्भ प्रश्नों में रुचि हो सकती है ।


एक एल्गोरिथ्म X को Y से asymptotically बेहतर कहा जाता है यदि X सभी इनपुट आकारों के लिए y से छोटे समय लेता है n एक मान n0 से बड़ा है जहाँ n0> 0 है।

ध्यान दें कि यह सामान्य परिभाषा कैसे नहीं है! अगरTA(n)=n+1 तथा TB(n)=n, हम इसे "asymptotically बेहतर" नहीं कहेंगे। एक एल्गोरिथ्म के प्रदर्शन को एक ही नंबर पर नीचे गिराने वाले विश्लेषण के सभी गुटों को देखते हुए, कोई भी दावा नहीं करता है कि एक दूसरे की तुलना में "बेहतर" था।

मैं आपको सीएस संसाधनों से कंप्यूटर विज्ञान सीखने की सलाह देता हूं, न कि प्रोग्रामर से जिन्होंने विकिपीडिया पर एक बार सामान के बारे में पढ़ा है। (हाँ, यह कठोर है, लेकिन मैंने बहुत सारे झूठे प्रोग्रामर सर्कल में प्रचारित देखा है, यहां तक ​​कि एसओ पर भी)।


2

"एसिम्पोटिकली अधिक कुशल" का अर्थ है "एक निश्चित आकार से ऊपर की सभी समस्याओं के लिए अधिक कुशल"। यह नहीं कहता कि "निश्चित आकार" क्या है, और यह नहीं कहता कि "निश्चित आकार" से पहले क्या होता है।

तो दूसरे एक को छोड़कर सभी जवाब स्पष्ट रूप से गलत हैं, क्योंकि "एसिम्पोटिक रूप से अधिक कुशल" छोटे इनपुट आकारों के बारे में कुछ भी नहीं कहता है। लेकिन दूसरा भी समस्याग्रस्त है।

वर्तमान में ऐसा कोई हार्डवेयर नहीं है जो किसी सरणी को संग्रहीत कर सके 1030 पूर्णांक, इतनी स्पष्ट रूप से 1030पूर्णांक "बड़े इनपुट" के रूप में गिना जाएगा। लेकिन मैं आसानी से एक सॉर्टिंग एल्गोरिथ्म बना सकता हूं जो कि बम्स्पोर्ट की तुलना में समान रूप से अधिक कुशल है, लेकिन केवल इनपुट के लिए1040या अधिक पूर्णांकों। तो उत्तर दो, "बड़े" को "बड़े पर्याप्त" में बदल दें, और यह सही हो जाता है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.