कम्प्यूटेशनल जटिलता सिद्धांत

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

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

सैद्धांतिक कंप्यूटर विज्ञान में बारीकी से संबंधित क्षेत्र एल्गोरिदम (कलन विधि) और संगणनीयता सिद्धांत का विश्लेषण है। एल्गोरिदम और कम्प्यूटेशनल जटिलता सिद्धांत के विश्लेषण के बीच एक महत्वपूर्ण अंतर यह है कि पूर्व समस्या को हल करने के लिए एक विशेष एल्गोरिदम द्वारा आवश्यक संसाधनों की संख्या का विश्लेषण करने के लिए समर्पित है, जबकि बाद वाला सभी संभावित एल्गोरिदम के बारे में अधिक सामान्य है। ऐसे प्रश्न पूछता है जिनका उपयोग उसी समस्या को हल करने के लिए किया जा सकता है। अधिक सटीक रूप से, कम्प्यूटेशनल जटिलता सिद्धांत उन समस्याओं को वर्गीकृत करने का प्रयास करता है जो उचित रूप से प्रतिबंधित संसाधनों के साथ हल हो सकते हैं या नहीं। बदले में, उपलब्ध संसाधनों पर प्रतिबंध लगाने से कम्प्यूटेशनल जटिलता को कम्प्यूटेबिलिटी सिद्धांत से अलग किया जाता है: बाद वाला सिद्धांत पूछता है कि किस प्रकार की समस्याएं, सिद्धांत रूप में, एल्गोरिदमिक रूप से हल की जा सकती हैं।

समस्या उदाहरण
कम्प्यूटेशनल (अभिकलनात्‍मक) समस्या को उदाहरणों के अनंत संग्रह के रूप में देखा जा सकता है, जिसमें प्रत्येक उदाहरण के लिए (संभवतः खाली) समाधानों का समुच्चय होता है। कम्प्यूटेशनल समस्या के इनपुट स्ट्रिंग को समस्या उदाहरण के रूप में संदर्भित किया जाता है, और इसे स्वयं समस्या के साथ भ्रमित नहीं होना चाहिए। अभिकलनात्‍मक जटिलता सिद्धांत में, समस्या को हल करने के लिए अमूर्त प्रश्न को संदर्भित किया जाता है। इसके विपरीत, इस समस्या का एक उदाहरण एक ठोस कथन है, जो एक निर्णय समस्या के लिए इनपुट के रूप में कार्य कर सकता है। उदाहरण के लिए, प्राणिकता परीक्षण की समस्या पर विचार करें। एक उदाहरण एक संख्या है (उदाहरण के लिए, 15) और उत्तर "हाँ" है यदि संख्या प्रधान है और "नहीं" अन्यथा (इस मामले में, 15 अभाज्य नहीं है और उत्तर "नहीं" है)। दूसरे तरीके से कहा, उदाहरण समस्या के लिए एक विशेष इनपुट है, और समाधान दिए गए इनपुट से संबंधित आउटपुट है।

समस्या और उदाहरण के बीच के अंतर को और स्पष्ट करने के लिए, ट्रैवलिंग सेल्समैन की समस्या के निर्णय संस्करण के निम्नलिखित उदाहरण पर विचार करें: क्या जर्मनी के सभी 15 सबसे बड़े शहरों से गुजरने वाला अधिकतम 2000 किमी का मार्ग है? इस विशेष समस्या उदाहरण का मात्रात्मक उत्तर समस्या के अन्य उदाहरणों को हल करने के लिए बहुत कम उपयोगी है, जैसे कि मिलान में सभी साइटों के माध्यम से अधिकतम 10 किमी की कुल लंबाई के साथ एक राउंड ट्रिप के लिए पूछना। इस कारण से, जटिलता सिद्धांत कम्प्यूटेशनल समस्याओं को संबोधित करता है, विशेष समस्या उदाहरणों को नहीं।

समस्या उदाहरणों का प्रतिनिधित्व
कम्प्यूटेशनल समस्याओं पर विचार करते समय, समस्या उदाहरण वर्णमाला पर एक स्ट्रिंग है। आमतौर पर, वर्णमाला को बाइनरी वर्णमाला (यानी, समुच्चय {0,1}) के रूप में लिया जाता है, और इस प्रकार स्ट्रिंग्स बिटस्ट्रिंग्स हैं। वास्तविक दुनिया के कंप्यूटर की तरह, बिटस्ट्रिंग के अलावा अन्य गणितीय वस्तुओं को उपयुक्त रूप से एन्कोड किया जाना चाहिए। उदाहरण के लिए, पूर्णांकों को बाइनरी नोटेशन में दर्शाया जा सकता है, और ग्राफ को उनके आसन्न मैट्रिस के माध्यम से सीधे एन्कोड किया जा सकता है, या बाइनरी में उनकी आसन्न सूची को एन्कोड करके।

भले ही जटिलता-सैद्धांतिक प्रमेय के कुछ प्रमाण नियमित रूप से इनपुट एन्कोडिंग के कुछ ठोस विकल्प मानते हैं, यह एन्कोडिंग की पसंद से स्वतंत्र होने के लिए चर्चा को पर्याप्त रूप से सार रखने की कोशिश करता है। यह सुनिश्चित करके प्राप्त किया जा सकता है कि विभिन्न अभ्यावेदन कुशलतापूर्वक एक दूसरे में परिवर्तित किए जा सकते हैं।

