यहाँ असममित विश्लेषण द्वारा मुझे लगता है कि हम एल्गोरिथ्म के व्यवहार का मतलब है कि इनपुट का आकार अनंत तक जाता है।
हम एसिम्प्टोटिक विश्लेषण का उपयोग करते हैं इसका कारण यह है कि
यह व्यवहार में एल्गोरिदम के व्यवहार की भविष्यवाणी करने में उपयोगी है । भविष्यवाणियां हमें निर्णय लेने की अनुमति देती हैं, उदाहरण के लिए जब हमारे पास एक समस्या के लिए अलग-अलग एल्गोरिदम हैं जो हमें उपयोग करना चाहिए? (उपयोगी होने का मतलब यह नहीं है कि यह हमेशा सही हो।)
वही सवाल वास्तविक दुनिया के किसी भी सरलीकृत मॉडल के बारे में पूछा जा सकता है। हम वास्तविक दुनिया के सरलीकृत गणितीय मॉडल का उपयोग क्यों करते हैं?
भौतिकी के बारे में सोचो। शास्त्रीय न्यूटोनियन भौतिकी वास्तविक दुनिया की भविष्यवाणी करने में सापेक्ष भौतिकी के रूप में अच्छी नहीं है। लेकिन यह कारों, गगनचुंबी इमारतों, पनडुब्बियों, हवाई जहाज, पुलों आदि के निर्माण के लिए एक अच्छा पर्याप्त मॉडल है। ऐसे मामले हैं जहां यह पर्याप्त नहीं है, जैसे अगर हम एक उपग्रह बनाना चाहते हैं या प्लूटो को एक अंतरिक्ष जांच भेजना चाहते हैं या आंदोलन की भविष्यवाणी करें। बड़े आकाशीय पिंड जैसे तारे और ग्रह या बहुत उच्च गति की वस्तुएं जैसे इलेक्ट्रान।
यह जानना महत्वपूर्ण है कि एक मॉडल की सीमाएं क्या हैं।
यह आमतौर पर वास्तविक दुनिया का एक अच्छा पर्याप्त सन्निकटन है।
व्यवहार में हम अक्सर देखते हैं कि बेहतर स्पर्शोन्मुख विश्लेषण के साथ एक एल्गोरिथ्म अभ्यास में बेहतर काम करता है। यह शायद ही कभी मामला है कि एक एल्गोरिथ्म में बेहतर स्पर्शोन्मुख व्यवहार होता है इसलिए यदि इनपुट पर्याप्त बड़े हो सकते हैं तो हम आमतौर पर एल्गोरिदम के व्यवहार की पहली भविष्यवाणी के रूप में स्पर्शोन्मुख विश्लेषण पर भरोसा कर सकते हैं। ऐसा नहीं है अगर हम जानते हैं कि इनपुट छोटे होने वाले हैं। प्रदर्शन के आधार पर हम चाहते हैं कि हमें और अधिक सावधानीपूर्वक विश्लेषण करने की आवश्यकता हो सकती है, उदाहरण के लिए यदि हमारे पास आदानों के वितरण के बारे में जानकारी है तो एल्गोरिथ्म दिया जाएगा, हम अपने लक्ष्यों को प्राप्त करने के लिए अधिक सावधानीपूर्वक विश्लेषण कर सकते हैं (जैसे 99 पर उपवास द% खत ह)। बिंदु के रूप में एक पहला कदम है विषम विश्लेषण एक अच्छा प्रारंभिक बिंदु है। व्यवहार में हमें प्रदर्शन परीक्षण भी करना चाहिए, लेकिन ध्यान रखें कि इसके अपने मुद्दे भी हैं।
AAAबेहतर स्पर्शोन्मुख जटिलता है। उनमें से कोई भी सभी इनपुट्स में दूसरे से बेहतर नहीं है? तब यह और अधिक मुश्किल हो जाता है और इस बात पर निर्भर करता है कि हम किस चीज की परवाह करते हैं। क्या हम बड़े इनपुट्स या छोटे इनपुट्स की परवाह करते हैं? यदि हम बड़े इनपुट्स की परवाह करते हैं तो यह सामान्य नहीं है कि एक एल्गोरिथ्म में बेहतर स्पर्शोन्मुख जटिलता है लेकिन बड़े इनपुट पर सबसे बुरा व्यवहार करता है जिसका हम ध्यान रखते हैं। यदि हम छोटे आदानों के बारे में अधिक ध्यान रखते हैं तो स्पर्शोन्मुख विश्लेषण उतना उपयोगी नहीं हो सकता है। हमें उन इनपुट पर एल्गोरिदम के चलने के समय की तुलना करनी चाहिए जिनकी हम देखभाल करते हैं। व्यवहार में, जटिल आवश्यकताओं के साथ जटिल कार्यों के लिए विषम विश्लेषण उतना उपयोगी नहीं हो सकता है। सरल बुनियादी समस्याओं के लिए जो एल्गोरिथ्म पाठ्यपुस्तकों को कवर करती है, यह काफी उपयोगी है।
संक्षेप में अस्वाभाविक जटिलता सरल बुनियादी कार्यों (एल्गोरिथम पाठ्यपुस्तक में समस्याएं) के लिए एल्गोरिदम की वास्तविक जटिलता का अनुमान लगाना अपेक्षाकृत आसान है। जैसा कि हम और अधिक जटिल कार्यक्रमों का निर्माण करते हैं, प्रदर्शन की आवश्यकताएं बदल जाती हैं और अधिक जटिल हो जाती हैं और विषम विश्लेषण उतना उपयोगी नहीं हो सकता है।
एल्गोरिदम के प्रदर्शन की भविष्यवाणी करने और उनकी तुलना करने के लिए अन्य दृष्टिकोण के लिए स्पर्शोन्मुख विश्लेषण की तुलना करना अच्छा है। एक सामान्य दृष्टिकोण यादृच्छिक या बेंचमार्क इनपुट के खिलाफ प्रदर्शन परीक्षण है। यह आम है जब स्पर्शोन्मुख जटिलता की गणना मुश्किल या अक्षम्य है, उदाहरण के लिए जब हम उत्तराधिकारियों का उपयोग कर रहे हैं जैसा कि एसएटी हल कर रहा है। एक अन्य मामला यह है कि जब आवश्यकताएं अधिक जटिल होती हैं, उदाहरण के लिए जब किसी कार्यक्रम का प्रदर्शन बाहरी कारकों पर निर्भर करता है और हमारा लक्ष्य कुछ ऐसा हो सकता है जो कुछ निश्चित समय सीमाओं के तहत खत्म होता है (जैसे कि किसी उपयोगकर्ता को दिखाए गए इंटरफ़ेस को अद्यतन करने के बारे में सोचें) 99% पर आदानों।
लेकिन ध्यान रखें कि प्रदर्शन विश्लेषण में भी इसके मुद्दे हैं। यह प्रदर्शन पर गणितीय अनुदान प्रदान नहीं करता है कम पर हम वास्तव में सभी इनपुटों पर प्रदर्शन परीक्षण चलाते हैं जो कि एल्गोरिथ्म (अक्सर कम्प्यूटेशनल रूप से infeasbile) को दिया जाएगा (और यह अक्सर तय करना संभव नहीं है कि कुछ इनपुट कभी नहीं दिए जाएंगे)। यदि हम किसी रैंडम सैंपल या बेंचमार्क के खिलाफ टेस्ट करते हैं, तो हम अनुमान लगा रहे हैं
कि एल्गोरिदम के प्रदर्शन के बारे में कुछ नियमितता है, यानी एल्गोरिदम अन्य इनपुट्स पर भी इसी तरह का प्रदर्शन करेगा, जो परफॉर्मेंस टेस्ट का हिस्सा नहीं थे।
प्रदर्शन परीक्षणों के साथ दूसरा मुद्दा यह है कि वे परीक्षण वातावरण पर निर्भर करते हैं। यानी एक कार्यक्रम का प्रदर्शन अकेले इनपुट्स द्वारा निर्धारित नहीं होता है, लेकिन बाहर के कारक (जैसे मशीन प्रकार, ऑपरेशन सिस्टम, कोडित एल्गोरिथ्म की दक्षता, सीपीयू का उपयोग, मेमोरी एक्सेस समय, आदि) जिनमें से कुछ अलग-अलग रन के बीच भिन्न हो सकते हैं। एक ही मशीन पर परीक्षण। यहां हम मान रहे हैं कि प्रदर्शन परीक्षण किए जाने वाले विशेष वातावरण वास्तविक वातावरण के समान हैं जब तक कि हम सभी वातावरणों पर प्रदर्शन परीक्षण नहीं करते हैं जो हम कार्यक्रम को चला सकते हैं (और हम कैसे अनुमान लगा सकते हैं कि मशीनें किसी को छांट सकती हैं। 10 साल में एल्गोरिथ्म?)।
Θ(nlgn)Θ(n2)Θ(lgn)O(n)