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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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