औपचारिक भाषाओं के रूप में निर्णय की समस्या
कम्प्यूटेशनल जटिलता सिद्धांत में निर्णय की समस्या अध्ययन की केंद्रीय वस्तुओं में से एक है। एक निर्णय समस्या एक विशेष प्रकार की कम्प्यूटेशनल समस्या है जिसका उत्तर या तो हाँ या नहीं है, या वैकल्पिक रूप से या तो 1 या 0 है। एक निर्णय समस्या को औपचारिक भाषा के रूप में देखा जा सकता है, जहाँ भाषा के सदस्य उदाहरण हैं जिनका आउटपुट हाँ है, और गैर-सदस्य वे उदाहरण होते हैं जिनका आउटपुट नहीं होता है। इसका उद्देश्य एल्गोरिथम की सहायता से यह तय करना है कि दी गई इनपुट स्ट्रिंग औपचारिक भाषा का सदस्य है या नहीं। यदि इस समस्या को हल करने वाला एल्गोरिद्म उत्तर हाँ देता है, तो एल्गोरिथम को इनपुट स्ट्रिंग को स्वीकार करने के लिए कहा जाता है, अन्यथा, इसे इनपुट को अस्वीकार करने के लिए कहा जाता है।

निम्नलिखित एक निर्णय समस्या का एक उदाहरण है। इनपुट मनमाना ग्राफ है। समस्या यह तय करने में है कि दिया गया ग्राफ जुड़ा (कनेक्टिविटी) है या नहीं। इस निर्णय की समस्या से जुड़ी औपचारिक भाषा तब सभी जुड़े हुए ग्राफ़ का सेट है - इस भाषा की एक सटीक परिभाषा प्राप्त करने के लिए, किसी को यह तय करना होगा कि ग्राफ़ बाइनरी स्ट्रिंग्स के रूप में कैसे एन्कोड किए गए हैं।

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

यह सोचने के लिए आकर्षक है कि कार्य समस्याओं की धारणा निर्णय समस्याओं की धारणा से कहीं अधिक समृद्ध है। हालाँकि, यह वास्तव में ऐसा नहीं है, क्योंकि फ़ंक्शन समस्याओं को निर्णय समस्याओं के रूप में फिर से तैयार किया जा सकता है। उदाहरण के लिए, दो पूर्णांकों के गुणन को त्रिगुणों (a, b, c) के समुच्चय के रूप में व्यक्त किया जा सकता है जैसे कि संबंध a × b = c हो। यह तय करना कि दिया गया त्रिक इस समुच्चय का सदस्य है या नहीं, दो संख्याओं को गुणा करने की समस्या को हल करने के अनुरूप है।

किसी उदाहरण के आकार को मापना
कम्प्यूटेशनल समस्या को हल करने में कठिनाई को मापने के लिए, कोई यह देखना चाह सकता है कि समस्या को हल करने के लिए सबसे अच्छा एल्गोरिदम कितना समय लेता है। हालाँकि, चलने का समय, सामान्य तौर पर, उदाहरण पर निर्भर हो सकता है। विशेष रूप से, बड़े उदाहरणों को हल करने के लिए और अधिक समय की आवश्यकता होगी। इस प्रकार किसी समस्या को हल करने के लिए आवश्यक समय (या आवश्यक स्थान, या जटिलता के किसी भी माप) की गणना उदाहरण के आकार के एक समारोह के रूप में की जाती है। यह सामान्यतया पर बिट्स में इनपुट के आकार के रूप में लिया जाता है। जटिलता सिद्धांत में रुचि है कि कैसे एल्गोरिदम इनपुट आकार में वृद्धि के साथ स्केल करते हैं। उदाहरण के लिए, यह पता लगाने की समस्या में कि क्या कोई ग्राफ़ जुड़ा हुआ है, 2n कोने वाले ग्राफ़ की समस्या को हल करने में n कोने वाले ग्राफ़ के लिए लगने वाले समय की तुलना में कितना अधिक समय लगता है?

यदि इनपुट आकार n है, तो लिया गया समय n के कार्य के रूप में व्यक्त किया जा सकता है। चूंकि एक ही आकार के अलग-अलग इनपुट पर लगने वाला समय अलग-अलग हो सकता है, सबसे खराब समय जटिलता T(n) को आकार n के सभी इनपुट पर लिया गया अधिकतम समय माना जाता है। यदि T(n) n में बहुपद है, तो एल्गोरिथ्म को बहुपद समय एल्गोरिथ्म कहा जाता है। कोभम की थीसिस का तर्क है कि एक समस्या को संसाधनों की व्यवहार्य मात्रा के साथ हल किया जा सकता है यदि यह बहुपद-समय एल्गोरिदम को स्वीकार करता है।

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

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

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

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

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

