समय की जटिलता: Difference between revisions
(Created page with "{{Short description|Estimate of time taken for running an algorithm}} {{Redirect|Running time|the film|Running Time (film)}} File:comparison computational complexity.svg|thu...") |
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|Running time|the film|Running Time (film)}} | ||
[[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}} इनपुट का प्रतिनिधित्व करने के लिए आवश्यक [[ अंश ]]्स की इकाइयों में आकार है। | ||
एल्गोरिथम जटिलताओं को बड़े ओ नोटेशन में दिखाई देने वाले फ़ंक्शन के प्रकार के अनुसार वर्गीकृत किया गया है। उदाहरण के लिए, समय जटिलता वाला | एल्गोरिथम जटिलताओं को बड़े ओ नोटेशन में दिखाई देने वाले फ़ंक्शन के प्रकार के अनुसार वर्गीकृत किया गया है। उदाहरण के लिए, समय जटिलता वाला एल्गोरिदम <math>O(n)</math> रैखिक समय एल्गोरिथ्म और समय जटिलता वाला एल्गोरिदम है <math>O(n^\alpha)</math> कुछ स्थिरांक के लिए <math>\alpha > 1</math> बहुपद समय एल्गोरिथ्म है। | ||
== सामान्य समय जटिलताओं की तालिका == | == सामान्य समय जटिलताओं की तालिका == | ||
Line 70: | Line 70: | ||
{{redirect|Constant time|programming technique to avoid a timing attack|Timing attack#Avoidance}} | {{redirect|Constant time|programming technique to avoid a timing attack|Timing attack#Avoidance}} | ||
एक एल्गोरिदम को स्थिर समय कहा जाता है (इसे इस रूप में भी लिखा जाता है)। <math display="inline">O(1)</math> समय) यदि का मान <math display="inline">T(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}}. | ||
Line 76: | Line 76: | ||
== लघुगणकीय समय == | == लघुगणकीय समय == | ||
{{Further|Logarithmic growth}} | {{Further|Logarithmic growth}} | ||
कहा जाता है कि | कहा जाता है कि एल्गोरिदम लघुगणकीय समय लेता है <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}} बढ़ती है। | एक <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>. | ||
उदाहरण के लिए, [[मैट्रिक्स श्रृंखला गुणन]] को [[समानांतर रैंडम-एक्सेस मशीन]] पर पॉलीलॉगरिदमिक समय में हल किया जा सकता है,<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> और ग्राफ़ (असतत गणित) | उदाहरण के लिए, [[मैट्रिक्स श्रृंखला गुणन]] को [[समानांतर रैंडम-एक्सेस मशीन]] पर पॉलीलॉगरिदमिक समय में हल किया जा सकता है,<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>. विशेष रूप से इसमें ऊपर परिभाषित समय जटिलताओं वाले एल्गोरिदम शामिल हैं। | ||
विशिष्ट एल्गोरिदम जो सटीक होते हैं और फिर भी उप-रेखीय समय में चलते हैं, [[समानांतर एल्गोरिदम]] का उपयोग करते हैं ([[एनसी (जटिलता)]] के रूप में)<sup>1</sup>मैट्रिक्स निर्धारक गणना करता है), या वैकल्पिक रूप से इनपुट संरचना पर गारंटीकृत धारणाएं रखता है (जैसा कि लॉगरिदमिक समय [[बाइनरी खोज एल्गोरिदम]] और कई पेड़ रखरखाव एल्गोरिदम करते हैं)। हालाँकि, [[औपचारिक भाषा]]एँ जैसे कि सभी स्ट्रिंग्स का सेट जिसमें पहले द्वारा इंगित स्थिति में 1-बिट होता है <math>\log n</math> स्ट्रिंग के बिट्स इनपुट के प्रत्येक बिट पर निर्भर हो सकते हैं और फिर भी उप-रेखीय समय में गणना योग्य हो सकते हैं। | विशिष्ट एल्गोरिदम जो सटीक होते हैं और फिर भी उप-रेखीय समय में चलते हैं, [[समानांतर एल्गोरिदम]] का उपयोग करते हैं ([[एनसी (जटिलता)]] के रूप में)<sup>1</sup>मैट्रिक्स निर्धारक गणना करता है), या वैकल्पिक रूप से इनपुट संरचना पर गारंटीकृत धारणाएं रखता है (जैसा कि लॉगरिदमिक समय [[बाइनरी खोज एल्गोरिदम]] और कई पेड़ रखरखाव एल्गोरिदम करते हैं)। हालाँकि, [[औपचारिक भाषा]]एँ जैसे कि सभी स्ट्रिंग्स का सेट जिसमें पहले द्वारा इंगित स्थिति में 1-बिट होता है <math>\log n</math> स्ट्रिंग के बिट्स इनपुट के प्रत्येक बिट पर निर्भर हो सकते हैं और फिर भी उप-रेखीय समय में गणना योग्य हो सकते हैं। | ||
Line 97: | Line 97: | ||
विशिष्ट शब्द सबलाइनियर टाइम एल्गोरिदम आमतौर पर उन एल्गोरिदम के लिए आरक्षित होता है जो उपरोक्त के विपरीत होते हैं क्योंकि वे शास्त्रीय सीरियल मशीन मॉडल पर चलते हैं और इनपुट पर पूर्व धारणाओं की अनुमति नहीं होती है।<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>O(n)</math> समय, यदि इसकी समय जटिलता है <math>O(n)</math>. अनौपचारिक रूप से, इसका मतलब यह है कि इनपुट के आकार के साथ चलने का समय अधिकतम रैखिक रूप से बढ़ता है। अधिक सटीक रूप से, इसका मतलब यह है कि स्थिरांक है {{mvar|c}} ऐसा कि चलने का समय अधिकतम हो <math>cn</math> आकार के प्रत्येक इनपुट के लिए {{mvar|n}}. उदाहरण के लिए, प्रक्रिया जो किसी सूची के सभी तत्वों को जोड़ती है, उसे सूची की लंबाई के अनुपात में समय की आवश्यकता होती है, यदि जोड़ने का समय स्थिर है, या, कम से कम, स्थिरांक से घिरा हुआ है। | ||
रैखिक समय उन स्थितियों में सर्वोत्तम संभव समय जटिलता है जहां एल्गोरिदम को क्रमिक रूप से अपने संपूर्ण इनपुट को पढ़ना होता है। इसलिए, रैखिक समय या, कम से कम, लगभग रैखिक समय प्रदर्शित करने वाले एल्गोरिदम की खोज में बहुत अधिक शोध का निवेश किया गया है। इस शोध में सॉफ्टवेयर और हार्डवेयर दोनों तरीके शामिल हैं। ऐसी कई हार्डवेयर प्रौद्योगिकियाँ हैं जो इसे प्रदान करने के लिए [[समानांतर कंप्यूटिंग]] का उपयोग करती हैं। | रैखिक समय उन स्थितियों में सर्वोत्तम संभव समय जटिलता है जहां एल्गोरिदम को क्रमिक रूप से अपने संपूर्ण इनपुट को पढ़ना होता है। इसलिए, रैखिक समय या, कम से कम, लगभग रैखिक समय प्रदर्शित करने वाले एल्गोरिदम की खोज में बहुत अधिक शोध का निवेश किया गया है। इस शोध में सॉफ्टवेयर और हार्डवेयर दोनों तरीके शामिल हैं। ऐसी कई हार्डवेयर प्रौद्योगिकियाँ हैं जो इसे प्रदान करने के लिए [[समानांतर कंप्यूटिंग]] का उपयोग करती हैं। उदाहरण [[ सामग्री-पता योग्य स्मृति ]] है। रैखिक समय की इस अवधारणा का उपयोग बॉयर-मूर स्ट्रिंग-खोज एल्गोरिदम और उक्कोनेन के एल्गोरिदम जैसे स्ट्रिंग मिलान एल्गोरिदम में किया जाता है। | ||
== <span id= Linearithmic time ></span> Quasilinear time == | == <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>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>\Theta (\log n)</math> कार्यवाही {{mvar|n}} बार (नोटेशन के लिए, देखें {{slink|Big O notation|Family of Bachmann–Landau notations}}). उदाहरण के लिए, [[बाइनरी ट्री सॉर्ट]] प्रत्येक तत्व को सम्मिलित करके | कई मामलों में, <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>\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>. | ||
Line 125: | Line 125: | ||
== [[बहुपद]] समय == | == [[बहुपद]] समय == | ||
एक एल्गोरिदम को बहुपद समय का कहा जाता है यदि इसका चलने का समय एल्गोरिदम के लिए इनपुट के आकार में | एक एल्गोरिदम को बहुपद समय का कहा जाता है यदि इसका चलने का समय एल्गोरिदम के लिए इनपुट के आकार में बहुपद अभिव्यक्ति द्वारा [[ऊपरी सीमा]] पर होता है, अर्थात, {{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> | ||
# गणना के अंकगणितीय मॉडल में संचालन की संख्या इनपुट उदाहरण में पूर्णांकों की संख्या में | # गणना के अंकगणितीय मॉडल में संचालन की संख्या इनपुट उदाहरण में पूर्णांकों की संख्या में बहुपद से घिरी होती है; और | ||
# एल्गोरिदम द्वारा उपयोग किया गया स्थान इनपुट के आकार में | # एल्गोरिदम द्वारा उपयोग किया गया स्थान इनपुट के आकार में बहुपद से घिरा हुआ है। | ||
इन दो गुणों वाले किसी भी एल्गोरिदम को [[ट्यूरिंग मशीन]] पर अंकगणितीय संचालन करने के लिए उपयुक्त एल्गोरिदम द्वारा अंकगणितीय संचालन को प्रतिस्थापित करके बहुपद समय एल्गोरिदम में परिवर्तित किया जा सकता है। दूसरी शर्त अत्यंत आवश्यक है: पूर्णांक दिया गया है <math>2^n</math> (जो ट्यूरिंग मशीन मॉडल में n के समानुपाती स्थान लेता है), इसकी गणना करना संभव है <math>2^{2^n}</math> दोहराए गए वर्ग का उपयोग करके n गुणन के साथ। हालाँकि, स्थान प्रतिनिधित्व करता था <math>2^{2^n}</math> के लिए आनुपातिक है <math>2^n</math>, और इस प्रकार इनपुट का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले स्थान में बहुपद के बजाय घातांकीय होता है। इसलिए, ट्यूरिंग मशीन पर बहुपद समय में यह गणना करना संभव नहीं है, लेकिन बहुपद रूप से कई अंकगणितीय परिचालनों द्वारा इसकी गणना करना संभव है। | इन दो गुणों वाले किसी भी एल्गोरिदम को [[ट्यूरिंग मशीन]] पर अंकगणितीय संचालन करने के लिए उपयुक्त एल्गोरिदम द्वारा अंकगणितीय संचालन को प्रतिस्थापित करके बहुपद समय एल्गोरिदम में परिवर्तित किया जा सकता है। दूसरी शर्त अत्यंत आवश्यक है: पूर्णांक दिया गया है <math>2^n</math> (जो ट्यूरिंग मशीन मॉडल में n के समानुपाती स्थान लेता है), इसकी गणना करना संभव है <math>2^{2^n}</math> दोहराए गए वर्ग का उपयोग करके n गुणन के साथ। हालाँकि, स्थान प्रतिनिधित्व करता था <math>2^{2^n}</math> के लिए आनुपातिक है <math>2^n</math>, और इस प्रकार इनपुट का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले स्थान में बहुपद के बजाय घातांकीय होता है। इसलिए, ट्यूरिंग मशीन पर बहुपद समय में यह गणना करना संभव नहीं है, लेकिन बहुपद रूप से कई अंकगणितीय परिचालनों द्वारा इसकी गणना करना संभव है। | ||
हालाँकि, पहली शर्त के लिए, ऐसे एल्गोरिदम हैं जो बाइनरी-एन्कोडेड इनपुट की लंबाई में | हालाँकि, पहली शर्त के लिए, ऐसे एल्गोरिदम हैं जो बाइनरी-एन्कोडेड इनपुट की लंबाई में बहुपद से बंधे कई ट्यूरिंग मशीन चरणों में चलते हैं, लेकिन इनपुट की संख्या में बहुपद से बंधे कई अंकगणितीय संचालन नहीं लेते हैं नंबर. दो पूर्णांकों के सबसे बड़े सामान्य भाजक की गणना के लिए [[यूक्लिडियन एल्गोरिथ्म]] उदाहरण है। दो पूर्णांक दिए गए हैं <math>a</math> और <math>b</math>, एल्गोरिथम निष्पादित करता है <math>O(\log a + \log b)</math> संख्याओं पर अंकगणितीय संक्रियाएँ | ||
अधिक से अधिक <math>O(\log a + \log b)</math> बिट्स साथ ही, अंकगणितीय संक्रियाओं की संख्या को इनपुट में पूर्णांकों की संख्या से सीमित नहीं किया जा सकता है (जो इस मामले में स्थिर है, इनपुट में हमेशा केवल दो पूर्णांक होते हैं)। बाद के अवलोकन के कारण, एल्गोरिदम दृढ़ता से बहुपद समय में नहीं चलता है। इसका वास्तविक चलने का समय लंबाई पर निर्भर करता है <math>a</math> और <math>b</math> बिट्स में और न केवल इनपुट में पूर्णांकों की संख्या पर। | अधिक से अधिक <math>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 154: | Line 154: | ||
* [[एनपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[गैर-नियतात्मक ट्यूरिंग मशीन]] पर हल किया जा सकता है | * [[एनपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[गैर-नियतात्मक ट्यूरिंग मशीन]] पर हल किया जा सकता है | ||
* [[ZPP (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[संभाव्य ट्यूरिंग मशीन]] पर शून्य त्रुटि के साथ हल किया जा सकता है | * [[ZPP (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[संभाव्य ट्यूरिंग मशीन]] पर शून्य त्रुटि के साथ हल किया जा सकता है | ||
* [[आरपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर | * [[आरपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर तरफा त्रुटि के साथ हल किया जा सकता है। | ||
* [[बीपीपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर दो-तरफा त्रुटि के साथ हल किया जा सकता है | * [[बीपीपी (जटिलता)]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर दो-तरफा त्रुटि के साथ हल किया जा सकता है | ||
* [[बीक्यूपी]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[क्वांटम ट्यूरिंग मशीन]] पर दो-तरफा त्रुटि से हल किया जा सकता है | * [[बीक्यूपी]]: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में [[क्वांटम ट्यूरिंग मशीन]] पर दो-तरफा त्रुटि से हल किया जा सकता है | ||
पी | पी नियतात्मक मशीन पर सबसे छोटा समय-जटिलता वर्ग है जो मशीन मॉडल परिवर्तनों के संदर्भ में [[मजबूती (कंप्यूटर विज्ञान)]] है। (उदाहरण के लिए, एकल-टेप ट्यूरिंग मशीन से मल्टी-टेप मशीन में परिवर्तन से द्विघात गति हो सकती है, लेकिन कोई भी एल्गोरिदम जो मॉडल के तहत बहुपद समय में चलता है, वह दूसरे मॉडल पर भी ऐसा करता है।) कोई भी दी गई [[अमूर्त मशीन]] ऐसा करेगी समस्याओं के अनुरूप जटिलता वर्ग है जिसे उस मशीन पर बहुपद समय में हल किया जा सकता है। | ||
== अतिबहुपद समय == | == अतिबहुपद समय == | ||
यदि ''T''(''n'') ऊपर किसी बहुपद से घिरा नहीं है तो | यदि ''T''(''n'') ऊपर किसी बहुपद से घिरा नहीं है तो एल्गोरिदम को सुपरपोलिनोमियल समय लेने के लिए परिभाषित किया गया है। बड़े O अंकन#फ़ैमिली ऑफ़ बाचमैन-लैंडौ अंकन का उपयोग करते हुए, यह ''ω''(''n'' है<sup>c</sup>) सभी स्थिरांकों के लिए समय c, जहां n इनपुट पैरामीटर है, आमतौर पर इनपुट में बिट्स की संख्या। | ||
उदाहरण के लिए, | उदाहरण के लिए, एल्गोरिदम जो 2 के लिए चलता है<sup>n</sup> आकार n के इनपुट पर चरणों के लिए सुपरपोलिनोमियल समय (अधिक विशेष रूप से, घातीय समय) की आवश्यकता होती है। | ||
एक एल्गोरिथ्म जो घातीय संसाधनों का उपयोग करता है वह स्पष्ट रूप से सुपरपोलिनोमियल है, लेकिन कुछ एल्गोरिदम केवल बहुत ही कमजोर रूप से सुपरपोलिनोमियल हैं। उदाहरण के लिए, एडलमैन-पोमेरेन्स-रुमली प्राइमैलिटी टेस्ट चलता है {{nowrap|''n''<sup>''O''(log log ''n'')</sup>}} एन-बिट इनपुट पर समय; यह काफी बड़े n के लिए किसी भी बहुपद की तुलना में तेजी से बढ़ता है, लेकिन इनपुट आकार को अव्यवहारिक रूप से बड़ा होना चाहिए, इससे पहले कि यह छोटी डिग्री वाले बहुपद पर हावी न हो सके। | एक एल्गोरिथ्म जो घातीय संसाधनों का उपयोग करता है वह स्पष्ट रूप से सुपरपोलिनोमियल है, लेकिन कुछ एल्गोरिदम केवल बहुत ही कमजोर रूप से सुपरपोलिनोमियल हैं। उदाहरण के लिए, एडलमैन-पोमेरेन्स-रुमली प्राइमैलिटी टेस्ट चलता है {{nowrap|''n''<sup>''O''(log log ''n'')</sup>}} एन-बिट इनपुट पर समय; यह काफी बड़े n के लिए किसी भी बहुपद की तुलना में तेजी से बढ़ता है, लेकिन इनपुट आकार को अव्यवहारिक रूप से बड़ा होना चाहिए, इससे पहले कि यह छोटी डिग्री वाले बहुपद पर हावी न हो सके। | ||
Line 170: | Line 170: | ||
== अर्ध-बहुपद समय == | == अर्ध-बहुपद समय == | ||
अर्ध-बहुपद समय एल्गोरिदम ऐसे एल्गोरिदम हैं जो बहुपद समय से अधिक समय तक चलते हैं, फिर भी घातीय समय तक इतने लंबे नहीं होते हैं। अर्ध-बहुपद समय एल्गोरिदम का सबसे खराब स्थिति चलने का समय है <math>2^{O(\log^c n)}</math> कुछ के लिए तय किया गया {{nowrap|<math>c > 0</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>2^{O(\log^c n)}</math>. उस स्थिति में, यह कमी यह साबित नहीं करती है कि समस्या बी एनपी-हार्ड है; यह कमी केवल यह दर्शाती है कि B के लिए कोई बहुपद समय एल्गोरिथ्म नहीं है जब तक कि 3SAT (और इस प्रकार सभी NP (जटिलता)) के लिए अर्ध-बहुपद समय एल्गोरिथ्म नहीं है। इसी तरह, कुछ समस्याएं हैं जिनके लिए हम अर्ध-बहुपद समय एल्गोरिदम जानते हैं, लेकिन कोई बहुपद समय एल्गोरिदम ज्ञात नहीं है। ऐसी समस्याएँ सन्निकटन एल्गोरिदम में उत्पन्न होती हैं; प्रसिद्ध उदाहरण निर्देशित स्टीनर वृक्ष समस्या है, जिसके लिए अर्ध-बहुपद समय सन्निकटन एल्गोरिथ्म है जो सन्निकटन कारक प्राप्त करता है <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> | ||
जटिलता वर्ग QP में अर्ध-बहुपद समय एल्गोरिदम वाली सभी समस्याएं शामिल हैं। इसे [[DTIME]] के संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।<ref>{{ComplexityZoo|Class QP: Quasipolynomial-Time|Q#qp}}</ref> | जटिलता वर्ग QP में अर्ध-बहुपद समय एल्गोरिदम वाली सभी समस्याएं शामिल हैं। इसे [[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 183: | Line 183: | ||
जटिलता सिद्धांत में, अनसुलझी [[पी बनाम एनपी]] समस्या पूछती है कि क्या एनपी में सभी समस्याओं में बहुपद-समय एल्गोरिदम हैं। एनपी-पूर्ण समस्याओं जैसे 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> चूँकि यह अनुमान लगाया गया है कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं, [[सन्निकटन एल्गोरिदम]] के क्षेत्र में कुछ अनुपयुक्तता परिणाम यह धारणा बनाते हैं कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं। उदाहरण के लिए, [[ कवर सेट करें ]] समस्या के लिए ज्ञात अप्राप्यता परिणाम देखें। | जटिलता सिद्धांत में, अनसुलझी [[पी बनाम एनपी]] समस्या पूछती है कि क्या एनपी में सभी समस्याओं में बहुपद-समय एल्गोरिदम हैं। एनपी-पूर्ण समस्याओं जैसे 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> चूँकि यह अनुमान लगाया गया है कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं, [[सन्निकटन एल्गोरिदम]] के क्षेत्र में कुछ अनुपयुक्तता परिणाम यह धारणा बनाते हैं कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं। उदाहरण के लिए, [[ कवर सेट करें ]] समस्या के लिए ज्ञात अप्राप्यता परिणाम देखें। | ||
== | == उप-घातांकीय समय == | ||
[[इन्फ्रा-एक्सपोनेंशियल]] | सब-एक्सपोनेंशियल टाइम शब्द का उपयोग यह व्यक्त करने के लिए किया जाता है कि कुछ एल्गोरिदम का चलने का समय किसी भी बहुपद की तुलना में तेजी से बढ़ सकता है लेकिन अभी भी | [[इन्फ्रा-एक्सपोनेंशियल]] | सब-एक्सपोनेंशियल टाइम शब्द का उपयोग यह व्यक्त करने के लिए किया जाता है कि कुछ एल्गोरिदम का चलने का समय किसी भी बहुपद की तुलना में तेजी से बढ़ सकता है लेकिन अभी भी एक्सपोनेंशियल से काफी छोटा है। इस अर्थ में, जिन समस्याओं में उप-घातीय समय एल्गोरिदम होते हैं, वे उन समस्याओं की तुलना में कुछ हद तक अधिक सुव्यवस्थित होती हैं जिनमें केवल घातीय एल्गोरिदम होते हैं। उप-घातांक की सटीक परिभाषा पर आम तौर पर सहमति नहीं है,<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> | ||
:<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> यह परिभाषा उप-घातीय समय की पहली परिभाषा की तुलना में बड़े चलने वाले समय की अनुमति देती है। ऐसे उप-घातीय समय एल्गोरिदम का | कुछ लेखक उप-घातीय समय को चलने वाले समय के रूप में परिभाषित करते हैं <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. 'SUBEPT' सभी पैरामीटरयुक्त समस्याओं का वर्ग है जो k में समय उप-घातीय और इनपुट आकार n में बहुपद में चलता है:<ref>{{Cite book | ||
| last1=Flum | first1=Jörg | | last1=Flum | first1=Jörg | ||
Line 201: | Line 201: | ||
| 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> जिसके लिए | अधिक सटीक रूप से, 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>. | ||
==== घातीय समय परिकल्पना ==== | ==== घातीय समय परिकल्पना ==== | ||
Line 209: | Line 209: | ||
== घातीय समय == | == घातीय समय == | ||
एक एल्गोरिदम को घातांकीय समय कहा जाता है, यदि ''T''(''n'') ऊपरी सीमा पर 2 से घिरा हो<sup>पॉली(n)</sup>, जहां पॉली(n) n में कुछ बहुपद है। अधिक औपचारिक रूप से, | एक एल्गोरिदम को घातांकीय समय कहा जाता है, यदि ''T''(''n'') ऊपरी सीमा पर 2 से घिरा हो<sup>पॉली(n)</sup>, जहां पॉली(n) n में कुछ बहुपद है। अधिक औपचारिक रूप से, एल्गोरिथ्म घातीय समय है यदि T(n) O(2) से घिरा है<sup>n<sup>k</sup></sup>) कुछ स्थिरांक k के लिए। समस्याएँ जो नियतात्मक ट्यूरिंग मशीन पर घातीय समय एल्गोरिदम को स्वीकार करती हैं, जटिलता वर्ग बनाती हैं जिसे '[[EXP]]' के रूप में जाना जाता है। | ||
:<math>\text{EXP} = \bigcup_{c \in \mathbb{R_+}} \text{DTIME}\left(2^{n^c}\right)</math> | :<math>\text{EXP} = \bigcup_{c \in \mathbb{R_+}} \text{DTIME}\left(2^{n^c}\right)</math> | ||
कभी-कभी, घातीय समय का उपयोग उन एल्गोरिदम को संदर्भित करने के लिए किया जाता है जिनमें T(n) = 2 होता है<sup>O(n)</sup>, जहां घातांक अधिकतम n का | कभी-कभी, घातीय समय का उपयोग उन एल्गोरिदम को संदर्भित करने के लिए किया जाता है जिनमें T(n) = 2 होता है<sup>O(n)</sup>, जहां घातांक अधिकतम n का रैखिक फलन है। यह जटिलता वर्ग '[[ई (जटिलता)]]' को जन्म देता है। | ||
:<math>\text{E} = \bigcup_{c \in \mathbb{N}} \text{DTIME}\left(2^{cn}\right)</math> | :<math>\text{E} = \bigcup_{c \in \mathbb{N}} \text{DTIME}\left(2^{cn}\right)</math> | ||
Line 217: | Line 217: | ||
== भाज्य समय == | == भाज्य समय == | ||
एक एल्गोरिथ्म को फैक्टोरियल समय कहा जाता है यदि ''T(n)'' [[भाज्य समारोह]] ''n!'' से ऊपरी सीमा पर होता है। तथ्यात्मक समय घातीय समय (EXP) का | एक एल्गोरिथ्म को फैक्टोरियल समय कहा जाता है यदि ''T(n)'' [[भाज्य समारोह]] ''n!'' से ऊपरी सीमा पर होता है। तथ्यात्मक समय घातीय समय (EXP) का उपसमुच्चय है क्योंकि <math> n! = O \left(2^{n^{1 + \epsilon}} \right)</math> सभी के लिए <math>\epsilon > 0</math>. हालाँकि, यह E का उपसमुच्चय नहीं है। | ||
फैक्टोरियल समय में चलने वाले एल्गोरिदम का | फैक्टोरियल समय में चलने वाले एल्गोरिदम का उदाहरण [[बोगोसॉर्ट]] है, जो परीक्षण और त्रुटि पर आधारित कुख्यात सॉर्टिंग एल्गोरिदम है। बोगोसॉर्ट सूची में बार-बार फेरबदल करके n आइटमों की सूची को क्रमबद्ध करता है जब तक कि यह क्रमबद्ध न हो जाए। औसत मामले में, बोगोसॉर्ट एल्गोरिदम से गुजरने वाला प्रत्येक एन में से की जांच करेगा! n वस्तुओं का क्रम। यदि आइटम अलग-अलग हैं, तो केवल ही ऑर्डर को क्रमबद्ध किया जाता है। बोगोसॉर्ट [[अनंत बंदर प्रमेय]] के साथ विरासत साझा करता है। | ||
== दोगुना घातीय समय == | == दोगुना घातीय समय == | ||
यदि T(n) 2 से ऊपरी सीमा पर है तो | यदि T(n) 2 से ऊपरी सीमा पर है तो एल्गोरिदम को [[दोहरा घातीय कार्य]] टाइम कहा जाता है<sup>2<sup>पॉली(n)</sup></sup>, जहां पॉली(n) n में कुछ बहुपद है। ऐसे एल्गोरिदम जटिलता वर्ग [[2-EXPTIME]] से संबंधित हैं। | ||
:<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> | ||
प्रसिद्ध दोहरे घातीय समय एल्गोरिदम में शामिल हैं: | प्रसिद्ध दोहरे घातीय समय एल्गोरिदम में शामिल हैं: | ||
Line 236: | Line 236: | ||
== संदर्भ == | == संदर्भ == | ||
{{Reflist|colwidth=33em}} | {{Reflist|colwidth=33em}} | ||
[[Category: एल्गोरिदम का विश्लेषण]] [[Category: कम्प्यूटेशनल जटिलता सिद्धांत]] [[Category: कम्प्यूटेशनल संसाधन]] [[Category: समय]] | [[Category: एल्गोरिदम का विश्लेषण]] [[Category: कम्प्यूटेशनल जटिलता सिद्धांत]] [[Category: कम्प्यूटेशनल संसाधन]] [[Category: समय]] | ||
Revision as of 11:01, 4 July 2023
कंप्यूटर विज्ञान में, समय जटिलता कम्प्यूटेशनल जटिलता है जो कलन विधि को चलाने में लगने वाले कंप्यूटर समय की मात्रा का वर्णन करती है। समय की जटिलता का अनुमान आमतौर पर एल्गोरिदम द्वारा किए गए प्राथमिक संचालन की संख्या की गणना करके लगाया जाता है, यह मानते हुए कि प्रत्येक प्रारंभिक ऑपरेशन को निष्पादित करने में निश्चित समय लगता है। इस प्रकार, एल्गोरिदम द्वारा किए गए समय की मात्रा और किए गए प्राथमिक संचालन की संख्या को स्थिर कारक से संबंधित माना जाता है।
चूंकि एल्गोरिदम का चलने का समय ही आकार के विभिन्न इनपुट के बीच भिन्न हो सकता है, इसलिए आमतौर पर सबसे खराब स्थिति जटिलता | सबसे खराब स्थिति समय जटिलता पर विचार किया जाता है, जो किसी दिए गए आकार के इनपुट के लिए आवश्यक अधिकतम समय है। कम सामान्य, और आमतौर पर स्पष्ट रूप से निर्दिष्ट, औसत-केस जटिलता है, जो किसी दिए गए आकार के इनपुट पर लिए गए समय का औसत है (यह समझ में आता है क्योंकि किसी दिए गए आकार के संभावित इनपुट की केवल सीमित संख्या होती है)। दोनों ही मामलों में, समय जटिलता आम तौर पर इनपुट के आकार के फ़ंक्शन (गणित) के रूप में व्यक्त की जाती है।[1]: 226 चूंकि इस फ़ंक्शन की सटीक गणना करना आमतौर पर मुश्किल होता है, और छोटे इनपुट के लिए चलने का समय आमतौर पर परिणामी नहीं होता है, आमतौर पर इनपुट आकार बढ़ने पर जटिलता के व्यवहार पर ध्यान केंद्रित किया जाता है - यानी, जटिलता का स्पर्शोन्मुख विश्लेषण। इसलिए, समय जटिलता आमतौर पर बड़ा ओ अंकन का उपयोग करके व्यक्त की जाती है , , , , आदि, कहाँ n इनपुट का प्रतिनिधित्व करने के लिए आवश्यक अंश ्स की इकाइयों में आकार है।
एल्गोरिथम जटिलताओं को बड़े ओ नोटेशन में दिखाई देने वाले फ़ंक्शन के प्रकार के अनुसार वर्गीकृत किया गया है। उदाहरण के लिए, समय जटिलता वाला एल्गोरिदम रैखिक समय एल्गोरिथ्म और समय जटिलता वाला एल्गोरिदम है कुछ स्थिरांक के लिए बहुपद समय एल्गोरिथ्म है।
सामान्य समय जटिलताओं की तालिका
निम्नलिखित तालिका आम तौर पर सामना की जाने वाली समय जटिलताओं के कुछ वर्गों का सारांश प्रस्तुत करती है। मेज पर, poly(x) = xO(1), यानी, x में बहुपद।
Name | Complexity class | Running time (T(n)) | Examples of running times | Example algorithms |
---|---|---|---|---|
constant time | 10 | Finding the median value in a sorted array of numbers.
Calculating (−1)n | ||
inverse Ackermann time | Amortized time per operation using a disjoint set | |||
iterated logarithmic time | Distributed coloring of cycles | |||
log-logarithmic | Amortized time per operation using a bounded priority queue[2] | |||
logarithmic time | DLOGTIME | , | Binary search | |
polylogarithmic time | ||||
fractional power | where | , | Searching in a kd-tree | |
linear time | n, | Finding the smallest or largest item in an unsorted array. | ||
"n log-star n" time | Seidel's polygon triangulation algorithm. | |||
linearithmic time | , | Fastest possible comparison sort | ||
quasilinear time | Multipoint polynomial evaluation | |||
quadratic time | Bubble sort, Insertion sort, Direct convolution | |||
cubic time | Naive multiplication of two matrices
Calculating partial correlation. | |||
polynomial time | P | , | Karmarkar's algorithm for linear programming | |
quasi-polynomial time | QP | , | Best-known O(log2n)-approximation algorithm for the directed Steiner tree problem, best known parity game solver,[5] best known graph isomorphism algorithm | |
sub-exponential time (first definition) |
SUBEXP | for all | Contains BPP unless EXPTIME (see below) equals MA.[6] | |
sub-exponential time (second definition) |
Best classical algorithm for integer factorization
formerly-best algorithm for graph isomorphism | |||
exponential time (with linear exponent) |
E | , | Solving the traveling salesman problem using dynamic programming | |
exponential time | EXPTIME | , | Solving matrix chain multiplication via brute-force search | |
factorial time | Solving the traveling salesman problem via brute-force search | |||
double exponential time | 2-EXPTIME | Deciding the truth of a given statement in Presburger arithmetic |
लगातार समय
एक एल्गोरिदम को स्थिर समय कहा जाता है (इसे इस रूप में भी लिखा जाता है)। समय) यदि का मान (एल्गोरिदम की जटिलता) मान से बंधी है जो इनपुट के आकार पर निर्भर नहीं करती है। उदाहरण के लिए, किसी सरणी डेटा संरचना में किसी तत्व तक पहुँचने में निरंतर समय लगता है क्योंकि इसे खोजने के लिए केवल निर्देश (कंप्यूटर विज्ञान) का पालन करना पड़ता है। इसी प्रकार, आरोही क्रम में क्रमबद्ध सरणी में न्यूनतम मान ज्ञात करना; यह पहला तत्व है. हालाँकि, अव्यवस्थित सरणी में न्यूनतम मान ढूँढना निरंतर समय का ऑपरेशन नहीं है क्योंकि न्यूनतम मान निर्धारित करने के लिए सरणी में प्रत्येक तत्व (गणित) पर स्कैनिंग की आवश्यकता होती है। इसलिए यह रैखिक समय संक्रिया है समय। हालाँकि, यदि तत्वों की संख्या पहले से ज्ञात है और बदलती नहीं है, तो ऐसे एल्गोरिदम को अभी भी निरंतर समय में चलने के लिए कहा जा सकता है।
स्थिर समय नाम के बावजूद, चलने का समय समस्या के आकार से स्वतंत्र नहीं होना चाहिए, लेकिन चलने के समय की ऊपरी सीमा समस्या के आकार से स्वतंत्र होनी चाहिए। उदाहरण के लिए, कार्य के मूल्यों का आदान-प्रदान होता है a और bयदि आवश्यक हो तो कि इसे स्थिर समय कहा जाता है, भले ही समय इस पर निर्भर हो सकता है कि यह पहले से ही सत्य है या नहीं . हालाँकि, कुछ स्थिरांक है t ऐसा कि आवश्यक समय हमेशा अधिकतम होता है t.
लघुगणकीय समय
कहा जाता है कि एल्गोरिदम लघुगणकीय समय लेता है . तब से और लॉगरिदमिक पहचानों से संबंधित हैं#आधार बदलना, और ऐसे बिग ओ नोटेशन#बड़े ओ वर्गीकरण के लिए स्थिरांक द्वारा गुणा, लॉगरिदमिक-समय एल्गोरिदम के लिए मानक उपयोग है की अभिव्यक्ति में प्रदर्शित होने वाले लघुगणक के आधार की परवाह किए बिना T.
लॉगरिदमिक समय लेने वाले एल्गोरिदम आमतौर पर बाइनरी पेड़ों पर संचालन में या बाइनरी खोज का उपयोग करते समय पाए जाते हैं।
एक एल्गोरिदम को अत्यधिक कुशल माना जाता है, क्योंकि ऑपरेशन की संख्या और इनपुट के आकार का अनुपात घट जाता है और शून्य हो जाता है n बढ़ती है। एल्गोरिदम जिसे अपने इनपुट के सभी तत्वों तक पहुंच चाहिए, वह लॉगरिदमिक समय नहीं ले सकता है, क्योंकि आकार के इनपुट को पढ़ने में लगने वाला समय n के क्रम का है n.
शब्दकोश खोज द्वारा लघुगणकीय समय का उदाहरण दिया गया है। शब्दकोश पर विचार करें (डेटा संरचना) D जिसमें है n प्रविष्टियाँ, वर्णानुक्रम के अनुसार क्रमबद्ध। हम ऐसा मानते हैं, के लिए , कोई भी पहुंच सकता है kनिरंतर समय में शब्दकोश कीवीं प्रविष्टि। होने देना इसे निरूपित करें kफिर कोशिश करो। इन परिकल्पनाओं के तहत, यह देखने के लिए परीक्षण करें कि क्या कोई शब्द w शब्दकोश में लघुगणकीय समय में किया जा सकता है: विचार करें , कहाँ फर्श समारोह को दर्शाता है। अगर , तो हमारा काम हो गया। अन्यथा, यदि , शब्दकोश के बाएँ आधे भाग में इसी प्रकार खोज जारी रखें, अन्यथा शब्दकोश के दाएँ आधे भाग के साथ भी इसी प्रकार जारी रखें। यह एल्गोरिदम उस विधि के समान है जिसका उपयोग अक्सर पेपर डिक्शनरी में प्रविष्टि खोजने के लिए किया जाता है।
बहुगणितीय समय
कहा जाता है कि एल्गोरिदम बहुगणितीय फलन समय में चलता है यदि उसका समय है है कुछ स्थिरांक के लिए k. इसे लिखने का दूसरा तरीका है .
उदाहरण के लिए, मैट्रिक्स श्रृंखला गुणन को समानांतर रैंडम-एक्सेस मशीन पर पॉलीलॉगरिदमिक समय में हल किया जा सकता है,[7] और ग्राफ़ (असतत गणित) गतिशील कनेक्टिविटी तरीके से प्लानरिटी परीक्षण हो सकता है प्रति डालने/हटाने की कार्रवाई में लगने वाला समय।[8]
उप-रैखिक समय
कहा जाता है कि एल्गोरिदम सब-लीनियर टाइम (अक्सर सब-लीनियर टाइम लिखा जाता है) में चलता है . विशेष रूप से इसमें ऊपर परिभाषित समय जटिलताओं वाले एल्गोरिदम शामिल हैं।
विशिष्ट एल्गोरिदम जो सटीक होते हैं और फिर भी उप-रेखीय समय में चलते हैं, समानांतर एल्गोरिदम का उपयोग करते हैं (एनसी (जटिलता) के रूप में)1मैट्रिक्स निर्धारक गणना करता है), या वैकल्पिक रूप से इनपुट संरचना पर गारंटीकृत धारणाएं रखता है (जैसा कि लॉगरिदमिक समय बाइनरी खोज एल्गोरिदम और कई पेड़ रखरखाव एल्गोरिदम करते हैं)। हालाँकि, औपचारिक भाषाएँ जैसे कि सभी स्ट्रिंग्स का सेट जिसमें पहले द्वारा इंगित स्थिति में 1-बिट होता है स्ट्रिंग के बिट्स इनपुट के प्रत्येक बिट पर निर्भर हो सकते हैं और फिर भी उप-रेखीय समय में गणना योग्य हो सकते हैं।
विशिष्ट शब्द सबलाइनियर टाइम एल्गोरिदम आमतौर पर उन एल्गोरिदम के लिए आरक्षित होता है जो उपरोक्त के विपरीत होते हैं क्योंकि वे शास्त्रीय सीरियल मशीन मॉडल पर चलते हैं और इनपुट पर पूर्व धारणाओं की अनुमति नहीं होती है।[9] हालाँकि, उन्हें यादृच्छिक एल्गोरिदम होने की अनुमति है, और वास्तव में सबसे तुच्छ कार्यों को छोड़कर सभी के लिए यादृच्छिक किया जाना चाहिए।
चूँकि ऐसे एल्गोरिदम को पूरे इनपुट को पढ़े बिना उत्तर देना होगा, इसका विवरण काफी हद तक इनपुट तक पहुंच की अनुमति पर निर्भर करता है। आमतौर पर इनपुट के लिए जिसे बाइनरी स्ट्रिंग के रूप में दर्शाया जाता है यह माना जाता है कि एल्गोरिदम समय में हो सकता है अनुरोध करें और इसका मूल्य प्राप्त करें किसी के लिए i.
उप-रेखीय समय एल्गोरिदम आमतौर पर यादृच्छिक होते हैं, और केवल सन्निकटन एल्गोरिदम समाधान प्रदान करते हैं। वास्तव में, बाइनरी स्ट्रिंग की संपत्ति जिसमें केवल शून्य होते हैं (और कोई नहीं) आसानी से (गैर-अनुमानित) उप-रेखीय समय एल्गोरिदम द्वारा निर्णय योग्य नहीं साबित किया जा सकता है। संपत्ति परीक्षण की जांच में उप-रेखीय समय एल्गोरिदम स्वाभाविक रूप से उत्पन्न होते हैं।
रेखीय समय
कहा जाता है कि एल्गोरिदम रैखिक समय लेता है, या समय, यदि इसकी समय जटिलता है . अनौपचारिक रूप से, इसका मतलब यह है कि इनपुट के आकार के साथ चलने का समय अधिकतम रैखिक रूप से बढ़ता है। अधिक सटीक रूप से, इसका मतलब यह है कि स्थिरांक है c ऐसा कि चलने का समय अधिकतम हो आकार के प्रत्येक इनपुट के लिए n. उदाहरण के लिए, प्रक्रिया जो किसी सूची के सभी तत्वों को जोड़ती है, उसे सूची की लंबाई के अनुपात में समय की आवश्यकता होती है, यदि जोड़ने का समय स्थिर है, या, कम से कम, स्थिरांक से घिरा हुआ है।
रैखिक समय उन स्थितियों में सर्वोत्तम संभव समय जटिलता है जहां एल्गोरिदम को क्रमिक रूप से अपने संपूर्ण इनपुट को पढ़ना होता है। इसलिए, रैखिक समय या, कम से कम, लगभग रैखिक समय प्रदर्शित करने वाले एल्गोरिदम की खोज में बहुत अधिक शोध का निवेश किया गया है। इस शोध में सॉफ्टवेयर और हार्डवेयर दोनों तरीके शामिल हैं। ऐसी कई हार्डवेयर प्रौद्योगिकियाँ हैं जो इसे प्रदान करने के लिए समानांतर कंप्यूटिंग का उपयोग करती हैं। उदाहरण सामग्री-पता योग्य स्मृति है। रैखिक समय की इस अवधारणा का उपयोग बॉयर-मूर स्ट्रिंग-खोज एल्गोरिदम और उक्कोनेन के एल्गोरिदम जैसे स्ट्रिंग मिलान एल्गोरिदम में किया जाता है।
Quasilinear time
कहा जाता है कि एल्गोरिदम क्वासिलिनियर टाइम (जिसे लॉग-लीनियर टाइम भी कहा जाता है) में चलता है कुछ सकारात्मक स्थिरांक के लिए k;[10] रैखिक अंकीय समय मामला है .[11] नरम ओ अंकन का उपयोग करते हुए ये एल्गोरिदम हैं . क्वासिलिनियर टाइम एल्गोरिदम भी हैं प्रत्येक स्थिरांक के लिए और इस प्रकार किसी भी बहुपद समय एल्गोरिदम की तुलना में तेज़ चलता है जिसकी समय सीमा में पद शामिल होता है किसी के लिए .
क्वासिलिनियर समय में चलने वाले एल्गोरिदम में शामिल हैं:
- इन-प्लेस मर्ज सॉर्ट,
- जल्दी से सुलझाएं, , इसके यादृच्छिक संस्करण में, चलने का समय होता है सबसे खराब स्थिति वाले इनपुट की अपेक्षा में। इसके गैर-यादृच्छिक संस्करण में है औसत मामले की जटिलता पर विचार करते समय ही चलने का समय।
- ढेर बनाएं और छांटें, , सबसे खराब स्थिति में मर्ज़ सॉर्ट , परिचय, बाइनरी ट्री सॉर्ट, स्मूथसॉर्ट, धैर्य सॉर्टिंग आदि
- फास्ट फूरियर रूपांतरण,
- स्पंज सरणी गणना,
कई मामलों में, रनिंग टाइम केवल प्रदर्शन का परिणाम है कार्यवाही n बार (नोटेशन के लिए, देखें Big O notation § Family of Bachmann–Landau notations). उदाहरण के लिए, बाइनरी ट्री सॉर्ट प्रत्येक तत्व को सम्मिलित करके बाइनरी ट्री बनाता है n-आकार की सरणी एक-एक करके। चूँकि एक स्व-संतुलन द्विआधारी खोज वृक्ष पर इन्सर्ट ऑपरेशन होता है समय, संपूर्ण एल्गोरिदम लेता है समय।
तुलनात्मक प्रकारों के लिए कम से कम आवश्यकता होती है सबसे खराब स्थिति में तुलना क्योंकि , स्टर्लिंग के अनुमान से। वे बार-बार पुनरावृत्ति संबंध से भी उत्पन्न होते हैं .
उप-द्विघात समय
एक एल्गोरिथ्म को उपवर्गिक समय कहा जाता है यदि .
उदाहरण के लिए, सरल, तुलना-आधारित छँटाई एल्गोरिथ्म द्विघात (उदाहरण के लिए सम्मिलन सॉर्ट) हैं, लेकिन अधिक उन्नत एल्गोरिदम पाए जा सकते हैं जो सबक्वाड्रैटिक (उदाहरण के लिए शैल सॉर्ट ) हैं। कोई भी सामान्य-उद्देश्य प्रकार रैखिक समय में नहीं चलता है, लेकिन द्विघात से उप-द्विघात में परिवर्तन का अत्यधिक व्यावहारिक महत्व है।
बहुपद समय
एक एल्गोरिदम को बहुपद समय का कहा जाता है यदि इसका चलने का समय एल्गोरिदम के लिए इनपुट के आकार में बहुपद अभिव्यक्ति द्वारा ऊपरी सीमा पर होता है, अर्थात, T(n) = O(nk) कुछ सकारात्मक स्थिरांक k के लिए।[1][12] निर्णय समस्या जिसके लिए नियतात्मक बहुपद-समय एल्गोरिथ्म मौजूद है, जटिलता वर्ग पी (जटिलता) से संबंधित है, जो कम्प्यूटेशनल जटिलता सिद्धांत के क्षेत्र में केंद्रीय है। कोबम की थीसिस में कहा गया है कि बहुपद समय सुव्यवस्थित, व्यवहार्य, कुशल या तेज़ का पर्याय है।[13] बहुपद-समय एल्गोरिदम के कुछ उदाहरण:
- n पूर्णांकों पर चयन सॉर्ट सॉर्टिंग एल्गोरिदम निष्पादित करता है कुछ स्थिरांक A के लिए संचालन। इस प्रकार यह समय में चलता है और बहुपद-समय एल्गोरिथ्म है।
- सभी बुनियादी अंकगणितीय संक्रियाएं (जोड़, घटाव, गुणा, भाग और तुलना) बहुपद समय में की जा सकती हैं।
- ग्राफ़ (अलग गणित) में अधिकतम मिलान बहुपद समय में पाया जा सकता है।
प्रबल और दुर्बल बहुपद समय
कुछ संदर्भों में, विशेष रूप से अनुकूलन (गणित) में, व्यक्ति प्रबल बहुपद समय और कमजोर बहुपद समय एल्गोरिदम के बीच अंतर करता है। ये दो अवधारणाएँ केवल तभी प्रासंगिक हैं जब एल्गोरिदम के इनपुट में पूर्णांक शामिल हों।
गणना के अंकगणितीय मॉडल में दृढ़तापूर्वक बहुपद समय को परिभाषित किया गया है। गणना के इस मॉडल में बुनियादी अंकगणितीय परिचालन (जोड़, घटाव, गुणा, भाग और तुलना) को ऑपरेंड के आकार की परवाह किए बिना निष्पादित करने के लिए इकाई समय कदम उठाना पड़ता है। एल्गोरिथ्म दृढ़ता से बहुपद समय में चलता है यदि:[14]
- गणना के अंकगणितीय मॉडल में संचालन की संख्या इनपुट उदाहरण में पूर्णांकों की संख्या में बहुपद से घिरी होती है; और
- एल्गोरिदम द्वारा उपयोग किया गया स्थान इनपुट के आकार में बहुपद से घिरा हुआ है।
इन दो गुणों वाले किसी भी एल्गोरिदम को ट्यूरिंग मशीन पर अंकगणितीय संचालन करने के लिए उपयुक्त एल्गोरिदम द्वारा अंकगणितीय संचालन को प्रतिस्थापित करके बहुपद समय एल्गोरिदम में परिवर्तित किया जा सकता है। दूसरी शर्त अत्यंत आवश्यक है: पूर्णांक दिया गया है (जो ट्यूरिंग मशीन मॉडल में n के समानुपाती स्थान लेता है), इसकी गणना करना संभव है दोहराए गए वर्ग का उपयोग करके n गुणन के साथ। हालाँकि, स्थान प्रतिनिधित्व करता था के लिए आनुपातिक है , और इस प्रकार इनपुट का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले स्थान में बहुपद के बजाय घातांकीय होता है। इसलिए, ट्यूरिंग मशीन पर बहुपद समय में यह गणना करना संभव नहीं है, लेकिन बहुपद रूप से कई अंकगणितीय परिचालनों द्वारा इसकी गणना करना संभव है।
हालाँकि, पहली शर्त के लिए, ऐसे एल्गोरिदम हैं जो बाइनरी-एन्कोडेड इनपुट की लंबाई में बहुपद से बंधे कई ट्यूरिंग मशीन चरणों में चलते हैं, लेकिन इनपुट की संख्या में बहुपद से बंधे कई अंकगणितीय संचालन नहीं लेते हैं नंबर. दो पूर्णांकों के सबसे बड़े सामान्य भाजक की गणना के लिए यूक्लिडियन एल्गोरिथ्म उदाहरण है। दो पूर्णांक दिए गए हैं और , एल्गोरिथम निष्पादित करता है संख्याओं पर अंकगणितीय संक्रियाएँ अधिक से अधिक बिट्स साथ ही, अंकगणितीय संक्रियाओं की संख्या को इनपुट में पूर्णांकों की संख्या से सीमित नहीं किया जा सकता है (जो इस मामले में स्थिर है, इनपुट में हमेशा केवल दो पूर्णांक होते हैं)। बाद के अवलोकन के कारण, एल्गोरिदम दृढ़ता से बहुपद समय में नहीं चलता है। इसका वास्तविक चलने का समय लंबाई पर निर्भर करता है और बिट्स में और न केवल इनपुट में पूर्णांकों की संख्या पर।
एक एल्गोरिथ्म जो बहुपद समय में चलता है लेकिन जो दृढ़ता से बहुपद नहीं है, उसे कमजोर बहुपद समय में चलने वाला कहा जाता है।[15] एक समस्या का प्रसिद्ध उदाहरण जिसके लिए कमजोर बहुपद-समय एल्गोरिथ्म ज्ञात है, लेकिन मजबूत बहुपद-समय एल्गोरिथ्म को स्वीकार करने के लिए नहीं जाना जाता है, रैखिक प्रोग्रामिंग है। कमजोर बहुपद समय को छद्म-बहुपद समय के साथ भ्रमित नहीं किया जाना चाहिए, जो लंबाई के बजाय समस्या में मूल्यों के परिमाण पर निर्भर करता है और वास्तव में बहुपद समय नहीं है।
जटिलता वर्ग
बहुपद समय की अवधारणा कम्प्यूटेशनल जटिलता सिद्धांत में कई जटिलता वर्गों की ओर ले जाती है। बहुपद समय का उपयोग करके परिभाषित कुछ महत्वपूर्ण वर्ग निम्नलिखित हैं।
- पी (जटिलता): निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में नियतात्मक ट्यूरिंग मशीन पर हल किया जा सकता है
- एनपी (जटिलता): निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में गैर-नियतात्मक ट्यूरिंग मशीन पर हल किया जा सकता है
- ZPP (जटिलता): निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर शून्य त्रुटि के साथ हल किया जा सकता है
- आरपी (जटिलता): निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर तरफा त्रुटि के साथ हल किया जा सकता है।
- बीपीपी (जटिलता): निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में संभाव्य ट्यूरिंग मशीन पर दो-तरफा त्रुटि के साथ हल किया जा सकता है
- बीक्यूपी: निर्णय समस्याओं की जटिलता वर्ग जिसे बहुपद समय में क्वांटम ट्यूरिंग मशीन पर दो-तरफा त्रुटि से हल किया जा सकता है
पी नियतात्मक मशीन पर सबसे छोटा समय-जटिलता वर्ग है जो मशीन मॉडल परिवर्तनों के संदर्भ में मजबूती (कंप्यूटर विज्ञान) है। (उदाहरण के लिए, एकल-टेप ट्यूरिंग मशीन से मल्टी-टेप मशीन में परिवर्तन से द्विघात गति हो सकती है, लेकिन कोई भी एल्गोरिदम जो मॉडल के तहत बहुपद समय में चलता है, वह दूसरे मॉडल पर भी ऐसा करता है।) कोई भी दी गई अमूर्त मशीन ऐसा करेगी समस्याओं के अनुरूप जटिलता वर्ग है जिसे उस मशीन पर बहुपद समय में हल किया जा सकता है।
अतिबहुपद समय
यदि T(n) ऊपर किसी बहुपद से घिरा नहीं है तो एल्गोरिदम को सुपरपोलिनोमियल समय लेने के लिए परिभाषित किया गया है। बड़े O अंकन#फ़ैमिली ऑफ़ बाचमैन-लैंडौ अंकन का उपयोग करते हुए, यह ω(n हैc) सभी स्थिरांकों के लिए समय c, जहां n इनपुट पैरामीटर है, आमतौर पर इनपुट में बिट्स की संख्या।
उदाहरण के लिए, एल्गोरिदम जो 2 के लिए चलता हैn आकार n के इनपुट पर चरणों के लिए सुपरपोलिनोमियल समय (अधिक विशेष रूप से, घातीय समय) की आवश्यकता होती है।
एक एल्गोरिथ्म जो घातीय संसाधनों का उपयोग करता है वह स्पष्ट रूप से सुपरपोलिनोमियल है, लेकिन कुछ एल्गोरिदम केवल बहुत ही कमजोर रूप से सुपरपोलिनोमियल हैं। उदाहरण के लिए, एडलमैन-पोमेरेन्स-रुमली प्राइमैलिटी टेस्ट चलता है nO(log log n) एन-बिट इनपुट पर समय; यह काफी बड़े n के लिए किसी भी बहुपद की तुलना में तेजी से बढ़ता है, लेकिन इनपुट आकार को अव्यवहारिक रूप से बड़ा होना चाहिए, इससे पहले कि यह छोटी डिग्री वाले बहुपद पर हावी न हो सके।
एक एल्गोरिथ्म जिसके लिए सुपरपोलिनोमियल समय की आवश्यकता होती है वह जटिलता वर्ग 'पी (जटिलता)' से बाहर होता है। कोबम की थीसिस बताती है कि ये एल्गोरिदम अव्यावहारिक हैं, और कई मामलों में हैं भी। चूंकि पी बनाम एनपी समस्या अनसुलझी है, इसलिए यह अज्ञात है कि एनपी-पूर्ण समस्याओं के लिए सुपरपोलिनोमियल समय की आवश्यकता है या नहीं।
अर्ध-बहुपद समय
अर्ध-बहुपद समय एल्गोरिदम ऐसे एल्गोरिदम हैं जो बहुपद समय से अधिक समय तक चलते हैं, फिर भी घातीय समय तक इतने लंबे नहीं होते हैं। अर्ध-बहुपद समय एल्गोरिदम का सबसे खराब स्थिति चलने का समय है कुछ के लिए तय किया गया . के लिए हमें बहुपद समय एल्गोरिथ्म मिलता है हमें सब-लीनियर टाइम एल्गोरिदम मिलता है।
अर्ध-बहुपद समय एल्गोरिदम आमतौर पर एक एनपी कठिन समस्या से दूसरी समस्या में कमी (जटिलता) में उत्पन्न होते हैं। उदाहरण के लिए, कोई एनपी हार्ड समस्या का उदाहरण ले सकता है, जैसे बूलियन संतुष्टि समस्या, और इसे किसी अन्य समस्या बी के उदाहरण में परिवर्तित कर सकता है, लेकिन उदाहरण का आकार बन जाता है . उस स्थिति में, यह कमी यह साबित नहीं करती है कि समस्या बी एनपी-हार्ड है; यह कमी केवल यह दर्शाती है कि B के लिए कोई बहुपद समय एल्गोरिथ्म नहीं है जब तक कि 3SAT (और इस प्रकार सभी NP (जटिलता)) के लिए अर्ध-बहुपद समय एल्गोरिथ्म नहीं है। इसी तरह, कुछ समस्याएं हैं जिनके लिए हम अर्ध-बहुपद समय एल्गोरिदम जानते हैं, लेकिन कोई बहुपद समय एल्गोरिदम ज्ञात नहीं है। ऐसी समस्याएँ सन्निकटन एल्गोरिदम में उत्पन्न होती हैं; प्रसिद्ध उदाहरण निर्देशित स्टीनर वृक्ष समस्या है, जिसके लिए अर्ध-बहुपद समय सन्निकटन एल्गोरिथ्म है जो सन्निकटन कारक प्राप्त करता है (n शीर्षों की संख्या है), लेकिन ऐसे बहुपद समय एल्गोरिथ्म का अस्तित्व दिखाना खुली समस्या है।
अर्ध-बहुपद समय समाधानों के साथ अन्य कम्प्यूटेशनल समस्याओं, लेकिन कोई ज्ञात बहुपद समय समाधान में लगाया हुआ गुट समस्या शामिल नहीं है, जिसमें लक्ष्य क्लिक और यादृच्छिक ग्राफ के मिलन में क्लिक समस्या को हल करना है। यद्यपि अर्ध-बहुपद रूप से हल करने योग्य, यह अनुमान लगाया गया है कि प्लांटेड क्लिक समस्या का कोई बहुपद समय समाधान नहीं है; इस लगाए गए क्लिक अनुमान का उपयोग कम्प्यूटेशनल गेम सिद्धांत, संपत्ति परीक्षण और यंत्र अधिगम में कई अन्य समस्याओं की कठिनाई को साबित करने के लिए कम्प्यूटेशनल कठोरता धारणा के रूप में किया गया है।[16] जटिलता वर्ग QP में अर्ध-बहुपद समय एल्गोरिदम वाली सभी समस्याएं शामिल हैं। इसे DTIME के संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।[17]
एनपी-पूर्ण समस्याओं से संबंध
जटिलता सिद्धांत में, अनसुलझी पी बनाम एनपी समस्या पूछती है कि क्या एनपी में सभी समस्याओं में बहुपद-समय एल्गोरिदम हैं। एनपी-पूर्ण समस्याओं जैसे 3SAT आदि के लिए सभी सबसे प्रसिद्ध एल्गोरिदम तेजी से समय लेते हैं। दरअसल, कई प्राकृतिक एनपी-पूर्ण समस्याओं के लिए यह अनुमान लगाया गया है कि उनके पास उप-घातांकीय समय एल्गोरिदम नहीं है। यहां उप-घातांकीय समय का अर्थ नीचे प्रस्तुत दूसरी परिभाषा से लिया गया है। (दूसरी ओर, आसन्न मैट्रिक्स द्वारा प्राकृतिक तरीके से दर्शाई गई कई ग्राफ़ समस्याएं उप-घातांकीय समय में हल करने योग्य हैं, क्योंकि इनपुट का आकार शीर्षों की संख्या का वर्ग है।) यह अनुमान (k-SAT समस्या के लिए) है घातीय समय परिकल्पना के रूप में जाना जाता है।[18] चूँकि यह अनुमान लगाया गया है कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं, सन्निकटन एल्गोरिदम के क्षेत्र में कुछ अनुपयुक्तता परिणाम यह धारणा बनाते हैं कि एनपी-पूर्ण समस्याओं में अर्ध-बहुपद समय एल्गोरिदम नहीं होते हैं। उदाहरण के लिए, कवर सेट करें समस्या के लिए ज्ञात अप्राप्यता परिणाम देखें।
उप-घातांकीय समय
इन्फ्रा-एक्सपोनेंशियल | सब-एक्सपोनेंशियल टाइम शब्द का उपयोग यह व्यक्त करने के लिए किया जाता है कि कुछ एल्गोरिदम का चलने का समय किसी भी बहुपद की तुलना में तेजी से बढ़ सकता है लेकिन अभी भी एक्सपोनेंशियल से काफी छोटा है। इस अर्थ में, जिन समस्याओं में उप-घातीय समय एल्गोरिदम होते हैं, वे उन समस्याओं की तुलना में कुछ हद तक अधिक सुव्यवस्थित होती हैं जिनमें केवल घातीय एल्गोरिदम होते हैं। उप-घातांक की सटीक परिभाषा पर आम तौर पर सहमति नहीं है,[19] और हम नीचे दो सबसे व्यापक रूप से उपयोग किए जाने वाले को सूचीबद्ध करते हैं।
पहली परिभाषा
एक समस्या को उप-घातीय समय में हल करने योग्य कहा जाता है यदि इसे चालू समय में हल किया जा सकता है जिसका लघुगणक किसी दिए गए बहुपद से छोटा हो जाता है। अधिक सटीक रूप से, समस्या प्रत्येक के लिए उप-घातीय समय में है ε > 0 एल्गोरिदम मौजूद है जो समस्या को समय O(2) में हल करता हैnε). ऐसी सभी समस्याओं का समूह जटिलता वर्ग 'SUBEXP' है जिसे DTIME के संदर्भ में निम्नानुसार परिभाषित किया जा सकता है।[6][20][21][22]
उप-घातांक की यह धारणा ε के संदर्भ में इस अर्थ में गैर-समान है कि ε इनपुट का हिस्सा नहीं है और प्रत्येक ε के पास समस्या के लिए अपना स्वयं का एल्गोरिदम हो सकता है।
दूसरी परिभाषा
कुछ लेखक उप-घातीय समय को चलने वाले समय के रूप में परिभाषित करते हैं .[18][23][24] यह परिभाषा उप-घातीय समय की पहली परिभाषा की तुलना में बड़े चलने वाले समय की अनुमति देती है। ऐसे उप-घातीय समय एल्गोरिदम का उदाहरण पूर्णांक गुणनखंडन के लिए सबसे प्रसिद्ध शास्त्रीय एल्गोरिदम है, सामान्य संख्या फ़ील्ड चलनी, जो समय के बारे में चलता है , जहां इनपुट की लंबाई है n. अन्य उदाहरण ग्राफ समरूपता समस्या थी, जिसे 1982 से 2016 तक के सबसे प्रसिद्ध एल्गोरिदम में हल किया गया था . हालाँकि, कंप्यूटिंग के सिद्धांत पर संगोष्ठी 2016 में अर्ध-बहुपद समय एल्गोरिथ्म प्रस्तुत किया गया था।[25] इससे फर्क पड़ता है कि क्या एल्गोरिदम को उदाहरण के आकार, शीर्षों की संख्या या किनारों की संख्या में उप-घातीय होने की अनुमति है। पैरामीटरयुक्त जटिलता में, जोड़ियों पर विचार करके इस अंतर को स्पष्ट किया जाता है निर्णय समस्याओं और मापदंडों का k. 'SUBEPT' सभी पैरामीटरयुक्त समस्याओं का वर्ग है जो k में समय उप-घातीय और इनपुट आकार n में बहुपद में चलता है:[26]
अधिक सटीक रूप से, SUBEPT सभी पैरामीटरयुक्त समस्याओं का वर्ग है जिसके लिए गणना योग्य फ़ंक्शन है साथ और एल्गोरिदम जो समय में एल तय करता है .
घातीय समय परिकल्पना
घातीय समय परिकल्पना (ईटीएच) यह है कि 3SAT, प्रति खंड अधिकतम तीन अक्षर और एन चर के साथ संयोजक सामान्य रूप में बूलियन सूत्रों की संतुष्टि की समस्या को समय 2 में हल नहीं किया जा सकता है।ओ(एन). अधिक सटीक रूप से, परिकल्पना यह है कि कुछ पूर्ण स्थिरांक है c > 0 ऐसा कि 3SAT का निर्णय समय 2 में नहीं किया जा सकताकिसी नियतात्मक ट्यूरिंग मशीन द्वारा cn। एम के साथ खंडों की संख्या को दर्शाते हुए, ईटीएच उस परिकल्पना के बराबर है कि केएसएटी को समय 2 में हल नहीं किया जा सकता हैकिसी भी पूर्णांक के लिए o(m) k ≥ 3.[27] घातीय समय परिकल्पना का तात्पर्य P ≠ NP से है।
घातीय समय
एक एल्गोरिदम को घातांकीय समय कहा जाता है, यदि 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-EXPTIME से संबंधित हैं।
प्रसिद्ध दोहरे घातीय समय एल्गोरिदम में शामिल हैं:
- प्रेस्बर्गर अंकगणित के लिए निर्णय प्रक्रियाएं
- ग्रोबनेर आधार की गणना (सबसे खराब स्थिति में[28])
- वास्तविक बंद फ़ील्ड पर क्वांटिफ़ायर उन्मूलन में कम से कम दोगुना घातीय समय लगता है,[29] और इस समय में किया जा सकता है.[30]
यह भी देखें
संदर्भ
- ↑ 1.0 1.1 Sipser, Michael (2006). संगणना के सिद्धांत का परिचय. Course Technology Inc. ISBN 0-619-21764-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.
- ↑ 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.
- ↑ 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.
- ↑ 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.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) - ↑ 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.
- ↑ 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.
- ↑ Kumar, Ravi; Rubinfeld, Ronitt (2003). "सबलाइनियर टाइम एल्गोरिदम" (PDF). SIGACT News. 34 (4): 57–67. doi:10.1145/954092.954103. S2CID 65359.
- ↑ 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.
- ↑ Sedgewick, Robert; Wayne, Kevin (2011). एल्गोरिदम (4th ed.). Pearson Education. p. 186.
- ↑ Papadimitriou, Christos H. (1994). अभिकलनात्मक जटिलता. Reading, Mass.: Addison-Wesley. ISBN 0-201-53082-1.
- ↑ Cobham, Alan (1965). "The intrinsic computational difficulty of functions". प्रोक. तर्क, पद्धति और विज्ञान का दर्शन II. North Holland.
- ↑ Grötschel, Martin; László Lovász; Alexander Schrijver (1988). "Complexity, Oracles, and Numerical Computation". ज्यामितीय एल्गोरिदम और संयोजन अनुकूलन. Springer. ISBN 0-387-13624-X.
- ↑ Schrijver, Alexander (2003). "Preliminaries on algorithms and Complexity". Combinatorial Optimization: Polyhedra and Efficiency. Vol. 1. Springer. ISBN 3-540-44389-4.
- ↑ 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.
- ↑ Complexity Zoo: Class QP: Quasipolynomial-Time
- ↑ 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) - ↑ Aaronson, Scott (5 April 2009). "एक बहुत ही घातीय दुविधा नहीं". Shtetl-Optimized. Retrieved 2 December 2009.
- ↑ Complexity Zoo: Class SUBEXP: Deterministic Subexponential-Time
- ↑ 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.
- ↑ 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.
- ↑ Kuperberg, Greg (2005). "डायहेड्रल हिडन सबग्रुप समस्या के लिए एक सबएक्सपोनेंशियल-टाइम क्वांटम एल्गोरिदम". SIAM Journal on Computing. Philadelphia. 35 (1): 188. arXiv:quant-ph/0302112. doi:10.1137/s0097539703436345. ISSN 1095-7111. S2CID 15965140.
- ↑ Oded Regev (2004). "बहुपद स्थान के साथ डायहेड्रल हिडन सबग्रुप समस्या के लिए एक सबएक्सपोनेंशियल टाइम एल्गोरिदम". arXiv:quant-ph/0406151v1.
- ↑ Grohe, Martin; Neuen, Daniel (2021). "ग्राफ़ समरूपता समस्या पर हालिया प्रगति". arXiv:2011.01366.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Flum, Jörg; Grohe, Martin (2006). पैरामीटरयुक्त जटिलता सिद्धांत. Springer. p. 417. ISBN 978-3-540-29952-3.
- ↑ 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.
- ↑ Mayr, Ernst W.; Meyer, Albert R. (1982). "क्रमविनिमेय अर्धसमूहों और बहुपद आदर्शों के लिए शब्द समस्याओं की जटिलता". Advances in Mathematics. 46 (3): 305–329. doi:10.1016/0001-8708(82)90048-2. MR 0683204.
- ↑ 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.
- ↑ 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.