समय की जटिलता: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 3: Line 3:
[[File:comparison computational complexity.svg|thumb|सामान्यतः एल्गोरिदम के विश्लेषण में उपयोग किए जाने वाले फलन के ग्राफ़, प्रत्येक फलन के लिए इनपुट आकार n के परिणाम के रूप में संचालन N की संख्या दिखाते हैं]][[कंप्यूटर विज्ञान]] में, '''समय जटिलता''' कम्प्यूटेशनल जटिलता है जो [[कलन विधि]] को चलाने में लगने वाले कंप्यूटर समय की मात्रा का वर्णन करती है। समय की जटिलता का अनुमान सामान्यतः एल्गोरिदम द्वारा किए गए प्राथमिक संचालन की संख्या की गणना करके लगाया जाता है, यह मानते हुए कि प्रत्येक प्रारंभिक संचालन को निष्पादित करने में निश्चित समय लगता है। इस प्रकार, एल्गोरिदम द्वारा किए गए समय की मात्रा और किए गए प्राथमिक संचालन की संख्या को [[स्थिर कारक]] से संबंधित माना जाता है।
[[File:comparison computational complexity.svg|thumb|सामान्यतः एल्गोरिदम के विश्लेषण में उपयोग किए जाने वाले फलन के ग्राफ़, प्रत्येक फलन के लिए इनपुट आकार n के परिणाम के रूप में संचालन N की संख्या दिखाते हैं]][[कंप्यूटर विज्ञान]] में, '''समय जटिलता''' कम्प्यूटेशनल जटिलता है जो [[कलन विधि]] को चलाने में लगने वाले कंप्यूटर समय की मात्रा का वर्णन करती है। समय की जटिलता का अनुमान सामान्यतः एल्गोरिदम द्वारा किए गए प्राथमिक संचालन की संख्या की गणना करके लगाया जाता है, यह मानते हुए कि प्रत्येक प्रारंभिक संचालन को निष्पादित करने में निश्चित समय लगता है। इस प्रकार, एल्गोरिदम द्वारा किए गए समय की मात्रा और किए गए प्राथमिक संचालन की संख्या को [[स्थिर कारक]] से संबंधित माना जाता है।


चूंकि एल्गोरिदम का चलने का समय ही आकार के विभिन्न इनपुट के बीच भिन्न हो सकता है, इसलिए सामान्यतः [[सबसे खराब स्थिति जटिलता|सबसे व्यर्थ स्थिति जटिलता]] पर विचार किया जाता है, जो किसी दिए गए आकार के इनपुट के लिए आवश्यक अधिकतम समय है। कम सामान्य, और सामान्यतः स्पष्ट रूप से निर्दिष्ट, औसत-केस जटिलता है, जो किसी दिए गए आकार के इनपुट पर लिए गए समय का औसत है (यह समझ में आता है क्योंकि किसी दिए गए आकार के संभावित इनपुट की केवल सीमित संख्या होती है)। दोनों ही स्थितियों में, समय जटिलता सामान्यतः इनपुट के आकार के [[फ़ंक्शन (गणित)|फलन (गणित)]] के रूप में व्यक्त की जाती है।<ref name="Sipser" />{{RP|226}} चूंकि इस फलन की स्पष्ट गणना करना सामान्यतः कठिन होता है, और छोटे इनपुट के लिए चलने का समय सामान्यतः परिणामी नहीं होता है, सामान्यतः इनपुट आकार बढ़ने पर जटिलता के व्यवहार पर ध्यान केंद्रित किया जाता है अर्थात, जटिलता का [[स्पर्शोन्मुख विश्लेषण]] इसलिए, समय जटिलता सामान्यतः [[बड़ा ओ अंकन]] का उपयोग करके व्यक्त की जाती है {{nowrap|<math>O(n)</math>,}} {{nowrap|<math>O(n\log n)</math>,}} {{nowrap|<math>O(n^\alpha)</math>,}} {{nowrap|<math>O(2^n)</math>,}} आदि, जहाँ {{mvar|n}} इनपुट का प्रतिनिधित्व करने के लिए आवश्यक [[ अंश | अंश]] की इकाइयों में आकार है।
चूंकि एल्गोरिदम का चलने का समय ही आकार के विभिन्न इनपुट के बीच भिन्न हो सकता है, इसलिए सामान्यतः [[सबसे खराब स्थिति जटिलता|सबसे व्यर्थ स्थिति जटिलता]] पर विचार किया जाता है, जो किसी दिए गए आकार के इनपुट के लिए आवश्यक अधिकतम समय है। कम सामान्य, और सामान्यतः स्पष्ट रूप से निर्दिष्ट, औसत-केस जटिलता है, जो किसी दिए गए आकार के इनपुट पर लिए गए समय का औसत है (यह समझ में आता है क्योंकि किसी दिए गए आकार के संभावित इनपुट की केवल सीमित संख्या होती है)। दोनों ही स्थितियों में, समय जटिलता सामान्यतः इनपुट के आकार के [[फ़ंक्शन (गणित)|फलन (गणित)]] के रूप में व्यक्त की जाती है।<ref name="Sipser" />{{RP|226}} चूंकि इस फलन की स्पष्ट गणना करना सामान्यतः कठिन होता है, और छोटे इनपुट के लिए चलने का समय सामान्यतः परिणामी नहीं होता है, सामान्यतः इनपुट आकार बढ़ने पर जटिलता के व्यवहार पर ध्यान केंद्रित किया जाता है अर्थात, जटिलता का [[स्पर्शोन्मुख विश्लेषण]] इसलिए, समय जटिलता सामान्यतः [[बड़ा ओ अंकन]] का उपयोग करके व्यक्त की जाती है {{nowrap|<math>O(n)</math>,}} {{nowrap|<math>O(n\log n)</math>,}} {{nowrap|<math>O(n^\alpha)</math>,}} {{nowrap|<math>O(2^n)</math>,}} आदि, जहाँ {{mvar|n}} इनपुट का प्रतिनिधित्व करने के लिए आवश्यक [[ अंश |अंश]] की इकाइयों में आकार है।


एल्गोरिथम जटिलताओं को बड़े ओ नोटेशन में दिखाई देने वाले फलन के प्रकार के अनुसार वर्गीकृत किया गया है। उदाहरण के लिए, समय जटिलता वाला एल्गोरिदम <math>O(n)</math> रैखिक समय एल्गोरिथ्म और समय जटिलता वाला एल्गोरिदम <math>O(n^\alpha)</math> है कुछ स्थिरांक के लिए <math>\alpha > 1</math> बहुपद समय एल्गोरिथ्म है।
एल्गोरिथम जटिलताओं को बड़े ओ नोटेशन में दिखाई देने वाले फलन के प्रकार के अनुसार वर्गीकृत किया गया है। उदाहरण के लिए, समय जटिलता वाला एल्गोरिदम <math>O(n)</math> रैखिक समय एल्गोरिथ्म और समय जटिलता वाला एल्गोरिदम <math>O(n^\alpha)</math> है कुछ स्थिरांक के लिए <math>\alpha > 1</math> बहुपद समय एल्गोरिथ्म है।