जटिलता के उपाय
किसी दिए गए समय और स्थान का उपयोग करके किसी समस्या को हल करने का क्या अर्थ है, इसकी सटीक परिभाषा के लिए, एक कम्प्यूटेशनल मॉडल जैसे कि निर्धारिती ट्यूरिंग मशीन का उपयोग किया जाता है। इनपुट x पर नियतात्मक ट्यूरिंग मशीन M द्वारा आवश्यक समय राज्य संक्रमण या चरणों की कुल संख्या है, मशीन रुकने से पहले बनाती है और उत्तर ("हां" या "नहीं") देती है। एक ट्यूरिंग मशीन M को समय f(n) के भीतर संचालित करने के लिए कहा जाता है यदि लंबाई n के प्रत्येक इनपुट पर M द्वारा आवश्यक समय अधिक से अधिक f(n) है। निर्णय समस्या A को समय f(n) में हल किया जा सकता है यदि कोई ट्यूरिंग मशीन समय f(n) में चल रही है जो समस्या को हल करती है। चूंकि जटिलता सिद्धांत उनकी कठिनाई के आधार पर समस्याओं को वर्गीकृत करने में रूचि रखता है, इसलिए कुछ मानदंडों के आधार पर समस्याओं के समूह को परिभाषित किया जाता है। उदाहरण के लिए, नियतात्मक ट्यूरिंग मशीन पर समय f(n) के भीतर हल की जा सकने वाली समस्याओं का सेट तब डीटीआईएमई (DTIME) (f(n)) द्वारा दर्शाया जाता है।

जगह की जरूरतों के हिसाब से परिभाषाएं तय की जा सकती हैं। हालांकि समय और स्थान सबसे प्रसिद्ध जटिलता संसाधन हैं, किसी भी जटिलता माप को एक संगणकीय संसाधन के रूप में देखा जा सकता है। जटिलता उपाय सामान्यतः ब्लम जटिलता स्वयंसिद्धों द्वारा परिभाषित किए जाते हैं। जटिलता सिद्धांत में प्रयुक्त अन्य जटिलता उपायों में संचार जटिलता, सर्किट जटिलता और निर्णय वृक्ष जटिलता सम्मिलित हैं।

एल्गोरिथम की जटिलता को अक्सर बिग ओ नोटेशन का उपयोग करते हुए व्यक्त किया जाता है।

सर्वश्रेष्ठ, सबसे खराब और औसत केस जटिलता
सर्वोत्तम, सबसे खराब और औसत मामले की जटिलता एक ही आकार के विभिन्न इनपुटों की समय जटिलता (या किसी अन्य जटिलता माप) को मापने के तीन अलग-अलग तरीकों को संदर्भित करती है। चूँकि आकार n के कुछ इनपुट अन्य की तुलना में हल करने में तेज़ हो सकते हैं, हम निम्नलिखित जटिलता को परिभाषित करते हैं: सस्ते से महंगे तक का क्रम है: सर्वोत्तम, औसत (असतत समान वितरण का), परिशोधित, और सबसे खराब।
 * 1) बेस्ट-केस जटिलता: आकार n के सर्वोत्तम इनपुट के लिए समस्या को हल करने की जटिलता है।
 * 2) औसत-मामला जटिलता: यह औसत पर समस्या को हल करने की जटिलता है। यह जटिलता केवल आदानों पर संभाव्यता वितरण के संबंध में परिभाषित की गई है। उदाहरण के लिए, यदि एक ही आकार के सभी इनपुटों को समान रूप से प्रदर्शित होने की संभावना माना जाता है, तो औसत मामले की जटिलता को आकार n के सभी इनपुटों पर समान वितरण के संबंध में परिभाषित किया जा सकता है।
 * 3) परिशोधित विश्लेषण: परिशोधित विश्लेषण एल्गोरिथम संचालन की पूरी श्रृंखला पर एक साथ महंगे और कम खर्चीले दोनों प्रकार के संचालन पर विचार करता है।
 * 4) वर्स्ट-केस (सबसे खराब स्थिति) जटिलता: आकार n के सबसे खराब मामले के इनपुट के लिए समस्या को हल करने की जटिलता है।

उदाहरण के लिए, नियतात्मक सॉर्टिंग एल्गोरिथम क्विकॉर्ट पर विचार करें। यह इनपुट के रूप में दिए गए पूर्णांकों की सूची को क्रमबद्ध करने की समस्या को हल करता है। सबसे खराब स्थिति तब होती है जब सूची में पिवट हमेशा सबसे बड़ा या सबसे छोटा मान होता है (इसलिए सूची को कभी विभाजित नहीं किया जाता है)। इस मामले में, एल्गोरिथ्म में समय लगता है O(n2)। यदि हम मानते हैं कि इनपुट सूची के सभी संभावित क्रमपरिवर्तन समान रूप से संभव हैं, तो छँटाई के लिए लिया गया औसत समय O(n log n) है। सबसे अच्छा मामला तब होता है जब प्रत्येक धुरी सूची को आधा में विभाजित करती है, इसके लिए ओ (एन लॉग एन) समय की भी आवश्यकता होती है।

