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

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

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

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

समस्या उदाहरण
एक कम्प्यूटेशनल (अभिकलनात्‍मक) समस्या को उदाहरणों के एक अनंत संग्रह के रूप में देखा जा सकता है, जिसमें प्रत्येक उदाहरण के लिए (संभवतः खाली) समाधानों का सेट होता है। कम्प्यूटेशनल समस्या के इनपुट स्ट्रिंग को एक समस्या उदाहरण के रूप में संदर्भित किया जाता है, और इसे स्वयं समस्या के साथ भ्रमित नहीं होना चाहिए। अभिकलनात्‍मक जटिलता सिद्धांत में, एक समस्या को हल करने के लिए अमूर्त प्रश्न को संदर्भित किया जाता है। इसके विपरीत, इस समस्या का एक उदाहरण एक ठोस कथन है, जो एक निर्णय समस्या के लिए इनपुट के रूप में कार्य कर सकता है। उदाहरण के लिए, प्राणिकता परीक्षण की समस्या पर विचार करें। एक उदाहरण एक संख्या है (उदाहरण के लिए, 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।

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

पदानुक्रम प्रमेय
इस तरह से परिभाषित जटिलता वर्गों के लिए, यह साबित करना वांछनीय है कि (कहें) गणना समय पर आवश्यकताओं को आराम करना वास्तव में समस्याओं का एक बड़ा सेट परिभाषित करता है। विशेष रूप से, हालांकि 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)$$.

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

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

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

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

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

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

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

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

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

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

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

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

यह संदेह है कि P और BPP बराबर हैं। हालाँकि, यह वर्तमान में खुला है यदि BPP = NEXP।

इंट्रेक्टेबिलिटी
एक समस्या जिसे सिद्धांत रूप में हल किया जा सकता है (उदाहरण के लिए बड़े लेकिन सीमित संसाधन, विशेष रूप से समय), लेकिन जिसके लिए व्यवहार में कोई समाधान उपयोगी होने के लिए बहुत अधिक संसाधन लेता है, एक 'के रूप में जाना जाता है।. इसके विपरीत, एक समस्या जिसे व्यवहार में हल किया जा सकता है, कहलाती हैवस्तुतः एक ऐसी समस्या जिसे संभाला जा सकता है। शब्द विक्त: अव्यवहार्य (शाब्दिक रूप से नहीं किया जा सकता) कभी-कभी विक्त: अव्यवहार्य के साथ परस्पर विनिमय के लिए प्रयोग किया जाता है, हालांकि यह गणितीय अनुकूलन में एक व्यवहार्य समाधान के साथ भ्रम पैदा करता है। ट्रैक्टेबल समस्याओं की अक्सर उन समस्याओं से पहचान की जाती है जिनमें बहुपद-समय समाधान (P, PTIME) होते हैं; इसे कोहम-एडमंड्स थीसिस के रूप में जाना जाता है। इस अर्थ में जो समस्याएं अट्रैक्टिव मानी जाती हैं, उनमें वे भी शामिल हैं जो EXPTIME-कठिन हैं। यदि एनपी पी के समान नहीं है, तो इस अर्थ में एनपी-कठोर समस्याएं भी अचूक हैं।

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

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

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

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

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

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

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

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

"However, [my] initial interest [in automata theory] was increasingly set aside in favor of computational complexity, an exciting fusion of combinatorial methods, inherited from switching theory, with the conceptual arsenal of the theory of algorithms. These ideas had occurred to me earlier in 1955 when I coined the term "signalizing function", which is nowadays commonly known as "complexity measure"."

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

यह भी देखें

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

इस पेज में लापता आंतरिक लिंक की सूची

 * अंक शास्त्र
 * अभिकलनात्मक जटिलता
 * गणना के मॉडल
 * मिलेनियम पुरस्कार समस्याएं
 * एल्गोरिदम का विश्लेषण
 * सहखंडज मैट्रिक्स
 * निकटता सूची
 * समारोह की समस्या
 * कुल समारोह
 * पूर्णांक कारककरण समस्या
 * बहुपदी समय फलन
 * गैर-नियतात्मक एल्गोरिदम
 * नियतात्मक एल्गोरिथ्म
 * प्रायिकता वितरण
 * गिनती की समस्या (जटिलता)
 * एफपी (जटिलता)
 * ZPP (जटिलता)
 * नेकां (जटिलता)
 * आईपी ​​​​(जटिलता)
 * लॉग-स्पेस कमी
 * एन पी-सम्पूर्ण
 * संभार तंत्र
 * जीवविज्ञान
 * मिट्टी गणित संस्थान
 * आरएसए (एल्गोरिदम)
 * संभव समाधान
 * बस्ता समस्या
 * गतिशील प्रणाली
 * एनालॉग गणना
 * ब्लम स्वयंसिद्ध
 * स्वयंसिद्ध
 * ट्रांसकम्प्यूटेशनल समस्या

बाहरी संबंध

 * 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