यादृच्छिक एल्गोरिथ्म: Difference between revisions

From Vigyanwiki
No edit summary
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{short description|Algorithm that employs a degree of randomness as part of its logic or procedure}}
{{short description|Algorithm that employs a degree of randomness as part of its logic or procedure}}
{{Probabilistic}}
{{distinguish-redirect|यादृच्छिक एल्गोरिदम|एल्गोरिथम यादृच्छिकता}}






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


किसी को यादृच्छिक निविष्ट का उपयोग करने वाले एल्गोरिदम के बीच अंतर करना होगा ताकि वे हमेशा सही उत्तर के साथ समाप्त हो जाएं, लेकिन जहां अपेक्षित चलने का समय सीमित है (लास वेगास [[ कलन विधि |कलन विधि]], उदाहरण के लिए [[जल्दी से सुलझाएं|क्विक सॉर्ट]]<ref>{{Cite journal|last=Hoare|first=C. A. R.|date=July 1961|title=Algorithm 64: Quicksort|journal=Commun. ACM|volume=4|issue=7|pages=321–|doi=10.1145/366622.366644|issn=0001-0782}}</ref>), और एल्गोरिदम जिनके पास गलत परिणाम उत्पन्न करने का मौका है ([[मोंटे कार्लो एल्गोरिथ्म]], उदाहरण के लिए न्यूनतम फीडबैक आर्क सेट समस्या के लिए मोंटे कार्लो एल्गोरिदम<ref>{{Cite journal|last=Kudelić|first=Robert|date=2016-04-01|title=न्यूनतम प्रतिक्रिया चाप सेट समस्या के लिए मोंटे-कार्लो यादृच्छिक एल्गोरिथ्म|journal=Applied Soft Computing|volume=41|pages=235–246|doi=10.1016/j.asoc.2015.12.018}}</ref>) या तो विफलता का संकेत देकर या समाप्त करने में विफल होने पर परिणाम उत्पन्न करने में विफल हैं। कुछ मामलों में, समस्या को हल करने का एकमात्र व्यावहारिक साधन संभाव्य एल्गोरिदम हैं।<ref>"In [[primality test|testing primality]] of very large numbers chosen at random, the chance of stumbling upon a value that fools the [[Fermat primality test|Fermat test]] is less than the chance that [[cosmic radiation]] will cause the computer to make an error in carrying out a 'correct' algorithm. Considering an algorithm to be inadequate for the first reason but not for the second illustrates the difference between mathematics and engineering." [[Hal Abelson]] and [[Gerald J. Sussman]] (1996). ''[[Structure and Interpretation of Computer Programs]]''. [[MIT Press]], [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#footnote_Temp_80 section 1.2].</ref>
किसी को यादृच्छिक इनपुट का उपयोग करने वाले एल्गोरिदम के बीच अंतर करना होगा जिससे कि वे हमेशा सही उत्तर के साथ समाप्त हो जाएं, लेकिन जहां अपेक्षित चलने का समय सीमित है (लास वेगास [[ कलन विधि |कलन विधि]], उदाहरण के लिए [[जल्दी से सुलझाएं|क्विक सॉर्ट]]<ref>{{Cite journal|last=Hoare|first=C. A. R.|date=July 1961|title=Algorithm 64: Quicksort|journal=Commun. ACM|volume=4|issue=7|pages=321–|doi=10.1145/366622.366644|issn=0001-0782}}</ref>), और एल्गोरिदम जिनके पास गलत परिणाम उत्पन्न करने का मौका है ([[मोंटे कार्लो एल्गोरिथ्म]], उदाहरण के लिए न्यूनतम फीडबैक आर्क सेट समस्या के लिए मोंटे कार्लो एल्गोरिदम<ref>{{Cite journal|last=Kudelić|first=Robert|date=2016-04-01|title=न्यूनतम प्रतिक्रिया चाप सेट समस्या के लिए मोंटे-कार्लो यादृच्छिक एल्गोरिथ्म|journal=Applied Soft Computing|volume=41|pages=235–246|doi=10.1016/j.asoc.2015.12.018}}</ref>) या तो विफलता का संकेत देकर या समाप्त करने में विफल होने पर परिणाम उत्पन्न करने में विफल हैं। कुछ स्थितियों में, समस्या को हल करने का एकमात्र व्यावहारिक साधन संभाव्य एल्गोरिदम हैं।<ref>"In [[primality test|testing primality]] of very large numbers chosen at random, the chance of stumbling upon a value that fools the [[Fermat primality test|Fermat test]] is less than the chance that [[cosmic radiation]] will cause the computer to make an error in carrying out a 'correct' algorithm. Considering an algorithm to be inadequate for the first reason but not for the second illustrates the difference between mathematics and engineering." [[Hal Abelson]] and [[Gerald J. Sussman]] (1996). ''[[Structure and Interpretation of Computer Programs]]''. [[MIT Press]], [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#footnote_Temp_80 section 1.2].</ref>


सामान्य अभ्यास में, यादृच्छिक बिट्स के सच्चे स्रोत के स्थान पर [[छद्म यादृच्छिक संख्या जनरेटर]] का उपयोग करके यादृच्छिक एल्गोरिदम का अनुमान लगाया जाता है; ऐसा कार्यान्वयन अपेक्षित सैद्धांतिक व्यवहार और गणितीय गारंटी से विचलित हो सकता है जो एक आदर्श वास्तविक यादृच्छिक संख्या जनरेटर के अस्तित्व पर निर्भर हो सकता है।
सामान्य अभ्यास में, यादृच्छिक बिट्स के सच्चे स्रोत के स्थान पर [[छद्म यादृच्छिक संख्या जनरेटर]] का उपयोग करके यादृच्छिक एल्गोरिदम का अनुमान लगाया जाता है; ऐसा कार्यान्वयन अपेक्षित सैद्धांतिक व्यवहार और गणितीय गारंटी से विचलित हो सकता है जो एक आदर्श वास्तविक यादृच्छिक संख्या जनरेटर के अस्तित्व पर निर्भर हो सकता है।
Line 15: Line 13:
प्रेरक उदाहरण के रूप में, ''n'' तत्वों की [[सरणी डेटा संरचना]] में '''a''<nowiki/>' निष्कर्ष की समस्या पर विचार करें।
प्रेरक उदाहरण के रूप में, ''n'' तत्वों की [[सरणी डेटा संरचना]] में '''a''<nowiki/>' निष्कर्ष की समस्या पर विचार करें।


'''निविष्ट''': n≥2 तत्वों की सरणी, जिसमें आधे ''a'' हैं और अन्य आधे ''b'' हैं।
'''इनपुट''': n≥2 तत्वों की सरणी, जिसमें आधे ''a'' हैं और अन्य आधे ''b'' हैं।


'''प्रक्षेपण''': सरणी में ''a'' खोजें।
'''आउटपुट''': सरणी में ''a'' खोजें।


हम एल्गोरिथ्म के दो संस्करण देते हैं, एक लास वेगास एल्गोरिथम और एक मोंटे कार्लो एल्गोरिथम।
हम एल्गोरिथ्म के दो संस्करण देते हैं, एक लास वेगास एल्गोरिथम और एक मोंटे कार्लो एल्गोरिथम।
Line 54: Line 52:
यह एल्गोरिदम सफलता की गारंटी नहीं देता है, लेकिन रन टाइम सीमित है। पुनरावृत्तियों की संख्या हमेशा k से कम या उसके बराबर होती है। k को स्थिर रखने के लिए रन टाइम (अपेक्षित और पूर्ण) <math>\Theta(1)</math> है  
यह एल्गोरिदम सफलता की गारंटी नहीं देता है, लेकिन रन टाइम सीमित है। पुनरावृत्तियों की संख्या हमेशा k से कम या उसके बराबर होती है। k को स्थिर रखने के लिए रन टाइम (अपेक्षित और पूर्ण) <math>\Theta(1)</math> है  


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


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


== कम्प्यूटेशनल जटिलता ==
== अभिकलनात्मक जटिलता ==
[[कम्प्यूटेशनल जटिलता सिद्धांत]] मॉडल यादृच्छिक एल्गोरिदम को [[संभाव्य ट्यूरिंग मशीन]] के रूप में लास वेगास एल्गोरिथ्म और मोंटे कार्लो एल्गोरिदम दोनों पर विचार किया जाता है, और कई [[जटिलता वर्ग]] का अध्ययन किया जाता है। सबसे बुनियादी यादृच्छिक जटिलता वर्ग आर[[पी (जटिलता)]] है, जो [[निर्णय समस्या]]ओं का वर्ग है जिसके लिए कुशल (बहुपद काल) यादृच्छिक एल्गोरिदम (या संभाव्य ट्यूरिंग मशीन) है जो पूर्ण निश्चितता के साथ नहीं- उदाहरण को पहचानता है और हाँ-उदाहरण को पहचानता है कम से कम 1/2 की संभावना के साथ है। RP के लिए पूरक वर्ग co-RP है। बहुपद काल औसत केस रनिंग टाइम वाले एल्गोरिदम (संभवतः गैर-समापन) वाले समस्या वर्ग जिनके प्रक्षेपण हमेशा सही होते हैं उन्हें [[ZPP (जटिलता)|ज़ेडपीपी (जटिलता)]] में कहा जाता है।
[[कम्प्यूटेशनल जटिलता सिद्धांत|अभिकलनात्मक जटिलता सिद्धांत]] मॉडल यादृच्छिक एल्गोरिदम को [[संभाव्य ट्यूरिंग मशीन]] के रूप में लास वेगास एल्गोरिथ्म और मोंटे कार्लो एल्गोरिदम दोनों पर विचार किया जाता है, और कई [[जटिलता वर्ग]] का अध्ययन किया जाता है। सबसे बुनियादी यादृच्छिक जटिलता वर्ग आर[[पी (जटिलता)]] है, जो [[निर्णय समस्या]]ओं का वर्ग है जिसके लिए कुशल (बहुपद काल) यादृच्छिक एल्गोरिदम (या संभाव्य ट्यूरिंग मशीन) है जो पूर्ण निश्चितता के साथ नहीं- उदाहरण को पहचानता है और हाँ-उदाहरण को पहचानता है कम से कम 1/2 की संभावना के साथ है। RP के लिए पूरक वर्ग co-RP है। बहुपद काल औसत केस रनिंग टाइम वाले एल्गोरिदम (संभवतः गैर-समापन) वाले समस्या वर्ग जिनके आउटपुट हमेशा सही होते हैं उन्हें [[ZPP (जटिलता)|ज़ेडपीपी (जटिलता)]] में कहा जाता है।


समस्याओं का वह वर्ग जिसके लिए हाँ और नहीं दोनों उदाहरणों को कुछ त्रुटि के साथ पहचानने की अनुमति दी जाती है, [[परिबद्ध-त्रुटि संभाव्य बहुपद]] कहलाती है। यह वर्ग P (जटिलता) के यादृच्छिक समतुल्य के रूप में कार्य करता है, अर्थात बीपीपी कुशल यादृच्छिक एल्गोरिदम के वर्ग का प्रतिनिधित्व करता है।
समस्याओं का वह वर्ग जिसके लिए हाँ और नहीं दोनों उदाहरणों को कुछ त्रुटि के साथ पहचानने की अनुमति दी जाती है, [[परिबद्ध-त्रुटि संभाव्य बहुपद]] कहलाती है। यह वर्ग P (जटिलता) के यादृच्छिक समतुल्य के रूप में कार्य करता है, अर्थात बीपीपी कुशल यादृच्छिक एल्गोरिदम के वर्ग का प्रतिनिधित्व करता है।
Line 66: Line 64:


=== सॉर्टिंग ===
=== सॉर्टिंग ===
क्विक सॉर्ट की खोज 1959 में [[टोनी होरे]] द्वारा की गई थी, और बाद में 1961 में प्रकाशित हुई थी।<ref>{{Cite journal |last=Hoare |first=C. A. R. |date=July 1961 |title=Algorithm 64: Quicksort |url=https://dl.acm.org/doi/10.1145/366622.366644 |journal=Communications of the ACM |language=en |volume=4 |issue=7 |pages=321 |doi=10.1145/366622.366644 |issn=0001-0782}}</ref> उसी वर्ष, होरे ने [[तुरंत चयन|त्वरित चयन एल्गोरिथ्म]] प्रकाशित किया,<ref>{{Cite journal |last=Hoare |first=C. A. R. |date=July 1961 |title=Algorithm 65: find |url=https://dl.acm.org/doi/10.1145/366622.366647 |journal=Communications of the ACM |language=en |volume=4 |issue=7 |pages=321–322 |doi=10.1145/366622.366647 |issn=0001-0782}}</ref> जो रैखिक अपेक्षित समय में किसी सूची का मध्य तत्व पाता है। यह 1973 तक खुला रहा कि क्या नियतात्मक रैखिक-समय एल्गोरिथम मौजूद है।<ref>{{Cite journal |last1=Blum |first1=Manuel |last2=Floyd |first2=Robert W. |last3=Pratt |first3=Vaughan |last4=Rivest |first4=Ronald L. |last5=Tarjan |first5=Robert E. |date=August 1973 |title=चयन के लिए समय सीमा|url=https://linkinghub.elsevier.com/retrieve/pii/S0022000073800339 |journal=Journal of Computer and System Sciences |language=en |volume=7 |issue=4 |pages=448–461 |doi=10.1016/S0022-0000(73)80033-9}}</ref>
क्विक सॉर्ट की खोज 1959 में [[टोनी होरे]] द्वारा की गई थी, और बाद में 1961 में प्रकाशित हुई थी।<ref>{{Cite journal |last=Hoare |first=C. A. R. |date=July 1961 |title=Algorithm 64: Quicksort |url=https://dl.acm.org/doi/10.1145/366622.366644 |journal=Communications of the ACM |language=en |volume=4 |issue=7 |pages=321 |doi=10.1145/366622.366644 |issn=0001-0782}}</ref> उसी वर्ष, होरे ने [[तुरंत चयन|त्वरित चयन एल्गोरिथ्म]] प्रकाशित किया,<ref>{{Cite journal |last=Hoare |first=C. A. R. |date=July 1961 |title=Algorithm 65: find |url=https://dl.acm.org/doi/10.1145/366622.366647 |journal=Communications of the ACM |language=en |volume=4 |issue=7 |pages=321–322 |doi=10.1145/366622.366647 |issn=0001-0782}}</ref> जो रैखिक अपेक्षित समय में किसी सूची का मध्य तत्व पाता है। यह 1973 तक खुला रहा कि क्या नियतात्मक रैखिक-समय एल्गोरिथम सम्मिलित है।<ref>{{Cite journal |last1=Blum |first1=Manuel |last2=Floyd |first2=Robert W. |last3=Pratt |first3=Vaughan |last4=Rivest |first4=Ronald L. |last5=Tarjan |first5=Robert E. |date=August 1973 |title=चयन के लिए समय सीमा|url=https://linkinghub.elsevier.com/retrieve/pii/S0022000073800339 |journal=Journal of Computer and System Sciences |language=en |volume=7 |issue=4 |pages=448–461 |doi=10.1016/S0022-0000(73)80033-9}}</ref>
=== संख्या सिद्धांत ===
=== संख्या सिद्धांत ===
1917 में, [[हेनरी कैबॉर्न पॉकलिंगटन]] ने यादृच्छिक एल्गोरिथम पेश किया, जिसे पॉकलिंगटन के एल्गोरिथ्म के रूप में जाना जाता है, जो कुशलतापूर्वक [[वर्गमूल]] मॉड्यूलो अभाज्य संख्या को निष्कर्ष के लिए है।<ref>{{citation |last1=Williams |first1=H. C. |title=Mathematics of Computation 1943–1993: a half-century of computational mathematics; Papers from the Symposium on Numerical Analysis and the Minisymposium on Computational Number Theory held in Vancouver, British Columbia, August 9–13, 1993 |volume=48 |pages=481–531 |year=1994 |editor-last=Gautschi |editor-first=Walter |series=Proceedings of Symposia in Applied Mathematics |contribution=Factoring integers before computers |publisher=Amer. Math. Soc., Providence, RI |doi=10.1090/psapm/048/1314885 |mr=1314885 |last2=Shallit |first2=J. O. |author1-link=Hugh C. Williams |author2-link=Jeffrey Shallit}}; see p. 504, "Perhaps Pocklington also deserves credit as the inventor of the randomized algorithm".</ref>1970 में, [[एल्विन बर्लेकैंप]] ने परिमित क्षेत्र पर बहुपद की वर्गमूल की कुशलता से गणना करने के लिए यादृच्छिक एल्गोरिथ्म पेश किया है।<ref>{{Cite journal |last=Berlekamp |first=E. R. |date=1971 |title=बड़े परिमित क्षेत्रों पर बहुपदों का गुणनखंडन*|url=http://portal.acm.org/citation.cfm?doid=800204.806290 |journal=Proceedings of the Second ACM Symposium on Symbolic and Algebraic Manipulation - SYMSAC '71 |language=en |location=Los Angeles, California, United States |publisher=ACM Press |pages=223 |doi=10.1145/800204.806290|isbn=9781450377867 |s2cid=6464612 }}</ref> 1977 में, रॉबर्ट एम. सोलोवे और [[वोल्कर स्ट्रास]] ने बहुपद-समय सोलोवे-स्ट्रैसन [[प्रारंभिक परीक्षण]] की खोज की थी (अर्थात, किसी संख्या की प्रारंभिक परीक्षा का निर्धारण)। इसके तुरंत बाद माइकल ओ. राबिन ने प्रदर्शित किया कि 1976 मिलर के प्रारंभिक परीक्षण को बहुपद-समय यादृच्छिक एल्गोरिथम में भी बदला जा सकता है। उस समय, प्रारंभिक परीक्षण के लिए कोई सिद्ध बहुपद-समय नियतात्मक एल्गोरिथम ज्ञात नहीं था।
1917 में, [[हेनरी कैबॉर्न पॉकलिंगटन]] ने यादृच्छिक एल्गोरिथम पेश किया, जिसे पॉकलिंगटन के एल्गोरिथ्म के रूप में जाना जाता है, जो कुशलतापूर्वक [[वर्गमूल]] मॉड्यूलो अभाज्य संख्या को निष्कर्ष के लिए है।<ref>{{citation |last1=Williams |first1=H. C. |title=Mathematics of Computation 1943–1993: a half-century of computational mathematics; Papers from the Symposium on Numerical Analysis and the Minisymposium on Computational Number Theory held in Vancouver, British Columbia, August 9–13, 1993 |volume=48 |pages=481–531 |year=1994 |editor-last=Gautschi |editor-first=Walter |series=Proceedings of Symposia in Applied Mathematics |contribution=Factoring integers before computers |publisher=Amer. Math. Soc., Providence, RI |doi=10.1090/psapm/048/1314885 |mr=1314885 |last2=Shallit |first2=J. O. |author1-link=Hugh C. Williams |author2-link=Jeffrey Shallit}}; see p. 504, "Perhaps Pocklington also deserves credit as the inventor of the randomized algorithm".</ref>1970 में, [[एल्विन बर्लेकैंप]] ने परिमित क्षेत्र पर बहुपद की वर्गमूल की कुशलता से गणना करने के लिए यादृच्छिक एल्गोरिथ्म पेश किया है।<ref>{{Cite journal |last=Berlekamp |first=E. R. |date=1971 |title=बड़े परिमित क्षेत्रों पर बहुपदों का गुणनखंडन*|url=http://portal.acm.org/citation.cfm?doid=800204.806290 |journal=Proceedings of the Second ACM Symposium on Symbolic and Algebraic Manipulation - SYMSAC '71 |language=en |location=Los Angeles, California, United States |publisher=ACM Press |pages=223 |doi=10.1145/800204.806290|isbn=9781450377867 |s2cid=6464612 }}</ref> 1977 में, रॉबर्ट एम. सोलोवे और [[वोल्कर स्ट्रास]] ने बहुपद-समय सोलोवे-स्ट्रैसन [[प्रारंभिक परीक्षण]] की खोज की थी (अर्थात, किसी संख्या की प्रारंभिक परीक्षा का निर्धारण)। इसके तुरंत बाद माइकल ओ. राबिन ने प्रदर्शित किया कि 1976 मिलर के प्रारंभिक परीक्षण को बहुपद-समय यादृच्छिक एल्गोरिथम में भी बदला जा सकता है। उस समय, प्रारंभिक परीक्षण के लिए कोई सिद्ध बहुपद-समय नियतात्मक एल्गोरिथम ज्ञात नहीं था।


=== डेटा संरचनाएं ===
=== डेटा संरचनाएं ===
जल्द से जल्द यादृच्छिक डेटा संरचनाओं में से [[ हैश तालिका |हैश तालिका]] है, जिसे 1953 में [[आईबीएम]] में [[ उनका पीटर लुहान | हंस पीटर लुहान]] द्वारा पेश किया गया था।<ref name=":0">{{Cite book |last=Knuth |first=Donald E. |url=https://dl.acm.org/doi/10.5555/280635 |title=The art of computer programming, volume 3: (2nd ed.) sorting and searching |date=1998 |publisher=Addison Wesley Longman Publishing Co., Inc. |isbn=978-0-201-89685-5 |location=USA |pages=536–549 }}</ref> लुहान की हैश टेबल ने संघट्ट को हल करने के लिए चेनिंग का इस्तेमाल किया और [[ लिंक्ड सूची |लिंक्ड सूची]] के पहले अनुप्रयोगों में से एक था।<ref name=":0" />इसके बाद, 1954 में, [[आईबीएम रिसर्च]] के [[जीन अमदहल]], ऐलेन एम. मैकग्रा, [[नथानिएल रोचेस्टर (कंप्यूटर वैज्ञानिक)]], और [[आर्थर सैमुअल (कंप्यूटर वैज्ञानिक)]] ने [[रैखिक जांच]] शुरू की,<ref name=":0" />हालांकि 1957 में स्वतंत्र रूप से [[एंड्री एर्शोव]] का भी यही विचार था।<ref name=":0" />1962 में, [[डोनाल्ड नुथ]] ने रेखीय जांच का पहला सही विश्लेषण किया,<ref name=":0" />हालाँकि उनके विश्लेषण वाला ज्ञापन बहुत बाद तक प्रकाशित नहीं हुआ था।<ref>[[Donald Knuth|Knuth, Donald]] (1963), ''[https://web.archive.org/web/20160303225949/http://algo.inria.fr/AofA/Research/11-97.html Notes on "Open" Addressing]'', archived from the original on 2016-03-03</ref> पहला प्रकाशित विश्लेषण 1966 में कोनहेम और वीस के कारण हुआ था।<ref>{{Cite journal |last1=Konheim |first1=Alan G. |last2=Weiss |first2=Benjamin |date=November 1966 |title=एक अधिभोग अनुशासन और अनुप्रयोग|url=http://dx.doi.org/10.1137/0114101 |journal=SIAM Journal on Applied Mathematics |volume=14 |issue=6 |pages=1266–1274 |doi=10.1137/0114101 |issn=0036-1399}}</ref>
जल्द से जल्द यादृच्छिक डेटा संरचनाओं में से [[ हैश तालिका |हैश तालिका]] है, जिसे 1953 में [[आईबीएम]] में [[ उनका पीटर लुहान | हंस पीटर लुहान]] द्वारा पेश किया गया था।<ref name=":0">{{Cite book |last=Knuth |first=Donald E. |url=https://dl.acm.org/doi/10.5555/280635 |title=The art of computer programming, volume 3: (2nd ed.) sorting and searching |date=1998 |publisher=Addison Wesley Longman Publishing Co., Inc. |isbn=978-0-201-89685-5 |location=USA |pages=536–549 }}</ref> लुहान की हैश टेबल ने संघट्ट को हल करने के लिए चेनिंग का उपयोग किया और [[ लिंक्ड सूची |लिंक्ड सूची]] के पहले अनुप्रयोगों में से एक था।<ref name=":0" />इसके बाद, 1954 में, [[आईबीएम रिसर्च]] के [[जीन अमदहल]], ऐलेन एम. मैकग्रा, [[नथानिएल रोचेस्टर (कंप्यूटर वैज्ञानिक)]], और [[आर्थर सैमुअल (कंप्यूटर वैज्ञानिक)]] ने [[रैखिक जांच]] प्रारंभ की,<ref name=":0" />चूंकि 1957 में स्वतंत्र रूप से [[एंड्री एर्शोव]] का भी यही विचार था।<ref name=":0" />1962 में, [[डोनाल्ड नुथ]] ने रेखीय जांच का पहला सही विश्लेषण किया,<ref name=":0" />हालाँकि उनके विश्लेषण वाला ज्ञापन बहुत बाद तक प्रकाशित नहीं हुआ था।<ref>[[Donald Knuth|Knuth, Donald]] (1963), ''[https://web.archive.org/web/20160303225949/http://algo.inria.fr/AofA/Research/11-97.html Notes on "Open" Addressing]'', archived from the original on 2016-03-03</ref> पहला प्रकाशित विश्लेषण 1966 में कोनहेम और वीस के कारण हुआ था।<ref>{{Cite journal |last1=Konheim |first1=Alan G. |last2=Weiss |first2=Benjamin |date=November 1966 |title=एक अधिभोग अनुशासन और अनुप्रयोग|url=http://dx.doi.org/10.1137/0114101 |journal=SIAM Journal on Applied Mathematics |volume=14 |issue=6 |pages=1266–1274 |doi=10.1137/0114101 |issn=0036-1399}}</ref>


हैश टेबल पर प्रारंभिक कार्य या तो पूरी तरह यादृच्छिक हैश फ़ंक्शन तक पहुंच मानते हैं या मानते हैं कि कीज़ स्वयं यादृच्छिक थीं।<ref name=":0" />1979 में, कार्टर और वेगमैन ने [[यूनिवर्सल हैशिंग]] की शुरुआत की,<ref>{{Cite journal |last1=Carter |first1=J. Lawrence |last2=Wegman |first2=Mark N. |date=1979-04-01 |title=हैश फ़ंक्शंस की सार्वभौमिक कक्षाएं|url=https://dx.doi.org/10.1016/0022-0000%2879%2990044-8 |journal=Journal of Computer and System Sciences |language=en |volume=18 |issue=2 |pages=143–154 |doi=10.1016/0022-0000(79)90044-8 |issn=0022-0000}}</ref> जो उन्होंने दिखाया कि प्रति ऑपरेशन निरंतर अपेक्षित समय के साथ चेन हैश टेबल को लागू करने के लिए इस्तेमाल किया जा सकता है।
हैश टेबल पर प्रारंभिक कार्य या तो पूरी तरह यादृच्छिक हैश फ़ंक्शन तक पहुंच मानते हैं या मानते हैं कि कीज़ स्वयं यादृच्छिक थीं।<ref name=":0" />1979 में, कार्टर और वेगमैन ने [[यूनिवर्सल हैशिंग]] की शुरुआत की,<ref>{{Cite journal |last1=Carter |first1=J. Lawrence |last2=Wegman |first2=Mark N. |date=1979-04-01 |title=हैश फ़ंक्शंस की सार्वभौमिक कक्षाएं|url=https://dx.doi.org/10.1016/0022-0000%2879%2990044-8 |journal=Journal of Computer and System Sciences |language=en |volume=18 |issue=2 |pages=143–154 |doi=10.1016/0022-0000(79)90044-8 |issn=0022-0000}}</ref> जो उन्होंने दिखाया कि प्रति ऑपरेशन निरंतर अपेक्षित समय के साथ चेन हैश टेबल को लागू करने के लिए उपयोग किया जा सकता है।


यादृच्छिक डेटा संरचनाओं पर प्रारंभिक कार्य भी हैश टेबल से आगे बढ़ता है। 1970 में, बर्टन हावर्ड ब्लूम ने अनुमानित-सदस्यता डेटा संरचना पेश की जिसे [[ब्लूम फिल्टर]] के रूप में जाना जाता है।<ref>{{Cite journal |last=Bloom |first=Burton H. |date=July 1970 |title=Space/time trade-offs in hash coding with allowable errors |url=http://dx.doi.org/10.1145/362686.362692 |journal=Communications of the ACM |volume=13 |issue=7 |pages=422–426 |doi=10.1145/362686.362692 |s2cid=7931252 |issn=0001-0782}}</ref> 1989 में, [[रायमुंड सीडेल]] और सेसिलिया आर. आरागॉन ने यादृच्छिक संतुलित खोज तरु पेश किया जिसे [[ट्रीप]] के रूप में जाना जाता है।<ref>{{Cite journal |last1=Aragon |first1=C.R. |last2=Seidel |first2=R.G. |date=October 1989 |title=यादृच्छिक खोज पेड़|url=https://ieeexplore.ieee.org/document/63531 |journal=30th Annual Symposium on Foundations of Computer Science |pages=540–545 |doi=10.1109/SFCS.1989.63531|isbn=0-8186-1982-1 }}</ref> उसी वर्ष, [[विलियम पुघ (कंप्यूटर वैज्ञानिक)]] ने एक और यादृच्छिक खोज तरु पेश किया जिसे स्किप सूची के रूप में जाना जाता है।<ref>[[William Pugh (computer scientist)|Pugh, William]] (April 1989). ''[http://drum.lib.umd.edu/handle/1903/542 Concurrent Maintenance of Skip Lists]'' (PS, PDF) (Technical report). Dept. of Computer Science, U. Maryland. CS-TR-2222.</ref>
यादृच्छिक डेटा संरचनाओं पर प्रारंभिक कार्य भी हैश टेबल से आगे बढ़ता है। 1970 में, बर्टन हावर्ड ब्लूम ने अनुमानित-सदस्यता डेटा संरचना पेश की जिसे [[ब्लूम फिल्टर]] के रूप में जाना जाता है।<ref>{{Cite journal |last=Bloom |first=Burton H. |date=July 1970 |title=Space/time trade-offs in hash coding with allowable errors |url=http://dx.doi.org/10.1145/362686.362692 |journal=Communications of the ACM |volume=13 |issue=7 |pages=422–426 |doi=10.1145/362686.362692 |s2cid=7931252 |issn=0001-0782}}</ref> 1989 में, [[रायमुंड सीडेल]] और सेसिलिया आर. आरागॉन ने यादृच्छिक संतुलित खोज तरु पेश किया जिसे [[ट्रीप]] के रूप में जाना जाता है।<ref>{{Cite journal |last1=Aragon |first1=C.R. |last2=Seidel |first2=R.G. |date=October 1989 |title=यादृच्छिक खोज पेड़|url=https://ieeexplore.ieee.org/document/63531 |journal=30th Annual Symposium on Foundations of Computer Science |pages=540–545 |doi=10.1109/SFCS.1989.63531|isbn=0-8186-1982-1 }}</ref> उसी वर्ष, [[विलियम पुघ (कंप्यूटर वैज्ञानिक)]] ने एक और यादृच्छिक खोज तरु पेश किया जिसे स्किप सूची के रूप में जाना जाता है।<ref>[[William Pugh (computer scientist)|Pugh, William]] (April 1989). ''[http://drum.lib.umd.edu/handle/1903/542 Concurrent Maintenance of Skip Lists]'' (PS, PDF) (Technical report). Dept. of Computer Science, U. Maryland. CS-TR-2222.</ref>
Line 81: Line 79:


=== क्विकसॉर्ट ===
=== क्विकसॉर्ट ===
क्विकसॉर्ट एक परिचित, आमतौर पर इस्तेमाल किया जाने वाला एल्गोरिदम है जिसमें यादृच्छिकता उपयोगी हो सकती है। इस एल्गोरिथम के कई नियतात्मक संस्करणों के लिए  [[बिग ओ नोटेशन|''O''(''n''<sup>2</sup>)]] की आवश्यकता होती है कुछ अच्छी तरह से परिभाषित निविष्ट वर्ग (जैसे कि पहले से ही क्रमबद्ध सरणी) के लिए ''n'' संख्याओं को सॉर्ट करने का समय, निविष्ट के विशिष्ट वर्ग के साथ जो पिवट चयन के लिए प्रोटोकॉल द्वारा परिभाषित इस व्यवहार को उत्पन्न करता है। हालांकि, अगर एल्गोरिद्म पिवट तत्वों को यादृच्छिक रूप से समान रूप से चुनता है, तो निविष्ट की विशेषताओं की परवाह किए बिना ''O''(''n'' log ''n'') समय में समाप्त होने की संभावना काफी अधिक होती है।
क्विकसॉर्ट एक परिचित, सामान्यतः उपयोग किया जाने वाला एल्गोरिदम है जिसमें यादृच्छिकता उपयोगी हो सकती है। इस एल्गोरिथम के कई नियतात्मक संस्करणों के लिए  [[बिग ओ नोटेशन|''O''(''n''<sup>2</sup>)]] की आवश्यकता होती है कुछ अच्छी तरह से परिभाषित इनपुट वर्ग (जैसे कि पहले से ही क्रमबद्ध सरणी) के लिए ''n'' संख्याओं को सॉर्ट करने का समय, इनपुट के विशिष्ट वर्ग के साथ जो पिवट चयन के लिए प्रोटोकॉल द्वारा परिभाषित इस व्यवहार को उत्पन्न करता है। चूंकि, यदि एल्गोरिद्म पिवट तत्वों को यादृच्छिक रूप से समान रूप से चुनता है, तो इनपुट की विशेषताओं की परवाह किए बिना ''O''(''n'' log ''n'') समय में समाप्त होने की संभावना काफी अधिक होती है।


=== ज्यामिति में [[यादृच्छिक वृद्धिशील निर्माण]] ===
=== ज्यामिति में [[यादृच्छिक वृद्धिशील निर्माण]] ===
[[कम्प्यूटेशनल ज्यामिति]] में, अवमुख हल या डेलाउने त्रिभुज जैसी संरचना बनाने के लिए मानक तकनीक निविष्ट बिंदुओं को यादृच्छिक रूप से क्रमबद्ध करना है और फिर उन्हें मौजूदा संरचना में एक-एक करके सम्मिलित करना है। यादृच्छिककरण यह सुनिश्चित करता है कि सम्मिलन के कारण संरचना में परिवर्तनों की अपेक्षित संख्या कम है, और इसलिए एल्गोरिथम के अपेक्षित चलने का समय ऊपर से बाध्य किया जा सकता है। इस तकनीक को यादृच्छिक वृद्धिशील निर्माण के रूप में जाना जाता है।<ref>Seidel R. [http://www.cs.berkeley.edu/~jrs/meshpapers/Seidel.ps.gz Backwards Analysis of Randomized Geometric Algorithms].</ref>
[[कम्प्यूटेशनल ज्यामिति]] में, अवमुख हल या डेलाउने त्रिभुज जैसी संरचना बनाने के लिए मानक तकनीक इनपुट बिंदुओं को यादृच्छिक रूप से क्रमबद्ध करना है और फिर उन्हें मौजूदा संरचना में एक-एक करके सम्मिलित करना है। यादृच्छिककरण यह सुनिश्चित करता है कि सम्मिलन के कारण संरचना में परिवर्तनों की अपेक्षित संख्या कम है, और इसलिए एल्गोरिथम के अपेक्षित चलने का समय ऊपर से बाध्य किया जा सकता है। इस तकनीक को यादृच्छिक वृद्धिशील निर्माण के रूप में जाना जाता है।<ref>Seidel R. [http://www.cs.berkeley.edu/~jrs/meshpapers/Seidel.ps.gz Backwards Analysis of Randomized Geometric Algorithms].</ref>
===न्यूनतम कट===
===न्यूनतम कट===
{{Main|कार्गर का एल्गोरिदम}}
{{Main|कार्गर का एल्गोरिदम}}


निविष्ट: [[ग्राफ सिद्धांत]] ''G''(''V'',''E'')
इनपुट: [[ग्राफ सिद्धांत]] ''G''(''V'',''E'')


प्रक्षेपण: [[ कट (ग्राफ सिद्धांत) |कट (ग्राफ सिद्धांत)]] ''L'' और ''R'' में कोने को विभाजित करता है, जिसमें ''L'' और ''R'' के बीच किनारों की न्यूनतम संख्या होती है।
आउटपुट: [[ कट (ग्राफ सिद्धांत) |कट (ग्राफ सिद्धांत)]] ''L'' और ''R'' में कोने को विभाजित करता है, जिसमें ''L'' और ''R'' के बीच किनारों की न्यूनतम संख्या होती है।


याद रखें कि एक (बहु-) ग्राफ़ में दो नोड्स, ''u'' और ''v'' के किनारे का संकुचन, किनारों के साथ नया नोड ''u''' देता है, जो ''u'' या ''v'' पर किनारों की घटना का संघ है, किसी भी किनारे को छोड़कर ''u'' और ''v'' को जोड़ता है। चित्र 1 शीर्ष ''A'' और ''B'' के संकुचन का उदाहरण देता है।
याद रखें कि एक (बहु-) ग्राफ़ में दो नोड्स, ''u'' और ''v'' के किनारे का संकुचन, किनारों के साथ नया नोड ''u''' देता है, जो ''u'' या ''v'' पर किनारों की घटना का संघ है, किसी भी किनारे को छोड़कर ''u'' और ''v'' को जोड़ता है। चित्र 1 शीर्ष ''A'' और ''B'' के संकुचन का उदाहरण देता है।
Line 140: Line 138:


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


ऐसे विशिष्ट तरीके हैं जिन्हें विशेष यादृच्छिक एल्गोरिदम को यादृच्छिक बनाने के लिए नियोजित किया जा सकता है:
ऐसे विशिष्ट तरीके हैं जिन्हें विशेष यादृच्छिक एल्गोरिदम को यादृच्छिक बनाने के लिए नियोजित किया जा सकता है:
Line 147: Line 145:
* एल्गोरिथ्म द्वारा उपयोग किए जाने वाले यादृच्छिक चर में सीमित स्वतंत्रता का समुपयोजन, जैसे कि सार्वभौमिक हैशिंग में उपयोग की जाने वाली  [[जोड़ीदार स्वतंत्रता|युग्‍मानूसार स्वतंत्रता]]
* एल्गोरिथ्म द्वारा उपयोग किए जाने वाले यादृच्छिक चर में सीमित स्वतंत्रता का समुपयोजन, जैसे कि सार्वभौमिक हैशिंग में उपयोग की जाने वाली  [[जोड़ीदार स्वतंत्रता|युग्‍मानूसार स्वतंत्रता]]
* प्रारंभिक यादृच्छिकता की सीमित मात्रा को बढ़ाने के लिए [[विस्तारक ग्राफ]] (या सामान्य रूप से [[फैलाने]] वाले) का उपयोग (यह अंतिम दृष्टिकोण यादृच्छिक स्रोत से छद्म यादृच्छिक बिट्स उत्पन्न करने के रूप में भी जाना जाता है, और छद्म यादृच्छिकता के संबंधित विषय की ओर जाता है)
* प्रारंभिक यादृच्छिकता की सीमित मात्रा को बढ़ाने के लिए [[विस्तारक ग्राफ]] (या सामान्य रूप से [[फैलाने]] वाले) का उपयोग (यह अंतिम दृष्टिकोण यादृच्छिक स्रोत से छद्म यादृच्छिक बिट्स उत्पन्न करने के रूप में भी जाना जाता है, और छद्म यादृच्छिकता के संबंधित विषय की ओर जाता है)
* एल्गोरिथम के कार्यों के लिए यादृच्छिकता के स्रोत के रूप में [[हैश फंकशन]] का उपयोग करने के लिए यादृच्छिक एल्गोरिथ्म को बदलना, और फिर हैश फ़ंक्शन के सभी संभावित मापदंडों (बीजों) को [[ क्रूर-बल खोज | मनमानी बल]] द्वारा एल्गोरिथ्म को अलग करना। इस तकनीक का प्रयोग आम तौर पर नमूना स्थान को व्यापक रूप से निष्कर्ष और एल्गोरिदम को नियतात्मक बनाने के लिए किया जाता है (उदाहरण के लिए यादृच्छिक ग्राफ एल्गोरिदम)
* एल्गोरिथम के कार्यों के लिए यादृच्छिकता के स्रोत के रूप में [[हैश फंकशन]] का उपयोग करने के लिए यादृच्छिक एल्गोरिथ्म को बदलना, और फिर हैश फ़ंक्शन के सभी संभावित मापदंडों (बीजों) को [[ क्रूर-बल खोज | मनमानी बल]] द्वारा एल्गोरिथ्म को अलग करना। इस तकनीक का प्रयोग सामान्यतः नमूना स्थान को व्यापक रूप से निष्कर्ष और एल्गोरिदम को नियतात्मक बनाने के लिए किया जाता है (उदाहरण के लिए यादृच्छिक ग्राफ एल्गोरिदम)


== जहां यादृच्छिकता मदद करती है ==
== जहां यादृच्छिकता मदद करती है ==
जब संगणना का मॉडल [[ट्यूरिंग मशीन]] तक ही सीमित है, तो यह वर्तमान में खुला प्रश्न है कि क्या यादृच्छिक विकल्प बनाने की क्षमता बहुपद काल में कुछ समस्याओं को हल करने की अनुमति देती है जिसे इस क्षमता के बिना बहुपद काल में हल नहीं किया जा सकता है; यह सवाल है कि P = BPP। हालाँकि, अन्य संदर्भों में, समस्याओं के विशिष्ट उदाहरण हैं जहाँ यादृच्छिककरण से सख्त सुधार होते हैं।
जब संगणना का मॉडल [[ट्यूरिंग मशीन]] तक ही सीमित है, तो यह वर्तमान में खुला प्रश्न है कि क्या यादृच्छिक विकल्प बनाने की क्षमता बहुपद काल में कुछ समस्याओं को हल करने की अनुमति देती है जिसे इस क्षमता के बिना बहुपद काल में हल नहीं किया जा सकता है; यह सवाल है कि P = BPP। हालाँकि, अन्य संदर्भों में, समस्याओं के विशिष्ट उदाहरण हैं जहाँ यादृच्छिककरण से सख्त सुधार होते हैं।
* प्रारंभिक प्रेरक उदाहरण के आधार पर: 2<sup>''k''</sup> की घातीय रूप से लंबी स्ट्रिंग दी गई है वर्ण, आधा a और आधा b, [[रैंडम-एक्सेस मशीन]] के लिए  2<sup>''k''−1</sup> की आवश्यकता होती है a की अनुक्रमणिका निष्कर्ष के लिए सबसे खराब स्थिति में खोजता है; अगर इसे यादृच्छिक विकल्प बनाने की अनुमति है, तो यह लुकअप की अपेक्षित बहुपद संख्या में इस समस्या को हल कर सकता है।
* प्रारंभिक प्रेरक उदाहरण के आधार पर: 2<sup>''k''</sup> की घातीय रूप से लंबी स्ट्रिंग दी गई है वर्ण, आधा a और आधा b, [[रैंडम-एक्सेस मशीन]] के लिए  2<sup>''k''−1</sup> की आवश्यकता होती है a की अनुक्रमणिका निष्कर्ष के लिए सबसे खराब स्थिति में खोजता है; यदि इसे यादृच्छिक विकल्प बनाने की अनुमति है, तो यह लुकअप की अपेक्षित बहुपद संख्या में इस समस्या को हल कर सकता है।
* [[ अंतः स्थापित प्रणालियाँ ]] या [[साइबर-भौतिक प्रणाली]] में संख्यात्मक गणना करने का प्राकृतिक तरीका परिणाम प्रदान करना है जो उच्च संभावना (या संभवतः लगभग सही गणना (पीएसीसी)) के साथ सही परिणाम का अनुमान लगाता है। अनुमानित और सही संगणना के बीच विसंगति हानि के मूल्यांकन से जुड़ी कठिन समस्या को यादृच्छिककरण का सहारा लेकर प्रभावी ढंग से संबोधित किया जा सकता है<ref>{{citation|title=Intelligence for Embedded Systems|first1=Cesare|last1=Alippi|publisher=Springer|year=2014|isbn=978-3-319-05278-6}}.</ref>
* [[ अंतः स्थापित प्रणालियाँ ]] या [[साइबर-भौतिक प्रणाली]] में संख्यात्मक गणना करने का प्राकृतिक तरीका परिणाम प्रदान करना है जो उच्च संभावना (या संभवतः लगभग सही गणना (पीएसीसी)) के साथ सही परिणाम का अनुमान लगाता है। अनुमानित और सही संगणना के बीच विसंगति हानि के मूल्यांकन से जुड़ी कठिन समस्या को यादृच्छिककरण का सहारा लेकर प्रभावी ढंग से संबोधित किया जा सकता है<ref>{{citation|title=Intelligence for Embedded Systems|first1=Cesare|last1=Alippi|publisher=Springer|year=2014|isbn=978-3-319-05278-6}}.</ref>
* [[संचार जटिलता]] में, <math>\log n</math> यादृच्छिक प्रोटोकॉल के साथ संचार के बिट्स का उपयोग करके दो स्ट्रिंग की समानता कुछ विश्वसनीयता के लिए सत्यापित किया जा सकता है। किसी भी नियतात्मक प्रोटोकॉल की आवश्यकता <math>\Theta(n)</math> बिट्स होती है अगर दृढ़ प्रतिद्वंद्वी के खिलाफ बचाव करते हैं।<ref>{{citation|title=Communication Complexity|first1=Eyal|last1=Kushilevitz|first2=Noam|last2=Nisan|publisher=Cambridge University Press|year=2006|isbn=9780521029834}}. For the deterministic lower bound see p.&nbsp;11; for the logarithmic randomized upper bound see pp.&nbsp;31–32.</ref>
* [[संचार जटिलता]] में, <math>\log n</math> यादृच्छिक प्रोटोकॉल के साथ संचार के बिट्स का उपयोग करके दो स्ट्रिंग की समानता कुछ विश्वसनीयता के लिए सत्यापित किया जा सकता है। किसी भी नियतात्मक प्रोटोकॉल की आवश्यकता <math>\Theta(n)</math> बिट्स होती है यदि दृढ़ प्रतिद्वंद्वी के खिलाफ बचाव करते हैं।<ref>{{citation|title=Communication Complexity|first1=Eyal|last1=Kushilevitz|first2=Noam|last2=Nisan|publisher=Cambridge University Press|year=2006|isbn=9780521029834}}. For the deterministic lower bound see p.&nbsp;11; for the logarithmic randomized upper bound see pp.&nbsp;31–32.</ref>
* बहुपद काल में अक्रमतः परिशुद्धता के लिए अवमुखपिंड की मात्रा का अनुमान यादृच्छिक एल्गोरिदम द्वारा लगाया जा सकता है।<ref>{{citation|last1=Dyer|first1=M.|last2=Frieze|first2=A.|last3=Kannan|first3=R.|title=A random polynomial-time algorithm for approximating the volume of convex bodies|journal=[[Journal of the ACM]]|volume=38|issue=1|year=1991|pages=1–17|doi=10.1145/102782.102783|s2cid=13268711|url=http://www.math.cmu.edu/~af1p/Texfiles/oldvolume.pdf}}</ref> इमरे बैरनी और ज़ोलटन फ़्यूरेडी ने दिखाया कि कोई नियतात्मक एल्गोरिथम ऐसा नहीं कर सकता है।<ref>{{citation|last1=Füredi|first1=Z.|author1-link=Zoltán Füredi|last2=Bárány|first2=I.|year=1986|contribution=Computing the volume is difficult|title=Proc. 18th ACM Symposium on Theory of Computing (Berkeley, California, May 28–30, 1986)|publisher=ACM|location=New York, NY|pages=442–447|doi=10.1145/12130.12176|citeseerx=10.1.1.726.9448|isbn=0-89791-193-8 |s2cid=17867291|url=https://ecommons.cornell.edu/bitstream/1813/8572/1/TR000688.pdf}}</ref> यह बिना शर्त के सच है, यानी किसी भी जटिलता-सैद्धांतिक मान्यताओं पर भरोसा किए बिना, अवमुखपिंड को केवल ब्लैक बॉक्स के रूप में माना जा सकता है।
* बहुपद काल में अक्रमतः परिशुद्धता के लिए अवमुखपिंड की मात्रा का अनुमान यादृच्छिक एल्गोरिदम द्वारा लगाया जा सकता है।<ref>{{citation|last1=Dyer|first1=M.|last2=Frieze|first2=A.|last3=Kannan|first3=R.|title=A random polynomial-time algorithm for approximating the volume of convex bodies|journal=[[Journal of the ACM]]|volume=38|issue=1|year=1991|pages=1–17|doi=10.1145/102782.102783|s2cid=13268711|url=http://www.math.cmu.edu/~af1p/Texfiles/oldvolume.pdf}}</ref> इमरे बैरनी और ज़ोलटन फ़्यूरेडी ने दिखाया कि कोई नियतात्मक एल्गोरिथम ऐसा नहीं कर सकता है।<ref>{{citation|last1=Füredi|first1=Z.|author1-link=Zoltán Füredi|last2=Bárány|first2=I.|year=1986|contribution=Computing the volume is difficult|title=Proc. 18th ACM Symposium on Theory of Computing (Berkeley, California, May 28–30, 1986)|publisher=ACM|location=New York, NY|pages=442–447|doi=10.1145/12130.12176|citeseerx=10.1.1.726.9448|isbn=0-89791-193-8 |s2cid=17867291|url=https://ecommons.cornell.edu/bitstream/1813/8572/1/TR000688.pdf}}</ref> यह बिना शर्त के सच है, अर्थात किसी भी जटिलता-सैद्धांतिक मान्यताओं पर भरोसा किए बिना, अवमुखपिंड को केवल ब्लैक बॉक्स के रूप में माना जा सकता है।
* एक जगह का अधिक जटिलता-सैद्धांतिक उदाहरण जहां यादृच्छिकता मदद करने के लिए प्रकट होती है वह वर्ग IP (जटिलता) है। IP में वे सभी भाषाएँ शामिल हैं जिन्हें (उच्च संभावना के साथ) सर्व-शक्तिशाली प्रोवर और सत्यापनकर्ता के बीच बहुपद रूप से लंबी पारस्परिक प्रभाव द्वारा स्वीकार किया जा सकता है जो बीपीपी एल्गोरिथम को लागू करता है। [[पीएसपीएसीई|IP = PSPACE]]।<ref>{{citation|last=Shamir|first=A.|author-link=Adi Shamir|title=IP = PSPACE|journal=Journal of the ACM|volume=39|issue=4|year=1992|pages=869–877|doi=10.1145/146585.146609|s2cid=315182}}</ref> हालाँकि, यदि यह आवश्यक है कि सत्यापनकर्ता नियतात्मक हो, तो IP = NP (जटिलता)।
* एक जगह का अधिक जटिलता-सैद्धांतिक उदाहरण जहां यादृच्छिकता मदद करने के लिए प्रकट होती है वह वर्ग IP (जटिलता) है। IP में वे सभी भाषाएँ सम्मिलित हैं जिन्हें (उच्च संभावना के साथ) सर्व-शक्तिशाली प्रोवर और सत्यापनकर्ता के बीच बहुपद रूप से लंबी पारस्परिक प्रभाव द्वारा स्वीकार किया जा सकता है जो बीपीपी एल्गोरिथम को लागू करता है। [[पीएसपीएसीई|IP = PSPACE]]।<ref>{{citation|last=Shamir|first=A.|author-link=Adi Shamir|title=IP = PSPACE|journal=Journal of the ACM|volume=39|issue=4|year=1992|pages=869–877|doi=10.1145/146585.146609|s2cid=315182}}</ref> हालाँकि, यदि यह आवश्यक है कि सत्यापनकर्ता नियतात्मक हो, तो IP = NP (जटिलता)।
* [[रासायनिक प्रतिक्रिया नेटवर्क]] में (A+B → 2C + D जैसी प्रतिक्रियाओं का सीमित सेट अणुओं की सीमित संख्या पर काम कर रहा है), प्रारंभिक अवस्था से किसी दिए गए लक्ष्य अवस्था तक कभी भी पहुंचने की क्षमता निर्णायक होती है, जबकि संभाव्यता का अनुमान भी लगाया जाता है किसी दिए गए लक्ष्य अवस्था तक पहुंचने के लिए (मानक एकाग्रता-आधारित संभावना जिसके लिए प्रतिक्रिया आगे होगी) का उपयोग करना अनिर्णीत है। अधिक विशेष रूप से, सीमित ट्यूरिंग मशीन सभी समय के लिए सही ढंग से चलने की अक्रमतः उच्च संभावना के साथ अनुरूप किया जा सकता है, केवल तभी जब यादृच्छिक रासायनिक प्रतिक्रिया नेटवर्क का उपयोग किया जाता है। एक सरल गैर-नियतात्मक रासायनिक प्रतिक्रिया नेटवर्क (आगे कोई भी संभावित प्रतिक्रिया हो सकती है) के साथ, कम्प्यूटेशनल पावर [[आदिम पुनरावर्ती]] तक सीमित है।<ref>{{citation
* [[रासायनिक प्रतिक्रिया नेटवर्क]] में (A+B → 2C + D जैसी प्रतिक्रियाओं का सीमित सेट अणुओं की सीमित संख्या पर काम कर रहा है), प्रारंभिक अवस्था से किसी दिए गए लक्ष्य अवस्था तक कभी भी पहुंचने की क्षमता निर्णायक होती है, जबकि संभाव्यता का अनुमान भी लगाया जाता है किसी दिए गए लक्ष्य अवस्था तक पहुंचने के लिए (मानक एकाग्रता-आधारित संभावना जिसके लिए प्रतिक्रिया आगे होगी) का उपयोग करना अनिर्णीत है। अधिक विशेष रूप से, सीमित ट्यूरिंग मशीन सभी समय के लिए सही ढंग से चलने की अक्रमतः उच्च संभावना के साथ अनुरूप किया जा सकता है, केवल तभी जब यादृच्छिक रासायनिक प्रतिक्रिया नेटवर्क का उपयोग किया जाता है। एक सरल गैर-नियतात्मक रासायनिक प्रतिक्रिया नेटवर्क (आगे कोई भी संभावित प्रतिक्रिया हो सकती है) के साथ, कम्प्यूटेशनल पावर [[आदिम पुनरावर्ती]] तक सीमित है।<ref>{{citation
  | last1 = Cook | first1 = Matthew | author1-link = Matthew Cook
  | last1 = Cook | first1 = Matthew | author1-link = Matthew Cook
Line 204: Line 202:
* [https://www.osti.gov/biblio/1807223 "Randomized Algorithms for Scientific Computing" (RASC), OSTI.GOV (July 10th, 2021).]
* [https://www.osti.gov/biblio/1807223 "Randomized Algorithms for Scientific Computing" (RASC), OSTI.GOV (July 10th, 2021).]


{{DEFAULTSORT:Randomized Algorithm}}[[Category: यादृच्छिक एल्गोरिदम | यादृच्छिक एल्गोरिदम ]] [[Category: एल्गोरिदम का विश्लेषण]]
{{DEFAULTSORT:Randomized Algorithm}}


 
[[Category:Articles with hatnote templates targeting a nonexistent page|Randomized Algorithm]]
 
[[Category:CS1 English-language sources (en)]]
[[Category: Machine Translated Page]]
[[Category:Created On 31/05/2023|Randomized Algorithm]]
[[Category:Created On 31/05/2023]]
[[Category:Lua-based templates|Randomized Algorithm]]
[[Category:Machine Translated Page|Randomized Algorithm]]
[[Category:Pages with script errors|Randomized Algorithm]]
[[Category:Short description with empty Wikidata description|Randomized Algorithm]]
[[Category:Templates Vigyan Ready|Randomized Algorithm]]
[[Category:Templates that add a tracking category|Randomized Algorithm]]
[[Category:Templates that generate short descriptions|Randomized Algorithm]]
[[Category:Templates using TemplateData|Randomized Algorithm]]
[[Category:एल्गोरिदम का विश्लेषण|Randomized Algorithm]]
[[Category:यादृच्छिक एल्गोरिदम| यादृच्छिक एल्गोरिदम ]]

Latest revision as of 14:50, 24 August 2023


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

किसी को यादृच्छिक इनपुट का उपयोग करने वाले एल्गोरिदम के बीच अंतर करना होगा जिससे कि वे हमेशा सही उत्तर के साथ समाप्त हो जाएं, लेकिन जहां अपेक्षित चलने का समय सीमित है (लास वेगास कलन विधि, उदाहरण के लिए क्विक सॉर्ट[1]), और एल्गोरिदम जिनके पास गलत परिणाम उत्पन्न करने का मौका है (मोंटे कार्लो एल्गोरिथ्म, उदाहरण के लिए न्यूनतम फीडबैक आर्क सेट समस्या के लिए मोंटे कार्लो एल्गोरिदम[2]) या तो विफलता का संकेत देकर या समाप्त करने में विफल होने पर परिणाम उत्पन्न करने में विफल हैं। कुछ स्थितियों में, समस्या को हल करने का एकमात्र व्यावहारिक साधन संभाव्य एल्गोरिदम हैं।[3]

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

प्रेरणा

प्रेरक उदाहरण के रूप में, n तत्वों की सरणी डेटा संरचना में 'a' निष्कर्ष की समस्या पर विचार करें।

इनपुट: n≥2 तत्वों की सरणी, जिसमें आधे a हैं और अन्य आधे b हैं।

आउटपुट: सरणी में a खोजें।

हम एल्गोरिथ्म के दो संस्करण देते हैं, एक लास वेगास एल्गोरिथम और एक मोंटे कार्लो एल्गोरिथम।

लास वेगास एल्गोरिथम:

findingA_LV(array A, n)
begin
    repeat
        Randomly select one element out of n elements.
    until 'a' is found
end

यह एल्गोरिथ्म प्रायिकता 1 के साथ सफल होता है। पुनरावृत्तियों की संख्या भिन्न होती है और अक्रमतः बड़ी हो सकती है, लेकिन पुनरावृत्तियों की अपेक्षित संख्या है

चूंकि यह स्थिर है, कई कॉलों पर अपेक्षित रन टाइम है . (बिग थीटा नोटेशन देखें)

मोंटे कार्लो एल्गोरिथम:

findingA_MC(array A, n, k)
begin
    i := 0
    repeat
        Randomly select one element out of n elements.
        i := i + 1
    until i = k or 'a' is found
end

यदि 'a' पाया जाता है, तो एल्गोरिथम सफल होता है, अन्यथा एल्गोरिथम विफल हो जाता है। k पुनरावृत्तियों के बाद, 'a' निष्कर्ष की संभावना है:

यह एल्गोरिदम सफलता की गारंटी नहीं देता है, लेकिन रन टाइम सीमित है। पुनरावृत्तियों की संख्या हमेशा k से कम या उसके बराबर होती है। k को स्थिर रखने के लिए रन टाइम (अपेक्षित और पूर्ण) है

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

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

अभिकलनात्मक जटिलता

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

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

प्रारंभिक इतिहास

सॉर्टिंग

क्विक सॉर्ट की खोज 1959 में टोनी होरे द्वारा की गई थी, और बाद में 1961 में प्रकाशित हुई थी।[4] उसी वर्ष, होरे ने त्वरित चयन एल्गोरिथ्म प्रकाशित किया,[5] जो रैखिक अपेक्षित समय में किसी सूची का मध्य तत्व पाता है। यह 1973 तक खुला रहा कि क्या नियतात्मक रैखिक-समय एल्गोरिथम सम्मिलित है।[6]

संख्या सिद्धांत

1917 में, हेनरी कैबॉर्न पॉकलिंगटन ने यादृच्छिक एल्गोरिथम पेश किया, जिसे पॉकलिंगटन के एल्गोरिथ्म के रूप में जाना जाता है, जो कुशलतापूर्वक वर्गमूल मॉड्यूलो अभाज्य संख्या को निष्कर्ष के लिए है।[7]1970 में, एल्विन बर्लेकैंप ने परिमित क्षेत्र पर बहुपद की वर्गमूल की कुशलता से गणना करने के लिए यादृच्छिक एल्गोरिथ्म पेश किया है।[8] 1977 में, रॉबर्ट एम. सोलोवे और वोल्कर स्ट्रास ने बहुपद-समय सोलोवे-स्ट्रैसन प्रारंभिक परीक्षण की खोज की थी (अर्थात, किसी संख्या की प्रारंभिक परीक्षा का निर्धारण)। इसके तुरंत बाद माइकल ओ. राबिन ने प्रदर्शित किया कि 1976 मिलर के प्रारंभिक परीक्षण को बहुपद-समय यादृच्छिक एल्गोरिथम में भी बदला जा सकता है। उस समय, प्रारंभिक परीक्षण के लिए कोई सिद्ध बहुपद-समय नियतात्मक एल्गोरिथम ज्ञात नहीं था।

डेटा संरचनाएं

जल्द से जल्द यादृच्छिक डेटा संरचनाओं में से हैश तालिका है, जिसे 1953 में आईबीएम में हंस पीटर लुहान द्वारा पेश किया गया था।[9] लुहान की हैश टेबल ने संघट्ट को हल करने के लिए चेनिंग का उपयोग किया और लिंक्ड सूची के पहले अनुप्रयोगों में से एक था।[9]इसके बाद, 1954 में, आईबीएम रिसर्च के जीन अमदहल, ऐलेन एम. मैकग्रा, नथानिएल रोचेस्टर (कंप्यूटर वैज्ञानिक), और आर्थर सैमुअल (कंप्यूटर वैज्ञानिक) ने रैखिक जांच प्रारंभ की,[9]चूंकि 1957 में स्वतंत्र रूप से एंड्री एर्शोव का भी यही विचार था।[9]1962 में, डोनाल्ड नुथ ने रेखीय जांच का पहला सही विश्लेषण किया,[9]हालाँकि उनके विश्लेषण वाला ज्ञापन बहुत बाद तक प्रकाशित नहीं हुआ था।[10] पहला प्रकाशित विश्लेषण 1966 में कोनहेम और वीस के कारण हुआ था।[11]

हैश टेबल पर प्रारंभिक कार्य या तो पूरी तरह यादृच्छिक हैश फ़ंक्शन तक पहुंच मानते हैं या मानते हैं कि कीज़ स्वयं यादृच्छिक थीं।[9]1979 में, कार्टर और वेगमैन ने यूनिवर्सल हैशिंग की शुरुआत की,[12] जो उन्होंने दिखाया कि प्रति ऑपरेशन निरंतर अपेक्षित समय के साथ चेन हैश टेबल को लागू करने के लिए उपयोग किया जा सकता है।

यादृच्छिक डेटा संरचनाओं पर प्रारंभिक कार्य भी हैश टेबल से आगे बढ़ता है। 1970 में, बर्टन हावर्ड ब्लूम ने अनुमानित-सदस्यता डेटा संरचना पेश की जिसे ब्लूम फिल्टर के रूप में जाना जाता है।[13] 1989 में, रायमुंड सीडेल और सेसिलिया आर. आरागॉन ने यादृच्छिक संतुलित खोज तरु पेश किया जिसे ट्रीप के रूप में जाना जाता है।[14] उसी वर्ष, विलियम पुघ (कंप्यूटर वैज्ञानिक) ने एक और यादृच्छिक खोज तरु पेश किया जिसे स्किप सूची के रूप में जाना जाता है।[15]

कॉम्बिनेटरिक्स में अंतर्निहित उपयोग

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

उदाहरण

क्विकसॉर्ट

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

ज्यामिति में यादृच्छिक वृद्धिशील निर्माण

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

न्यूनतम कट

इनपुट: ग्राफ सिद्धांत G(V,E)

आउटपुट: कट (ग्राफ सिद्धांत) L और R में कोने को विभाजित करता है, जिसमें L और R के बीच किनारों की न्यूनतम संख्या होती है।

याद रखें कि एक (बहु-) ग्राफ़ में दो नोड्स, u और v के किनारे का संकुचन, किनारों के साथ नया नोड u' देता है, जो u या v पर किनारों की घटना का संघ है, किसी भी किनारे को छोड़कर u और v को जोड़ता है। चित्र 1 शीर्ष A और B के संकुचन का उदाहरण देता है।

संकुचन के बाद, परिणामी ग्राफ़ में समानांतर किनार हो सकते हैं, लेकिन इसमें कोई सेल्फ लूप नहीं होता है।

चित्र 2: 10-शीर्ष ग्राफ़ पर कार्गर के एल्गोरिथम का सफल संचालन। न्यूनतम कट का आकार 3 है और इसे शीर्ष रंगों द्वारा दर्शाया गया है।

चित्र 1: शीर्ष A और B का संकुचन

कार्गर का[20] बुनियादी एल्गोरिथ्म:

    begin
i = 1
    repeat
        repeat
            Take a random edge (u,v) ∈ E in G
            replace u and v with the contraction u'
        until only 2 nodes remain
        obtain the corresponding cut result Ci
        i = i + 1
    until i = m
    output the minimum cut among C1, C2, ..., Cm.
end

बाहरी लूप के प्रत्येक निष्पादन में, एल्गोरिथ्म आंतरिक लूप को तब तक दोहराता है जब तक कि केवल 2 नोड शेष न रह जाएं, संबंधित कट प्राप्त हो जाता है। एक निष्पादन का रन टाइम है , और n शीर्षों की संख्या को दर्शाता है। बाहरी लूप के m बार निष्पादन के बाद, हम सभी परिणामों के बीच न्यूनतम कट का उत्पादन करते हैं। चित्र 2 एल्गोरिथ्म के एक निष्पादन का उदाहरण देता है। निष्पादन के बाद, हमें आकार 3 में कट मिलती है।

Lemma 1 — Let k be the min cut size, and let C = {e1, e2, ..., ek} be the min cut. If, during iteration i, no edge eC is selected for contraction, then Ci = C.

Proof

If G is not connected, then G can be partitioned into L and R without any edge between them. So the min cut in a disconnected graph is 0. Now, assume G is connected. Let V=LR be the partition of V induced by C : C = { {u,v} ∈ E : uL,vR} (well-defined since G is connected). Consider an edge {u,v} of C. Initially, u,v are distinct vertices. As long as we pick an edge , u and v do not get merged. Thus, at the end of the algorithm, we have two compound nodes covering the entire graph, one consisting of the vertices of L and the other consisting of the vertices of R. As in figure 2, the size of min cut is 1, and C = {(A,B)}. If we don't select (A,B) for contraction, we can get the min cut.

Lemma 2 — If G is a multigraph with p vertices and whose min cut has size k, then G has at least pk/2 edges.

Proof

Because the min cut is k, every vertex v must satisfy degree(v) ≥ k. Therefore, the sum of the degree is at least pk. But it is well known that the sum of vertex degrees equals 2|E|. The lemma follows.

एल्गोरिदम का विश्लेषण

एल्गोरिद्म के सफल होने की प्रायिकता 1 − संभावना है कि सभी प्रयास विफल हो जाते हैं। स्वतंत्रता से, सभी प्रयासों के विफल होने की प्रायिकता है

लेम्मा 1 द्वारा, संभावना है कि Ci = C संभावना है कि पुनरावृत्ति i के दौरान C का कोई किनारा नहीं चुना गया है। आंतरिक पाश पर विचार करें और मान लीजिये Gj, j किनारे के संकुचन के बाद ग्राफ़ को निरूपित करता है, जहाँ j ∈ {0, 1, …, n − 3}, Gj में nj शीर्ष हैं। हम सशर्त संभाव्यता के श्रृंखला नियम का उपयोग करते हैं। संभावना है कि पुनरावृत्ति j पर चुना गया किनारा C में नहीं है, यह देखते हुए कि C का कोई किनारा पहले नहीं चुना गया है ध्यान दें कि Gj अभी भी आकार k का न्यूनतम कट है, इसलिए लेम्मा 2 के अनुसार, यह अभी भी कम से कम किनारा है।

इस प्रकार, .

तो चेन नियम से, न्यूनतम कट C निष्कर्ष की संभावना है

निरस्तीकरण देता है , इस प्रकार एल्गोरिथ्म के सफल होने की संभावना कम से कम हैहै , के लिए यह के बराबर है एल्गोरिथ्म संभाव्यता के साथ न्यूनतम कट , समय के भीतर पाता है।

डेरेंडोमाइजेशन

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

ऐसे विशिष्ट तरीके हैं जिन्हें विशेष यादृच्छिक एल्गोरिदम को यादृच्छिक बनाने के लिए नियोजित किया जा सकता है:

  • सशर्त संभावनाओं की विधि, और इसका सामान्यीकरण, निराशावादी अनुमानक
  • विसंगति सिद्धांत (जिसका उपयोग ज्यामितीय एल्गोरिदम को अलग करने के लिए किया जाता है)
  • एल्गोरिथ्म द्वारा उपयोग किए जाने वाले यादृच्छिक चर में सीमित स्वतंत्रता का समुपयोजन, जैसे कि सार्वभौमिक हैशिंग में उपयोग की जाने वाली युग्‍मानूसार स्वतंत्रता
  • प्रारंभिक यादृच्छिकता की सीमित मात्रा को बढ़ाने के लिए विस्तारक ग्राफ (या सामान्य रूप से फैलाने वाले) का उपयोग (यह अंतिम दृष्टिकोण यादृच्छिक स्रोत से छद्म यादृच्छिक बिट्स उत्पन्न करने के रूप में भी जाना जाता है, और छद्म यादृच्छिकता के संबंधित विषय की ओर जाता है)
  • एल्गोरिथम के कार्यों के लिए यादृच्छिकता के स्रोत के रूप में हैश फंकशन का उपयोग करने के लिए यादृच्छिक एल्गोरिथ्म को बदलना, और फिर हैश फ़ंक्शन के सभी संभावित मापदंडों (बीजों) को मनमानी बल द्वारा एल्गोरिथ्म को अलग करना। इस तकनीक का प्रयोग सामान्यतः नमूना स्थान को व्यापक रूप से निष्कर्ष और एल्गोरिदम को नियतात्मक बनाने के लिए किया जाता है (उदाहरण के लिए यादृच्छिक ग्राफ एल्गोरिदम)

जहां यादृच्छिकता मदद करती है

जब संगणना का मॉडल ट्यूरिंग मशीन तक ही सीमित है, तो यह वर्तमान में खुला प्रश्न है कि क्या यादृच्छिक विकल्प बनाने की क्षमता बहुपद काल में कुछ समस्याओं को हल करने की अनुमति देती है जिसे इस क्षमता के बिना बहुपद काल में हल नहीं किया जा सकता है; यह सवाल है कि P = BPP। हालाँकि, अन्य संदर्भों में, समस्याओं के विशिष्ट उदाहरण हैं जहाँ यादृच्छिककरण से सख्त सुधार होते हैं।

  • प्रारंभिक प्रेरक उदाहरण के आधार पर: 2k की घातीय रूप से लंबी स्ट्रिंग दी गई है वर्ण, आधा a और आधा b, रैंडम-एक्सेस मशीन के लिए 2k−1 की आवश्यकता होती है a की अनुक्रमणिका निष्कर्ष के लिए सबसे खराब स्थिति में खोजता है; यदि इसे यादृच्छिक विकल्प बनाने की अनुमति है, तो यह लुकअप की अपेक्षित बहुपद संख्या में इस समस्या को हल कर सकता है।
  • अंतः स्थापित प्रणालियाँ या साइबर-भौतिक प्रणाली में संख्यात्मक गणना करने का प्राकृतिक तरीका परिणाम प्रदान करना है जो उच्च संभावना (या संभवतः लगभग सही गणना (पीएसीसी)) के साथ सही परिणाम का अनुमान लगाता है। अनुमानित और सही संगणना के बीच विसंगति हानि के मूल्यांकन से जुड़ी कठिन समस्या को यादृच्छिककरण का सहारा लेकर प्रभावी ढंग से संबोधित किया जा सकता है[21]
  • संचार जटिलता में, यादृच्छिक प्रोटोकॉल के साथ संचार के बिट्स का उपयोग करके दो स्ट्रिंग की समानता कुछ विश्वसनीयता के लिए सत्यापित किया जा सकता है। किसी भी नियतात्मक प्रोटोकॉल की आवश्यकता बिट्स होती है यदि दृढ़ प्रतिद्वंद्वी के खिलाफ बचाव करते हैं।[22]
  • बहुपद काल में अक्रमतः परिशुद्धता के लिए अवमुखपिंड की मात्रा का अनुमान यादृच्छिक एल्गोरिदम द्वारा लगाया जा सकता है।[23] इमरे बैरनी और ज़ोलटन फ़्यूरेडी ने दिखाया कि कोई नियतात्मक एल्गोरिथम ऐसा नहीं कर सकता है।[24] यह बिना शर्त के सच है, अर्थात किसी भी जटिलता-सैद्धांतिक मान्यताओं पर भरोसा किए बिना, अवमुखपिंड को केवल ब्लैक बॉक्स के रूप में माना जा सकता है।
  • एक जगह का अधिक जटिलता-सैद्धांतिक उदाहरण जहां यादृच्छिकता मदद करने के लिए प्रकट होती है वह वर्ग IP (जटिलता) है। IP में वे सभी भाषाएँ सम्मिलित हैं जिन्हें (उच्च संभावना के साथ) सर्व-शक्तिशाली प्रोवर और सत्यापनकर्ता के बीच बहुपद रूप से लंबी पारस्परिक प्रभाव द्वारा स्वीकार किया जा सकता है जो बीपीपी एल्गोरिथम को लागू करता है। IP = PSPACE[25] हालाँकि, यदि यह आवश्यक है कि सत्यापनकर्ता नियतात्मक हो, तो IP = NP (जटिलता)।
  • रासायनिक प्रतिक्रिया नेटवर्क में (A+B → 2C + D जैसी प्रतिक्रियाओं का सीमित सेट अणुओं की सीमित संख्या पर काम कर रहा है), प्रारंभिक अवस्था से किसी दिए गए लक्ष्य अवस्था तक कभी भी पहुंचने की क्षमता निर्णायक होती है, जबकि संभाव्यता का अनुमान भी लगाया जाता है किसी दिए गए लक्ष्य अवस्था तक पहुंचने के लिए (मानक एकाग्रता-आधारित संभावना जिसके लिए प्रतिक्रिया आगे होगी) का उपयोग करना अनिर्णीत है। अधिक विशेष रूप से, सीमित ट्यूरिंग मशीन सभी समय के लिए सही ढंग से चलने की अक्रमतः उच्च संभावना के साथ अनुरूप किया जा सकता है, केवल तभी जब यादृच्छिक रासायनिक प्रतिक्रिया नेटवर्क का उपयोग किया जाता है। एक सरल गैर-नियतात्मक रासायनिक प्रतिक्रिया नेटवर्क (आगे कोई भी संभावित प्रतिक्रिया हो सकती है) के साथ, कम्प्यूटेशनल पावर आदिम पुनरावर्ती तक सीमित है।[26]

यह भी देखें

टिप्पणियाँ

  1. Hoare, C. A. R. (July 1961). "Algorithm 64: Quicksort". Commun. ACM. 4 (7): 321–. doi:10.1145/366622.366644. ISSN 0001-0782.
  2. Kudelić, Robert (2016-04-01). "न्यूनतम प्रतिक्रिया चाप सेट समस्या के लिए मोंटे-कार्लो यादृच्छिक एल्गोरिथ्म". Applied Soft Computing. 41: 235–246. doi:10.1016/j.asoc.2015.12.018.
  3. "In testing primality of very large numbers chosen at random, the chance of stumbling upon a value that fools the Fermat test is less than the chance that cosmic radiation will cause the computer to make an error in carrying out a 'correct' algorithm. Considering an algorithm to be inadequate for the first reason but not for the second illustrates the difference between mathematics and engineering." Hal Abelson and Gerald J. Sussman (1996). Structure and Interpretation of Computer Programs. MIT Press, section 1.2.
  4. Hoare, C. A. R. (July 1961). "Algorithm 64: Quicksort". Communications of the ACM (in English). 4 (7): 321. doi:10.1145/366622.366644. ISSN 0001-0782.
  5. Hoare, C. A. R. (July 1961). "Algorithm 65: find". Communications of the ACM (in English). 4 (7): 321–322. doi:10.1145/366622.366647. ISSN 0001-0782.
  6. Blum, Manuel; Floyd, Robert W.; Pratt, Vaughan; Rivest, Ronald L.; Tarjan, Robert E. (August 1973). "चयन के लिए समय सीमा". Journal of Computer and System Sciences (in English). 7 (4): 448–461. doi:10.1016/S0022-0000(73)80033-9.
  7. Williams, H. C.; Shallit, J. O. (1994), "Factoring integers before computers", in Gautschi, Walter (ed.), Mathematics of Computation 1943–1993: a half-century of computational mathematics; Papers from the Symposium on Numerical Analysis and the Minisymposium on Computational Number Theory held in Vancouver, British Columbia, August 9–13, 1993, Proceedings of Symposia in Applied Mathematics, vol. 48, Amer. Math. Soc., Providence, RI, pp. 481–531, doi:10.1090/psapm/048/1314885, MR 1314885; see p. 504, "Perhaps Pocklington also deserves credit as the inventor of the randomized algorithm".
  8. Berlekamp, E. R. (1971). "बड़े परिमित क्षेत्रों पर बहुपदों का गुणनखंडन*". Proceedings of the Second ACM Symposium on Symbolic and Algebraic Manipulation - SYMSAC '71 (in English). Los Angeles, California, United States: ACM Press: 223. doi:10.1145/800204.806290. ISBN 9781450377867. S2CID 6464612.
  9. 9.0 9.1 9.2 9.3 9.4 9.5 Knuth, Donald E. (1998). The art of computer programming, volume 3: (2nd ed.) sorting and searching. USA: Addison Wesley Longman Publishing Co., Inc. pp. 536–549. ISBN 978-0-201-89685-5.
  10. Knuth, Donald (1963), Notes on "Open" Addressing, archived from the original on 2016-03-03
  11. Konheim, Alan G.; Weiss, Benjamin (November 1966). "एक अधिभोग अनुशासन और अनुप्रयोग". SIAM Journal on Applied Mathematics. 14 (6): 1266–1274. doi:10.1137/0114101. ISSN 0036-1399.
  12. Carter, J. Lawrence; Wegman, Mark N. (1979-04-01). "हैश फ़ंक्शंस की सार्वभौमिक कक्षाएं". Journal of Computer and System Sciences (in English). 18 (2): 143–154. doi:10.1016/0022-0000(79)90044-8. ISSN 0022-0000.
  13. Bloom, Burton H. (July 1970). "Space/time trade-offs in hash coding with allowable errors". Communications of the ACM. 13 (7): 422–426. doi:10.1145/362686.362692. ISSN 0001-0782. S2CID 7931252.
  14. Aragon, C.R.; Seidel, R.G. (October 1989). "यादृच्छिक खोज पेड़". 30th Annual Symposium on Foundations of Computer Science: 540–545. doi:10.1109/SFCS.1989.63531. ISBN 0-8186-1982-1.
  15. Pugh, William (April 1989). Concurrent Maintenance of Skip Lists (PS, PDF) (Technical report). Dept. of Computer Science, U. Maryland. CS-TR-2222.
  16. 16.0 16.1 Alon, Noga (2016). संभाव्य विधि. Joel H. Spencer (Fourth ed.). Hoboken, New Jersey. ISBN 978-1-119-06195-3. OCLC 910535517.{{cite book}}: CS1 maint: location missing publisher (link)
  17. P. Erdős: Some remarks on the theory of graphs, Bull. Amer. Math. Soc. 53 (1947), 292--294 MR8,479d; Zentralblatt 32,192.
  18. Erdös, P. (1959). "ग्राफ सिद्धांत और संभावना". Canadian Journal of Mathematics (in English). 11: 34–38. doi:10.4153/CJM-1959-003-9. ISSN 0008-414X. S2CID 122784453.
  19. Seidel R. Backwards Analysis of Randomized Geometric Algorithms.
  20. A. A. Tsay, W. S. Lovejoy, David R. Karger, Random Sampling in Cut, Flow, and Network Design Problems, Mathematics of Operations Research, 24(2):383–413, 1999.
  21. Alippi, Cesare (2014), Intelligence for Embedded Systems, Springer, ISBN 978-3-319-05278-6.
  22. Kushilevitz, Eyal; Nisan, Noam (2006), Communication Complexity, Cambridge University Press, ISBN 9780521029834. For the deterministic lower bound see p. 11; for the logarithmic randomized upper bound see pp. 31–32.
  23. Dyer, M.; Frieze, A.; Kannan, R. (1991), "A random polynomial-time algorithm for approximating the volume of convex bodies" (PDF), Journal of the ACM, 38 (1): 1–17, doi:10.1145/102782.102783, S2CID 13268711
  24. Füredi, Z.; Bárány, I. (1986), "Computing the volume is difficult", Proc. 18th ACM Symposium on Theory of Computing (Berkeley, California, May 28–30, 1986) (PDF), New York, NY: ACM, pp. 442–447, CiteSeerX 10.1.1.726.9448, doi:10.1145/12130.12176, ISBN 0-89791-193-8, S2CID 17867291
  25. Shamir, A. (1992), "IP = PSPACE", Journal of the ACM, 39 (4): 869–877, doi:10.1145/146585.146609, S2CID 315182
  26. Cook, Matthew; Soloveichik, David; Winfree, Erik; Bruck, Jehoshua (2009), "Programmability of chemical reaction networks", in Condon, Anne; Harel, David; Kok, Joost N.; Salomaa, Arto; Winfree, Erik (eds.), Algorithmic Bioprocesses (PDF), Natural Computing Series, Springer-Verlag, pp. 543–584, doi:10.1007/978-3-540-88869-7_27.


संदर्भ