समस्याओं की जटिलता पर ऊपरी और निचली सीमा
संगणना समय (या समान संसाधनों, जैसे कि जगह की खपत) को वर्गीकृत करने के लिए, किसी समस्या को हल करने के लिए सबसे कुशल एल्गोरिदम द्वारा आवश्यक अधिकतम समय पर ऊपरी और निचली सीमाओं को प्रदर्शित करने में सहायक होता है। एल्गोरिथ्म की जटिलता सामान्यतः इसकी सबसे खराब स्थिति वाली जटिलता के रूप में ली जाती है जब तक कि अन्यथा निर्दिष्ट न हो। एक विशेष एल्गोरिथ्म का विश्लेषण एल्गोरिदम के विश्लेषण के क्षेत्र में आता है। किसी समस्या T(n) की समय जटिलता पर एक ऊपरी सीमा दिखाने के लिए, केवल यह दिखाने की आवश्यकता है कि अधिकांश T(n) पर चलने वाले समय के साथ एक विशेष एल्गोरिथम है। हालाँकि, निचली सीमा को साबित करना बहुत अधिक कठिन है, क्योंकि निचली सीमा समस्या को हल करने वाले सभी संभावित एल्गोरिदम के बारे में बयान देती है। वाक्यांश "सभी संभावित एल्गोरिदम" में न केवल आज ज्ञात एल्गोरिदम सम्मिलित हैं बल्कि भविष्य में खोजे जा सकने वाले किसी भी एल्गोरिदम सम्मिलित हैं। किसी समस्या के लिए T(n) की निचली सीमा दिखाने के लिए यह दिखाने की आवश्यकता है कि किसी भी एल्गोरिदम में T(n) से कम समय की जटिलता नहीं हो सकती।

ऊपरी और निचली सीमाएँ सामान्यतः  बड़े O संकेतन का उपयोग करके बताई जाती हैं, जो निरंतर कारकों और छोटे शब्दों को छुपाता है। यह इस्तेमाल किए गए कम्प्यूटेशनल मॉडल के विशिष्ट विवरण से स्वतंत्र सीमा बनाता है। उदाहरण के लिए, यदि T(n) = 7n2 + 15n + 40, तो Big O अंकन में हम T(n) = O(n2). लिखेंगे।

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

कुछ जटिलता वर्गों में जटिल परिभाषाएँ होती हैं जो इस ढांचे में उपयुक्त नहीं होती हैं। इस प्रकार, सामान्य जटिलता वर्ग की निम्नलिखित परिभाषा है:


 * समय f(n) के भीतर नियतात्मक ट्यूरिंग मशीन द्वारा समाधान योग्य निर्णय समस्याओं का सेट। (इस जटिलता वर्ग को DTIME(f(n)) के रूप में जाना जाता है।)

