प्रगणक (कंप्यूटर विज्ञान): Difference between revisions
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> को 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> की गणना करने वाला एनुमेरेटर निम्नलिखित चरणों का पालन करेगा | | |||
1 '''for''' i = 1,2,3,... | 1 '''for''' i = 1,2,3,... | ||
Line 19: | Line 19: | ||
3 If any string is accepted, then print it. | 3 If any string is accepted, then print it. | ||
अब प्रश्न यह आता है कि क्या लैंग्वेज <math>L(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 16:12, 6 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.