एक एल्गोरिथ्म की जटिलता को मापने के लिए, क्या यह समय जटिलता, या कम्प्यूटेशनल जटिलता है? उनके बीच क्या अंतर है?
मैं एल्गोरिथ्म में बुनियादी (सबसे अधिक लागत) ऑपरेशन की अधिकतम (सबसे खराब) गणना की गणना करता था।
एक एल्गोरिथ्म की जटिलता को मापने के लिए, क्या यह समय जटिलता, या कम्प्यूटेशनल जटिलता है? उनके बीच क्या अंतर है?
मैं एल्गोरिथ्म में बुनियादी (सबसे अधिक लागत) ऑपरेशन की अधिकतम (सबसे खराब) गणना की गणना करता था।
जवाबों:
कम्प्यूटेशनल जटिलता सिर्फ एक सामान्य शब्द है, क्योंकि समय एकमात्र ऐसा संसाधन नहीं है जिस पर हम विचार करना चाहते हैं। अगला सबसे स्पष्ट वह स्थान है जो एक एल्गोरिथ्म का उपयोग करता है, और इसलिए हम अंतरिक्ष जटिलता के बारे में बात कर सकते हैं , कम्प्यूटेशनल जटिलता के एक भाग के रूप में भी। वास्तव में हम आपके द्वारा उपयोग किए जाने वाले किसी भी उपाय के लिए ऐसा कर सकते हैं, निश्चित रूप से कुछ उपाय दूसरों की तुलना में अधिक उपयोगी हैं।
इसलिए सबसे खराब स्थिति में एक एल्गोरिथ्म द्वारा उठाए जाने वाले चरणों की संख्या को गिनना समस्या को हल करने के लिए बाध्य समय जटिलता देता है, यह गिनता है कि यह कितनी मेमोरी / कितनी टेप कोशिकाओं का उपयोग करता है जिससे एक स्थान जटिलता बाध्य होती है आदि।
यह भी याद रखें कि यदि आप सख्त होना चाहते हैं, तो जटिलता समस्या को संदर्भित करती है, एल्गोरिथ्म को नहीं, इसलिए समस्या में जटिलता की सीमा होती है, एक एल्गोरिथ्म में संसाधन सीमा होती है (समय, स्थान का उपयोग ...)। यह सिर्फ एक निश्चित औपचारिकता की बात है, जटिलता सिद्धांत समस्याओं से संबंधित है। हां, एल्गोरिदम समस्याओं और जटिलता का विश्लेषण करने के लिए एक महत्वपूर्ण उपकरण है और एल्गोरिदम बारीकी से एक साथ बंधे हुए हैं, लेकिन औपचारिक रूप से हम मर्ज-सॉर्ट (एक एल्गोरिथ्म) में नहीं कहेंगे , यह समस्या है एस ओ आर टी आई एन जी जी जो अंदर है पी । मर्ज-सॉर्ट कुछ संसाधनों का उपयोग करता है ( O ( n log n )) उदाहरण के लिए चरण )। एल्गोरिथ्म के संसाधन बाध्य और शुद्धता समस्या के लिए बाध्य जटिलता (ऊपरी) है, लेकिन वे अलग-अलग चीजें हैं। है भी टी सी 0 -Complete के तहत एक सी 0 -reductions, इस जटिलता बाध्य केवल वास्तव में एक समस्या के लिए कहा जा सकता है (लेकिन एल्गोरिथम प्रभाव करता है)।
चक्रवाती जटिलता अक्सर कम्प्यूटेशनल जटिलता के माप के रूप में उपयोग की जाती है एक उपयोगी उदाहरण /programming/9097987/calacle-of-cyclomatic-complexity में प्रदान किया गया है
एल्गोरिथ्म के माध्यम से कई अलग-अलग (संभवतः नेस्टेड) पथ हो सकते हैं जो इसे एक उच्च चक्रीय जटिलता प्रदान करते हैं, लेकिन कोई भी लूप इसे कम समय की जटिलता नहीं देता है। एक एकल लूप के साथ एक कार्यक्रम में एक कम चक्रीय जटिलता होगी लेकिन संभवतः एक उच्च समय जटिलता।
साइक्लोमैटिक जटिलता अक्सर कोड के लिए आवश्यक रखरखाव के एक उपाय के रूप में उपयोग की जाती है। Http://docs.sonarqube.org/display/SONAR/Bad+Distribution+of+Complexity में अधिक विस्तृत चर्चा प्रदान की गई है । यह समय जटिलता के लिए अलग है जो कोड के समय माप को चलाया जाता है और सिस्टम की प्रभावशीलता के उपयोगकर्ताओं की धारणा का आकलन करने के लिए उपयोग किया जा सकता है।