प्रगणक (कंप्यूटर विज्ञान): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Automata that lists elements of some given set}}गणनाकार एक [[ट्यूरिंग मशीन]] है जिसमें एक प्रिंटर लगा होता है। ट्यूरिंग मशीन स्ट्रिंग्स को प्रिंट करने के लिए उस प्रिंटर को आउटपुट डिवाइस के रूप में उपयोग कर सकती है। हर बार जब ट्यूरिंग मशीन सूची में एक स्ट्रिंग जोड़ना चाहती है, तो वह स्ट्रिंग को प्रिंटर को भेजती है। एन्यूमरेटर एक प्रकार का ट्यूरिंग मशीन प्रकार है और ट्यूरिंग मशीन के समकक्ष है।
{{Short description|Automata that lists elements of some given set}}गणनाकार एक [[ट्यूरिंग मशीन]] है जिसमें एक प्रिंटर लगा होता है। ट्यूरिंग मशीन स्ट्रिंग्स को प्रिंट करने के लिए उस प्रिंटर को आउटपुट डिवाइस के रूप में उपयोग कर सकती है। हर बार जब ट्यूरिंग मशीन सूची में एक स्ट्रिंग जोड़ना चाहती है, तो वह स्ट्रिंग को प्रिंटर को भेजती है। '''एन्यूमरेटर''' एक प्रकार का ट्यूरिंग मशीन प्रकार है और जो  ट्यूरिंग मशीन के समकक्ष है।


==औपचारिक परिभाषा==
==औपचारिक परिभाषा==
एक गणनाकार <math>E</math> इसे 2-टेप ट्यूरिंग मशीन ([[मल्टीटेप ट्यूरिंग मशीन]]) के रूप में परिभाषित किया जा सकता है <math> k=2 </math>) किसकी भाषा है <math>\empty</math>. शुरू में, <math>E</math> कोई इनपुट प्राप्त नहीं होता है, और सभी टेप खाली हैं (यानी, खाली प्रतीकों से भरे हुए हैं)। नव परिभाषित प्रतीक <math>\#\in \Gamma\land\#\notin \Sigma</math> वह परिसीमनक है जो किसी तत्व के अंत को चिह्नित करता है <math>S</math>. दूसरे टेप को प्रिंटर के रूप में माना जा सकता है, इस पर तारों को अलग किया जाता है <math>\#</math>. गणनाकार द्वारा गणना की गई भाषा <math>E</math> द्वारा चिह्नित <math>L(E)</math> दूसरे टेप (प्रिंटर) पर स्ट्रिंग्स के सेट के रूप में परिभाषित किया गया है।
एक प्रगणक <math>E</math> को 2-टेप ट्यूरिंग मशीन (मल्टीटेप ट्यूरिंग मशीन जहां <math> k=2 </math>) के रूप में परिभाषित किया जा सकता है, जिसकी लैंग्वेज <math>\empty</math> है। प्रारंभ में, <math>E</math> को कोई इनपुट नहीं मिलता है, और सभी टेप खाली हैं (अथार्त, खाली प्रतीकों से भरे हुए हैं)। नया परिभाषित प्रतीक <math>\#\in \Gamma\land\#\notin \Sigma</math> वह सीमांकक है जो <math>S</math> के एक तत्व के अंत को चिह्नित करता है। दूसरे टेप को प्रिंटर के रूप में माना जा सकता है, इस पर स्ट्रिंग्स को <math>\#</math> द्वारा अलग किया जाता है। प्रगणक ई द्वारा गणना की गई लैंग्वेज को <math>L(E)</math> द्वारा निरूपित करके दूसरे टेप (प्रिंटर) पर स्ट्रिंग के सेट के रूप में परिभाषित किया गया है।


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


सबूत
प्रमाण


एक ट्यूरिंग पहचानने योग्य भाषा की गणना एक गणनाकार द्वारा की जा सकती है
एक ट्यूरिंग पहचानने योग्य लैंग्वेज की गणना एक गणनाकार द्वारा की जा सकती है


