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

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Estimate of time taken for running an algorithm}}
{{Short description|Estimate of time taken for running an algorithm}}
{{Redirect|Running time|the film|Running Time (film)}}
{{Redirect|रनिंग समय|द फ़िल्म|रनिंग टाइम (फ़िल्म)}}
[[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> बहुपद समय एल्गोरिथ्म है।


== सामान्य समय जटिलताओं की तालिका ==
== सामान्य समय जटिलताओं की तालिका ==
{{Further|Computational complexity of mathematical operations}}
{{Further|गणितीय संक्रियाओं की कम्प्यूटेशनल जटिलता}}
निम्नलिखित तालिका आम तौर पर सामना की जाने वाली समय जटिलताओं के कुछ वर्गों का सारांश प्रस्तुत करती है। मेज पर, {{nowrap|1=poly(''x'') = ''x''<sup>''O''(1)</sup>}}, यानी, x में बहुपद।
 
निम्नलिखित तालिका सामान्यतः सामना की जाने वाली समय जटिलताओं के कुछ वर्गों का सारांश प्रस्तुत करती है। तालिका में पॉली (x) = xO(1) अर्थात x में बहुपद है।


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Name !! [[Complexity class]] !! Running time {{nowrap|({{math|''T''(''n'')}})}} !! Examples of running times !! Example algorithms
! नाम !! [[Complexity class|जटिलता वर्ग]] !! संचालन समय (टी(एन)) !! प्रारंभ समय के उदाहरण !! उदाहरण एल्गोरिदम
|-
|-
| constant time || || <math>O(1)</math> || 10 || Finding the median value in a sorted [[array data structure|array]] of numbers.
| निरंतर समय || || <math>O(1)</math> || 10 || संख्याओं की क्रमबद्ध सारणी में माध्य मान ज्ञात करना।
Calculating {{math|(−1){{sup|''n''}}}}  
की गणना {{math|(−1){{sup|''n''}}}}
|-
|-
| [[inverse Ackermann function|inverse Ackermann]] time || || <math>O\bigl(\alpha(n)\bigr)</math> || || [[Amortized time]] per operation using a [[disjoint set data structure|disjoint set]]
| एकरमैन समय का उलटा || || <math>O\bigl(\alpha(n)\bigr)</math> || || एक असंयुक्त समुच्चय का उपयोग करके प्रति ऑपरेशन परिशोधित समय
|-
|-
| [[iterated logarithm]]ic time || || <math>O(\log^*n)</math> || || [[Cole-Vishkin algorithm|Distributed coloring of cycles]]
| पुनरावृत्त लघुगणकीय समय || || <math>O(\log^*n)</math> || || [[Cole-Vishkin algorithm|साइकिलों का रंग-रोगन वितरित किया]]
|-
|-
| log-logarithmic || || <math>O(\log\log n)</math> || || Amortized time per operation using a bounded [[priority queue]]<ref>{{Cite journal|first1=Kurt |last1=Mehlhorn |author1-link=Kurt Mehlhorn|first2=Stefan |last2=Naher|year=1990|title=Bounded ordered dictionaries in {{math|''O''(log log ''N'')}} time and {{math|''O''(''n'')}} space|journal=[[Information Processing Letters]]|doi=10.1016/0020-0190(90)90022-P|volume=35|issue=4|pages=183–189}}</ref>
| लॉग-लघुगणक || || <math>O(\log\log n)</math> || || एक बंधी हुई प्राथमिकता कतार का उपयोग करके प्रति ऑपरेशन परिशोधित समय<ref>{{Cite journal|first1=Kurt |last1=Mehlhorn |author1-link=Kurt Mehlhorn|first2=Stefan |last2=Naher|year=1990|title=Bounded ordered dictionaries in {{math|''O''(log log ''N'')}} time and {{math|''O''(''n'')}} space|journal=[[Information Processing Letters]]|doi=10.1016/0020-0190(90)90022-P|volume=35|issue=4|pages=183–189}}</ref>
|-
|-
| logarithmic time || [[DLOGTIME]] || <math>O(\log n)</math> || <math>\log n</math>, <math>\log (n^2)</math> || [[Binary search]]
| लघुगणकीय समय || [[DLOGTIME]] || <math>O(\log n)</math> || <math>\log n</math>, <math>\log (n^2)</math> || [[Binary search|बाइनरी खोज]]
|-
|-
| polylogarithmic time || || <math>\text{poly}(\log n)</math> || <math>(\log n)^2</math> ||
| बहुगणितीय समय || || <math>\text{poly}(\log n)</math> || <math>(\log n)^2</math> ||
|-
|-
|fractional power || || <math>O(n^c)</math> where <math>0<c<1</math> || <math>n^{\frac{1}{2}}</math>, <math>n^{\frac{2}{3}}</math> || Searching in a [[kd-tree]]
|भिन्नात्मक शक्ति || || <math>O(n^c)</math> where <math>0<c<1</math> || <math>n^{\frac{1}{2}}</math>, <math>n^{\frac{2}{3}}</math> || केडी-ट्री में खोज रहे हैं
|-
|-
| linear time || || <math>O(n)</math> || {{mvar|n}}, <math>2n+5</math> || Finding the smallest or largest item in an unsorted [[Array data structure|array]].
| रैखिक समय || || <math>O(n)</math> || {{mvar|n}}, <math>2n+5</math> || किसी अवर्गीकृत सरणी में सबसे छोटी या सबसे बड़ी वस्तु खोज।
[[Kadane's algorithm]].
कडेन का एल्गोरिदम। रेखीय खोज
[[Linear search]]
|-
|-
| "n log-star n" time || || <math>O(n\log^*n)</math> || || [[Raimund Seidel|Seidel]]'s [[polygon triangulation]] algorithm.
| "एन लॉग-स्टार एन" समय || || <math>O(n\log^*n)</math> || || सीडेल का बहुभुज त्रिभुज एल्गोरिथ्म।
|-
|-
| linearithmic time || || <math>O(n\log n)</math> || <math>n\log n</math>, <math>\log n!</math> || Fastest possible [[comparison sort]]
| रैखिक अंकीय समय || || <math>O(n\log n)</math> || <math>n\log n</math>, <math>\log n!</math> || सबसे तेज़ संभव तुलना प्रकार
[[Fast Fourier transform]].
फास्ट फूरियर ट्रांसफॉर्म।
|-
|-
| quasilinear time || || <math>n\text{poly}(\log n)</math> || <math>n\log^2 n</math> || [[Polynomial evaluation#Multipoint evaluation|Multipoint polynomial evaluation]]
| चतुर्रेखीय समय || || <math>n\text{poly}(\log n)</math> || <math>n\log^2 n</math> || [[Polynomial evaluation#Multipoint evaluation|बहुपद बहुपद मूल्यांकन]]
|-
|-
| quadratic time || || <math>O(n^2)</math> || <math>n^2</math> || [[Bubble sort]], [[Insertion sort]], [[Convolution theorem|Direct convolution]]
| द्विघात समय || || <math>O(n^2)</math> || <math>n^2</math> || बबल सॉर्ट, इंसर्शन सॉर्ट, डायरेक्ट कनवल्शन
|-
|-
| cubic time || || <math>O(n^3)</math> || <math>n^3</math> || Naive multiplication of two <math>n\times n</math> matrices
| घन समय || || <math>O(n^3)</math> || <math>n^3</math> || दो का नादान गुणन 𝑛×𝑛 मैट्रिक्स


Calculating [[partial correlation]].
आंशिक सहसंबंध की गणना.
|-
|-
| polynomial time || [[P (complexity)|P]] || <math>2^{O(\log n)}=\text{poly}(n)</math> || <math>n^2+n</math>, <math>n^{10}</math> || [[Karmarkar's algorithm]] for [[linear programming]]
| बहुपद समय || [[P (complexity)|P]] || <math>2^{O(\log n)}=\text{poly}(n)</math> || <math>n^2+n</math>, <math>n^{10}</math> || रैखिक प्रोग्रामिंग के लिए करमरकर का एल्गोरिदम
[[AKS primality test]]<ref name="tao-aks">{{cite book|title=An epsilon of room, II: Pages from year three of a mathematical blog|last=Tao|first=Terence|publisher=American Mathematical Society|year=2010|isbn=978-0-8218-5280-4|series=Graduate Studies in Mathematics|volume=117|location=Providence, RI|pages=82–86|contribution=1.11 The AKS primality test|doi=10.1090/gsm/117|mr=2780010|author-link=Terence Tao|contribution-url=https://terrytao.wordpress.com/2009/08/11/the-aks-primality-test/}}</ref><ref>{{cite journal | last1 = Lenstra | first1 = H. W. Jr. | author1-link = Hendrik Lenstra | last2 = Pomerance | first2 = Carl | author2-link = Carl Pomerance | doi = 10.4171/JEMS/861 | issue = 4 | journal = [[Journal of the European Mathematical Society]] | mr = 3941463 | pages = 1229–1269 | title = Primality testing with Gaussian periods | url = https://math.dartmouth.edu/~carlp/aks111216.pdf | volume = 21 | year = 2019| s2cid = 127807021 }}</ref>
[[AKS primality test|एकेएस प्रारंभिक परीक्षण]]<ref name="tao-aks">{{cite book|title=An epsilon of room, II: Pages from year three of a mathematical blog|last=Tao|first=Terence|publisher=American Mathematical Society|year=2010|isbn=978-0-8218-5280-4|series=Graduate Studies in Mathematics|volume=117|location=Providence, RI|pages=82–86|contribution=1.11 The AKS primality test|doi=10.1090/gsm/117|mr=2780010|author-link=Terence Tao|contribution-url=https://terrytao.wordpress.com/2009/08/11/the-aks-primality-test/}}</ref><ref>{{cite journal | last1 = Lenstra | first1 = H. W. Jr. | author1-link = Hendrik Lenstra | last2 = Pomerance | first2 = Carl | author2-link = Carl Pomerance | doi = 10.4171/JEMS/861 | issue = 4 | journal = [[Journal of the European Mathematical Society]] | mr = 3941463 | pages = 1229–1269 | title = Primality testing with Gaussian periods | url = https://math.dartmouth.edu/~carlp/aks111216.pdf | volume = 21 | year = 2019| s2cid = 127807021 }}</ref>
|-
|-
| quasi-polynomial time || QP || <math>2^{\text{poly}(\log n)}</math> || <math>n^{\log \log n}</math>, <math>n^{\log n}</math> || Best-known {{math|''O''(log{{sup|2}}''n'')}}-[[approximation algorithm]] for the directed [[Steiner tree problem]], best known [[parity game]] solver,<ref>{{cite journal |author = Calude, Cristian S. and Jain, Sanjay and Khoussainov, Bakhadyr and Li, Wei and Stephan, Frank| title = Deciding Parity Games in Quasipolynomial Time| year = 2017| isbn = 9781450345286| publisher = Association for Computing Machinery| url = https://doi.org/10.1145/3055399.3055409| doi = 10.1145/3055399.3055409 | journal = Proceedings of the 49th Annual ACM SIGACT Symposium on Theory of Computing| pages = 252–263}}</ref> best known [[graph isomorphism]] algorithm
| अर्ध-बहुपद समय || क्यूपी || <math>2^{\text{poly}(\log n)}</math> || <math>n^{\log \log n}</math>, <math>n^{\log n}</math> || निर्देशित स्टीनर ट्री समस्या के लिए सबसे प्रसिद्ध O(log2n)-सन्निकटन एल्गोरिथ्म, सबसे प्रसिद्ध समता गेम सॉल्वर,<ref>{{cite journal |author = Calude, Cristian S. and Jain, Sanjay and Khoussainov, Bakhadyr and Li, Wei and Stephan, Frank| title = Deciding Parity Games in Quasipolynomial Time| year = 2017| isbn = 9781450345286| publisher = Association for Computing Machinery| url = https://doi.org/10.1145/3055399.3055409| doi = 10.1145/3055399.3055409 | journal = Proceedings of the 49th Annual ACM SIGACT Symposium on Theory of Computing| pages = 252–263}}</ref> सबसे प्रसिद्ध ग्राफ समरूपता एल्गोरिथ्म
|-
|-
| sub-exponential time<br />(first definition) || SUBEXP || <math>O(2^{n^\epsilon})</math> for all <math>\epsilon >0</math> ||  || Contains [[Bounded-error probabilistic polynomial|BPP]] unless EXPTIME (see below) equals [[Arthur–Merlin protocol#MA|MA]].<ref name="bpp" />
| उप-घातांकीय समय
(प्रथम परिभाषा)
| सबएक्सपी || <math>O(2^{n^\epsilon})</math> for all <math>\epsilon >0</math> ||  || इसमें बीपीपी साम्मिलित है जब तक कि एक्सएक्सएक्सटीआई (नीचे देखें) एमए के सामान्य न हो जाए.<ref name="bpp" />
|-
|-
| sub-exponential time<br />(second definition) || || <math>2^{o(n)}</math> || <math>2^{\sqrt[3]{n}}</math> ||[[General number field sieve|Best classical algorithm]] for [[integer factorization]]
| उप-घातांकीय समय
formerly-best algorithm for [[graph isomorphism problem|graph isomorphism]]
(दूसरी परिभाषा)
| || <math>2^{o(n)}</math> || <math>2^{\sqrt[3]{n}}</math> ||पूर्णांक गुणनखंडन के लिए सर्वोत्तम मौलिक एल्गोरिदम
ग्राफ समरूपता के लिए पूर्व-सर्वश्रेष्ठ एल्गोरिदम
|-
|-
| exponential time<br />(with linear exponent) || [[E (complexity)|E]] || <math>2^{O(n)}</math> || <math>1.1^n</math>, <math>10^n</math> || Solving the [[traveling salesman problem]] using [[dynamic programming]]
| घातीय समय
(रेखीय घातांक सहित)
| [[E (complexity)|E]] || <math>2^{O(n)}</math> || <math>1.1^n</math>, <math>10^n</math> || डायनेमिक प्रोग्रामिंग का उपयोग करके ट्रैवलिंग सेल्समैन की समस्या का समाधान
|-
|-
| exponential time || [[EXPTIME]] || <math>2^{\text{poly}(n)}</math> || <math>2^n</math>, <math>2^{n^2}</math> || Solving [[matrix chain multiplication]] via [[brute-force search]]
| घातीय समय || [[EXPTIME|एक्सटाइम]] || <math>2^{\text{poly}(n)}</math> || <math>2^n</math>, <math>2^{n^2}</math> || ब्रूट-फोर्स खोज के माध्यम से मैट्रिक्स श्रृंखला गुणन को हल करना
|-
|-
| factorial time || || <math>O(n!)</math> || <math>n!</math> || Solving the [[Travelling salesman problem|traveling salesman problem]] via [[brute-force search]]
| भाज्य समय || || <math>O(n!)</math> || <math>n!</math> || ब्रूट-फोर्स सर्च के माध्यम से ट्रैवलिंग सेल्समैन की समस्या का समाधान
|-
|-
| double exponential time || [[2-EXPTIME]] || <math>2^{2^{\text{poly}(n)}}</math> || <math>2^{2^n}</math> || Deciding the truth of a given statement in [[Presburger arithmetic]]
| दोहरा घातीय समय || [[2-EXPTIME|2-एक्सटाइम]] || <math>2^{2^{\text{poly}(n)}}</math> || <math>2^{2^n}</math> || प्रेस्बर्गर अंकगणित में दिए गए कथन की सत्यता का निर्णय करना
|}
|}




== लगातार समय ==
== निरंतर समय ==
{{redirect|Constant time|programming technique to avoid a timing attack|Timing attack#Avoidance}}
{{redirect|निरंतर समय|टाइमिंग आक्रमण से बचने के लिए प्रोग्रामिंग तकनीक|आक्रमण का समय#बचाव}}


एक एल्गोरिदम को स्थिर समय कहा जाता है (इसे इस रूप में भी लिखा जाता है)। <math display="inline">O(1)</math> समय) यदि का मान <math display="inline">T(n)</math> (एल्गोरिदम की जटिलता) मान से बंधी है जो इनपुट के आकार पर निर्भर नहीं करती है। उदाहरण के लिए, किसी [[सरणी डेटा संरचना]] में किसी तत्व तक पहुँचने में निरंतर समय लगता है क्योंकि इसे खोजने के लिए केवल [[निर्देश (कंप्यूटर विज्ञान)]] का पालन करना पड़ता है। इसी प्रकार, आरोही क्रम में क्रमबद्ध सरणी में न्यूनतम मान ज्ञात करना; यह पहला तत्व है. हालाँकि, अव्यवस्थित सरणी में न्यूनतम मान ढूँढना निरंतर समय का ऑपरेशन नहीं है क्योंकि न्यूनतम मान निर्धारित करने के लिए सरणी में प्रत्येक [[तत्व (गणित)]] पर स्कैनिंग की आवश्यकता होती है। इसलिए यह रैखिक समय संक्रिया है <math display="inline">O(n)</math> समय। हालाँकि, यदि तत्वों की संख्या पहले से ज्ञात है और बदलती नहीं है, तो ऐसे एल्गोरिदम को अभी भी निरंतर समय में चलने के लिए कहा जा सकता है।
एक एल्गोरिदम को स्थिर समय कहा जाता है (इसे इस रूप में भी लिखा जाता है)। <math display="inline">O(1)</math> समय) यदि का मान <math display="inline">T(n)</math> (एल्गोरिदम की जटिलता) मान से बंधी है जो इनपुट के आकार पर निर्भर नहीं करती है। उदाहरण के लिए, किसी [[सरणी डेटा संरचना]] में किसी तत्व तक पहुँचने में निरंतर समय लगता है क्योंकि इसे खोजने के लिए केवल [[निर्देश (कंप्यूटर विज्ञान)]] का पालन करना पड़ता है। इसी प्रकार, आरोही क्रम में क्रमबद्ध सरणी में न्यूनतम मान ज्ञात करना; यह पहला तत्व है. चूँकि, अव्यवस्थित सरणी में न्यूनतम मान खोज निरंतर समय का संचालन नहीं है क्योंकि न्यूनतम मान निर्धारित करने के लिए सरणी में प्रत्येक [[तत्व (गणित)]] पर स्कैनिंग की आवश्यकता होती है। इसलिए यह रैखिक समय संक्रिया है <math display="inline">O(n)</math> समय चूँकि, यदि तत्वों की संख्या पहले से ज्ञात है और बदलती नहीं है, तो ऐसे एल्गोरिदम को अभी भी निरंतर समय में चलने के लिए कहा जा सकता है।


स्थिर समय नाम के बावजूद, चलने का समय समस्या के आकार से स्वतंत्र नहीं होना चाहिए, लेकिन चलने के समय की ऊपरी सीमा समस्या के आकार से स्वतंत्र होनी चाहिए। उदाहरण के लिए, कार्य के मूल्यों का आदान-प्रदान होता है {{mvar|a}} और {{mvar|b}}यदि आवश्यक हो तो कि <math display="inline">a \le b</math>इसे स्थिर समय कहा जाता है, भले ही समय इस पर निर्भर हो सकता है कि यह पहले से ही सत्य है या नहीं <math display="inline">a \le b</math>. हालाँकि, कुछ स्थिरांक है {{mvar|t}} ऐसा कि आवश्यक समय हमेशा अधिकतम होता है {{mvar|t}}.
स्थिर समय नाम के अतिरिक्त, चलने का समय समस्या के आकार से स्वतंत्र नहीं होना चाहिए, किन्तु चलने के समय की ऊपरी सीमा समस्या के आकार से स्वतंत्र होनी चाहिए। उदाहरण के लिए, कार्य के मूल्यों का आदान-प्रदान होता है {{mvar|a}} और {{mvar|b}} यदि आवश्यक हो तो कि <math display="inline">a \le b</math> इसे स्थिर समय कहा जाता है, तथापि समय इस पर निर्भर हो सकता है कि यह पहले से ही सत्य है या नहीं <math display="inline">a \le b</math>. चूँकि, कुछ स्थिरांक है {{mvar|t}} ऐसा कि आवश्यक समय सदैव अधिकतम {{mvar|t}} होता है .


== लघुगणकीय समय ==
== लघुगणकीय समय ==
{{Further|Logarithmic growth}}
{{Further|लघुगणकीय वृद्धि}}
कहा जाता है कि एल्गोरिदम लघुगणकीय समय लेता है <math>T(n) = O(\log n)</math>. तब से <math>\log_a n</math> और <math>\log_b n</math> लॉगरिदमिक पहचानों से संबंधित हैं#आधार बदलना, और ऐसे बिग ओ नोटेशन#बड़े ओ वर्गीकरण के लिए स्थिरांक द्वारा गुणा, लॉगरिदमिक-समय एल्गोरिदम के लिए मानक उपयोग है <math>O(\log n)</math> की अभिव्यक्ति में प्रदर्शित होने वाले लघुगणक के आधार की परवाह किए बिना {{mvar|T}}.


लॉगरिदमिक समय लेने वाले एल्गोरिदम आमतौर पर बाइनरी पेड़ों पर संचालन में या बाइनरी खोज का उपयोग करते समय पाए जाते हैं।
कहा जाता है कि एल्गोरिदम लघुगणकीय समय <math>T(n) = O(\log n)</math> लेता है .चूँकि <math>\log_a n</math> और <math>\log_b n</math> लॉगरिदमिक पहचानों से संबंधित हैं आधार बदलना, और ऐसे बिग ओ नोटेशन बड़े ओ वर्गीकरण के लिए स्थिरांक द्वारा गुणा, लॉगरिदमिक-समय एल्गोरिदम के लिए मानक उपयोग है <math>O(\log n)</math> की अभिव्यक्ति में प्रदर्शित होने वाले लघुगणक के आधार की परवाह किए बिना {{mvar|T}} उपयोग किया जाता है.


एक <math>O(\log n)</math> एल्गोरिदम को अत्यधिक कुशल माना जाता है, क्योंकि ऑपरेशन की संख्या और इनपुट के आकार का अनुपात घट जाता है और शून्य हो जाता है {{mvar|n}} बढ़ती है। एल्गोरिदम जिसे अपने इनपुट के सभी तत्वों तक पहुंच चाहिए, वह लॉगरिदमिक समय नहीं ले सकता है, क्योंकि आकार के इनपुट को पढ़ने में लगने वाला समय {{mvar|n}} के क्रम का है {{mvar|n}}.
लॉगरिदमिक समय लेने वाले एल्गोरिदम सामान्यतः बाइनरी पेड़ों पर संचालन में या बाइनरी खोज का उपयोग करते समय पाए जाते हैं।


शब्दकोश खोज द्वारा लघुगणकीय समय का उदाहरण दिया गया है। शब्दकोश पर विचार करें (डेटा संरचना) {{math|''D''}} जिसमें है {{mvar|n}} प्रविष्टियाँ, वर्णानुक्रम के अनुसार क्रमबद्ध। हम ऐसा मानते हैं, के लिए <math>1 \le k \le n</math>, कोई भी पहुंच सकता है {{mvar|k}}निरंतर समय में शब्दकोश कीवीं प्रविष्टि। होने देना <math>D(k)</math> इसे निरूपित करें {{mvar|k}}फिर कोशिश करो। इन परिकल्पनाओं के तहत, यह देखने के लिए परीक्षण करें कि क्या कोई शब्द {{mvar|w}} शब्दकोश में लघुगणकीय समय में किया जा सकता है: विचार करें <math>D\left(\left\lfloor \frac{n}{2} \right\rfloor\right)</math>, कहाँ <math>\lfloor\;\rfloor</math> [[फर्श समारोह]] को दर्शाता है। अगर <math>w = D\left(\left\lfloor \frac{n}{2} \right\rfloor\right)</math>, तो हमारा काम हो गया। अन्यथा, यदि <math>w < D\left(\left\lfloor \frac{n}{2} \right\rfloor\right)</math>, शब्दकोश के बाएँ आधे भाग में इसी प्रकार खोज जारी रखें, अन्यथा शब्दकोश के दाएँ आधे भाग के साथ भी इसी प्रकार जारी रखें। यह एल्गोरिदम उस विधि के समान है जिसका उपयोग अक्सर पेपर डिक्शनरी में प्रविष्टि खोजने के लिए किया जाता है।
एक <math>O(\log n)</math> एल्गोरिदम को अत्यधिक कुशल माना जाता है, क्योंकि संचालन की संख्या और इनपुट के आकार का अनुपात घट जाता है और शून्य हो जाता है {{mvar|n}} बढ़ती है। एल्गोरिदम जिसे अपने इनपुट के सभी तत्वों तक पहुंच चाहिए, वह लॉगरिदमिक समय नहीं ले सकता है, क्योंकि आकार के इनपुट को पढ़ने में लगने वाला समय {{mvar|n}} के क्रम {{mvar|n}} का है .
 
शब्दकोश खोज द्वारा लघुगणकीय समय का उदाहरण दिया गया है। शब्दकोश पर विचार करें (डेटा संरचना) {{math|''D''}} जिसमें है {{mvar|n}} प्रविष्टियाँ, वर्णानुक्रम के अनुसार क्रमबद्ध। हम ऐसा मानते हैं, के लिए <math>1 \le k \le n</math>, कोई भी पहुंच सकता है {{mvar|k}} निरंतर समय में शब्दकोश कीवीं प्रविष्टि माना <math>D(k)</math> इसे निरूपित करें {{mvar|k}}फिर कोशिश करो। इन परिकल्पनाओं के अनुसार, यह देखने के लिए परीक्षण करें कि क्या कोई शब्द {{mvar|w}} शब्दकोश में लघुगणकीय समय में किया जा सकता है: विचार करें <math>D\left(\left\lfloor \frac{n}{2} \right\rfloor\right)</math>, जहाँ <math>\lfloor\;\rfloor</math> [[फर्श समारोह|फ्लोर फलन]] को दर्शाता है। यदि <math>w = D\left(\left\lfloor \frac{n}{2} \right\rfloor\right)</math>, तो हमारा काम हो गया अन्यथा, यदि <math>w < D\left(\left\lfloor \frac{n}{2} \right\rfloor\right)</math>, शब्दकोश के बाएँ आधे भाग में इसी प्रकार खोज जारी रखें, अन्यथा शब्दकोश के दाएँ आधे भाग के साथ भी इसी प्रकार जारी रखें। यह एल्गोरिदम उस विधि के समान है जिसका उपयोग अधिकांशतः पेपर डिक्शनरी में प्रविष्टि खोजने के लिए किया जाता है।


== बहुगणितीय समय ==
== बहुगणितीय समय ==
कहा जाता है कि एल्गोरिदम [[बहुगणितीय फलन]] समय में चलता है यदि उसका समय है <math>T(n)</math> है <math>O\bigl((\log n)^k\bigr)</math> कुछ स्थिरांक के लिए {{mvar|k}}. इसे लिखने का दूसरा तरीका है <math>O(\log^kn)</math>.
कहा जाता है कि एल्गोरिदम [[बहुगणितीय फलन]] समय में चलता है यदि उसका समय <math>T(n)</math> है <math>O\bigl((\log n)^k\bigr)</math> कुछ स्थिरांक के लिए {{mvar|k}}. इसे लिखने का दूसरी <math>O(\log^kn)</math> विधि है .


उदाहरण के लिए, [[मैट्रिक्स श्रृंखला गुणन]] को [[समानांतर रैंडम-एक्सेस मशीन]] पर पॉलीलॉगरिदमिक समय में हल किया जा सकता है,<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> (अधिकांशतः सब-लीनियर टाइम लिखा जाता है) में चलता है . विशेष रूप से इसमें ऊपर परिभाषित समय जटिलताओं वाले एल्गोरिदम सम्मिलित हैं।


विशिष्ट एल्गोरिदम जो सटीक होते हैं और फिर भी उप-रेखीय समय में चलते हैं, [[समानांतर एल्गोरिदम]] का उपयोग करते हैं ([[एनसी (जटिलता)]] के रूप में)<sup>1</sup>मैट्रिक्स निर्धारक गणना करता है), या वैकल्पिक रूप से इनपुट संरचना पर गारंटीकृत धारणाएं रखता है (जैसा कि लॉगरिदमिक समय [[बाइनरी खोज एल्गोरिदम]] और कई पेड़ रखरखाव एल्गोरिदम करते हैं)। हालाँकि, [[औपचारिक भाषा]]एँ जैसे कि सभी स्ट्रिंग्स का सेट जिसमें पहले द्वारा इंगित स्थिति में 1-बिट होता है <math>\log n</math> स्ट्रिंग के बिट्स इनपुट के प्रत्येक बिट पर निर्भर हो सकते हैं और फिर भी उप-रेखीय समय में गणना योग्य हो सकते हैं।
विशिष्ट एल्गोरिदम जो स्पष्ट होते हैं और फिर भी उप-रेखीय समय में चलते हैं, [[समानांतर एल्गोरिदम]] का उपयोग करते हैं ([[एनसी (जटिलता)]] के रूप में)<sup>1</sup>मैट्रिक्स निर्धारक गणना करता है), या वैकल्पिक रूप से इनपुट संरचना पर गारंटीकृत धारणाएं रखता है (जैसा कि लॉगरिदमिक समय [[बाइनरी खोज एल्गोरिदम]] और कई पेड़ रखरखाव एल्गोरिदम करते हैं)। चूँकि, [[औपचारिक भाषा]]एँ जैसे कि सभी स्ट्रिंग्स का समुच्चय जिसमें पहले द्वारा इंगित स्थिति में 1-बिट होता है <math>\log n</math> स्ट्रिंग के बिट्स इनपुट के प्रत्येक बिट पर निर्भर हो सकते हैं और फिर भी उप-रेखीय समय में गणना योग्य हो सकते हैं।


विशिष्ट शब्द सबलाइनियर टाइम एल्गोरिदम आमतौर पर उन एल्गोरिदम के लिए आरक्षित होता है जो उपरोक्त के विपरीत होते हैं क्योंकि वे शास्त्रीय सीरियल मशीन मॉडल पर चलते हैं और इनपुट पर पूर्व धारणाओं की अनुमति नहीं होती है।<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}} के लिए होता है .


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


==रेखीय समय ==
==रेखीय समय ==
कहा जाता है कि एल्गोरिदम रैखिक समय लेता है, या <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}}. उदाहरण के लिए, प्रक्रिया जो किसी सूची के सभी तत्वों को जोड़ती है, उसे सूची की लंबाई के अनुपात में समय की आवश्यकता होती है, यदि जोड़ने का समय स्थिर है, या, कम से कम, स्थिरांक से घिरा हुआ है।


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


== <span id= Linearithmic time ></span> Quasilinear time ==
== चतुर्रेखीय समय ==
कहा जाता है कि एल्गोरिदम क्वासिलिनियर टाइम (जिसे लॉग-लीनियर टाइम भी कहा जाता है) में चलता है <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|Big O notation|Family of Bachmann–Landau notations}}). उदाहरण के लिए, [[बाइनरी ट्री सॉर्ट]] प्रत्येक तत्व को सम्मिलित करके बाइनरी ट्री बनाता है {{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>.


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


== [[बहुपद]] समय ==
== [[बहुपद]] समय ==
एक एल्गोरिदम को बहुपद समय का कहा जाता है यदि इसका चलने का समय एल्गोरिदम के लिए इनपुट के आकार में बहुपद अभिव्यक्ति द्वारा [[ऊपरी सीमा]] पर होता है, अर्थात, {{nowrap|1=''T''(''n'') = ''O''(''n''<sup>''k''</sup>)}} कुछ सकारात्मक स्थिरांक k के लिए।<ref name=Sipser>{{Cite book| last=Sipser | first=Michael | author-link=Michael Sipser | title=संगणना के सिद्धांत का परिचय| year=2006 | publisher=Course Technology Inc | isbn=0-619-21764-2 }}</ref><ref>{{Cite book| last=Papadimitriou | first=Christos H. | author-link=Christos H. Papadimitriou | title=अभिकलनात्मक जटिलता| year=1994 | publisher=Addison-Wesley | location=Reading, Mass.  | isbn=0-201-53082-1 }}</ref> निर्णय समस्या जिसके लिए नियतात्मक बहुपद-समय एल्गोरिथ्म मौजूद है, [[जटिलता वर्ग]] [[पी (जटिलता)]] से संबंधित है, जो [[कम्प्यूटेशनल जटिलता सिद्धांत]] के क्षेत्र में केंद्रीय है। कोबम की थीसिस में कहा गया है कि बहुपद समय सुव्यवस्थित, व्यवहार्य, कुशल या तेज़ का पर्याय है।<ref>{{Cite book| last=Cobham | first=Alan | author-link=Alan Cobham (mathematician) | year = 1965 | chapter = The intrinsic computational difficulty of functions | title = प्रोक. तर्क, पद्धति और विज्ञान का दर्शन II| publisher = North Holland}}</ref>
एक एल्गोरिदम को बहुपद समय का कहा जाता है यदि इसका चलने का समय एल्गोरिदम के लिए इनपुट के आकार में बहुपद अभिव्यक्ति द्वारा [[ऊपरी सीमा]] पर होता है, अर्थात, {{nowrap|1=''T''(''n'') = ''O''(''n''<sup>''k''</sup>)}} कुछ सकारात्मक स्थिरांक k के लिए।<ref name=Sipser>{{Cite book| last=Sipser | first=Michael | author-link=Michael Sipser | title=संगणना के सिद्धांत का परिचय| year=2006 | publisher=Course Technology Inc | isbn=0-619-21764-2 }}</ref><ref>{{Cite book| last=Papadimitriou | first=Christos H. | author-link=Christos H. Papadimitriou | title=अभिकलनात्मक जटिलता| year=1994 | publisher=Addison-Wesley | location=Reading, Mass.  | isbn=0-201-53082-1 }}</ref> निर्णय समस्या जिसके लिए नियतात्मक बहुपद-समय एल्गोरिथ्म उपस्थित है, [[जटिलता वर्ग]] [[पी (जटिलता)]] से संबंधित है, जो [[कम्प्यूटेशनल जटिलता सिद्धांत]] के क्षेत्र में केंद्रीय है। कोबम की थीसिस में कहा गया है कि बहुपद समय सुव्यवस्थित, व्यवहार्य, कुशल या तेज़ का पर्याय है।<ref>{{Cite book| last=Cobham | first=Alan | author-link=Alan Cobham (mathematician) | year = 1965 | chapter = The intrinsic computational difficulty of functions | title = प्रोक. तर्क, पद्धति और विज्ञान का दर्शन II| publisher = North Holland}}</ref>
 
बहुपद-समय एल्गोरिदम के कुछ उदाहरण:
बहुपद-समय एल्गोरिदम के कुछ उदाहरण:
* n पूर्णांकों पर चयन सॉर्ट सॉर्टिंग एल्गोरिदम निष्पादित करता है <math>An^2</math> कुछ स्थिरांक A के लिए संचालन। इस प्रकार यह समय में चलता है <math>O(n^2)</math> और बहुपद-समय एल्गोरिथ्म है।
* n पूर्णांकों पर चयन सॉर्ट सॉर्टिंग एल्गोरिदम <math>An^2</math> निष्पादित करता है  कुछ स्थिरांक A के लिए संचालन इस प्रकार यह समय <math>O(n^2)</math> में चलता है  और बहुपद-समय एल्गोरिथ्म है।
* सभी बुनियादी अंकगणितीय संक्रियाएं (जोड़, घटाव, गुणा, भाग और तुलना) बहुपद समय में की जा सकती हैं।
* सभी मूलभूत अंकगणितीय संक्रियाएं (जोड़, घटाव, गुणा, भाग और तुलना) बहुपद समय में की जा सकती हैं।
* ग्राफ़ (अलग गणित) में [[अधिकतम मिलान]] बहुपद समय में पाया जा सकता है।
* ग्राफ़ (अलग गणित) में [[अधिकतम मिलान]] बहुपद समय में पाया जा सकता है।


=== प्रबल और दुर्बल बहुपद समय ===
=== प्रबल और दुर्बल बहुपद समय ===


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


गणना के अंकगणितीय मॉडल में दृढ़तापूर्वक बहुपद समय को परिभाषित किया गया है। गणना के इस मॉडल में बुनियादी अंकगणितीय परिचालन (जोड़, घटाव, गुणा, भाग और तुलना) को ऑपरेंड के आकार की परवाह किए बिना निष्पादित करने के लिए इकाई समय कदम उठाना पड़ता है। एल्गोरिथ्म दृढ़ता से बहुपद समय में चलता है यदि:<ref>{{Cite book| last=Grötschel | first=Martin | author1-link= Martin Grötschel |author2=László Lovász | author3-link=Alexander Schrijver |author3=Alexander Schrijver | year = 1988 | chapter = Complexity, Oracles, and Numerical Computation| title = ज्यामितीय एल्गोरिदम और संयोजन अनुकूलन| publisher = Springer | isbn=0-387-13624-X| author2-link=László Lovász }}</ref>
गणना के अंकगणितीय मॉडल में दृढ़तापूर्वक बहुपद समय को परिभाषित किया गया है। गणना के इस मॉडल में मूलभूत अंकगणितीय परिचालन (जोड़, घटाव, गुणा, भाग और तुलना) को ऑपरेंड के आकार की परवाह किए बिना निष्पादित करने के लिए इकाई समय कदम उठाना पड़ता है। एल्गोरिथ्म दृढ़ता से बहुपद समय में चलता है यदि:<ref>{{Cite book| last=Grötschel | first=Martin | author1-link= Martin Grötschel |author2=László Lovász | author3-link=Alexander Schrijver |author3=Alexander Schrijver | year = 1988 | chapter = Complexity, Oracles, and Numerical Computation| title = ज्यामितीय एल्गोरिदम और संयोजन अनुकूलन| publisher = Springer | isbn=0-387-13624-X| author2-link=László Lovász }}</ref>
# गणना के अंकगणितीय मॉडल में संचालन की संख्या इनपुट उदाहरण में पूर्णांकों की संख्या में बहुपद से घिरी होती है; और
# गणना के अंकगणितीय मॉडल में संचालन की संख्या इनपुट उदाहरण में पूर्णांकों की संख्या में बहुपद से घिरी होती है; और
# एल्गोरिदम द्वारा उपयोग किया गया स्थान इनपुट के आकार में बहुपद से घिरा हुआ है।
# एल्गोरिदम द्वारा उपयोग किया गया स्थान इनपुट के आकार में बहुपद से घिरा हुआ है।


इन दो गुणों वाले किसी भी एल्गोरिदम को [[ट्यूरिंग मशीन]] पर अंकगणितीय संचालन करने के लिए उपयुक्त एल्गोरिदम द्वारा अंकगणितीय संचालन को प्रतिस्थापित करके बहुपद समय एल्गोरिदम में परिवर्तित किया जा सकता है। दूसरी शर्त अत्यंत आवश्यक है: पूर्णांक दिया गया है <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>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>O(\log a + \log b)</math> बिट्स साथ ही, अंकगणितीय संक्रियाओं की संख्या को इनपुट में पूर्णांकों की संख्या से सीमित नहीं किया जा सकता है (जो इस मामले में स्थिर है, इनपुट में हमेशा केवल दो पूर्णांक होते हैं)। बाद के अवलोकन के कारण, एल्गोरिदम दृढ़ता से बहुपद समय में नहीं चलता है। इसका वास्तविक चलने का समय लंबाई पर निर्भर करता है <math>a</math> और <math>b</math> बिट्स में और न केवल इनपुट में पूर्णांकों की संख्या पर।


एक एल्गोरिथ्म जो बहुपद समय में चलता है लेकिन जो दृढ़ता से बहुपद नहीं है, उसे कमजोर बहुपद समय में चलने वाला कहा जाता है।<ref>{{Cite book| last=Schrijver | first=Alexander | author-link = Alexander Schrijver| year = 2003 | chapter = Preliminaries on algorithms and Complexity | title = Combinatorial Optimization: Polyhedra and Efficiency | volume = 1 | publisher = Springer | isbn=3-540-44389-4}}</ref>
एक एल्गोरिथ्म जो बहुपद समय में चलता है किन्तु जो दृढ़ता से बहुपद नहीं है, उसे अशक्त बहुपद समय में चलने वाला कहा जाता है।<ref>{{Cite book| last=Schrijver | first=Alexander | author-link = Alexander Schrijver| year = 2003 | chapter = Preliminaries on algorithms and Complexity | title = Combinatorial Optimization: Polyhedra and Efficiency | volume = 1 | publisher = Springer | isbn=3-540-44389-4}}</ref> एक समस्या का प्रसिद्ध उदाहरण जिसके लिए अशक्त बहुपद-समय एल्गोरिथ्म ज्ञात है, किन्तु सशक्त बहुपद-समय एल्गोरिथ्म को स्वीकार करने के लिए नहीं जाना जाता है, [[रैखिक प्रोग्रामिंग]] है। अशक्त बहुपद समय को छद्म-बहुपद समय के साथ भ्रमित नहीं किया जाना चाहिए, जो लंबाई के अतिरिक्त समस्या में मूल्यों के परिमाण पर निर्भर करता है और वास्तव में बहुपद समय नहीं है।
एक समस्या का प्रसिद्ध उदाहरण जिसके लिए कमजोर बहुपद-समय एल्गोरिथ्म ज्ञात है, लेकिन मजबूत बहुपद-समय एल्गोरिथ्म को स्वीकार करने के लिए नहीं जाना जाता है, [[रैखिक प्रोग्रामिंग]] है। कमजोर बहुपद समय को छद्म-बहुपद समय के साथ भ्रमित नहीं किया जाना चाहिए, जो लंबाई के बजाय समस्या में मूल्यों के परिमाण पर निर्भर करता है और वास्तव में बहुपद समय नहीं है।


=== जटिलता वर्ग ===
=== जटिलता वर्ग ===
Line 153: Line 159:
* पी (जटिलता): निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[नियतात्मक ट्यूरिंग मशीन]] पर हल किया जा सकता है
* पी (जटिलता): निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[नियतात्मक ट्यूरिंग मशीन]] पर हल किया जा सकता है
* [[एनपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[गैर-नियतात्मक ट्यूरिंग मशीन]] पर हल किया जा सकता है
* [[एनपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[गैर-नियतात्मक ट्यूरिंग मशीन]] पर हल किया जा सकता है
* [[ZPP (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[संभाव्य ट्यूरिंग मशीन]] पर शून्य त्रुटि के साथ हल किया जा सकता है
* [[ZPP (जटिलता)|ज़ेडपीपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[संभाव्य ट्यूरिंग मशीन]] पर शून्य त्रुटि के साथ हल किया जा सकता है
* [[आरपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर तरफा त्रुटि के साथ हल किया जा सकता है।
* [[आरपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर पक्ष त्रुटि के साथ हल किया जा सकता है।
* [[बीपीपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर दो-तरफा त्रुटि के साथ हल किया जा सकता है
* [[बीपीपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर दो-पक्ष त्रुटि के साथ हल किया जा सकता है
* [[बीक्यूपी]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[क्वांटम ट्यूरिंग मशीन]] पर दो-तरफा त्रुटि से हल किया जा सकता है
* [[बीक्यूपी]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[क्वांटम ट्यूरिंग मशीन]] पर दो-पक्ष त्रुटि से हल किया जा सकता है


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


== अतिबहुपद समय ==
== अतिबहुपद समय ==
यदि ''T''(''n'') ऊपर किसी बहुपद से घिरा नहीं है तो एल्गोरिदम को सुपरपोलिनोमियल समय लेने के लिए परिभाषित किया गया है। बड़े O अंकन#फ़ैमिली ऑफ़ बाचमैन-लैंडौ अंकन का उपयोग करते हुए, यह ''ω''(''n'' है<sup>c</sup>) सभी स्थिरांकों के लिए समय c, जहां n इनपुट पैरामीटर है, आमतौर पर इनपुट में बिट्स की संख्या।
यदि ''T''(''n'') ऊपर किसी बहुपद से घिरा नहीं है तो एल्गोरिदम को सुपरपोलिनोमियल समय लेने के लिए परिभाषित किया गया है। बड़े O अंकन फ़ैमिली ऑफ़ बाचमैन-लैंडौ अंकन का उपयोग करते हुए, यह ''ω''(''n<sup>c</sup>'') सभी स्थिरांकों के लिए समय c, जहां n इनपुट पैरामीटर है, सामान्यतः इनपुट में बिट्स की संख्या है।


उदाहरण के लिए, एल्गोरिदम जो 2 के लिए चलता है<sup>n</sup> आकार n के इनपुट पर चरणों के लिए सुपरपोलिनोमियल समय (अधिक विशेष रूप से, घातीय समय) की आवश्यकता होती है।
उदाहरण के लिए, एल्गोरिदम जो 2<sup>n</sup> के लिए चलता है आकार n के इनपुट पर चरणों के लिए सुपरपोलिनोमियल समय (अधिक विशेष रूप से, घातीय समय) की आवश्यकता होती है।


एक एल्गोरिथ्म जो घातीय संसाधनों का उपयोग करता है वह स्पष्ट रूप से सुपरपोलिनोमियल है, लेकिन कुछ एल्गोरिदम केवल बहुत ही कमजोर रूप से सुपरपोलिनोमियल हैं। उदाहरण के लिए, एडलमैन-पोमेरेन्स-रुमली प्राइमैलिटी टेस्ट चलता है {{nowrap|''n''<sup>''O''(log log ''n'')</sup>}} एन-बिट इनपुट पर समय; यह काफी बड़े n के लिए किसी भी बहुपद की तुलना में तेजी से बढ़ता है, लेकिन इनपुट आकार को अव्यवहारिक रूप से बड़ा होना चाहिए, इससे पहले कि यह छोटी डिग्री वाले बहुपद पर हावी हो सके।
एक एल्गोरिथ्म जो घातीय संसाधनों का उपयोग करता है वह स्पष्ट रूप से सुपरपोलिनोमियल है, किन्तु कुछ एल्गोरिदम केवल बहुत ही अशक्त रूप से सुपरपोलिनोमियल हैं। उदाहरण के लिए, एडलमैन-पोमेरेन्स-रुमली प्राइमैलिटी टेस्ट चलता है {{nowrap|''n''<sup>''O''(log log ''n'')</sup>}} एन-बिट इनपुट पर समय; यह अधिक बड़े n के लिए किसी भी बहुपद की तुलना में तेजी से बढ़ता है, किन्तु इनपुट आकार को अव्यवहारिक रूप से बड़ा होना चाहिए, इससे पहले कि यह छोटी डिग्री वाले बहुपद पर हावी नही हो सकता है।


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


== अर्ध-बहुपद समय ==
== अर्ध-बहुपद समय ==
अर्ध-बहुपद समय एल्गोरिदम ऐसे एल्गोरिदम हैं जो बहुपद समय से अधिक समय तक चलते हैं, फिर भी घातीय समय तक इतने लंबे नहीं होते हैं। अर्ध-बहुपद समय एल्गोरिदम का सबसे खराब स्थिति चलने का समय है <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 के लिए कोई बहुपद समय एल्गोरिथ्म नहीं है जब तक कि 3SAT (और इस प्रकार सभी NP (जटिलता)) के लिए अर्ध-बहुपद समय एल्गोरिथ्म नहीं है। इसी तरह, कुछ समस्याएं हैं जिनके लिए हम अर्ध-बहुपद समय एल्गोरिदम जानते हैं, लेकिन कोई बहुपद समय एल्गोरिदम ज्ञात नहीं है। ऐसी समस्याएँ सन्निकटन एल्गोरिदम में उत्पन्न होती हैं; प्रसिद्ध उदाहरण निर्देशित स्टीनर वृक्ष समस्या है, जिसके लिए अर्ध-बहुपद समय सन्निकटन एल्गोरिथ्म है जो सन्निकटन कारक प्राप्त करता है <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>
जटिलता वर्ग QP में अर्ध-बहुपद समय एल्गोरिदम वाली सभी समस्याएं शामिल हैं। इसे [[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>


Line 181: Line 188:
=== एनपी-पूर्ण समस्याओं से संबंध ===
=== एनपी-पूर्ण समस्याओं से संबंध ===


जटिलता सिद्धांत में, अनसुलझी [[पी बनाम एनपी]] समस्या पूछती है कि क्या एनपी में सभी समस्याओं में बहुपद-समय एल्गोरिदम हैं। एनपी-पूर्ण समस्याओं जैसे 3SAT आदि के लिए सभी सबसे प्रसिद्ध एल्गोरिदम तेजी से समय लेते हैं। दरअसल, कई प्राकृतिक एनपी-पूर्ण समस्याओं के लिए यह अनुमान लगाया गया है कि उनके पास उप-घातांकीय समय एल्गोरिदम नहीं है। यहां उप-घातांकीय समय का अर्थ नीचे प्रस्तुत दूसरी परिभाषा से लिया गया है। (दूसरी ओर, आसन्न मैट्रिक्स द्वारा प्राकृतिक तरीके से दर्शाई गई कई ग्राफ़ समस्याएं उप-घातांकीय समय में हल करने योग्य हैं, क्योंकि इनपुट का आकार शीर्षों की संख्या का वर्ग है।) यह अनुमान (k-SAT समस्या के लिए) है घातीय समय परिकल्पना के रूप में जाना जाता है।<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> चूँकि यह अनुमान लगाया गया है कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं, [[सन्निकटन एल्गोरिदम]] के क्षेत्र में कुछ अनुपयुक्तता परिणाम यह धारणा बनाते हैं कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं। उदाहरण के लिए, [[ कवर सेट करें | कवर समुच्चय करें]] समस्या के लिए ज्ञात अप्राप्यता परिणाम देखें।


== उप-घातांकीय समय ==
== उप-घातांकीय समय ==
[[इन्फ्रा-एक्सपोनेंशियल]] | सब-एक्सपोनेंशियल टाइम शब्द का उपयोग यह व्यक्त करने के लिए किया जाता है कि कुछ एल्गोरिदम का चलने का समय किसी भी बहुपद की तुलना में तेजी से बढ़ सकता है लेकिन अभी भी एक्सपोनेंशियल से काफी छोटा है। इस अर्थ में, जिन समस्याओं में उप-घातीय समय एल्गोरिदम होते हैं, वे उन समस्याओं की तुलना में कुछ हद तक अधिक सुव्यवस्थित होती हैं जिनमें केवल घातीय एल्गोरिदम होते हैं। उप-घातांक की सटीक परिभाषा पर आम तौर पर सहमति नहीं है,<ref>{{Cite web|url=http://scottaaronson.com/blog/?p=394 |title=एक बहुत ही घातीय दुविधा नहीं|author=Aaronson, Scott |date=5 April 2009 |work=Shtetl-Optimized |access-date=2 December 2009}}</ref> और हम नीचे दो सबसे व्यापक रूप से उपयोग किए जाने वाले को सूचीबद्ध करते हैं।
[[इन्फ्रा-एक्सपोनेंशियल]] या सब-एक्सपोनेंशियल टाइम शब्द का उपयोग यह व्यक्त करने के लिए किया जाता है कि कुछ एल्गोरिदम का चलने का समय किसी भी बहुपद की तुलना में तेजी से बढ़ सकता है किन्तु अभी भी एक्सपोनेंशियल से अधिक छोटा है। इस अर्थ में, जिन समस्याओं में उप-घातीय समय एल्गोरिदम होते हैं, वे उन समस्याओं की तुलना में कुछ सीमा तक अधिक सुव्यवस्थित होती हैं जिनमें केवल घातीय एल्गोरिदम होते हैं। उप-घातांक की स्पष्ट परिभाषा पर सामान्यतः सहमति नहीं है,<ref>{{Cite web|url=http://scottaaronson.com/blog/?p=394 |title=एक बहुत ही घातीय दुविधा नहीं|author=Aaronson, Scott |date=5 April 2009 |work=Shtetl-Optimized |access-date=2 December 2009}}</ref> और हम नीचे दो सबसे व्यापक रूप से उपयोग किए जाने वाले को सूचीबद्ध करते हैं।


===पहली परिभाषा===
===पहली परिभाषा===


एक समस्या को उप-घातीय समय में हल करने योग्य कहा जाता है यदि इसे चालू समय में हल किया जा सकता है जिसका लघुगणक किसी दिए गए बहुपद से छोटा हो जाता है। अधिक सटीक रूप से, समस्या प्रत्येक के लिए उप-घातीय समय में है {{nowrap|''ε'' > 0}} एल्गोरिदम मौजूद है जो समस्या को समय O(2) में हल करता है<sup>n<sup>ε</sup></sup>). ऐसी सभी समस्याओं का समूह जटिलता वर्ग 'SUBEXP' है जिसे DTIME के ​​​​संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।<ref name="bpp">{{Cite journal| last1=Babai | first1=László | author1-link = László Babai | last2=Fortnow | first2=Lance | author2-link = Lance Fortnow | last3=Nisan | first3=N. | author3-link = Noam Nisan | last4=Wigderson | first4=Avi | author4-link = Avi Wigderson | title=जब तक EXPTIME के ​​पास प्रकाशन योग्य प्रमाण न हों, BPP में सबएक्सपोनेंशियल टाइम सिमुलेशन होता है| publisher=[[Springer-Verlag]] | location=Berlin, New York | year=1993 | journal=Computational Complexity | volume=3 | issue=4 | pages=307–318 | doi=10.1007/BF01275486| s2cid=14802332 }}</ref><ref>{{ComplexityZoo|Class SUBEXP: Deterministic Subexponential-Time|S#subexp}}</ref><ref>{{Cite conference| last1=Moser | first1=P. | contribution=Baire's Categories on Small Complexity Classes | publisher=Springer-Verlag | location=Berlin, New York | year=2003 | series=[[Lecture Notes in Computer Science]] |editor1=Andrzej Lingas |editor2=Bengt J. Nilsson|title=Fundamentals of Computation Theory: 14th International Symposium, FCT 2003, Malmö, Sweden, August 12-15, 2003, Proceedings| volume=2751 | issn=0302-9743 | pages=333–342| doi=10.1007/978-3-540-45077-1_31 | isbn=978-3-540-40543-6 }}</ref><ref>{{Cite journal| last1=Miltersen | first1=P.B. | title=जटिलता वर्गों को यादृच्छिक बनाना| publisher=Kluwer Academic Pub | year=2001 | journal=Handbook of Randomized Computing | volume=9 | page=843| doi=10.1007/978-1-4615-0013-1_19 | series=Combinatorial Optimization | isbn=978-1-4613-4886-3 }}</ref>
एक समस्या को उप-घातीय समय में हल करने योग्य कहा जाता है यदि इसे प्रारंभ समय में हल किया जा सकता है जिसका लघुगणक किसी दिए गए बहुपद से छोटा हो जाता है। अधिक स्पष्ट रूप से, समस्या प्रत्येक के लिए उप-घातीय समय में है {{nowrap|''ε'' > 0}} एल्गोरिदम उपस्थित है जो समस्या को समय O(2)<sup>n<sup>ε</sup></sup> में हल करता है). ऐसी सभी समस्याओं का समूह जटिलता वर्ग 'सबएक्सपी' है जिसे डीटाइम के ​​​​संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।<ref name="bpp">{{Cite journal| last1=Babai | first1=László | author1-link = László Babai | last2=Fortnow | first2=Lance | author2-link = Lance Fortnow | last3=Nisan | first3=N. | author3-link = Noam Nisan | last4=Wigderson | first4=Avi | author4-link = Avi Wigderson | title=जब तक EXPTIME के ​​पास प्रकाशन योग्य प्रमाण न हों, BPP में सबएक्सपोनेंशियल टाइम सिमुलेशन होता है| publisher=[[Springer-Verlag]] | location=Berlin, New York | year=1993 | journal=Computational Complexity | volume=3 | issue=4 | pages=307–318 | doi=10.1007/BF01275486| s2cid=14802332 }}</ref><ref>{{ComplexityZoo|Class SUBEXP: Deterministic Subexponential-Time|S#subexp}}</ref><ref>{{Cite conference| last1=Moser | first1=P. | contribution=Baire's Categories on Small Complexity Classes | publisher=Springer-Verlag | location=Berlin, New York | year=2003 | series=[[Lecture Notes in Computer Science]] |editor1=Andrzej Lingas |editor2=Bengt J. Nilsson|title=Fundamentals of Computation Theory: 14th International Symposium, FCT 2003, Malmö, Sweden, August 12-15, 2003, Proceedings| volume=2751 | issn=0302-9743 | pages=333–342| doi=10.1007/978-3-540-45077-1_31 | isbn=978-3-540-40543-6 }}</ref><ref>{{Cite journal| last1=Miltersen | first1=P.B. | title=जटिलता वर्गों को यादृच्छिक बनाना| publisher=Kluwer Academic Pub | year=2001 | journal=Handbook of Randomized Computing | volume=9 | page=843| doi=10.1007/978-1-4615-0013-1_19 | series=Combinatorial Optimization | isbn=978-1-4613-4886-3 }}</ref>
:<math>\text{SUBEXP}=\bigcap_{\varepsilon>0} \text{DTIME}\left(2^{n^\varepsilon}\right)</math>
:<math>\text{SUBEXP}=\bigcap_{\varepsilon>0} \text{DTIME}\left(2^{n^\varepsilon}\right)</math>
उप-घातांक की यह धारणा ε के संदर्भ में इस अर्थ में गैर-समान है कि ε इनपुट का हिस्सा नहीं है और प्रत्येक ε के पास समस्या के लिए अपना स्वयं का एल्गोरिदम हो सकता है।
उप-घातांक की यह धारणा ε के संदर्भ में इस अर्थ में गैर-समान है कि ε इनपुट का हिस्सा नहीं है और प्रत्येक ε के पास समस्या के लिए अपना स्वयं का एल्गोरिदम हो सकता है।


=== दूसरी परिभाषा ===
=== दूसरी परिभाषा ===
कुछ लेखक उप-घातीय समय को चलने वाले समय के रूप में परिभाषित करते हैं <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>
इससे फर्क पड़ता है कि क्या एल्गोरिदम को उदाहरण के आकार, शीर्षों की संख्या या किनारों की संख्या में उप-घातीय होने की अनुमति है। [[पैरामीटरयुक्त जटिलता]] में, जोड़ियों पर विचार करके इस अंतर को स्पष्ट किया जाता है <math>(L,k)</math> निर्णय समस्याओं और मापदंडों का k. 'SUBEPT' सभी पैरामीटरयुक्त समस्याओं का वर्ग है जो k में समय उप-घातीय और इनपुट आकार n में बहुपद में चलता है:<ref>{{Cite book
 
इससे फर्क पड़ता है कि क्या एल्गोरिदम को उदाहरण के आकार, शीर्षों की संख्या या किनारों की संख्या में उप-घातीय होने की अनुमति है। [[पैरामीटरयुक्त जटिलता]] में, जोड़ियों पर विचार करके इस अंतर को स्पष्ट किया जाता है <math>(L,k)</math> निर्णय समस्याओं और मापदंडों का k. 'सबेप्ट' सभी पैरामीटरयुक्त समस्याओं का वर्ग है जो k में समय उप-घातीय और इनपुट आकार n में बहुपद में चलता है:<ref>{{Cite book
  | last1=Flum  | first1=Jörg
  | last1=Flum  | first1=Jörg
  | last2=Grohe | first2=Martin | author2-link = Martin Grohe
  | last2=Grohe | first2=Martin | author2-link = Martin Grohe
Line 201: Line 209:
  | isbn = 978-3-540-29952-3 | page=417}}</ref>
  | isbn = 978-3-540-29952-3 | page=417}}</ref>
:<math>\text{SUBEPT}=\text{DTIME}\left(2^{o(k)} \cdot \text{poly}(n)\right).</math>
:<math>\text{SUBEPT}=\text{DTIME}\left(2^{o(k)} \cdot \text{poly}(n)\right).</math>
अधिक सटीक रूप से, SUBEPT सभी पैरामीटरयुक्त समस्याओं का वर्ग है <math>(L,k)</math> जिसके लिए गणना योग्य फ़ंक्शन है <math>f : \N \to \N</math> साथ <math>f \in o(k)</math> और एल्गोरिदम जो समय में एल तय करता है <math>2^{f(k)} \cdot \text{poly}(n)</math>.
अधिक स्पष्ट रूप से, सबेप्ट <math>(L,k)</math> सभी पैरामीटरयुक्त समस्याओं का वर्ग है  जिसके लिए गणना योग्य फलन है <math>f : \N \to \N</math> साथ <math>f \in o(k)</math> और एल्गोरिदम जो <math>2^{f(k)} \cdot \text{poly}(n)</math> समय में एल तय करता है .


==== घातीय समय परिकल्पना ====
==== घातीय समय परिकल्पना ====
{{Main|Exponential time hypothesis}}
{{Main|घातांकीय समय परिकल्पना}}


घातीय समय परिकल्पना (ईटीएच) यह है कि [[3SAT]], प्रति खंड अधिकतम तीन अक्षर और ''एन'' चर के साथ [[संयोजक सामान्य रूप]] में बूलियन सूत्रों की संतुष्टि की समस्या को समय 2 में हल नहीं किया जा सकता है।<sup>ओ(एन)</sup>. अधिक सटीक रूप से, परिकल्पना यह है कि कुछ पूर्ण स्थिरांक है {{math|''c'' > 0}} ऐसा कि 3SAT का निर्णय समय 2 में नहीं किया जा सकता<sup>किसी नियतात्मक ट्यूरिंग मशीन द्वारा cn</sup>। एम के साथ खंडों की संख्या को दर्शाते हुए, ईटीएच उस परिकल्पना के बराबर है कि केएसएटी को समय 2 में हल नहीं किया जा सकता है<sup>किसी भी पूर्णांक के लिए o(m)</sup> {{math|''k'' ≥ 3}}.<ref>{{Cite journal|first1=R.|last1=Impagliazzo|author1-link=Russell Impagliazzo|first2=R.|last2=Paturi|first3=F.|last3=Zane|title=Which problems have strongly exponential complexity?|journal=[[Journal of Computer and System Sciences]]|volume=63|issue=4|year=2001|pages=512–530|doi=10.1006/jcss.2001.1774|doi-access=free}}</ref> घातीय समय परिकल्पना का तात्पर्य P ≠ NP से है।
घातीय समय परिकल्पना (ईटीएच) यह है कि [[3SAT|3एसएटी]], प्रति खंड अधिकतम तीन अक्षर और ''एन'' चर के साथ [[संयोजक सामान्य रूप]] में बूलियन सूत्रों की संतुष्टि की समस्या को समय 2 में हल नहीं किया जा सकता है।<sup>ओ(एन)</sup>. अधिक स्पष्ट रूप से, परिकल्पना यह है कि कुछ पूर्ण स्थिरांक है {{math|''c'' > 0}} ऐसा कि 3एसएटी का निर्णय समय 2 में नहीं किया जा सकता<sup>किसी नियतात्मक ट्यूरिंग मशीन द्वारा cn</sup>। एम के साथ खंडों की संख्या को दर्शाते हुए, ईटीएच उस परिकल्पना के बराबर है कि केएसएटी को समय 2 में हल नहीं किया जा सकता है<sup>किसी भी पूर्णांक के लिए o(m)</sup> {{math|''k'' ≥ 3}}.<ref>{{Cite journal|first1=R.|last1=Impagliazzo|author1-link=Russell Impagliazzo|first2=R.|last2=Paturi|first3=F.|last3=Zane|title=Which problems have strongly exponential complexity?|journal=[[Journal of Computer and System Sciences]]|volume=63|issue=4|year=2001|pages=512–530|doi=10.1006/jcss.2001.1774|doi-access=free}}</ref> घातीय समय परिकल्पना का तात्पर्य P ≠ एनपी से है।


== घातीय समय ==
== घातीय समय ==
Line 217: Line 225:
== भाज्य समय ==
== भाज्य समय ==


एक एल्गोरिथ्म को फैक्टोरियल समय कहा जाता है यदि ''T(n)'' [[भाज्य समारोह]] ''n!'' से ऊपरी सीमा पर होता है। तथ्यात्मक समय घातीय समय (EXP) का उपसमुच्चय है क्योंकि <math> n! = O \left(2^{n^{1 + \epsilon}} \right)</math> सभी के लिए <math>\epsilon > 0</math>. हालाँकि, यह E का उपसमुच्चय नहीं है।
एक एल्गोरिथ्म को फैक्टोरियल समय कहा जाता है यदि ''T(n)'' [[भाज्य समारोह|भाज्य फलन]] ''n!'' से ऊपरी सीमा पर होता है। तथ्यात्मक समय घातीय समय (EXP) का उपसमुच्चय है क्योंकि <math> n! = O \left(2^{n^{1 + \epsilon}} \right)</math> सभी के लिए <math>\epsilon > 0</math>. चूँकि, यह E का उपसमुच्चय नहीं है।


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


== दोगुना घातीय समय ==
== दोगुना घातीय समय ==
यदि T(n) 2 से ऊपरी सीमा पर है तो एल्गोरिदम को [[दोहरा घातीय कार्य]] टाइम कहा जाता है<sup>2<sup>पॉली(n)</sup></sup>, जहां पॉली(n) n में कुछ बहुपद है। ऐसे एल्गोरिदम जटिलता वर्ग [[2-EXPTIME]] से संबंधित हैं।
यदि T(n) 2 से ऊपरी सीमा पर है तो एल्गोरिदम को [[दोहरा घातीय कार्य]] टाइम कहा जाता है<sup>2<sup>पॉली(n)</sup></sup>, जहां पॉली(n) n में कुछ बहुपद है। ऐसे एल्गोरिदम जटिलता वर्ग [[2-EXPTIME|2-एक्सटाइम]] से संबंधित हैं।
:<math>\mbox{2-EXPTIME} = \bigcup_{c \in \N} \mbox{DTIME}\left( 2^{2^{n^c}}\right)</math>
:<math>\mbox{2-EXPTIME} = \bigcup_{c \in \N} \mbox{DTIME}\left( 2^{2^{n^c}}\right)</math>
प्रसिद्ध दोहरे घातीय समय एल्गोरिदम में शामिल हैं:
प्रसिद्ध दोहरे घातीय समय एल्गोरिदम में सम्मिलित हैं:
* [[प्रेस्बर्गर अंकगणित]] के लिए निर्णय प्रक्रियाएं
* [[प्रेस्बर्गर अंकगणित]] के लिए निर्णय प्रक्रियाएं
* ग्रोबनेर आधार की गणना (सबसे खराब स्थिति में<ref>{{cite journal | last1 = Mayr | first1 = Ernst W. | author1-link = Ernst Mayr (computer scientist) | last2 = Meyer | first2 = Albert R. | author2-link = Albert R. Meyer | doi = 10.1016/0001-8708(82)90048-2 | issue = 3 | journal = [[Advances in Mathematics]] | mr = 683204 | pages = 305–329 | title = क्रमविनिमेय अर्धसमूहों और बहुपद आदर्शों के लिए शब्द समस्याओं की जटिलता| volume = 46 | year = 1982| doi-access = free }}</ref>)
* ग्रोबनेर आधार की गणना (सबसे व्यर्थ स्थिति में<ref>{{cite journal | last1 = Mayr | first1 = Ernst W. | author1-link = Ernst Mayr (computer scientist) | last2 = Meyer | first2 = Albert R. | author2-link = Albert R. Meyer | doi = 10.1016/0001-8708(82)90048-2 | issue = 3 | journal = [[Advances in Mathematics]] | mr = 683204 | pages = 305–329 | title = क्रमविनिमेय अर्धसमूहों और बहुपद आदर्शों के लिए शब्द समस्याओं की जटिलता| volume = 46 | year = 1982| doi-access = free }}</ref>)
* वास्तविक बंद फ़ील्ड पर क्वांटिफ़ायर उन्मूलन में कम से कम दोगुना घातीय समय लगता है,<ref>{{cite journal | last1 = Davenport | first1 = James H. | author1-link = James H. Davenport | last2 = Heintz | first2 = Joos | doi = 10.1016/S0747-7171(88)80004-X | issue = 1–2 | journal = [[Journal of Symbolic Computation]] | mr = 949111 | pages = 29–35 | title = वास्तविक परिमाणक उन्मूलन दोगुना घातीय है| volume = 5 | year = 1988| doi-access = free }}</ref> और इस समय में किया जा सकता है.<ref>{{cite conference | last = Collins | first = George E. | author-link = George E. Collins| editor-last = Brakhage | editor-first = H. | contribution = Quantifier elimination for real closed fields by cylindrical algebraic decomposition | doi = 10.1007/3-540-07407-4_17 | mr = 0403962 | pages = 134–183 | publisher = Springer | series = Lecture Notes in Computer Science | title = Automata Theory and Formal Languages: 2nd GI Conference, Kaiserslautern, May 20–23, 1975 | volume = 33 | year = 1975| doi-access = free }}</ref>
* वास्तविक बंद फ़ील्ड पर क्वांटिफ़ायर उन्मूलन में कम से कम दोगुना घातीय समय लगता है,<ref>{{cite journal | last1 = Davenport | first1 = James H. | author1-link = James H. Davenport | last2 = Heintz | first2 = Joos | doi = 10.1016/S0747-7171(88)80004-X | issue = 1–2 | journal = [[Journal of Symbolic Computation]] | mr = 949111 | pages = 29–35 | title = वास्तविक परिमाणक उन्मूलन दोगुना घातीय है| volume = 5 | year = 1988| doi-access = free }}</ref> और इस समय में किया जा सकता है.<ref>{{cite conference | last = Collins | first = George E. | author-link = George E. Collins| editor-last = Brakhage | editor-first = H. | contribution = Quantifier elimination for real closed fields by cylindrical algebraic decomposition | doi = 10.1007/3-540-07407-4_17 | mr = 0403962 | pages = 134–183 | publisher = Springer | series = Lecture Notes in Computer Science | title = Automata Theory and Formal Languages: 2nd GI Conference, Kaiserslautern, May 20–23, 1975 | volume = 33 | year = 1975| doi-access = free }}</ref>



Revision as of 11:56, 4 July 2023

सामान्यतः एल्गोरिदम के विश्लेषण में उपयोग किए जाने वाले फलन के ग्राफ़, प्रत्येक फलन के लिए इनपुट आकार n के परिणाम के रूप में संचालन N की संख्या दिखाते हैं

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

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

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

सामान्य समय जटिलताओं की तालिका

निम्नलिखित तालिका सामान्यतः सामना की जाने वाली समय जटिलताओं के कुछ वर्गों का सारांश प्रस्तुत करती है। तालिका में पॉली (x) = xO(1) अर्थात x में बहुपद है।

नाम जटिलता वर्ग संचालन समय (टी(एन)) प्रारंभ समय के उदाहरण उदाहरण एल्गोरिदम
निरंतर समय 10 संख्याओं की क्रमबद्ध सारणी में माध्य मान ज्ञात करना।

की गणना (−1)n

एकरमैन समय का उलटा एक असंयुक्त समुच्चय का उपयोग करके प्रति ऑपरेशन परिशोधित समय
पुनरावृत्त लघुगणकीय समय साइकिलों का रंग-रोगन वितरित किया
लॉग-लघुगणक एक बंधी हुई प्राथमिकता कतार का उपयोग करके प्रति ऑपरेशन परिशोधित समय[2]
लघुगणकीय समय DLOGTIME , बाइनरी खोज
बहुगणितीय समय
भिन्नात्मक शक्ति where , केडी-ट्री में खोज रहे हैं
रैखिक समय n, किसी अवर्गीकृत सरणी में सबसे छोटी या सबसे बड़ी वस्तु खोज।

कडेन का एल्गोरिदम। रेखीय खोज

"एन लॉग-स्टार एन" समय सीडेल का बहुभुज त्रिभुज एल्गोरिथ्म।
रैखिक अंकीय समय , सबसे तेज़ संभव तुलना प्रकार

फास्ट फूरियर ट्रांसफॉर्म।

चतुर्रेखीय समय बहुपद बहुपद मूल्यांकन
द्विघात समय बबल सॉर्ट, इंसर्शन सॉर्ट, डायरेक्ट कनवल्शन
घन समय दो का नादान गुणन 𝑛×𝑛 मैट्रिक्स

आंशिक सहसंबंध की गणना.

बहुपद समय P , रैखिक प्रोग्रामिंग के लिए करमरकर का एल्गोरिदम

एकेएस प्रारंभिक परीक्षण[3][4]

अर्ध-बहुपद समय क्यूपी , निर्देशित स्टीनर ट्री समस्या के लिए सबसे प्रसिद्ध O(log2n)-सन्निकटन एल्गोरिथ्म, सबसे प्रसिद्ध समता गेम सॉल्वर,[5] सबसे प्रसिद्ध ग्राफ समरूपता एल्गोरिथ्म
उप-घातांकीय समय

(प्रथम परिभाषा)

सबएक्सपी for all इसमें बीपीपी साम्मिलित है जब तक कि एक्सएक्सएक्सटीआई (नीचे देखें) एमए के सामान्य न हो जाए.[6]
उप-घातांकीय समय

(दूसरी परिभाषा)

पूर्णांक गुणनखंडन के लिए सर्वोत्तम मौलिक एल्गोरिदम

ग्राफ समरूपता के लिए पूर्व-सर्वश्रेष्ठ एल्गोरिदम

घातीय समय

(रेखीय घातांक सहित)

E , डायनेमिक प्रोग्रामिंग का उपयोग करके ट्रैवलिंग सेल्समैन की समस्या का समाधान
घातीय समय एक्सटाइम , ब्रूट-फोर्स खोज के माध्यम से मैट्रिक्स श्रृंखला गुणन को हल करना
भाज्य समय ब्रूट-फोर्स सर्च के माध्यम से ट्रैवलिंग सेल्समैन की समस्या का समाधान
दोहरा घातीय समय 2-एक्सटाइम प्रेस्बर्गर अंकगणित में दिए गए कथन की सत्यता का निर्णय करना


निरंतर समय

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

स्थिर समय नाम के अतिरिक्त, चलने का समय समस्या के आकार से स्वतंत्र नहीं होना चाहिए, किन्तु चलने के समय की ऊपरी सीमा समस्या के आकार से स्वतंत्र होनी चाहिए। उदाहरण के लिए, कार्य के मूल्यों का आदान-प्रदान होता है a और b यदि आवश्यक हो तो कि इसे स्थिर समय कहा जाता है, तथापि समय इस पर निर्भर हो सकता है कि यह पहले से ही सत्य है या नहीं . चूँकि, कुछ स्थिरांक है t ऐसा कि आवश्यक समय सदैव अधिकतम t होता है .

लघुगणकीय समय

कहा जाता है कि एल्गोरिदम लघुगणकीय समय लेता है .चूँकि और लॉगरिदमिक पहचानों से संबंधित हैं आधार बदलना, और ऐसे बिग ओ नोटेशन बड़े ओ वर्गीकरण के लिए स्थिरांक द्वारा गुणा, लॉगरिदमिक-समय एल्गोरिदम के लिए मानक उपयोग है की अभिव्यक्ति में प्रदर्शित होने वाले लघुगणक के आधार की परवाह किए बिना T उपयोग किया जाता है.

लॉगरिदमिक समय लेने वाले एल्गोरिदम सामान्यतः बाइनरी पेड़ों पर संचालन में या बाइनरी खोज का उपयोग करते समय पाए जाते हैं।

एक एल्गोरिदम को अत्यधिक कुशल माना जाता है, क्योंकि संचालन की संख्या और इनपुट के आकार का अनुपात घट जाता है और शून्य हो जाता है n बढ़ती है। एल्गोरिदम जिसे अपने इनपुट के सभी तत्वों तक पहुंच चाहिए, वह लॉगरिदमिक समय नहीं ले सकता है, क्योंकि आकार के इनपुट को पढ़ने में लगने वाला समय n के क्रम n का है .

शब्दकोश खोज द्वारा लघुगणकीय समय का उदाहरण दिया गया है। शब्दकोश पर विचार करें (डेटा संरचना) D जिसमें है n प्रविष्टियाँ, वर्णानुक्रम के अनुसार क्रमबद्ध। हम ऐसा मानते हैं, के लिए , कोई भी पहुंच सकता है k निरंतर समय में शब्दकोश कीवीं प्रविष्टि माना इसे निरूपित करें kफिर कोशिश करो। इन परिकल्पनाओं के अनुसार, यह देखने के लिए परीक्षण करें कि क्या कोई शब्द w शब्दकोश में लघुगणकीय समय में किया जा सकता है: विचार करें , जहाँ फ्लोर फलन को दर्शाता है। यदि , तो हमारा काम हो गया अन्यथा, यदि , शब्दकोश के बाएँ आधे भाग में इसी प्रकार खोज जारी रखें, अन्यथा शब्दकोश के दाएँ आधे भाग के साथ भी इसी प्रकार जारी रखें। यह एल्गोरिदम उस विधि के समान है जिसका उपयोग अधिकांशतः पेपर डिक्शनरी में प्रविष्टि खोजने के लिए किया जाता है।

बहुगणितीय समय

कहा जाता है कि एल्गोरिदम बहुगणितीय फलन समय में चलता है यदि उसका समय है कुछ स्थिरांक के लिए k. इसे लिखने का दूसरी विधि है .

उदाहरण के लिए, मैट्रिक्स श्रृंखला गुणन को समानांतर रैंडम-एक्सेस मशीन पर पॉलीलॉगरिदमिक समय में हल किया जा सकता है,[7] और ग्राफ़ (असतत गणित) गतिशील कनेक्टिविटी विधि से प्लानरिटी परीक्षण हो सकता है प्रति डालने/हटाने की कार्रवाई में लगने वाला समय है।[8]


उप-रैखिक समय

कहा जाता है कि एल्गोरिदम सब-लीनियर टाइम (अधिकांशतः सब-लीनियर टाइम लिखा जाता है) में चलता है . विशेष रूप से इसमें ऊपर परिभाषित समय जटिलताओं वाले एल्गोरिदम सम्मिलित हैं।

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

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

चूँकि ऐसे एल्गोरिदम को पूरे इनपुट को पढ़े बिना उत्तर देना होता है, इसका विवरण अधिक सीमा तक इनपुट तक पहुंच की अनुमति पर निर्भर करता है। सामान्यतः इनपुट के लिए जिसे बाइनरी स्ट्रिंग के रूप में दर्शाया जाता है यह माना जाता है कि एल्गोरिदम समय में हो सकता है अनुरोध करें और इसका मूल्य प्राप्त करें किसी i के लिए होता है .

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

रेखीय समय

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

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

चतुर्रेखीय समय

कहा जाता है कि एल्गोरिदम क्वासिलिनियर टाइम (जिसे लॉग-लीनियर टाइम भी कहा जाता है) में चलता है कुछ सकारात्मक स्थिरांक के लिए k; [10] रैखिक अंकीय समय स्थिति है .[11] सॉफ्ट ओ अंकन का उपयोग करते हुए ये एल्गोरिदम हैं . क्वासिलिनियर टाइम एल्गोरिदम भी हैं प्रत्येक स्थिरांक के लिए और इस प्रकार किसी भी बहुपद समय एल्गोरिदम की तुलना में तेज़ चलता है जिसकी समय सीमा में पद सम्मिलित होता है किसी के लिए .

क्वासिलिनियर समय में चलने वाले एल्गोरिदम में सम्मिलित हैं:

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

कई स्थितियों में, रनिंग टाइम केवल प्रदर्शन का परिणाम है फलन n बार (नोटेशन के लिए, देखें बिग ओ नोटेशन § बैचमैन-लैंडौ नोटेशन का वर्ग). उदाहरण के लिए, बाइनरी ट्री सॉर्ट प्रत्येक तत्व को सम्मिलित करके बाइनरी ट्री बनाता है n-आकार की सरणी एक-एक करके चूँकि एक स्व-संतुलन द्विआधारी खोज वृक्ष पर इन्सर्ट संचालन समय होता है संपूर्ण एल्गोरिदम समय लेता है

तुलनात्मक प्रकारों के लिए कम से कम आवश्यकता होती है सबसे व्यर्थ स्थिति में तुलना क्योंकि , स्टर्लिंग के अनुमान से वे बार-बार पुनरावृत्ति संबंध से भी उत्पन्न होते हैं .

उप-द्विघात समय

एक एल्गोरिथ्म को उपवर्गिक समय कहा जाता है यदि .

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

बहुपद समय

एक एल्गोरिदम को बहुपद समय का कहा जाता है यदि इसका चलने का समय एल्गोरिदम के लिए इनपुट के आकार में बहुपद अभिव्यक्ति द्वारा ऊपरी सीमा पर होता है, अर्थात, T(n) = O(nk) कुछ सकारात्मक स्थिरांक k के लिए।[1][12] निर्णय समस्या जिसके लिए नियतात्मक बहुपद-समय एल्गोरिथ्म उपस्थित है, जटिलता वर्ग पी (जटिलता) से संबंधित है, जो कम्प्यूटेशनल जटिलता सिद्धांत के क्षेत्र में केंद्रीय है। कोबम की थीसिस में कहा गया है कि बहुपद समय सुव्यवस्थित, व्यवहार्य, कुशल या तेज़ का पर्याय है।[13]

बहुपद-समय एल्गोरिदम के कुछ उदाहरण:

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

प्रबल और दुर्बल बहुपद समय

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

गणना के अंकगणितीय मॉडल में दृढ़तापूर्वक बहुपद समय को परिभाषित किया गया है। गणना के इस मॉडल में मूलभूत अंकगणितीय परिचालन (जोड़, घटाव, गुणा, भाग और तुलना) को ऑपरेंड के आकार की परवाह किए बिना निष्पादित करने के लिए इकाई समय कदम उठाना पड़ता है। एल्गोरिथ्म दृढ़ता से बहुपद समय में चलता है यदि:[14]

  1. गणना के अंकगणितीय मॉडल में संचालन की संख्या इनपुट उदाहरण में पूर्णांकों की संख्या में बहुपद से घिरी होती है; और
  2. एल्गोरिदम द्वारा उपयोग किया गया स्थान इनपुट के आकार में बहुपद से घिरा हुआ है।

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

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

एक एल्गोरिथ्म जो बहुपद समय में चलता है किन्तु जो दृढ़ता से बहुपद नहीं है, उसे अशक्त बहुपद समय में चलने वाला कहा जाता है।[15] एक समस्या का प्रसिद्ध उदाहरण जिसके लिए अशक्त बहुपद-समय एल्गोरिथ्म ज्ञात है, किन्तु सशक्त बहुपद-समय एल्गोरिथ्म को स्वीकार करने के लिए नहीं जाना जाता है, रैखिक प्रोग्रामिंग है। अशक्त बहुपद समय को छद्म-बहुपद समय के साथ भ्रमित नहीं किया जाना चाहिए, जो लंबाई के अतिरिक्त समस्या में मूल्यों के परिमाण पर निर्भर करता है और वास्तव में बहुपद समय नहीं है।

जटिलता वर्ग

बहुपद समय की अवधारणा कम्प्यूटेशनल जटिलता सिद्धांत में कई जटिलता वर्गों की ओर ले जाती है। बहुपद समय का उपयोग करके परिभाषित कुछ महत्वपूर्ण वर्ग निम्नलिखित हैं।

पी नियतात्मक मशीन पर सबसे छोटा समय-जटिलता वर्ग है जो मशीन मॉडल परिवर्तनों के संदर्भ में सशक्त (कंप्यूटर विज्ञान) है। (उदाहरण के लिए, एकल-टेप ट्यूरिंग मशीन से मल्टी-टेप मशीन में परिवर्तन से द्विघात गति हो सकती है, किन्तु कोई भी एल्गोरिदम जो मॉडल के अनुसार बहुपद समय में चलता है, वह दूसरे मॉडल पर भी ऐसा करता है।) कोई भी दी गई अमूर्त मशीन ऐसा करेगी समस्याओं के अनुरूप जटिलता वर्ग है जिसे उस मशीन पर बहुपद समय में हल किया जा सकता है।

अतिबहुपद समय

यदि T(n) ऊपर किसी बहुपद से घिरा नहीं है तो एल्गोरिदम को सुपरपोलिनोमियल समय लेने के लिए परिभाषित किया गया है। बड़े O अंकन फ़ैमिली ऑफ़ बाचमैन-लैंडौ अंकन का उपयोग करते हुए, यह ω(nc) सभी स्थिरांकों के लिए समय c, जहां n इनपुट पैरामीटर है, सामान्यतः इनपुट में बिट्स की संख्या है।

उदाहरण के लिए, एल्गोरिदम जो 2n के लिए चलता है आकार n के इनपुट पर चरणों के लिए सुपरपोलिनोमियल समय (अधिक विशेष रूप से, घातीय समय) की आवश्यकता होती है।

एक एल्गोरिथ्म जो घातीय संसाधनों का उपयोग करता है वह स्पष्ट रूप से सुपरपोलिनोमियल है, किन्तु कुछ एल्गोरिदम केवल बहुत ही अशक्त रूप से सुपरपोलिनोमियल हैं। उदाहरण के लिए, एडलमैन-पोमेरेन्स-रुमली प्राइमैलिटी टेस्ट चलता है nO(log log n) एन-बिट इनपुट पर समय; यह अधिक बड़े n के लिए किसी भी बहुपद की तुलना में तेजी से बढ़ता है, किन्तु इनपुट आकार को अव्यवहारिक रूप से बड़ा होना चाहिए, इससे पहले कि यह छोटी डिग्री वाले बहुपद पर हावी नही हो सकता है।

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

अर्ध-बहुपद समय

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

अर्ध-बहुपद समय एल्गोरिदम सामान्यतः एक एनपी कठिन समस्या से दूसरी समस्या में कमी (जटिलता) में उत्पन्न होते हैं। उदाहरण के लिए, कोई एनपी हार्ड समस्या का उदाहरण ले सकता है, जैसे बूलियन संतुष्टि समस्या, और इसे किसी अन्य समस्या बी के उदाहरण में परिवर्तित कर सकता है, किन्तु उदाहरण का आकार बन जाता है . उस स्थिति में, यह कमी यह सिद्ध नहीं करती है कि समस्या बी एनपी-हार्ड है; यह कमी केवल यह दर्शाती है कि B के लिए कोई बहुपद समय एल्गोरिथ्म नहीं है जब तक कि 3एसएटी (और इस प्रकार सभी एनपी (जटिलता)) के लिए अर्ध-बहुपद समय एल्गोरिथ्म नहीं है। इसी तरह, कुछ समस्याएं हैं जिनके लिए हम अर्ध-बहुपद समय एल्गोरिदम जानते हैं, किन्तु कोई बहुपद समय एल्गोरिदम ज्ञात नहीं है। ऐसी समस्याएँ सन्निकटन एल्गोरिदम में उत्पन्न होती हैं; प्रसिद्ध उदाहरण निर्देशित स्टीनर वृक्ष समस्या है, जिसके लिए अर्ध-बहुपद समय सन्निकटन एल्गोरिथ्म है जो सन्निकटन कारक प्राप्त करता है (n शीर्षों की संख्या है), किन्तु ऐसे बहुपद समय एल्गोरिथ्म का अस्तित्व दिखाना खुली समस्या है।

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

जटिलता वर्ग क्यूपी में अर्ध-बहुपद समय एल्गोरिदम वाली सभी समस्याएं सम्मिलित हैं। इसे डीटाइम के ​​संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।[17]


एनपी-पूर्ण समस्याओं से संबंध

जटिलता सिद्धांत में, अनसुलझी पी बनाम एनपी समस्या पूछती है कि क्या एनपी में सभी समस्याओं में बहुपद-समय एल्गोरिदम हैं। एनपी-पूर्ण समस्याओं जैसे 3एसएटी आदि के लिए सभी सबसे प्रसिद्ध एल्गोरिदम तेजी से समय लेते हैं। कई प्राकृतिक एनपी-पूर्ण समस्याओं के लिए यह अनुमान लगाया गया है कि उनके पास उप-घातांकीय समय एल्गोरिदम नहीं है। यहां उप-घातांकीय समय का अर्थ नीचे प्रस्तुत दूसरी परिभाषा से लिया गया है। (दूसरी ओर, आसन्न मैट्रिक्स द्वारा प्राकृतिक विधि से दर्शाई गई कई ग्राफ़ समस्याएं उप-घातांकीय समय में हल करने योग्य हैं, क्योंकि इनपुट का आकार शीर्षों की संख्या का वर्ग है।) यह अनुमान (k-एसएटी समस्या के लिए) है घातीय समय परिकल्पना के रूप में जाना जाता है।[18] चूँकि यह अनुमान लगाया गया है कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं, सन्निकटन एल्गोरिदम के क्षेत्र में कुछ अनुपयुक्तता परिणाम यह धारणा बनाते हैं कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं। उदाहरण के लिए, कवर समुच्चय करें समस्या के लिए ज्ञात अप्राप्यता परिणाम देखें।

उप-घातांकीय समय

इन्फ्रा-एक्सपोनेंशियल या सब-एक्सपोनेंशियल टाइम शब्द का उपयोग यह व्यक्त करने के लिए किया जाता है कि कुछ एल्गोरिदम का चलने का समय किसी भी बहुपद की तुलना में तेजी से बढ़ सकता है किन्तु अभी भी एक्सपोनेंशियल से अधिक छोटा है। इस अर्थ में, जिन समस्याओं में उप-घातीय समय एल्गोरिदम होते हैं, वे उन समस्याओं की तुलना में कुछ सीमा तक अधिक सुव्यवस्थित होती हैं जिनमें केवल घातीय एल्गोरिदम होते हैं। उप-घातांक की स्पष्ट परिभाषा पर सामान्यतः सहमति नहीं है,[19] और हम नीचे दो सबसे व्यापक रूप से उपयोग किए जाने वाले को सूचीबद्ध करते हैं।

पहली परिभाषा

एक समस्या को उप-घातीय समय में हल करने योग्य कहा जाता है यदि इसे प्रारंभ समय में हल किया जा सकता है जिसका लघुगणक किसी दिए गए बहुपद से छोटा हो जाता है। अधिक स्पष्ट रूप से, समस्या प्रत्येक के लिए उप-घातीय समय में है ε > 0 एल्गोरिदम उपस्थित है जो समस्या को समय O(2)nε में हल करता है). ऐसी सभी समस्याओं का समूह जटिलता वर्ग 'सबएक्सपी' है जिसे डीटाइम के ​​​​संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।[6][20][21][22]

उप-घातांक की यह धारणा ε के संदर्भ में इस अर्थ में गैर-समान है कि ε इनपुट का हिस्सा नहीं है और प्रत्येक ε के पास समस्या के लिए अपना स्वयं का एल्गोरिदम हो सकता है।

दूसरी परिभाषा

कुछ लेखक उप-घातीय समय को चलने वाले समय के रूप में परिभाषित करते हैं .[18][23][24] यह परिभाषा उप-घातीय समय की पहली परिभाषा की तुलना में बड़े चलने वाले समय की अनुमति देती है। ऐसे उप-घातीय समय एल्गोरिदम का उदाहरण पूर्णांक गुणनखंडन के लिए सबसे प्रसिद्ध मौलिक एल्गोरिदम है, सामान्य संख्या फ़ील्ड चलनी, जो , समय के बारे में चलता है जहां इनपुट की लंबाई है n. अन्य उदाहरण ग्राफ समरूपता समस्या थी, जिसे 1982 से 2016 तक के सबसे प्रसिद्ध एल्गोरिदम . में हल किया गया था चूँकि, कंप्यूटिंग के सिद्धांत पर संगोष्ठी 2016 में अर्ध-बहुपद समय एल्गोरिथ्म प्रस्तुत किया गया था।[25]

इससे फर्क पड़ता है कि क्या एल्गोरिदम को उदाहरण के आकार, शीर्षों की संख्या या किनारों की संख्या में उप-घातीय होने की अनुमति है। पैरामीटरयुक्त जटिलता में, जोड़ियों पर विचार करके इस अंतर को स्पष्ट किया जाता है निर्णय समस्याओं और मापदंडों का k. 'सबेप्ट' सभी पैरामीटरयुक्त समस्याओं का वर्ग है जो k में समय उप-घातीय और इनपुट आकार n में बहुपद में चलता है:[26]

अधिक स्पष्ट रूप से, सबेप्ट सभी पैरामीटरयुक्त समस्याओं का वर्ग है जिसके लिए गणना योग्य फलन है साथ और एल्गोरिदम जो समय में एल तय करता है .

घातीय समय परिकल्पना

घातीय समय परिकल्पना (ईटीएच) यह है कि 3एसएटी, प्रति खंड अधिकतम तीन अक्षर और एन चर के साथ संयोजक सामान्य रूप में बूलियन सूत्रों की संतुष्टि की समस्या को समय 2 में हल नहीं किया जा सकता है।ओ(एन). अधिक स्पष्ट रूप से, परिकल्पना यह है कि कुछ पूर्ण स्थिरांक है c > 0 ऐसा कि 3एसएटी का निर्णय समय 2 में नहीं किया जा सकताकिसी नियतात्मक ट्यूरिंग मशीन द्वारा cn। एम के साथ खंडों की संख्या को दर्शाते हुए, ईटीएच उस परिकल्पना के बराबर है कि केएसएटी को समय 2 में हल नहीं किया जा सकता हैकिसी भी पूर्णांक के लिए o(m) k ≥ 3.[27] घातीय समय परिकल्पना का तात्पर्य P ≠ एनपी से है।

घातीय समय

एक एल्गोरिदम को घातांकीय समय कहा जाता है, यदि T(n) ऊपरी सीमा पर 2 से घिरा होपॉली(n), जहां पॉली(n) n में कुछ बहुपद है। अधिक औपचारिक रूप से, एल्गोरिथ्म घातीय समय है यदि T(n) O(2) से घिरा हैnk) कुछ स्थिरांक k के लिए। समस्याएँ जो नियतात्मक ट्यूरिंग मशीन पर घातीय समय एल्गोरिदम को स्वीकार करती हैं, जटिलता वर्ग बनाती हैं जिसे 'EXP' के रूप में जाना जाता है।

कभी-कभी, घातीय समय का उपयोग उन एल्गोरिदम को संदर्भित करने के लिए किया जाता है जिनमें T(n) = 2 होता हैO(n), जहां घातांक अधिकतम n का रैखिक फलन है। यह जटिलता वर्ग 'ई (जटिलता)' को जन्म देता है।


भाज्य समय

एक एल्गोरिथ्म को फैक्टोरियल समय कहा जाता है यदि T(n) भाज्य फलन n! से ऊपरी सीमा पर होता है। तथ्यात्मक समय घातीय समय (EXP) का उपसमुच्चय है क्योंकि सभी के लिए . चूँकि, यह E का उपसमुच्चय नहीं है।

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

दोगुना घातीय समय

यदि T(n) 2 से ऊपरी सीमा पर है तो एल्गोरिदम को दोहरा घातीय कार्य टाइम कहा जाता है2पॉली(n), जहां पॉली(n) n में कुछ बहुपद है। ऐसे एल्गोरिदम जटिलता वर्ग 2-एक्सटाइम से संबंधित हैं।

प्रसिद्ध दोहरे घातीय समय एल्गोरिदम में सम्मिलित हैं:

  • प्रेस्बर्गर अंकगणित के लिए निर्णय प्रक्रियाएं
  • ग्रोबनेर आधार की गणना (सबसे व्यर्थ स्थिति में[28])
  • वास्तविक बंद फ़ील्ड पर क्वांटिफ़ायर उन्मूलन में कम से कम दोगुना घातीय समय लगता है,[29] और इस समय में किया जा सकता है.[30]


यह भी देखें

संदर्भ

  1. 1.0 1.1 Sipser, Michael (2006). संगणना के सिद्धांत का परिचय. Course Technology Inc. ISBN 0-619-21764-2.
  2. Mehlhorn, Kurt; Naher, Stefan (1990). "Bounded ordered dictionaries in O(log log N) time and O(n) space". Information Processing Letters. 35 (4): 183–189. doi:10.1016/0020-0190(90)90022-P.
  3. Tao, Terence (2010). "1.11 The AKS primality test". An epsilon of room, II: Pages from year three of a mathematical blog. Graduate Studies in Mathematics. Vol. 117. Providence, RI: American Mathematical Society. pp. 82–86. doi:10.1090/gsm/117. ISBN 978-0-8218-5280-4. MR 2780010.
  4. Lenstra, H. W. Jr.; Pomerance, Carl (2019). "Primality testing with Gaussian periods" (PDF). Journal of the European Mathematical Society. 21 (4): 1229–1269. doi:10.4171/JEMS/861. MR 3941463. S2CID 127807021.
  5. Calude, Cristian S. and Jain, Sanjay and Khoussainov, Bakhadyr and Li, Wei and Stephan, Frank (2017). "Deciding Parity Games in Quasipolynomial Time". Proceedings of the 49th Annual ACM SIGACT Symposium on Theory of Computing. Association for Computing Machinery: 252–263. doi:10.1145/3055399.3055409. ISBN 9781450345286.{{cite journal}}: CS1 maint: multiple names: authors list (link)
  6. 6.0 6.1 Babai, László; Fortnow, Lance; Nisan, N.; Wigderson, Avi (1993). "जब तक EXPTIME के ​​पास प्रकाशन योग्य प्रमाण न हों, BPP में सबएक्सपोनेंशियल टाइम सिमुलेशन होता है". Computational Complexity. Berlin, New York: Springer-Verlag. 3 (4): 307–318. doi:10.1007/BF01275486. S2CID 14802332. {{cite journal}}: zero width space character in |title= at position 18 (help)
  7. Bradford, Phillip G.; Rawlins, Gregory J. E.; Shannon, Gregory E. (1998). "पॉलीलॉग समय में कुशल मैट्रिक्स श्रृंखला क्रम". SIAM Journal on Computing. 27 (2): 466–490. doi:10.1137/S0097539794270698. MR 1616556.
  8. Holm, Jacob; Rotenberg, Eva (2020). "Fully-dynamic planarity testing in polylogarithmic time". In Makarychev, Konstantin; Makarychev, Yury; Tulsiani, Madhur; Kamath, Gautam; Chuzhoy, Julia (eds.). Proceedings of the 52nd Annual ACM SIGACT Symposium on Theory of Computing, STOC 2020, Chicago, IL, USA, June 22-26, 2020. Association for Computing Machinery. pp. 167–180. arXiv:1911.03449. doi:10.1145/3357713.3384249.
  9. Kumar, Ravi; Rubinfeld, Ronitt (2003). "सबलाइनियर टाइम एल्गोरिदम" (PDF). SIGACT News. 34 (4): 57–67. doi:10.1145/954092.954103. S2CID 65359.
  10. Naik, Ashish V.; Regan, Kenneth W.; Sivakumar, D. (1995). "क्वासिलिनियर-टाइम जटिलता सिद्धांत पर" (PDF). Theoretical Computer Science. 148 (2): 325–349. doi:10.1016/0304-3975(95)00031-Q. MR 1355592.
  11. Sedgewick, Robert; Wayne, Kevin (2011). एल्गोरिदम (4th ed.). Pearson Education. p. 186.
  12. Papadimitriou, Christos H. (1994). अभिकलनात्मक जटिलता. Reading, Mass.: Addison-Wesley. ISBN 0-201-53082-1.
  13. Cobham, Alan (1965). "The intrinsic computational difficulty of functions". प्रोक. तर्क, पद्धति और विज्ञान का दर्शन II. North Holland.
  14. Grötschel, Martin; László Lovász; Alexander Schrijver (1988). "Complexity, Oracles, and Numerical Computation". ज्यामितीय एल्गोरिदम और संयोजन अनुकूलन. Springer. ISBN 0-387-13624-X.
  15. Schrijver, Alexander (2003). "Preliminaries on algorithms and Complexity". Combinatorial Optimization: Polyhedra and Efficiency. Vol. 1. Springer. ISBN 3-540-44389-4.
  16. Braverman, Mark; Kun-Ko, Young; Rubinstein, Aviad; Weinstein, Omri (2017). "ETH hardness for densest-k-subgraph with perfect completeness". In Klein, Philip N. (ed.). Proceedings of the Twenty-Eighth Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2017, Barcelona, Spain, Hotel Porta Fira, January 16-19. Society for Industrial and Applied Mathematics. pp. 1326–1341. arXiv:1504.08352. doi:10.1137/1.9781611974782.86. MR 3627815.
  17. Complexity Zoo: Class QP: Quasipolynomial-Time
  18. 18.0 18.1 Impagliazzo, Russell; Paturi, Ramamohan (2001). "On the complexity of k[[Category: Templates Vigyan Ready]]-SAT" (PDF). Journal of Computer and System Sciences. 62 (2): 367–375. doi:10.1006/jcss.2000.1727. MR 1820597. {{cite journal}}: URL–wikilink conflict (help)
  19. Aaronson, Scott (5 April 2009). "एक बहुत ही घातीय दुविधा नहीं". Shtetl-Optimized. Retrieved 2 December 2009.
  20. Complexity Zoo: Class SUBEXP: Deterministic Subexponential-Time
  21. Moser, P. (2003). "Baire's Categories on Small Complexity Classes". In Andrzej Lingas; Bengt J. Nilsson (eds.). Fundamentals of Computation Theory: 14th International Symposium, FCT 2003, Malmö, Sweden, August 12-15, 2003, Proceedings. Lecture Notes in Computer Science. Vol. 2751. Berlin, New York: Springer-Verlag. pp. 333–342. doi:10.1007/978-3-540-45077-1_31. ISBN 978-3-540-40543-6. ISSN 0302-9743.
  22. Miltersen, P.B. (2001). "जटिलता वर्गों को यादृच्छिक बनाना". Handbook of Randomized Computing. Combinatorial Optimization. Kluwer Academic Pub. 9: 843. doi:10.1007/978-1-4615-0013-1_19. ISBN 978-1-4613-4886-3.
  23. Kuperberg, Greg (2005). "डायहेड्रल हिडन सबग्रुप समस्या के लिए एक सबएक्सपोनेंशियल-टाइम क्वांटम एल्गोरिदम". SIAM Journal on Computing. Philadelphia. 35 (1): 188. arXiv:quant-ph/0302112. doi:10.1137/s0097539703436345. ISSN 1095-7111. S2CID 15965140.
  24. Oded Regev (2004). "बहुपद स्थान के साथ डायहेड्रल हिडन सबग्रुप समस्या के लिए एक सबएक्सपोनेंशियल टाइम एल्गोरिदम". arXiv:quant-ph/0406151v1.
  25. Grohe, Martin; Neuen, Daniel (2021). "ग्राफ़ समरूपता समस्या पर हालिया प्रगति". arXiv:2011.01366. {{cite journal}}: Cite journal requires |journal= (help)
  26. Flum, Jörg; Grohe, Martin (2006). पैरामीटरयुक्त जटिलता सिद्धांत. Springer. p. 417. ISBN 978-3-540-29952-3.
  27. Impagliazzo, R.; Paturi, R.; Zane, F. (2001). "Which problems have strongly exponential complexity?". Journal of Computer and System Sciences. 63 (4): 512–530. doi:10.1006/jcss.2001.1774.
  28. Mayr, Ernst W.; Meyer, Albert R. (1982). "क्रमविनिमेय अर्धसमूहों और बहुपद आदर्शों के लिए शब्द समस्याओं की जटिलता". Advances in Mathematics. 46 (3): 305–329. doi:10.1016/0001-8708(82)90048-2. MR 0683204.
  29. Davenport, James H.; Heintz, Joos (1988). "वास्तविक परिमाणक उन्मूलन दोगुना घातीय है". Journal of Symbolic Computation. 5 (1–2): 29–35. doi:10.1016/S0747-7171(88)80004-X. MR 0949111.
  30. Collins, George E. (1975). "Quantifier elimination for real closed fields by cylindrical algebraic decomposition". In Brakhage, H. (ed.). Automata Theory and Formal Languages: 2nd GI Conference, Kaiserslautern, May 20–23, 1975. Lecture Notes in Computer Science. Vol. 33. Springer. pp. 134–183. doi:10.1007/3-540-07407-4_17. MR 0403962.