लेकिन कुछ ठोस फ़ंक्शन f (n) द्वारा उपरोक्त गणना समय को बाध्य करने से अक्सर जटिलता वर्ग उत्पन्न होता है जो चुने हुए मशीन मॉडल पर निर्भर करता है। उदाहरण के लिए, भाषा {xx | x किसी भी बाइनरी स्ट्रिंग है} को मल्टी-टेप ट्यूरिंग मशीन पर रैखिक समय में हल किया जा सकता है, लेकिन सिंगल-टेप ट्यूरिंग मशीन के मॉडल में अनिवार्य रूप से वर्गिक समय की आवश्यकता होती है। यदि हम चलने के समय में बहुपद भिन्नता की अनुमति देते हैं, तो कोभम-एडमंड्स थीसिस में कहा गया है कि "गणना के किसी भी दो उचित और सामान्य मॉडल में समय जटिलताएं बहुपद से संबंधित हैं" (गोल्डरेच 2008, अध्याय 1.2 । यह जटिलता वर्ग पी के लिए आधार बनाता है, जो बहुपद समय के भीतर नियतात्मक ट्यूरिंग मशीन द्वारा हल करने योग्य निर्णय समस्याओं का समूह है। फ़ंक्शन समस्याओं का संगत सेट एफपी (FP) है।

महत्वपूर्ण जटिलता वर्ग
एल्गोरिथम द्वारा उपयोग किए गए समय या स्थान को सीमित करके कई महत्वपूर्ण जटिलता वर्गों को परिभाषित किया जा सकता है। इस प्रकार परिभाषित निर्णय समस्याओं के कुछ महत्वपूर्ण जटिलता वर्ग इस प्रकार हैं:

लॉगरिदमिक-स्पेस क्लास (अनिवार्य रूप से) समस्या का प्रतिनिधित्व करने के लिए आवश्यक स्थान को ध्यान में नहीं रखते हैं।

सैविच के प्रमेय के अनुसार यह पता चला है कि PSPACE (पीएसपीएसीई) = NPSPACE (एनपीपीएसीई) और EXPSPACE (ईएक्सपीएसपीएसीई) = NEXPSPACE (एनईएक्सपीएसपीएसीई)।

अन्य महत्वपूर्ण जटिलता वर्गों में बीपीपी, जेडपीपी और आरपी सम्मिलित हैं, जो संभाव्य ट्यूरिंग मशीनों का उपयोग करके परिभाषित किए गए हैं; एसी और एनसी, जिन्हें बूलियन सर्किट का उपयोग करके परिभाषित किया गया है; और बीक्यूपी और क्यूएमए, जिन्हें क्वांटम ट्यूरिंग मशीनों का उपयोग करके परिभाषित किया गया है। P गणना की समस्याओं का एक महत्वपूर्ण जटिलता वर्ग है (निर्णय की समस्या नहीं)। आईपी ​​और एएम जैसी कक्षाएं इंटरएक्टिव प्रूफ सिस्टम का उपयोग करके परिभाषित की जाती हैं। ALL (सभी (जटिलता)) सभी निर्णय समस्याओं की श्रेणी है।

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

अधिक सटीक रूप से, समय पदानुक्रम प्रमेय कहता है कि
 * $$\mathsf{DTIME}\big(f(n) \big) \subsetneq \mathsf{DTIME} \big(f(n) \sdot \log^{2}(f(n)) \big)$$.

स्पेस पदानुक्रम प्रमेय कहता है कि
 * $$\mathsf{DSPACE}\big(f(n)\big) \subsetneq \mathsf{DSPACE} \big(f(n) \sdot \log(f(n)) \big)$$.

समय और स्पेस पदानुक्रम प्रमेय जटिलता वर्गों के अधिकांश पृथक्करण परिणामों के लिए आधार बनाते हैं। उदाहरण के लिए, समय पदानुक्रम प्रमेय हमें बताता है कि पी एक्सपीटीआईएमई में कड़ाई से निहित है, और स्पेस पदानुक्रम प्रमेय हमें बताता है कि एल सख्ती से पी स्पेस में निहित है।

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

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

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

यदि कोई समस्या X, C में है और C के लिए कठिन है, तो X को C के लिए पूर्ण कहा जाता है। इसका मतलब है कि X, C की सबसे कठिन समस्या है। सी में सबसे कठिन समस्याएँ।) इस प्रकार एनपी-पूर्ण समस्याओं के वर्ग में एनपी में सबसे कठिन समस्याएँ हैं, इस अर्थ में कि वे पी में नहीं होने की सबसे अधिक संभावना है। क्योंकि समस्या पी = एनपी (P = NP) हल नहीं हुई है, होने के नाते एक ज्ञात NP-पूर्ण समस्या, Π2, को दूसरी समस्या, Π1 तक कम करने में सक्षम, यह इंगित करेगा कि Π1 के लिए कोई ज्ञात बहुपद-समय समाधान नहीं है। ऐसा इसलिए है क्योंकि Π1 का एक बहुपद-समय समाधान Π2 के लिए एक बहुपद-समय समाधान प्राप्त करेगा। इसी तरह, क्योंकि सभी एनपी समस्याओं को सेट में कम किया जा सकता है, एक एनपी-पूर्ण समस्या को बहुपद समय में हल किया जा सकता है जिसका मतलब है कि P = NP।

पी बनाम एनपी समस्या
जटिलता वर्ग P (पी) को अक्सर एक गणितीय अमूर्तता के रूप में देखा जाता है जो उन कम्प्यूटेशनल कार्यों को मॉडलिंग करता है जो एक कुशल एल्गोरिथ्म को स्वीकार करते हैं। इस परिकल्पना को कोबाम-एडमंड्स थीसिस कहा जाता है। दूसरी ओर, जटिलता वर्ग एनपी में कई समस्याएं हैं जिन्हें लोग कुशलतापूर्वक हल करना चाहते हैं, लेकिन जिनके लिए कोई कुशल एल्गोरिदम ज्ञात नहीं है, जैसे कि बूलियन संतुष्टि समस्या, हैमिल्टनियन पथ समस्या और शीर्ष आवरण समस्या। चूँकि नियतात्मक ट्यूरिंग मशीनें विशेष गैर-नियतात्मक ट्यूरिंग मशीनें हैं, इसलिए यह देखना आसान है कि P में हर समस्या NP वर्ग की सदस्य भी है।

समाधान के व्यापक प्रभावों के कारण सैद्धांतिक कंप्यूटर विज्ञान में पी एनपी के बराबर है या नहीं, यह सवाल सबसे महत्वपूर्ण खुले प्रश्नों में से एक है। यदि उत्तर हाँ है, तो कई महत्वपूर्ण समस्याओं का अधिक कुशल समाधान दिखाया जा सकता है। इनमें संचालन अनुसंधान में विभिन्न प्रकार की पूर्णांक प्रोग्रामिंग समस्याएं, रसद में कई समस्याएं, जीव विज्ञान में प्रोटीन संरचना की भविष्यवाणी, और शुद्ध गणितीय प्रमेयों के औपचारिक प्रमाण खोजने की क्षमता सम्मिलित है। पी बनाम एनपी समस्या क्ले मैथेमेटिक्स इंस्टीट्यूट द्वारा प्रस्तावित मिलेनियम पुरस्कार समस्याओं में से एक है। समस्या को हल करने के लिए 1,000,000 अमेरिकी डॉलर का इनाम है।