एक ट्यूरिंग मशीन पर विचार करें <math>M</math> और उसके द्वारा स्वीकृत भाषा हो <math>L(M)</math>. चूंकि इनपुट वर्णमाला पर सभी संभावित स्ट्रिंग्स का सेट <math>\Sigma</math> यानी क्लेन क्लोजर <math>\Sigma^{*}</math> एक गणनीय समुच्चय है, हम इसमें स्ट्रिंग्स की गणना इस प्रकार कर सकते हैं <math>s_{1},s_{2},\dots ,s_{i},</math> आदि। फिर प्रगणक भाषा की गणना करता है <math>L(M)</math> चरणों का पालन करेंगे:
एक ट्यूरिंग मशीन <math>M</math> पर विचार करें और इसके द्वारा स्वीकृत लैंग्वेज <math>L(M)</math> है। चूंकि इनपुट वर्णमाला <math>\Sigma</math> पर सभी संभावित स्ट्रिंग्स का सेट यानी। क्लेन क्लोजर <math>\Sigma^{*}</math> एक गणनीय सेट है, हम इसमें स्ट्रिंग्स को <math>s_{1},s_{2},\dots ,s_{i},</math> आदि के रूप में गिन सकते हैं। फिर लैंग्वेज <math>L(M)</math> की गणना करने वाला प्रगणक निम्नलिखित चरणों का पालन करेगा:


  1 के लिए i = 1,2,3,...
  1 '''for''' i = 1,2,3,...
  2 भागो <math>M</math> इनपुट स्ट्रिंग के साथ <math>s_{1}, s_{2}, \dots, s_{i}</math> के लिए <math>i</math>-कदम
  2 '''Run'''  '''with input strings'''  '''for''' -'''steps'''
  3 यदि कोई स्ट्रिंग स्वीकृत है तो उसे प्रिंट कर लें।
  3 If any string is accepted, then print it.


अब प्रश्न यह आता है कि क्या भाषा में प्रत्येक तार <math>L(M)</math> हमारे द्वारा निर्मित प्रगणक द्वारा मुद्रित किया जाएगा। किसी भी स्ट्रिंग के लिए <math>w</math> भाषा में <math>L(M)</math> टीएम <math>M</math> सीमित संख्या में चरण चलेंगे (इसे रहने दें <math>k</math> के लिए <math>w</math>) इसे स्वीकार करना। फिर में <math>k</math>प्रगणक का -वाँ चरण <math>w</math> मुद्रित किया जाएगा. इस प्रकार गणनाकार प्रत्येक स्ट्रिंग को प्रिंट करेगा <math>M</math> पहचानता है लेकिन एक ही स्ट्रिंग को कई बार मुद्रित किया जा सकता है।
अब प्रश्न यह आता है कि क्या लैंग्वेज <math>L(M)</math> की प्रत्येक स्ट्रिंग हमारे द्वारा निर्मित एन्यूमरेटर द्वारा मुद्रित की जाएगी। लैंग्वेज <math>L(M)</math> में किसी भी स्ट्रिंग <math>w</math> के लिए TM <math>M</math> इसे स्वीकार करने के लिए सीमित संख्या में चरण चलाएगा (इसे <math>w</math> के लिए <math>k</math> होने दें)फिर एन्यूमरेटर के <math>k</math>-वें चरण में <math>w</math> प्रिंट किया जाएगा। इस प्रकार गणनाकार <math>M</math> द्वारा पहचानी गई प्रत्येक स्ट्रिंग को प्रिंट करेगा लेकिन एक स्ट्रिंग को कई बार मुद्रित किया जा सकता है।


एक गणना योग्य भाषा ट्यूरिंग पहचानने योग्य है
एक गणना योग्य लैंग्वेज ट्यूरिंग पहचानने योग्य है