== सामान्य समय जटिलताओं की तालिका ==
== सामान्य समय जटिलताओं की तालिका ==
Line 17: Line 17:
|-
|-
| निरंतर समय || || <math>O(1)</math> || 10 || संख्याओं की क्रमबद्ध सारणी में माध्य मान ज्ञात करना।
| निरंतर समय || || <math>O(1)</math> || 10 || संख्याओं की क्रमबद्ध सारणी में माध्य मान ज्ञात करना।
की गणना {{math|(−1){{sup|''n''}}}}
की गणना {{math|(−1){{sup|''n''}}}}
|-
|-
| एकरमैन समय का उलटा || || <math>O\bigl(\alpha(n)\bigr)</math> || || एक असंयुक्त समुच्चय का उपयोग करके प्रति ऑपरेशन परिशोधित समय
| एकरमैन समय का उलटा || || <math>O\bigl(\alpha(n)\bigr)</math> || || एक असंयुक्त समुच्चय का उपयोग करके प्रति ऑपरेशन परिशोधित समय
Line 71: Line 71:
| दोहरा घातीय समय || [[2-EXPTIME|2-एक्सटाइम]] || <math>2^{2^{\text{poly}(n)}}</math> || <math>2^{2^n}</math> || प्रेस्बर्गर अंकगणित में दिए गए कथन की सत्यता का निर्णय करना
| दोहरा घातीय समय || [[2-EXPTIME|2-एक्सटाइम]] || <math>2^{2^{\text{poly}(n)}}</math> || <math>2^{2^n}</math> || प्रेस्बर्गर अंकगणित में दिए गए कथन की सत्यता का निर्णय करना
|}
|}
== निरंतर समय ==
== निरंतर समय ==
{{redirect|निरंतर समय|टाइमिंग आक्रमण से बचने के लिए प्रोग्रामिंग तकनीक|आक्रमण का समय#बचाव}}
{{redirect|निरंतर समय|टाइमिंग आक्रमण से बचने के लिए प्रोग्रामिंग तकनीक|आक्रमण का समय#बचाव}}
Line 95: Line 93:


उदाहरण के लिए, [[मैट्रिक्स श्रृंखला गुणन]] को [[समानांतर रैंडम-एक्सेस मशीन]] पर पॉलीलॉगरिदमिक समय में हल किया जा सकता है,<ref>{{cite journal | last1 = Bradford | first1 = Phillip G. | last2 = Rawlins | first2 = Gregory J. E. | last3 = Shannon | first3 = Gregory E. | doi = 10.1137/S0097539794270698 | issue = 2 | journal = [[SIAM Journal on Computing]] | mr = 1616556 | pages = 466–490 | title = पॉलीलॉग समय में कुशल मैट्रिक्स श्रृंखला क्रम| volume = 27 | year = 1998}}</ref> और ग्राफ़ (असतत गणित) [[गतिशील कनेक्टिविटी]] विधि से प्लानरिटी परीक्षण हो सकता है <math>O(\log^3n)</math> प्रति डालने/हटाने की कार्रवाई में लगने वाला समय है।<ref>{{cite conference | last1 = Holm | first1 = Jacob | last2 = Rotenberg | first2 = Eva | editor1-last = Makarychev | editor1-first = Konstantin | editor2-last = Makarychev | editor2-first = Yury | editor3-last = Tulsiani | editor3-first = Madhur | editor4-last = Kamath | editor4-first = Gautam | editor5-last = Chuzhoy | editor5-first = Julia | editor5-link = Julia Chuzhoy | arxiv = 1911.03449 | contribution = Fully-dynamic planarity testing in polylogarithmic time | doi = 10.1145/3357713.3384249 | pages = 167–180 | publisher = Association for Computing Machinery | title = Proceedings of the 52nd Annual ACM SIGACT Symposium on Theory of Computing, STOC 2020, Chicago, IL, USA, June 22-26, 2020 | year = 2020}}</ref>
उदाहरण के लिए, [[मैट्रिक्स श्रृंखला गुणन]] को [[समानांतर रैंडम-एक्सेस मशीन]] पर पॉलीलॉगरिदमिक समय में हल किया जा सकता है,<ref>{{cite journal | last1 = Bradford | first1 = Phillip G. | last2 = Rawlins | first2 = Gregory J. E. | last3 = Shannon | first3 = Gregory E. | doi = 10.1137/S0097539794270698 | issue = 2 | journal = [[SIAM Journal on Computing]] | mr = 1616556 | pages = 466–490 | title = पॉलीलॉग समय में कुशल मैट्रिक्स श्रृंखला क्रम| volume = 27 | year = 1998}}</ref> और ग्राफ़ (असतत गणित) [[गतिशील कनेक्टिविटी]] विधि से प्लानरिटी परीक्षण हो सकता है <math>O(\log^3n)</math> प्रति डालने/हटाने की कार्रवाई में लगने वाला समय है।<ref>{{cite conference | last1 = Holm | first1 = Jacob | last2 = Rotenberg | first2 = Eva | editor1-last = Makarychev | editor1-first = Konstantin | editor2-last = Makarychev | editor2-first = Yury | editor3-last = Tulsiani | editor3-first = Madhur | editor4-last = Kamath | editor4-first = Gautam | editor5-last = Chuzhoy | editor5-first = Julia | editor5-link = Julia Chuzhoy | arxiv = 1911.03449 | contribution = Fully-dynamic planarity testing in polylogarithmic time | doi = 10.1145/3357713.3384249 | pages = 167–180 | publisher = Association for Computing Machinery | title = Proceedings of the 52nd Annual ACM SIGACT Symposium on Theory of Computing, STOC 2020, Chicago, IL, USA, June 22-26, 2020 | year = 2020}}</ref>
== उप-रैखिक समय ==
== उप-रैखिक समय ==
कहा जाता है कि एल्गोरिदम सब-लीनियर टाइम <math>T(n)=o(n)</math> (अधिकांशतः सब-लीनियर टाइम लिखा जाता है) में चलता है . विशेष रूप से इसमें ऊपर परिभाषित समय जटिलताओं वाले एल्गोरिदम सम्मिलित हैं।
कहा जाता है कि एल्गोरिदम सब-लीनियर टाइम <math>T(n)=o(n)</math> (अधिकांशतः सब-लीनियर टाइम लिखा जाता है) में चलता है . विशेष रूप से इसमें ऊपर परिभाषित समय जटिलताओं वाले एल्गोरिदम सम्मिलित हैं।
Line 104: Line 100:
विशिष्ट शब्द सबलाइनियर टाइम एल्गोरिदम सामान्यतः उन एल्गोरिदम के लिए आरक्षित होता है जो उपरोक्त के विपरीत होते हैं क्योंकि वे मौलिक सीरियल मशीन मॉडल पर चलते हैं और इनपुट पर पूर्व धारणाओं की अनुमति नहीं होती है।<ref>{{cite journal | last1 = Kumar | first1 = Ravi | last2 = Rubinfeld | first2 = Ronitt | author2-link = Ronitt Rubinfeld | title = सबलाइनियर टाइम एल्गोरिदम| journal = [[SIGACT News]] | volume = 34 | issue = 4 | pages = 57–67 | url = http://www.cs.princeton.edu/courses/archive/spr04/cos598B/bib/kumarR-survey.pdf | year = 2003 | doi = 10.1145/954092.954103| s2cid = 65359 }}</ref> चूँकि, उन्हें [[यादृच्छिक एल्गोरिदम]] होने की अनुमति है, और वास्तव में सबसे तुच्छ कार्यों को छोड़कर सभी के लिए यादृच्छिक किया जाना चाहिए।
विशिष्ट शब्द सबलाइनियर टाइम एल्गोरिदम सामान्यतः उन एल्गोरिदम के लिए आरक्षित होता है जो उपरोक्त के विपरीत होते हैं क्योंकि वे मौलिक सीरियल मशीन मॉडल पर चलते हैं और इनपुट पर पूर्व धारणाओं की अनुमति नहीं होती है।<ref>{{cite journal | last1 = Kumar | first1 = Ravi | last2 = Rubinfeld | first2 = Ronitt | author2-link = Ronitt Rubinfeld | title = सबलाइनियर टाइम एल्गोरिदम| journal = [[SIGACT News]] | volume = 34 | issue = 4 | pages = 57–67 | url = http://www.cs.princeton.edu/courses/archive/spr04/cos598B/bib/kumarR-survey.pdf | year = 2003 | doi = 10.1145/954092.954103| s2cid = 65359 }}</ref> चूँकि, उन्हें [[यादृच्छिक एल्गोरिदम]] होने की अनुमति है, और वास्तव में सबसे तुच्छ कार्यों को छोड़कर सभी के लिए यादृच्छिक किया जाना चाहिए।


चूँकि ऐसे एल्गोरिदम को पूरे इनपुट को पढ़े बिना उत्तर देना होता है, इसका विवरण अधिक सीमा तक इनपुट तक पहुंच की अनुमति पर निर्भर करता है। सामान्यतः इनपुट के लिए जिसे बाइनरी स्ट्रिंग <math>b_1, ..., b_k</math> के रूप में दर्शाया जाता है यह माना जाता है कि एल्गोरिदम समय में हो सकता है <math>O(1)</math> अनुरोध करें और इसका मूल्य प्राप्त करें <math>b_i</math> किसी {{mvar|i}} के लिए होता है .
चूँकि ऐसे एल्गोरिदम को पूरे इनपुट को पढ़े बिना उत्तर देना होता है, इसका विवरण अधिक सीमा तक इनपुट तक पहुंच की अनुमति पर निर्भर करता है। सामान्यतः इनपुट के लिए जिसे बाइनरी स्ट्रिंग <math>b_1, ..., b_k</math> के रूप में दर्शाया जाता है यह माना जाता है कि एल्गोरिदम समय में हो सकता है <math>O(1)</math> अनुरोध करें और इसका मूल्य प्राप्त करें <math>b_i</math> किसी {{mvar|i}} के लिए होता है .


उप-रेखीय समय एल्गोरिदम सामान्यतः यादृच्छिक होते हैं, और केवल सन्निकटन एल्गोरिदम समाधान प्रदान करते हैं। वास्तव में, बाइनरी स्ट्रिंग की प्रोपर्टी जिसमें केवल शून्य होते हैं (और कोई नहीं) सरलता से (गैर-अनुमानित) उप-रेखीय समय एल्गोरिदम द्वारा निर्णय योग्य नहीं सिद्ध किया जा सकता है। [[संपत्ति परीक्षण|प्रोपर्टी परीक्षण]] की जांच में उप-रेखीय समय एल्गोरिदम स्वाभाविक रूप से उत्पन्न होते हैं।
उप-रेखीय समय एल्गोरिदम सामान्यतः यादृच्छिक होते हैं, और केवल सन्निकटन एल्गोरिदम समाधान प्रदान करते हैं। वास्तव में, बाइनरी स्ट्रिंग की प्रोपर्टी जिसमें केवल शून्य होते हैं (और कोई नहीं) सरलता से (गैर-अनुमानित) उप-रेखीय समय एल्गोरिदम द्वारा निर्णय योग्य नहीं सिद्ध किया जा सकता है। [[संपत्ति परीक्षण|प्रोपर्टी परीक्षण]] की जांच में उप-रेखीय समय एल्गोरिदम स्वाभाविक रूप से उत्पन्न होते हैं।
Line 111: Line 107:
कहा जाता है कि एल्गोरिदम रैखिक समय लेता है, या <math>O(n)</math> समय, यदि इसकी समय जटिलता है <math>O(n)</math>. अनौपचारिक रूप से, इसका कारण यह है कि इनपुट के आकार के साथ चलने का समय अधिकतम रैखिक रूप से बढ़ता है। अधिक स्पष्ट रूप से, इसका कारण यह है कि स्थिरांक है {{mvar|c}} ऐसा कि चलने का समय अधिकतम हो <math>cn</math> आकार के प्रत्येक इनपुट के लिए {{mvar|n}}. उदाहरण के लिए, प्रक्रिया जो किसी सूची के सभी तत्वों को जोड़ती है, उसे सूची की लंबाई के अनुपात में समय की आवश्यकता होती है, यदि जोड़ने का समय स्थिर है, या, कम से कम, स्थिरांक से घिरा हुआ है।
कहा जाता है कि एल्गोरिदम रैखिक समय लेता है, या <math>O(n)</math> समय, यदि इसकी समय जटिलता है <math>O(n)</math>. अनौपचारिक रूप से, इसका कारण यह है कि इनपुट के आकार के साथ चलने का समय अधिकतम रैखिक रूप से बढ़ता है। अधिक स्पष्ट रूप से, इसका कारण यह है कि स्थिरांक है {{mvar|c}} ऐसा कि चलने का समय अधिकतम हो <math>cn</math> आकार के प्रत्येक इनपुट के लिए {{mvar|n}}. उदाहरण के लिए, प्रक्रिया जो किसी सूची के सभी तत्वों को जोड़ती है, उसे सूची की लंबाई के अनुपात में समय की आवश्यकता होती है, यदि जोड़ने का समय स्थिर है, या, कम से कम, स्थिरांक से घिरा हुआ है।


रैखिक समय उन स्थितियों में सर्वोत्तम संभव समय जटिलता है जहां एल्गोरिदम को क्रमिक रूप से अपने संपूर्ण इनपुट को पढ़ना होता है। इसलिए, रैखिक समय या, कम से कम, लगभग रैखिक समय प्रदर्शित करने वाले एल्गोरिदम की खोज में बहुत अधिक शोध का निवेश किया गया है। इस शोध में सॉफ्टवेयर और हार्डवेयर दोनों विधि सम्मिलित हैं। ऐसी कई हार्डवेयर प्रौद्योगिकियाँ हैं जो इसे प्रदान करने के लिए [[समानांतर कंप्यूटिंग]] का उपयोग करती हैं। उदाहरण [[ सामग्री-पता योग्य स्मृति ]] है। रैखिक समय की इस अवधारणा का उपयोग बॉयर-मूर स्ट्रिंग-खोज एल्गोरिदम और उक्कोनेन के एल्गोरिदम जैसे स्ट्रिंग मिलान एल्गोरिदम में किया जाता है।
रैखिक समय उन स्थितियों में सर्वोत्तम संभव समय जटिलता है जहां एल्गोरिदम को क्रमिक रूप से अपने संपूर्ण इनपुट को पढ़ना होता है। इसलिए, रैखिक समय या, कम से कम, लगभग रैखिक समय प्रदर्शित करने वाले एल्गोरिदम की खोज में बहुत अधिक शोध का निवेश किया गया है। इस शोध में सॉफ्टवेयर और हार्डवेयर दोनों विधि सम्मिलित हैं। ऐसी कई हार्डवेयर प्रौद्योगिकियाँ हैं जो इसे प्रदान करने के लिए [[समानांतर कंप्यूटिंग]] का उपयोग करती हैं। उदाहरण [[ सामग्री-पता योग्य स्मृति |सामग्री-पता योग्य स्मृति]] है। रैखिक समय की इस अवधारणा का उपयोग बॉयर-मूर स्ट्रिंग-खोज एल्गोरिदम और उक्कोनेन के एल्गोरिदम जैसे स्ट्रिंग मिलान एल्गोरिदम में किया जाता है।


== चतुर्रेखीय समय ==
== चतुर्रेखीय समय ==
कहा जाता है कि एल्गोरिदम क्वासिलिनियर टाइम <math>T(n)=O(n\log^kn)</math> (जिसे लॉग-लीनियर टाइम भी कहा जाता है) में चलता है कुछ सकारात्मक स्थिरांक के लिए {{mvar|k}}; <ref>{{cite journal | last1 = Naik | first1 = Ashish V. | last2 = Regan | first2 = Kenneth W. | last3 = Sivakumar | first3 = D. | doi = 10.1016/0304-3975(95)00031-Q | issue = 2 | journal = [[Theoretical Computer Science (journal)|Theoretical Computer Science]] | mr = 1355592 | pages = 325–349 | title = क्वासिलिनियर-टाइम जटिलता सिद्धांत पर| url = http://www.cse.buffalo.edu/~regan/papers/pdf/NRS95.pdf | volume = 148 | year = 1995| doi-access = free }}</ref> रैखिक अंकीय समय <math>k=1</math> स्थिति है .<ref>{{cite book | last1 = Sedgewick | first1 = Robert | last2 = Wayne | first2 = Kevin | edition = 4th | page = 186 | publisher = Pearson Education | title = एल्गोरिदम| url = https://algs4.cs.princeton.edu/home/ | year = 2011}}</ref> [[नरम ओ अंकन|सॉफ्ट ओ अंकन]] का उपयोग करते हुए ये एल्गोरिदम हैं <math>\tilde{O}(n)</math>. क्वासिलिनियर टाइम एल्गोरिदम भी हैं <math>O(n^{1+\varepsilon })</math> प्रत्येक स्थिरांक के लिए <math>\varepsilon >0</math> और इस प्रकार किसी भी बहुपद समय एल्गोरिदम की तुलना में तेज़ चलता है जिसकी समय सीमा में पद सम्मिलित होता है <math>n^c</math> किसी के लिए <math>c>1</math>.
कहा जाता है कि एल्गोरिदम क्वासिलिनियर टाइम <math>T(n)=O(n\log^kn)</math> (जिसे लॉग-लीनियर टाइम भी कहा जाता है) में चलता है कुछ सकारात्मक स्थिरांक के लिए {{mvar|k}}; <ref>{{cite journal | last1 = Naik | first1 = Ashish V. | last2 = Regan | first2 = Kenneth W. | last3 = Sivakumar | first3 = D. | doi = 10.1016/0304-3975(95)00031-Q | issue = 2 | journal = [[Theoretical Computer Science (journal)|Theoretical Computer Science]] | mr = 1355592 | pages = 325–349 | title = क्वासिलिनियर-टाइम जटिलता सिद्धांत पर| url = http://www.cse.buffalo.edu/~regan/papers/pdf/NRS95.pdf | volume = 148 | year = 1995| doi-access = free }}</ref> रैखिक अंकीय समय <math>k=1</math> स्थिति है .<ref>{{cite book | last1 = Sedgewick | first1 = Robert | last2 = Wayne | first2 = Kevin | edition = 4th | page = 186 | publisher = Pearson Education | title = एल्गोरिदम| url = https://algs4.cs.princeton.edu/home/ | year = 2011}}</ref> [[नरम ओ अंकन|सॉफ्ट ओ अंकन]] का उपयोग करते हुए ये एल्गोरिदम हैं <math>\tilde{O}(n)</math>. क्वासिलिनियर टाइम एल्गोरिदम भी हैं <math>O(n^{1+\varepsilon })</math> प्रत्येक स्थिरांक के लिए <math>\varepsilon >0</math> और इस प्रकार किसी भी बहुपद समय एल्गोरिदम की तुलना में तेज़ चलता है जिसकी समय सीमा में पद सम्मिलित होता है <math>n^c</math> किसी के लिए <math>c>1</math>.


क्वासिलिनियर समय में चलने वाले एल्गोरिदम में सम्मिलित हैं:
क्वासिलिनियर समय में चलने वाले एल्गोरिदम में सम्मिलित हैं:
* [[इन-प्लेस मर्ज सॉर्ट]], <math>O(n\log^2n)</math>
* [[इन-प्लेस मर्ज सॉर्ट]], <math>O(n\log^2n)</math>
* [[जल्दी से सुलझाएं|त्वरित वर्गीकरण]], <math>O(n\log n)</math>, इसके यादृच्छिक संस्करण में, चलने का समय <math>O(n\log n)</math> होता है सबसे व्यर्थ स्थिति वाले इनपुट की अपेक्षा में। इसके गैर-यादृच्छिक संस्करण <math>O(n\log n)</math> में है औसत स्थिति की जटिलता पर विचार करते समय ही चलने का समय है।
* [[जल्दी से सुलझाएं|त्वरित वर्गीकरण]], <math>O(n\log n)</math>, इसके यादृच्छिक संस्करण में, चलने का समय <math>O(n\log n)</math> होता है सबसे व्यर्थ स्थिति वाले इनपुट की अपेक्षा में। इसके गैर-यादृच्छिक संस्करण <math>O(n\log n)</math> में है औसत स्थिति की जटिलता पर विचार करते समय ही चलने का समय है।
* [[ढेर बनाएं और छांटें|हीपसॉर्ट]], <math>O(n\log n)</math>, सबसे व्यर्थ स्थिति में [[ मर्ज़ सॉर्ट ]], [[परिचय]], बाइनरी ट्री सॉर्ट, [[स्मूथसॉर्ट]], धैर्य सॉर्टिंग आदि
* [[ढेर बनाएं और छांटें|हीपसॉर्ट]], <math>O(n\log n)</math>, सबसे व्यर्थ स्थिति में [[ मर्ज़ सॉर्ट |मर्ज़ सॉर्ट]] , [[परिचय]], बाइनरी ट्री सॉर्ट, [[स्मूथसॉर्ट]], धैर्य सॉर्टिंग आदि
* फास्ट फूरियर रूपांतरण, <math>O(n\log n)</math>
* फास्ट फूरियर रूपांतरण, <math>O(n\log n)</math>
* [[स्पंज सरणी]] गणना, <math>O(n\log n)</math>
* [[स्पंज सरणी]] गणना, <math>O(n\log n)</math>
कई स्थितियों में, <math>O(n\log n)</math> रनिंग टाइम केवल प्रदर्शन का परिणाम <math>\Theta (\log n)</math> है फलन {{mvar|n}} बार (नोटेशन के लिए, देखें {{slink|बिग ओ नोटेशन|बैचमैन-लैंडौ नोटेशन का वर्ग}}). उदाहरण के लिए, [[बाइनरी ट्री सॉर्ट]] प्रत्येक तत्व को सम्मिलित करके बाइनरी ट्री बनाता है {{mvar|n}}-आकार की सरणी एक-एक करके चूँकि एक [[ स्व-संतुलन द्विआधारी खोज वृक्ष ]] पर इन्सर्ट संचालन <math>O(\log n)</math> समय होता है  संपूर्ण एल्गोरिदम <math>O(n\log n)</math> समय लेता है
कई स्थितियों में, <math>O(n\log n)</math> रनिंग टाइम केवल प्रदर्शन का परिणाम <math>\Theta (\log n)</math> है फलन {{mvar|n}} बार (नोटेशन के लिए, देखें {{slink|बिग ओ नोटेशन|बैचमैन-लैंडौ नोटेशन का वर्ग}}). उदाहरण के लिए, [[बाइनरी ट्री सॉर्ट]] प्रत्येक तत्व को सम्मिलित करके बाइनरी ट्री बनाता है {{mvar|n}}-आकार की सरणी एक-एक करके चूँकि एक [[ स्व-संतुलन द्विआधारी खोज वृक्ष |स्व-संतुलन द्विआधारी खोज वृक्ष]] पर इन्सर्ट संचालन <math>O(\log n)</math> समय होता है  संपूर्ण एल्गोरिदम <math>O(n\log n)</math> समय लेता है


तुलनात्मक प्रकारों के लिए कम से कम <math>\Omega (n\log n)</math> आवश्यकता होती है सबसे व्यर्थ स्थिति में तुलना क्योंकि <math>\log (n!)=\Theta (n\log n)</math>, स्टर्लिंग के अनुमान से वे बार-बार [[पुनरावृत्ति संबंध]] से भी उत्पन्न होते हैं <math display="inline">T(n) = 2T\left(\frac{n}{2}\right)+O(n)</math>.
तुलनात्मक प्रकारों के लिए कम से कम <math>\Omega (n\log n)</math> आवश्यकता होती है सबसे व्यर्थ स्थिति में तुलना क्योंकि <math>\log (n!)=\Theta (n\log n)</math>, स्टर्लिंग के अनुमान से वे बार-बार [[पुनरावृत्ति संबंध]] से भी उत्पन्न होते हैं <math display="inline">T(n) = 2T\left(\frac{n}{2}\right)+O(n)</math>.


== उप-द्विघात समय ==
== उप-द्विघात समय ==
एक एल्गोरिथ्म को उपवर्गिक समय कहा जाता है यदि <math>T(n)=o(n^2)</math>.
एक एल्गोरिथ्म को उपवर्गिक समय कहा जाता है यदि <math>T(n)=o(n^2)</math>.


उदाहरण के लिए, सरल, तुलना-आधारित [[छँटाई एल्गोरिथ्म|सोर्टिंग एल्गोरिथ्म]] द्विघात (उदाहरण के लिए [[सम्मिलन सॉर्ट]]) हैं, किन्तु अधिक उन्नत एल्गोरिदम पाए जा सकते हैं जो सबक्वाड्रैटिक (उदाहरण के लिए [[ शैल सॉर्ट ]]) हैं। कोई भी सामान्य-उद्देश्य प्रकार रैखिक समय में नहीं चलता है, किन्तु द्विघात से उप-द्विघात में परिवर्तन का अत्यधिक व्यावहारिक महत्व है।
उदाहरण के लिए, सरल, तुलना-आधारित [[छँटाई एल्गोरिथ्म|सोर्टिंग एल्गोरिथ्म]] द्विघात (उदाहरण के लिए [[सम्मिलन सॉर्ट]]) हैं, किन्तु अधिक उन्नत एल्गोरिदम पाए जा सकते हैं जो सबक्वाड्रैटिक (उदाहरण के लिए [[ शैल सॉर्ट |शैल सॉर्ट]] ) हैं। कोई भी सामान्य-उद्देश्य प्रकार रैखिक समय में नहीं चलता है, किन्तु द्विघात से उप-द्विघात में परिवर्तन का अत्यधिक व्यावहारिक महत्व है।


== [[बहुपद]] समय ==
== [[बहुपद]] समय ==
Line 135: Line 131:


बहुपद-समय एल्गोरिदम के कुछ उदाहरण:
बहुपद-समय एल्गोरिदम के कुछ उदाहरण:
* n पूर्णांकों पर चयन सॉर्ट सॉर्टिंग एल्गोरिदम <math>An^2</math> निष्पादित करता है कुछ स्थिरांक A के लिए संचालन इस प्रकार यह समय <math>O(n^2)</math> में चलता है और बहुपद-समय एल्गोरिथ्म है।
* n पूर्णांकों पर चयन सॉर्ट सॉर्टिंग एल्गोरिदम <math>An^2</math> निष्पादित करता है कुछ स्थिरांक A के लिए संचालन इस प्रकार यह समय <math>O(n^2)</math> में चलता है और बहुपद-समय एल्गोरिथ्म है।
* सभी मूलभूत अंकगणितीय संक्रियाएं (जोड़, घटाव, गुणा, भाग और तुलना) बहुपद समय में की जा सकती हैं।
* सभी मूलभूत अंकगणितीय संक्रियाएं (जोड़, घटाव, गुणा, भाग और तुलना) बहुपद समय में की जा सकती हैं।
* ग्राफ़ (अलग गणित) में [[अधिकतम मिलान]] बहुपद समय में पाया जा सकता है।
* ग्राफ़ (अलग गणित) में [[अधिकतम मिलान]] बहुपद समय में पाया जा सकता है।
Line 147: Line 143:
# एल्गोरिदम द्वारा उपयोग किया गया स्थान इनपुट के आकार में बहुपद से घिरा हुआ है।
# एल्गोरिदम द्वारा उपयोग किया गया स्थान इनपुट के आकार में बहुपद से घिरा हुआ है।


इन दो गुणों वाले किसी भी एल्गोरिदम को [[ट्यूरिंग मशीन]] पर अंकगणितीय संचालन करने के लिए उपयुक्त एल्गोरिदम द्वारा अंकगणितीय संचालन को प्रतिस्थापित करके बहुपद समय एल्गोरिदम में परिवर्तित किया जा सकता है। दूसरा नियम अत्यंत आवश्यक है: पूर्णांक <math>2^n</math> दिया गया है (जो ट्यूरिंग मशीन मॉडल में n के समानुपाती स्थान लेता है), इसकी <math>2^{2^n}</math> गणना करना संभव है दोहराए गए वर्ग का उपयोग करके n गुणन के साथ। चूँकि, <math>2^{2^n}</math> स्थान प्रतिनिधित्व करता था के लिए आनुपातिक <math>2^n</math> है , और इस प्रकार इनपुट का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले स्थान में बहुपद के अतिरिक्त घातांकीय होता है। इसलिए, ट्यूरिंग मशीन पर बहुपद समय में यह गणना करना संभव नहीं है, किन्तु बहुपद रूप से कई अंकगणितीय परिचालनों द्वारा इसकी गणना करना संभव है।
इन दो गुणों वाले किसी भी एल्गोरिदम को [[ट्यूरिंग मशीन]] पर अंकगणितीय संचालन करने के लिए उपयुक्त एल्गोरिदम द्वारा अंकगणितीय संचालन को प्रतिस्थापित करके बहुपद समय एल्गोरिदम में परिवर्तित किया जा सकता है। दूसरा नियम अत्यंत आवश्यक है: पूर्णांक <math>2^n</math> दिया गया है (जो ट्यूरिंग मशीन मॉडल में n के समानुपाती स्थान लेता है), इसकी <math>2^{2^n}</math> गणना करना संभव है दोहराए गए वर्ग का उपयोग करके n गुणन के साथ। चूँकि, <math>2^{2^n}</math> स्थान प्रतिनिधित्व करता था के लिए आनुपातिक <math>2^n</math> है , और इस प्रकार इनपुट का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले स्थान में बहुपद के अतिरिक्त घातांकीय होता है। इसलिए, ट्यूरिंग मशीन पर बहुपद समय में यह गणना करना संभव नहीं है, किन्तु बहुपद रूप से कई अंकगणितीय परिचालनों द्वारा इसकी गणना करना संभव है।


चूँकि, पहली नियम के लिए, ऐसे एल्गोरिदम हैं जो बाइनरी-एन्कोडेड इनपुट की लंबाई में बहुपद से बंधे कई ट्यूरिंग मशीन चरणों में चलते हैं, किन्तु इनपुट की संख्या में बहुपद से बंधे कई अंकगणितीय संचालन नहीं लेते हैं नंबर. दो पूर्णांकों के सबसे बड़े सामान्य भाजक की गणना के लिए [[यूक्लिडियन एल्गोरिथ्म]] उदाहरण है। दो पूर्णांक दिए गए हैं <math>a</math> और <math>b</math>, एल्गोरिथम निष्पादित करता है <math>O(\log a + \log b)</math> संख्याओं पर अंकगणितीय संक्रियाएँ अधिक से अधिक <math>O(\log a + \log b)</math> बिट्स साथ ही, अंकगणितीय संक्रियाओं की संख्या को इनपुट में पूर्णांकों की संख्या से सीमित नहीं किया जा सकता है (जो इस स्थिति में स्थिर है, इनपुट में सदैव केवल दो पूर्णांक होते हैं)। बाद के अवलोकन के कारण, एल्गोरिदम दृढ़ता से बहुपद समय में नहीं चलता है। इसका वास्तविक चलने का समय लंबाई पर निर्भर करता है <math>a</math> और <math>b</math> बिट्स में और न केवल इनपुट में पूर्णांकों की संख्या पर निर्भर करता है।
चूँकि, पहली नियम के लिए, ऐसे एल्गोरिदम हैं जो बाइनरी-एन्कोडेड इनपुट की लंबाई में बहुपद से बंधे कई ट्यूरिंग मशीन चरणों में चलते हैं, किन्तु इनपुट की संख्या में बहुपद से बंधे कई अंकगणितीय संचालन नहीं लेते हैं नंबर. दो पूर्णांकों के सबसे बड़े सामान्य भाजक की गणना के लिए [[यूक्लिडियन एल्गोरिथ्म]] उदाहरण है। दो पूर्णांक दिए गए हैं <math>a</math> और <math>b</math>, एल्गोरिथम निष्पादित करता है <math>O(\log a + \log b)</math> संख्याओं पर अंकगणितीय संक्रियाएँ अधिक से अधिक <math>O(\log a + \log b)</math> बिट्स साथ ही, अंकगणितीय संक्रियाओं की संख्या को इनपुट में पूर्णांकों की संख्या से सीमित नहीं किया जा सकता है (जो इस स्थिति में स्थिर है, इनपुट में सदैव केवल दो पूर्णांक होते हैं)। बाद के अवलोकन के कारण, एल्गोरिदम दृढ़ता से बहुपद समय में नहीं चलता है। इसका वास्तविक चलने का समय लंबाई पर निर्भर करता है <math>a</math> और <math>b</math> बिट्स में और न केवल इनपुट में पूर्णांकों की संख्या पर निर्भर करता है।
Line 178: Line 174:
अर्ध-बहुपद समय एल्गोरिदम ऐसे एल्गोरिदम हैं जो बहुपद समय से अधिक समय तक चलते हैं, फिर भी घातीय समय तक इतने लंबे नहीं होते हैं। अर्ध-बहुपद समय एल्गोरिदम का सबसे व्यर्थ स्थिति चलने का समय है <math>2^{O(\log^c n)}</math> कुछ के लिए तय किया गया {{nowrap|<math>c > 0</math>.}} के लिए <math>c=1</math> हमें बहुपद समय एल्गोरिथ्म मिलता है <math>c < 1</math> हमें सब-लीनियर टाइम एल्गोरिदम मिलता है।
अर्ध-बहुपद समय एल्गोरिदम ऐसे एल्गोरिदम हैं जो बहुपद समय से अधिक समय तक चलते हैं, फिर भी घातीय समय तक इतने लंबे नहीं होते हैं। अर्ध-बहुपद समय एल्गोरिदम का सबसे व्यर्थ स्थिति चलने का समय है <math>2^{O(\log^c n)}</math> कुछ के लिए तय किया गया {{nowrap|<math>c > 0</math>.}} के लिए <math>c=1</math> हमें बहुपद समय एल्गोरिथ्म मिलता है <math>c < 1</math> हमें सब-लीनियर टाइम एल्गोरिदम मिलता है।


अर्ध-बहुपद समय एल्गोरिदम सामान्यतः एक [[ एनपी कठिन ]] समस्या से दूसरी समस्या में [[कमी (जटिलता)]] में उत्पन्न होते हैं। उदाहरण के लिए, कोई एनपी हार्ड समस्या का उदाहरण ले सकता है, जैसे [[बूलियन संतुष्टि समस्या]], और इसे किसी अन्य समस्या बी के उदाहरण में परिवर्तित कर सकता है, किन्तु उदाहरण <math>2^{O(\log^c n)}</math> का आकार बन जाता है . उस स्थिति में, यह कमी यह सिद्ध नहीं करती है कि समस्या बी एनपी-हार्ड है; यह कमी केवल यह दर्शाती है कि B के लिए कोई बहुपद समय एल्गोरिथ्म नहीं है जब तक कि 3एसएटी (और इस प्रकार सभी एनपी (जटिलता)) के लिए अर्ध-बहुपद समय एल्गोरिथ्म नहीं है। इसी तरह, कुछ समस्याएं हैं जिनके लिए हम अर्ध-बहुपद समय एल्गोरिदम जानते हैं, किन्तु कोई बहुपद समय एल्गोरिदम ज्ञात नहीं है। ऐसी समस्याएँ सन्निकटन एल्गोरिदम में उत्पन्न होती हैं; प्रसिद्ध उदाहरण निर्देशित स्टीनर वृक्ष समस्या है, जिसके लिए अर्ध-बहुपद समय सन्निकटन एल्गोरिथ्म है जो सन्निकटन कारक प्राप्त करता है <math>O(\log^3 n)</math> (n शीर्षों की संख्या है), किन्तु ऐसे बहुपद समय एल्गोरिथ्म का अस्तित्व दिखाना खुली समस्या है।
अर्ध-बहुपद समय एल्गोरिदम सामान्यतः एक [[ एनपी कठिन |एनपी कठिन]] समस्या से दूसरी समस्या में [[कमी (जटिलता)]] में उत्पन्न होते हैं। उदाहरण के लिए, कोई एनपी हार्ड समस्या का उदाहरण ले सकता है, जैसे [[बूलियन संतुष्टि समस्या]], और इसे किसी अन्य समस्या बी के उदाहरण में परिवर्तित कर सकता है, किन्तु उदाहरण <math>2^{O(\log^c n)}</math> का आकार बन जाता है . उस स्थिति में, यह कमी यह सिद्ध नहीं करती है कि समस्या बी एनपी-हार्ड है; यह कमी केवल यह दर्शाती है कि B के लिए कोई बहुपद समय एल्गोरिथ्म नहीं है जब तक कि 3एसएटी (और इस प्रकार सभी एनपी (जटिलता)) के लिए अर्ध-बहुपद समय एल्गोरिथ्म नहीं है। इसी तरह, कुछ समस्याएं हैं जिनके लिए हम अर्ध-बहुपद समय एल्गोरिदम जानते हैं, किन्तु कोई बहुपद समय एल्गोरिदम ज्ञात नहीं है। ऐसी समस्याएँ सन्निकटन एल्गोरिदम में उत्पन्न होती हैं; प्रसिद्ध उदाहरण निर्देशित स्टीनर वृक्ष समस्या है, जिसके लिए अर्ध-बहुपद समय सन्निकटन एल्गोरिथ्म है जो सन्निकटन कारक प्राप्त करता है <math>O(\log^3 n)</math> (n शीर्षों की संख्या है), किन्तु ऐसे बहुपद समय एल्गोरिथ्म का अस्तित्व दिखाना खुली समस्या है।


अर्ध-बहुपद समय समाधानों के साथ अन्य कम्प्यूटेशनल समस्याओं, किन्तु कोई ज्ञात बहुपद समय समाधान में [[ लगाया हुआ गुट ]] समस्या सम्मिलित नहीं है, जिसमें लक्ष्य क्लिक और [[यादृच्छिक ग्राफ]] के मिलन में क्लिक समस्या को हल करना है। यद्यपि अर्ध-बहुपद रूप से हल करने योग्य, यह अनुमान लगाया गया है कि प्लांटेड क्लिक समस्या का कोई बहुपद समय समाधान नहीं है; इस लगाए गए क्लिक अनुमान का उपयोग कम्प्यूटेशनल गेम सिद्धांत, प्रोपर्टी परीक्षण और [[ यंत्र अधिगम ]] में कई अन्य समस्याओं की कठिनाई को सिद्ध करने के लिए [[कम्प्यूटेशनल कठोरता धारणा]] के रूप में किया गया है।<ref>{{cite conference | last1 = Braverman | first1 = Mark | author1-link = Mark Braverman (mathematician) | last2 = Kun-Ko | first2 = Young | last3 = Rubinstein | first3 = Aviad | last4 = Weinstein | first4 = Omri | editor-last = Klein | editor-first = Philip N. | arxiv = 1504.08352 | contribution = ETH hardness for densest-{{mvar|k}}-subgraph with perfect completeness | doi = 10.1137/1.9781611974782.86 | mr = 3627815 | pages = 1326–1341 | publisher = Society for Industrial and Applied Mathematics | title = Proceedings of the Twenty-Eighth Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2017, Barcelona, Spain, Hotel Porta Fira, January 16-19 | year = 2017}}</ref>
अर्ध-बहुपद समय समाधानों के साथ अन्य कम्प्यूटेशनल समस्याओं, किन्तु कोई ज्ञात बहुपद समय समाधान में [[ लगाया हुआ गुट |लगाया हुआ गुट]] समस्या सम्मिलित नहीं है, जिसमें लक्ष्य क्लिक और [[यादृच्छिक ग्राफ]] के मिलन में क्लिक समस्या को हल करना है। यद्यपि अर्ध-बहुपद रूप से हल करने योग्य, यह अनुमान लगाया गया है कि प्लांटेड क्लिक समस्या का कोई बहुपद समय समाधान नहीं है; इस लगाए गए क्लिक अनुमान का उपयोग कम्प्यूटेशनल गेम सिद्धांत, प्रोपर्टी परीक्षण और [[ यंत्र अधिगम |यंत्र अधिगम]] में कई अन्य समस्याओं की कठिनाई को सिद्ध करने के लिए [[कम्प्यूटेशनल कठोरता धारणा]] के रूप में किया गया है।<ref>{{cite conference | last1 = Braverman | first1 = Mark | author1-link = Mark Braverman (mathematician) | last2 = Kun-Ko | first2 = Young | last3 = Rubinstein | first3 = Aviad | last4 = Weinstein | first4 = Omri | editor-last = Klein | editor-first = Philip N. | arxiv = 1504.08352 | contribution = ETH hardness for densest-{{mvar|k}}-subgraph with perfect completeness | doi = 10.1137/1.9781611974782.86 | mr = 3627815 | pages = 1326–1341 | publisher = Society for Industrial and Applied Mathematics | title = Proceedings of the Twenty-Eighth Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2017, Barcelona, Spain, Hotel Porta Fira, January 16-19 | year = 2017}}</ref>


जटिलता वर्ग क्यूपी में अर्ध-बहुपद समय एल्गोरिदम वाली सभी समस्याएं सम्मिलित हैं। इसे [[DTIME|डीटाइम]] के ​​संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।<ref>{{ComplexityZoo|Class QP: Quasipolynomial-Time|Q#qp}}</ref>
जटिलता वर्ग क्यूपी में अर्ध-बहुपद समय एल्गोरिदम वाली सभी समस्याएं सम्मिलित हैं। इसे [[DTIME|डीटाइम]] के ​​संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।<ref>{{ComplexityZoo|Class QP: Quasipolynomial-Time|Q#qp}}</ref>
:<math>\mbox{QP} = \bigcup_{c \in \mathbb{N}} \mbox{DTIME} \left(2^{\log^c n}\right)</math>
:<math>\mbox{QP} = \bigcup_{c \in \mathbb{N}} \mbox{DTIME} \left(2^{\log^c n}\right)</math>
=== एनपी-पूर्ण समस्याओं से संबंध ===
=== एनपी-पूर्ण समस्याओं से संबंध ===


जटिलता सिद्धांत में, अनसुलझी [[पी बनाम एनपी]] समस्या पूछती है कि क्या एनपी में सभी समस्याओं में बहुपद-समय एल्गोरिदम हैं। एनपी-पूर्ण समस्याओं जैसे 3एसएटी आदि के लिए सभी सबसे प्रसिद्ध एल्गोरिदम तेजी से समय लेते हैं। कई प्राकृतिक एनपी-पूर्ण समस्याओं के लिए यह अनुमान लगाया गया है कि उनके पास उप-घातांकीय समय एल्गोरिदम नहीं है। यहां उप-घातांकीय समय का अर्थ नीचे प्रस्तुत दूसरी परिभाषा से लिया गया है। (दूसरी ओर, आसन्न मैट्रिक्स द्वारा प्राकृतिक विधि से दर्शाई गई कई ग्राफ़ समस्याएं उप-घातांकीय समय में हल करने योग्य हैं, क्योंकि इनपुट का आकार शीर्षों की संख्या का वर्ग है।) यह अनुमान (k-एसएटी समस्या के लिए) है घातीय समय परिकल्पना के रूप में जाना जाता है।<ref name="ETH">{{cite journal | last1 = Impagliazzo | first1 = Russell | author1-link = Russell Impagliazzo | last2 = Paturi | first2 = Ramamohan | doi = 10.1006/jcss.2000.1727 | issue = 2 | journal = [[Journal of Computer and System Sciences]] | mr = 1820597 | pages = 367–375 | title = On the complexity of {{mvar|k}}-SAT | url = https://cseweb.ucsd.edu/~paturi/myPapers/pubs/ImpagliazzoPaturi_2001_jcss.pdf | volume = 62 | year = 2001| doi-access = free }}</ref> चूँकि यह अनुमान लगाया गया है कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं, [[सन्निकटन एल्गोरिदम]] के क्षेत्र में कुछ अनुपयुक्तता परिणाम यह धारणा बनाते हैं कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं। उदाहरण के लिए, [[ कवर सेट करें | कवर समुच्चय करें]] समस्या के लिए ज्ञात अप्राप्यता परिणाम देखें।
जटिलता सिद्धांत में, अनसुलझी [[पी बनाम एनपी]] समस्या पूछती है कि क्या एनपी में सभी समस्याओं में बहुपद-समय एल्गोरिदम हैं। एनपी-पूर्ण समस्याओं जैसे 3एसएटी आदि के लिए सभी सबसे प्रसिद्ध एल्गोरिदम तेजी से समय लेते हैं। कई प्राकृतिक एनपी-पूर्ण समस्याओं के लिए यह अनुमान लगाया गया है कि उनके पास उप-घातांकीय समय एल्गोरिदम नहीं है। यहां उप-घातांकीय समय का अर्थ नीचे प्रस्तुत दूसरी परिभाषा से लिया गया है। (दूसरी ओर, आसन्न मैट्रिक्स द्वारा प्राकृतिक विधि से दर्शाई गई कई ग्राफ़ समस्याएं उप-घातांकीय समय में हल करने योग्य हैं, क्योंकि इनपुट का आकार शीर्षों की संख्या का वर्ग है।) यह अनुमान (k-एसएटी समस्या के लिए) है घातीय समय परिकल्पना के रूप में जाना जाता है।<ref name="ETH">{{cite journal | last1 = Impagliazzo | first1 = Russell | author1-link = Russell Impagliazzo | last2 = Paturi | first2 = Ramamohan | doi = 10.1006/jcss.2000.1727 | issue = 2 | journal = [[Journal of Computer and System Sciences]] | mr = 1820597 | pages = 367–375 | title = On the complexity of {{mvar|k}}-SAT | url = https://cseweb.ucsd.edu/~paturi/myPapers/pubs/ImpagliazzoPaturi_2001_jcss.pdf | volume = 62 | year = 2001| doi-access = free }}</ref> चूँकि यह अनुमान लगाया गया है कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं, [[सन्निकटन एल्गोरिदम]] के क्षेत्र में कुछ अनुपयुक्तता परिणाम यह धारणा बनाते हैं कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं। उदाहरण के लिए, [[ कवर सेट करें |कवर समुच्चय करें]] समस्या के लिए ज्ञात अप्राप्यता परिणाम देखें।


== उप-घातांकीय समय ==
== उप-घातांकीय समय ==
Line 200: Line 194:


=== दूसरी परिभाषा ===
=== दूसरी परिभाषा ===
कुछ लेखक उप-घातीय समय को चलने वाले समय <math>2^{o(n)}</math> के रूप में परिभाषित करते हैं .<ref name="ETH" /><ref>{{Cite journal| last1=Kuperberg | first1=Greg | title=डायहेड्रल हिडन सबग्रुप समस्या के लिए एक सबएक्सपोनेंशियल-टाइम क्वांटम एल्गोरिदम| location=Philadelphia | year=2005 | journal=SIAM Journal on Computing | issn=1095-7111 | volume=35 | issue=1 | page=188 | doi=10.1137/s0097539703436345| arxiv=quant-ph/0302112 | s2cid=15965140 }}</ref><ref>{{cite arXiv|eprint=quant-ph/0406151v1|author1=Oded Regev|title=बहुपद स्थान के साथ डायहेड्रल हिडन सबग्रुप समस्या के लिए एक सबएक्सपोनेंशियल टाइम एल्गोरिदम|year=2004}}</ref> यह परिभाषा उप-घातीय समय की पहली परिभाषा की तुलना में बड़े चलने वाले समय की अनुमति देती है। ऐसे उप-घातीय समय एल्गोरिदम का उदाहरण पूर्णांक गुणनखंडन के लिए सबसे प्रसिद्ध मौलिक एल्गोरिदम है, [[सामान्य संख्या फ़ील्ड चलनी]], जो {{nowrap|<math>2^{\tilde{O}(n^{1/3})}</math>,}} समय के बारे में चलता है जहां इनपुट की लंबाई है {{mvar|n}}. अन्य उदाहरण [[ग्राफ समरूपता समस्या]] थी, जिसे 1982 से 2016 तक के सबसे प्रसिद्ध एल्गोरिदम {{nowrap|<math>2^{O\left(\sqrt{n \log n}\right)}</math>.}} में हल किया गया था चूँकि, [[कंप्यूटिंग के सिद्धांत पर संगोष्ठी]] 2016 में अर्ध-बहुपद समय एल्गोरिथ्म प्रस्तुत किया गया था।<ref>{{cite journal|first1=Martin |last1=Grohe|first2=Daniel|last2=Neuen|title=ग्राफ़ समरूपता समस्या पर हालिया प्रगति|arxiv=2011.01366|year=2021}}</ref>
कुछ लेखक उप-घातीय समय को चलने वाले समय <math>2^{o(n)}</math> के रूप में परिभाषित करते हैं .<ref name="ETH" /><ref>{{Cite journal| last1=Kuperberg | first1=Greg | title=डायहेड्रल हिडन सबग्रुप समस्या के लिए एक सबएक्सपोनेंशियल-टाइम क्वांटम एल्गोरिदम| location=Philadelphia | year=2005 | journal=SIAM Journal on Computing | issn=1095-7111 | volume=35 | issue=1 | page=188 | doi=10.1137/s0097539703436345| arxiv=quant-ph/0302112 | s2cid=15965140 }}</ref><ref>{{cite arXiv|eprint=quant-ph/0406151v1|author1=Oded Regev|title=बहुपद स्थान के साथ डायहेड्रल हिडन सबग्रुप समस्या के लिए एक सबएक्सपोनेंशियल टाइम एल्गोरिदम|year=2004}}</ref> यह परिभाषा उप-घातीय समय की पहली परिभाषा की तुलना में बड़े चलने वाले समय की अनुमति देती है। ऐसे उप-घातीय समय एल्गोरिदम का उदाहरण पूर्णांक गुणनखंडन के लिए सबसे प्रसिद्ध मौलिक एल्गोरिदम है, [[सामान्य संख्या फ़ील्ड चलनी]], जो {{nowrap|<math>2^{\tilde{O}(n^{1/3})}</math>,}} समय के बारे में चलता है जहां इनपुट की लंबाई है {{mvar|n}}. अन्य उदाहरण [[ग्राफ समरूपता समस्या]] थी, जिसे 1982 से 2016 तक के सबसे प्रसिद्ध एल्गोरिदम {{nowrap|<math>2^{O\left(\sqrt{n \log n}\right)}</math>.}} में हल किया गया था चूँकि, [[कंप्यूटिंग के सिद्धांत पर संगोष्ठी]] 2016 में अर्ध-बहुपद समय एल्गोरिथ्म प्रस्तुत किया गया था।<ref>{{cite journal|first1=Martin |last1=Grohe|first2=Daniel|last2=Neuen|title=ग्राफ़ समरूपता समस्या पर हालिया प्रगति|arxiv=2011.01366|year=2021}}</ref>


इससे फर्क पड़ता है कि क्या एल्गोरिदम