एनपी में समस्याएं पी या एनपी-पूर्ण में ज्ञात नहीं हैं
में ज्ञात नहीं हैं लेडनर द्वारा यह दिखाया गया था कि यदि पी ≠ एनपी तो एनपी में ऐसी समस्याएं मौजूद हैं जो न तो पी में हैं और न ही एनपी-पूर्ण हैं। ऐसी समस्याओं को एनपी-मध्यवर्ती समस्याएँ कहा जाता है। [[ग्राफ समरूपता समस्या]], असतत लघुगणक समस्या और पूर्णांक गुणनखंडन समस्या एनपी-मध्यवर्ती मानी जाने वाली समस्याओं के उदाहरण हैं। वे बहुत कम एनपी समस्याओं में से कुछ हैं जिन्हें पी में या एनपी-पूर्ण होने के लिए नहीं जाना जाता है।

ग्राफ समरूपता समस्या यह निर्धारित करने की कम्प्यूटेशनल समस्या है कि क्या दो परिमित ग्राफ (असतत गणित) ग्राफ समरूपता हैं। जटिलता सिद्धांत में एक महत्वपूर्ण अनसुलझी समस्या यह है कि क्या ग्राफ समरूपता समस्या पी, एनपी-पूर्ण, या एनपी-मध्यवर्ती में है। उत्तर ज्ञात नहीं है, लेकिन यह माना जाता है कि समस्या कम से कम एनपी-पूर्ण नहीं है। अगर ग्राफ समरूपता एनपी-पूर्ण है, तो बहुपद समय पदानुक्रम अपने दूसरे स्तर पर गिर जाता है। चूंकि यह व्यापक रूप से माना जाता है कि बहुपद पदानुक्रम किसी परिमित स्तर तक नहीं गिरता है, यह माना जाता है कि ग्राफ समरूपता एनपी-पूर्ण नहीं है। इस समस्या के लिए सबसे अच्छा एल्गोरिथम, लेज़्लो बाबई और यूजीन लक्स के कारण रन टाइम है $$O(2^{\sqrt{n \log n}})$$ n शीर्षों वाले ग्राफ़ के लिए, हालाँकि बाबई के कुछ हालिया कार्य इस पर कुछ संभावित नए दृष्टिकोण प्रस्तुत करते हैं।

पूर्णांक गुणनखंडन समस्या किसी दिए गए पूर्णांक का अभाज्य गुणनखंड निर्धारित करने की कम्प्यूटेशनल समस्या है। एक निर्णय समस्या के रूप में वर्णित, यह तय करने की समस्या है कि क्या इनपुट में k से कम एक प्रमुख कारक है। कोई कुशल मुख्य गुणनखंड प्रक्रिया एल्गोरिथम ज्ञात नहीं है, और यह तथ्य कई आधुनिक क्रिप्टोग्राफ़िक प्रणालियों का आधार बनाता है, जैसे कि आरएसए (एल्गोरिदम) एल्गोरिथम। पूर्णांक कारककरण समस्या 'एनपी' और 'सह-एनपी' में है (और यहां तक ​​​​कि यूपी और सह-यूपी में भी ). यदि समस्या एनपी-पूर्ण है, तो बहुपद समय पदानुक्रम अपने पहले स्तर पर गिर जाएगा (यानी, एनपी सह-एनपी के बराबर होगा)। पूर्णांक गुणनखंडन के लिए सबसे प्रसिद्ध एल्गोरिथ्म सामान्य संख्या क्षेत्र छलनी है, जिसमें समय लगता है $$O(e^{\left(\sqrt[3]{\frac{64}{9}}\right)\sqrt[3]{(\log n)}\sqrt[3]{(\log \log n)^2}})$$ एक विषम पूर्णांक n कारक करने के लिए। हालाँकि, इस समस्या के लिए सबसे प्रसिद्ध क्वांटम एल्गोरिथ्म, शोर का एल्गोरिथम, बहुपद समय में चलता है। दुर्भाग्य से, यह तथ्य इस बारे में बहुत कुछ नहीं कहता है कि गैर-क्वांटम जटिलता वर्गों के संबंध में समस्या कहाँ है।

अन्य जटिलता वर्गों के बीच अलगाव
कई ज्ञात जटिलता वर्गों के असमान होने का संदेह है, लेकिन यह सिद्ध नहीं हुआ है। उदाहरण के लिए पी ⊆ एनपी ⊆ पीपी (जटिलता) ⊆ पीएसपीएसीई, लेकिन यह संभव है कि पी = पीएसपीएसीई। यदि पी, एनपी के बराबर नहीं है, तो पी, पीस्पेस (PSPACE) के बराबर भी नहीं है। चूँकि P और पीस्पेस के बीच कई ज्ञात जटिलता वर्ग हैं, जैसे आरपी, बीपीपी, पीपी, बीक्यूपी, एमए, पीएच, आदि, यह संभव है कि ये सभी जटिलता वर्ग एक वर्ग में समाप्‍त हो जाएँ। यह साबित करना कि इनमें से कोई भी वर्ग असमान है, जटिलता सिद्धांत में एक बड़ी सफलता होगी।