ट्यूरिंग मशीन का निर्माण करना बहुत आसान है <math>M</math> जो असंख्य भाषा को पहचानता है <math>L</math>. हमारे पास दो टेप हो सकते हैं. एक टेप पर हम इनपुट स्ट्रिंग लेते हैं और दूसरे टेप पर, हम एक के बाद एक भाषा में स्ट्रिंग्स की गणना करने के लिए एन्यूमरेटर चलाते हैं। एक बार जब एक स्ट्रिंग दूसरे टेप में मुद्रित हो जाती है तो हम इसकी तुलना पहले टेप के इनपुट से करते हैं। यदि यह मेल खाता है, तो हम इनपुट स्वीकार करते हैं, अन्यथा अस्वीकार करते हैं।
ट्यूरिंग मशीन <math>M</math> का निर्माण करना बहुत सरल है जो गणना योग्य लैंग्वेज <math>L</math> को पहचानती है। हमारे पास दो टेप हो सकते हैं। एक टेप पर हम इनपुट स्ट्रिंग लेते हैं और दूसरे टेप पर, हम एक के बाद एक लैंग्वेज में स्ट्रिंग्स की गणना करने के लिए एन्यूमरेटर चलाते हैं। एक बार जब एक स्ट्रिंग दूसरे टेप में मुद्रित हो जाती है तो हम इसकी तुलना पहले टेप के इनपुट से करते हैं। यदि यह मेल खाता है, तो हम इनपुट स्वीकार करते हैं, अन्यथा अस्वीकार करते हैं।


== संदर्भ ==
== संदर्भ ==

Revision as of 08:58, 2 August 2023

गणनाकार एक ट्यूरिंग मशीन है जिसमें एक प्रिंटर लगा होता है। ट्यूरिंग मशीन स्ट्रिंग्स को प्रिंट करने के लिए उस प्रिंटर को आउटपुट डिवाइस के रूप में उपयोग कर सकती है। हर बार जब ट्यूरिंग मशीन सूची में एक स्ट्रिंग जोड़ना चाहती है, तो वह स्ट्रिंग को प्रिंटर को भेजती है। एन्यूमरेटर एक प्रकार का ट्यूरिंग मशीन प्रकार है और जो ट्यूरिंग मशीन के समकक्ष है।

औपचारिक परिभाषा

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

प्रगणक और ट्यूरिंग मशीनों की समतुल्यता

एक सीमित वर्णमाला पर एक लैंग्वेज ट्यूरिंग पहचानने योग्य है यदि और केवल तभी इसे एक गणनाकर्ता द्वारा गिना जा सकता है। इससे पता चलता है कि ट्यूरिंग की पहचान योग्य लैंग्वेज भी पुनरावर्ती रूप से गणना योग्य हैं।

प्रमाण

एक ट्यूरिंग पहचानने योग्य लैंग्वेज की गणना एक गणनाकार द्वारा की जा सकती है

एक ट्यूरिंग मशीन पर विचार करें और इसके द्वारा स्वीकृत लैंग्वेज है। चूंकि इनपुट वर्णमाला पर सभी संभावित स्ट्रिंग्स का सेट यानी। क्लेन क्लोजर एक गणनीय सेट है, हम इसमें स्ट्रिंग्स को आदि के रूप में गिन सकते हैं। फिर लैंग्वेज की गणना करने वाला प्रगणक निम्नलिखित चरणों का पालन करेगा:

1 for i = 1,2,3,...
2 Run  with input strings  for -steps
3 If any string is accepted, then print it. 

अब प्रश्न यह आता है कि क्या लैंग्वेज की प्रत्येक स्ट्रिंग हमारे द्वारा निर्मित एन्यूमरेटर द्वारा मुद्रित की जाएगी। लैंग्वेज में किसी भी स्ट्रिंग के लिए TM इसे स्वीकार करने के लिए सीमित संख्या में चरण चलाएगा (इसे के लिए होने दें)। फिर एन्यूमरेटर के -वें चरण में प्रिंट किया जाएगा। इस प्रकार गणनाकार द्वारा पहचानी गई प्रत्येक स्ट्रिंग को प्रिंट करेगा लेकिन एक स्ट्रिंग को कई बार मुद्रित किया जा सकता है।

एक गणना योग्य लैंग्वेज ट्यूरिंग पहचानने योग्य है

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

संदर्भ

Sipser, Michael (2012). Introduction to the Theory of Computation - International Edition. ISBN 978-1-133-18781-3.