समय जटिलता और कम्प्यूटेशनल जटिलता के बीच अंतर


14

एक एल्गोरिथ्म की जटिलता को मापने के लिए, क्या यह समय जटिलता, या कम्प्यूटेशनल जटिलता है? उनके बीच क्या अंतर है?

मैं एल्गोरिथ्म में बुनियादी (सबसे अधिक लागत) ऑपरेशन की अधिकतम (सबसे खराब) गणना की गणना करता था।


2
आपके सवाल का एक जवाब नहीं है, लेकिन बात इस तरह का में आपकी रुचि को देखते हुए, आप भी रुचि हो सकती है cs.stackexchange.com/q/13669/755
DW

1
जब विषमतापूर्ण रनटाइम का जिक्र होता है तो "एक एल्गोरिथ्म की जटिलता" एक (अक्सर इस्तेमाल किया जाने वाला) मिथ्या नाम है। आप "असममित क्रम" कहना चाहते हैं।
राफेल

जवाबों:


9

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

इसलिए सबसे खराब स्थिति में एक एल्गोरिथ्म द्वारा उठाए जाने वाले चरणों की संख्या को गिनना समस्या को हल करने के लिए बाध्य समय जटिलता देता है, यह गिनता है कि यह कितनी मेमोरी / कितनी टेप कोशिकाओं का उपयोग करता है जिससे एक स्थान जटिलता बाध्य होती है आदि।

यह भी याद रखें कि यदि आप सख्त होना चाहते हैं, तो जटिलता समस्या को संदर्भित करती है, एल्गोरिथ्म को नहीं, इसलिए समस्या में जटिलता की सीमा होती है, एक एल्गोरिथ्म में संसाधन सीमा होती है (समय, स्थान का उपयोग ...)। यह सिर्फ एक निश्चित औपचारिकता की बात है, जटिलता सिद्धांत समस्याओं से संबंधित है। हां, एल्गोरिदम समस्याओं और जटिलता का विश्लेषण करने के लिए एक महत्वपूर्ण उपकरण है और एल्गोरिदम बारीकी से एक साथ बंधे हुए हैं, लेकिन औपचारिक रूप से हम मर्ज-सॉर्ट (एक एल्गोरिथ्म) में नहीं कहेंगे , यह समस्या है एस आर टी आई एन जी जी जो अंदर है पी । मर्ज-सॉर्ट कुछ संसाधनों का उपयोग करता है ( O ( n log n ))PSortingPO(nlogn) उदाहरण के लिए चरण )। एल्गोरिथ्म के संसाधन बाध्य और शुद्धता समस्या के लिए बाध्य जटिलता (ऊपरी) है, लेकिन वे अलग-अलग चीजें हैं। है भी टी सी 0 -Complete के तहत एक सी 0 -reductions, इस जटिलता बाध्य केवल वास्तव में एक समस्या के लिए कहा जा सकता है (लेकिन एल्गोरिथम प्रभाव करता है)।SortingTC0AC0


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

1
@ शेखरसुमन विकिपीडिया पृष्ठ का प्रारंभिक अनुच्छेद बहुत अच्छा सारांश है।
ल्यूक मैथिसन

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

1
@MedianHilal समय वास्तव में एक समस्या की जटिलता के लिए सबसे अधिक माना जाने वाला उपाय है। अंतरिक्ष बहुत पीछे नहीं है (कम से कम जटिलता सिद्धांतकारों द्वारा, और बहुत बड़े डेटासेट से निपटने वाले लोग, दिन-प्रतिदिन कम)।
ल्यूक मैथिसन

-2

चक्रवाती जटिलता अक्सर कम्प्यूटेशनल जटिलता के माप के रूप में उपयोग की जाती है एक उपयोगी उदाहरण /programming/9097987/calacle-of-cyclomatic-complexity में प्रदान किया गया है

एल्गोरिथ्म के माध्यम से कई अलग-अलग (संभवतः नेस्टेड) ​​पथ हो सकते हैं जो इसे एक उच्च चक्रीय जटिलता प्रदान करते हैं, लेकिन कोई भी लूप इसे कम समय की जटिलता नहीं देता है। एक एकल लूप के साथ एक कार्यक्रम में एक कम चक्रीय जटिलता होगी लेकिन संभवतः एक उच्च समय जटिलता।

साइक्लोमैटिक जटिलता अक्सर कोड के लिए आवश्यक रखरखाव के एक उपाय के रूप में उपयोग की जाती है। Http://docs.sonarqube.org/display/SONAR/Bad+Distribution+of+Complexity में अधिक विस्तृत चर्चा प्रदान की गई है । यह समय जटिलता के लिए अलग है जो कोड के समय माप को चलाया जाता है और सिस्टम की प्रभावशीलता के उपयोगकर्ताओं की धारणा का आकलन करने के लिए उपयोग किया जा सकता है।


प्रश्न कम्प्यूटेशनल-कॉम्प्लेक्सिटी के बारे में है, न कि साइक्लोमैटिक कॉम्प्लेक्सिटी के बारे में!
Am_I_Helpful

आप ओपी को पढ़ना चाह सकते हैं - वह एक एल्गोरिथ्म की जटिलता के बारे में पूछ रहा है - साइक्लोमैटिक जटिलता एल्गोरिदम कम्प्यूटेशनल जटिलता का एक स्थिर माप देता है - अगली बार सकारात्मक प्रतिक्रिया जोड़ने का प्रयास करें
वेल्वेटीओस्ट

2
चक्रवाती जटिलता कम्प्यूटेशनल जटिलता को मापती नहीं है। कम्प्यूटेशनल जटिलता रनिंग टाइम को संदर्भित करता है, न कि स्रोत कोड संरचना कितनी जटिल है।
डीडब्ल्यू

@ अधिक सटीक, कम्प्यूटेशनल जटिलता एक समस्या को हल करने के लिए आवश्यक संसाधनों को संदर्भित करता है (जिसमें स्थान, प्रत्यावर्तन, ओरेकल कॉल और इतने पर, साथ ही साथ समय भी शामिल हो सकता है)।
डेविड रिचेर्बी

@DavidRicherby मैं इस पर कोई विशेषज्ञ नहीं हूं, इसलिए कृपया गलत होने पर सही करें। स्टेटिक जटिलता के उपाय, जैसे कि कार्यक्रम का आकार किसी स्थिति में भूमिका निभाता है। क्या मैं सही हूं कि यह कोलमोगोरोव जटिलता से अधिक संबंधित है। क्या यह भी Cyclomatic जटिलता के लिए मामला होगा? कार्यक्रम या समस्याओं को लिखने के लिए एक प्रकार की जटिलता, और उन्हें हल करने या चलाने के लिए अन्य ... संभवतः स्थिति का एक संक्षिप्त अनुमान। मुझे यकीन नहीं है कि मैं इस पर एक समझदार प्रश्न लिखूंगा।
बबौ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.