उसी तर्ज पर, सह-एनपी एनपी समस्याओं के पूरक (जटिलता) समस्याओं (यानी 'हां'/नहीं उत्तरों के साथ समस्याएं) वाली कक्षा है। माना जा रहा है वह एनपी सह-एनपी के बराबर नहीं है; हालाँकि, यह अभी तक सिद्ध नहीं हुआ है। यह स्पष्ट है कि यदि ये दो जटिलता वर्ग समान नहीं हैं तो पी एनपी के बराबर नहीं है, क्योंकि पी = सह-पी। इस प्रकार यदि पी = एनपी हमारे पास सह-पी = सह-एनपी होगा जहां से एनपी = पी = सह-पी = सह-एनपी।

इसी तरह, यह ज्ञात नहीं है कि एल (सभी समस्याओं का सेट जो लॉगरिदमिक स्पेस में हल किया जा सकता है) पी में सख्ती से निहित है या पी के बराबर है। फिर से, दोनों के बीच कई जटिलता वर्ग हैं, जैसे एनएल और एनसी, और यह ज्ञात नहीं है कि वे विशिष्ट या समान वर्ग हैं।

यह संदेह है कि पी और बीपीपी बराबर हैं। हालाँकि, यह वर्तमान में खुला है यदि बीपीपी = एनईएक्सपी।

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

ट्रैक्टेबल समस्याओं की अक्सर बहुपद-समय समाधान (पी, पीटीआईएमई) वाली समस्याओं से पहचान की जाती है; इसे कोभम-एडमंड्स थीसिस के नाम से जाना जाता है। इस अर्थ में जिन समस्याओं को अट्रैक्टिव माना जाता है, उनमें वे समस्याएं सम्मिलित हैं जो EXPTIME-कठिन हैं। यदि एनपी पी के समान नहीं है, तो इस अर्थ में एनपी-कठिन समस्याएँ भी असाध्य हैं।

हालांकि, यह पहचान अचूक है: बड़ी डिग्री या बड़े अग्रणी गुणांक वाला एक बहुपद-समय समाधान तेजी से बढ़ता है, और व्यावहारिक आकार की समस्याओं के लिए अव्यवहारिक हो सकता है; इसके विपरीत, एक घातीय-समय समाधान जो धीरे-धीरे बढ़ता है, यथार्थवादी इनपुट पर व्यावहारिक हो सकता है, या एक समाधान जो सबसे खराब स्थिति में लंबा समय लेता है, ज्यादातर मामलों में या औसत मामले में कम समय ले सकता है, और इस प्रकार व्यावहारिक हो सकता है। यह कहना कि कोई समस्या P में नहीं है, इसका अर्थ यह नहीं है कि समस्या के सभी बड़े मामले कठिन हैं या यहाँ तक कि उनमें से अधिकांश कठिन हैं। उदाहरण के लिए, प्रेस्बर्गर अंकगणित में निर्णय समस्या को P में नहीं दिखाया गया है, फिर भी एल्गोरिदम लिखे गए हैं जो ज्यादातर मामलों में उचित समय में समस्या का समाधान करते हैं। इसी तरह, एल्गोरिदम द्विघात समय से कम समय में आकारों की एक विस्तृत श्रृंखला पर एनपी-पूर्ण नैपसैक समस्या को हल कर सकते हैं और सैट सॉल्वर नियमित रूप से एनपी-पूर्ण बूलियन संतुष्टि समस्या के बड़े उदाहरणों को संभालते हैं।

यह देखने के लिए कि एक्सपोनेंशियल-टाइम एल्गोरिदम आमतौर पर अभ्यास में अनुपयोगी क्यों होते हैं, एक प्रोग्राम पर विचार करें जो रुकने से पहले 2n ऑपरेशन करता है। छोटे n के लिए, मान लीजिए 100, और उदाहरण के लिए यह मानते हुए कि कंप्यूटर प्रति सेकंड 1012 ऑपरेशन करता है, प्रोग्राम लगभग 4 × 1010 वर्षों तक चलेगा, जो ब्रह्मांड की आयु के परिमाण के समान क्रम है। यहां तक कि एक बहुत तेज कंप्यूटर के साथ, प्रोग्राम केवल बहुत छोटे उदाहरणों के लिए उपयोगी होगा और इस अर्थ में किसी समस्या की गहनता कुछ हद तक तकनीकी प्रगति से स्वतंत्र है। हालाँकि, एक घातीय-समय एल्गोरिथ्म जो 1.0001n संचालन लेता है, व्यावहारिक है जब तक कि n अपेक्षाकृत बड़ा नहीं हो जाता।

इसी तरह, बहुपद समय एल्गोरिदम हमेशा व्यावहारिक नहीं होता है। यदि इसका चलने का समय है, तो कहें, n15, इसे कुशल मानना ​​अनुचित है और छोटे उदाहरणों को छोड़कर यह अभी भी बेकार है। वास्तव में, व्यवहार में, यहाँ तक कि n3 या n2 एल्गोरिदम भी प्रायः समस्याओं के वास्तविक आकार पर अव्यावहारिक होते हैं।

निरंतर जटिलता सिद्धांत
निरंतर जटिलता सिद्धांत उन समस्याओं के जटिलता सिद्धांत को संदर्भित कर सकता है जिनमें निरंतर कार्य सम्मिलित होते हैं जो विवेकाधिकार द्वारा अनुमानित होते हैं, जैसा कि संख्यात्मक विश्लेषण में अध्ययन किया जाता है। संख्यात्मक विश्लेषण के जटिलता सिद्धांत का एक दृष्टिकोण सूचना आधारित जटिलता है।

सतत जटिलता सिद्धांत भी अनुरूप संगणना के उपयोग के जटिलता सिद्धांत का उल्लेख कर सकता है, जो निरंतर गतिशील प्रणालियों और विभेदक समीकरणों का उपयोग करता है। नियंत्रण सिद्धांत को संगणना का एक रूप माना जा सकता है और अवकल समीकरणों का उपयोग निरंतर-समय और संकर असतत-निरंतर-समय प्रणालियों के मॉडलिंग में किया जाता है। [19]

इतिहास
एल्गोरिथम जटिलता विश्लेषण का एक प्रारंभिक उदाहरण 1844 में गेब्रियल लैम द्वारा किए गए यूक्लिडियन एल्गोरिथ्म का रनिंग टाइम (कार्यकारी समय) विश्लेषण है।

एल्गोरिथम समस्याओं की जटिलता के लिए स्पष्ट रूप से समर्पित वास्तविक शोध शुरू होने से पहले, विभिन्न शोधकर्ताओं द्वारा कई नींव रखी गई थीं। इनमें से सबसे प्रभावशाली 1936 में एलन ट्यूरिंग द्वारा ट्यूरिंग मशीनों की परिभाषा थी, जो एक कंप्यूटर का बहुत मजबूत और नम्य सरलीकरण निकला।

कम्प्यूटेशनल जटिलता में व्यवस्थित अध्ययन की शुरुआत का श्रेय ज्यूरिस हार्टमैनिस और रिचर्ड ई. स्टर्न्स द्वारा 1965 के मौलिक पेपर "ऑन द कम्प्यूटेशनल कॉम्प्लेक्सिटी ऑफ़ एल्गोरिथम" को दिया जाता है, जिसने समय जटिलता और अंतरिक्ष जटिलता की परिभाषाएँ निर्धारित कीं और पदानुक्रम प्रमेयों को सिद्ध किया। इसके अलावा, 1965 में जैक एडमंड्स ने एक "अच्छा" एल्गोरिद्म पर विचार करने का सुझाव दिया, जो इनपुट आकार के एक बहुपद द्वारा परिबद्ध चल रहे समय के साथ हो।

विशिष्ट बाउंडेड संसाधनों के साथ ट्यूरिंग मशीनों द्वारा हल की जा सकने वाली समस्याओं का अध्ययन करने वाले पहले के पेपर में सम्मिलित हैं जॉन मैहिल की रैखिक परिबद्ध ऑटोमेटा की परिभाषा (मायहिल 1960), रेमंड स्मुलियन का रूडिमेंटरी सेट का अध्ययन (1961), साथ ही हिसाओ यामादा का पेपर वास्तविक- समय संगणना (1962)। कुछ समय पहले, यूएसएसआर से इस क्षेत्र में एक अग्रणी, बोरिस ट्रैखटेनब्रॉट (1956) ने एक और विशिष्ट जटिलता माप का अध्ययन किया। जैसा कि उन्हें याद है:

"हालांकि, [मेरी] प्रारंभिक रुचि [ऑटोमेटा सिद्धांत में] कम्प्यूटेशनल जटिलता के पक्ष में तेजी से अलग हो गई थी, संयोजन के तरीकों का एक रोमांचक संलयन, एल्गोरिदम के सिद्धांत के वैचारिक शस्त्रागार के साथ, स्विचिंग सिद्धांत से विरासत में मिला। ये विचार मेरे दिमाग में पहले 1955 में आए थे जब मैंने "सिग्नलाइजिंग फंक्शन" शब्द गढ़ा था, जिसे आजकल आमतौर पर "जटिलता माप" के रूप में जाना जाता है।."

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

यह भी देखें

 * कम्प्यूटेशनल जटिलता का संदर्भ
 * वर्णनात्मक जटिलता सिद्धांत
 * खेल जटिलता
 * पत्ता भाषा
 * संगणना की सीमा
 * जटिलता वर्गों की सूची
 * कम्प्यूटेबिलिटी और जटिलता विषयों की सूची
 * सैद्धांतिक कंप्यूटर विज्ञान में महत्वपूर्ण प्रकाशनों की सूची
 * कंप्यूटर विज्ञान में अनसुलझी समस्याओं की सूची
 * पैरामीटरयुक्त जटिलता
 * सबूत जटिलता
 * क्वांटम जटिलता सिद्धांत
 * संरचनात्मक जटिलता सिद्धांत
 * ट्रांसकंप्यूटेशनल समस्या
 * गणितीय कार्यों की कम्प्यूटेशनल जटिलता

बाहरी संबंध

 * The Complexity Zoo
 * What are the most important results (and papers) in complexity theory that every one should know?
 * Scott Aaronson: Why Philosophers Should Care About Computational Complexity
 * Scott Aaronson: Why Philosophers Should Care About Computational Complexity