पुशडाउन ऑटोमेटन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{short description|Type of automaton}}
{{short description|Type of automaton}}
{{Automata theory}}
{{Automata theory}}
गणना के सिद्धांत में, [[सैद्धांतिक कंप्यूटर विज्ञान]] की शाखा, पुशडाउन ऑटोमेटन (पीडीए) है एक प्रकार का [[ऑटोमेटा सिद्धांत|'''ऑटोमेटा सिद्धांत''']] जो एक [[स्टैक (डेटा संरचना)]] को नियोजित करता है।
गणना के सिद्धांत में, [[सैद्धांतिक कंप्यूटर विज्ञान]] की शाखा, पुशडाउन ऑटोमेटन (पीडीए) है एक प्रकार का ऐसा [[ऑटोमेटा सिद्धांत|'''ऑटोमेटा सिद्धांत''']] जो एक [[स्टैक (डेटा संरचना)]] को नियोजित करता है।


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


[[नियतात्मक पुशडाउन ऑटोमेटा|डीटरमिनिस्ट पुशडाउन ऑटोमेटा]] सभी डीटरमिनिस्ट [[संदर्भ-मुक्त भाषा|डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज]] को पहचान सकता है जबकि गैर-डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज लैंग्वेज को पहचान सकता है, पूर्व का उपयोग प्रायः [[पार्सर]] डिज़ाइन में किया जाता है।
[[नियतात्मक पुशडाउन ऑटोमेटा|डीटरमिनिस्ट पुशडाउन ऑटोमेटा]] सभी डीटरमिनिस्ट [[संदर्भ-मुक्त भाषा|डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज]] को पहचान सकता है जबकि गैर-डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज इस लैंग्वेज को पहचान सकता है, पूर्व का उपयोग प्रायः [[पार्सर]] डिज़ाइन में किया जाता है।


अतः पुशडाउन शब्द इस तथ्य को संदर्भित करता है कि स्टैक (अमूर्त डेटा प्रकार) को कैफेटेरिया में ट्रे डिस्पेंसर के जैसे नीचे पुशडाउन के रूप में माना जा सकता है, क्योंकि ऑपरेशन कभी भी शीर्ष अवयव के अतिरिक्त अन्य अवयवों पर कार्य नहीं करते हैं। इसके विपरीत, स्टैक ऑटोमेटन, गहन अवयवों तक एक्सेस और ऑपरेशन की अनुमति देता है। स्टैक ऑटोमेटा पुशडाउन ऑटोमेटा की तुलना में लैंग्वेज के बड़े समूह को पहचान सकता है।<ref name="Hopcroft.Ullman.1967" /> एक [[नेस्टेड स्टैक ऑटोमेटन]] पूर्ण एक्सेस की अनुमति देता है, और स्टैक्ड मानों को मात्र एकल परिमित प्रतीकों के अतिरिक्त संपूर्ण उप-स्टैक होने की भी अनुमति देता है।
अतः पुशडाउन शब्द इस तथ्य को संदर्भित करता है कि स्टैक (अमूर्त डेटा प्रकार) को कैफेटेरिया में ट्रे डिस्पेंसर के जैसे निम्न पुशडाउन के रूप में माना जा सकता है, क्योंकि ऑपरेशन कभी भी शीर्ष अवयव के अतिरिक्त अन्य अवयवों पर कार्य नहीं करते हैं। इसके विपरीत, स्टैक ऑटोमेटन, गहन अवयवों तक एक्सेस और ऑपरेशन की अनुमति देता है। स्टैक ऑटोमेटा पुशडाउन ऑटोमेटा की तुलना में लैंग्वेज के बड़े समूह को पहचान सकता है।<ref name="Hopcroft.Ullman.1967" /> एक [[नेस्टेड स्टैक ऑटोमेटन]] पूर्ण एक्सेस की अनुमति देता है, और स्टैक्ड मानों को मात्र एकल परिमित प्रतीकों के अतिरिक्त संपूर्ण उप-स्टैक होने की भी अनुमति देता है।


== अनौपचारिक विवरण ==
== अनौपचारिक विवरण ==


[[Image:Pushdown-overview.svg|thumb|340px|पुशडाउन ऑटोमेटन का आरेख]]एक परिमित-स्थिति मशीन मात्र इनपुट सिग्नल और वर्तमान स्थिति को देखती है: इसके निकट कार्य करने के लिए कोई स्टैक नहीं है। यह नवीन स्थिति चुनता है, जो परिवर्तन का अनुसरण करने का परिणाम है। इस प्रकार से '''पुशडाउन ऑटोमेटन (पीडीए)''' परिमित स्थिति मशीन से दो विधियों से भिन्न होता है:
[[Image:Pushdown-overview.svg|thumb|340px|पुशडाउन ऑटोमेटन का आरेख]]एक परिमित-अवस्था मशीन मात्र इनपुट सिग्नल और वर्तमान स्थिति को देखती है: इसके निकट कार्य करने के लिए कोई स्टैक नहीं है। यह नवीन स्थिति चुनता है, जो परिवर्तन का अनुसरण करने का परिणाम है। इस प्रकार से '''पुशडाउन ऑटोमेटन (पीडीए)''' परिमित अवस्था मशीन से दो विधियों से भिन्न होता है:
# यह स्टैक के शीर्ष का उपयोग यह निर्धारित करने के लिए कर सकता है कि कौन सा ट्रांजीशन लेना है।
# यह स्टैक के शीर्ष का उपयोग यह निर्धारित करने के लिए कर सकता है कि कौन सा ट्रांजीशन लेना है।
# यह ट्रांजीशन निष्पादित करने के भाग के रूप में स्टैक में परिवर्तन कर सकता है।
# यह ट्रांजीशन निष्पादित करने के भाग के रूप में स्टैक में परिवर्तन कर सकता है।
Line 21: Line 21:
*<math>q_{0} \in Q </math> आरंभिक अवस्था है।
*<math>q_{0} \in Q </math> आरंभिक अवस्था है।
*<math>Z \in \Gamma</math> प्रारंभिक स्टैक प्रतीक है।
*<math>Z \in \Gamma</math> प्रारंभिक स्टैक प्रतीक है।
*<math>F \subseteq Q</math> स्वीकार करने वाले स्थितियों का समूह है।
*<math>F \subseteq Q</math> स्वीकार करने वाली स्थितियों का समूह है।


एक अवयव <math>(p,a,A,q,\alpha) \in \delta</math>, <math>M</math> का संक्रमण है । इसका अभिप्राय यह है कि <math>M</math>, स्थिति <math>p \in Q</math> में, इनपुट <math>a \in \Sigma \cup \{\varepsilon\}</math> पर और <math>A \in \Gamma</math> को सबसे ऊपरी स्टैक प्रतीक के रूप में, <math>a</math> के रूप में पढ़ सकता है, स्थिति को <math>q</math> में बदल सकता है, पॉप <math>A</math> पॉप कर सकता है, इसे <math>\alpha \in \Gamma^*</math> दबाकर प्रतिस्थापित कर सकता है। संक्रमण संबंध के <math>(\Sigma \cup \{\varepsilon\})</math> घटक का उपयोग यह औपचारिक बनाने के लिए किया जाता है कि पीडीए या तो इनपुट से पत्र पढ़ सकता है, या इनपुट को अछूता छोड़कर आगे बढ़ सकता है।
एक अवयव <math>(p,a,A,q,\alpha) \in \delta</math>, <math>M</math> का संक्रमण है । इसका अभिप्राय यह है कि <math>M</math>, स्थिति <math>p \in Q</math> में, इनपुट <math>a \in \Sigma \cup \{\varepsilon\}</math> पर और <math>A \in \Gamma</math> को सबसे ऊपरी स्टैक प्रतीक, <math>a</math> के रूप में पढ़ सकता है, इस स्थिति को <math>q</math> में परिवर्तित कर सकता है, पॉप <math>A</math> कर सकता है, इसे <math>\alpha \in \Gamma^*</math> दबाकर प्रतिस्थापित कर सकता है। संक्रमण संबंध के <math>(\Sigma \cup \{\varepsilon\})</math> घटक का उपयोग यह औपचारिक बनाने के लिए किया जाता है कि पीडीए या तो इनपुट से पत्र पढ़ सकता है, या इनपुट को अछूता छोड़कर आगे बढ़ सकता है।
   
   
इस प्रकार से अनेक ग्रंथों में<ref name="Hopcroft.Ullman.1979"/>{{rp|110}} संक्रमण संबंध को (समतुल्य) औपचारिकता द्वारा प्रतिस्थापित किया जाता है, जहां
इस प्रकार से अनेक ग्रंथों में<ref name="Hopcroft.Ullman.1979"/>{{rp|110}} संक्रमण संबंध को (समतुल्य) औपचारिकता द्वारा प्रतिस्थापित किया जाता है, जहां
Line 33: Line 33:
[[Image:Pushdown-step.svg|thumb|200px|पुशडाउन ऑटोमेटन का चरण]]अतः पुशडाउन ऑटोमेटन के शब्दार्थ को औपचारिक बनाने के लिए वर्तमान स्थिति का विवरण प्रस्तुत किया गया है। कोई भी 3-टुपल <math>(p,w,\beta) \in Q \times \Sigma^* \times \Gamma^*</math> को <math>M</math> का तात्कालिक विवरण (आईडी) कहा जाता है, जिसमें वर्तमान स्थिति, इनपुट टेप का वह भाग जो पढ़ा नहीं गया है, और स्टैक के विवरण (सबसे ऊपर का प्रतीक पहले लिखा गया है) सम्मिलित है। संक्रमण संबंध <math>\delta</math> तात्कालिक विवरण पर <math>M</math> के चरण-संबंध <math>\vdash_{M}</math> को परिभाषित करता है। निर्देश<math>(p,a,A,q,\alpha) \in \delta</math> के लिए प्रत्येक <math>x\in\Sigma^*</math> और प्रत्येक <math>\gamma\in \Gamma^*</math> के लिए एक चरण <math>(p,ax,A\gamma) \vdash_{M} (q,x,\alpha\gamma)</math> स्थित है।
[[Image:Pushdown-step.svg|thumb|200px|पुशडाउन ऑटोमेटन का चरण]]अतः पुशडाउन ऑटोमेटन के शब्दार्थ को औपचारिक बनाने के लिए वर्तमान स्थिति का विवरण प्रस्तुत किया गया है। कोई भी 3-टुपल <math>(p,w,\beta) \in Q \times \Sigma^* \times \Gamma^*</math> को <math>M</math> का तात्कालिक विवरण (आईडी) कहा जाता है, जिसमें वर्तमान स्थिति, इनपुट टेप का वह भाग जो पढ़ा नहीं गया है, और स्टैक के विवरण (सबसे ऊपर का प्रतीक पहले लिखा गया है) सम्मिलित है। संक्रमण संबंध <math>\delta</math> तात्कालिक विवरण पर <math>M</math> के चरण-संबंध <math>\vdash_{M}</math> को परिभाषित करता है। निर्देश<math>(p,a,A,q,\alpha) \in \delta</math> के लिए प्रत्येक <math>x\in\Sigma^*</math> और प्रत्येक <math>\gamma\in \Gamma^*</math> के लिए एक चरण <math>(p,ax,A\gamma) \vdash_{M} (q,x,\alpha\gamma)</math> स्थित है।


सामान्यतः पुशडाउन ऑटोमेटा गैर-नियतात्मक होते हैं जिसका अर्थ है कि किसी दिए गए तात्कालिक विवरण <math>(p,w,\beta)</math> में यहां कई संभावित चरण हो सकते हैं। गणना में इनमें से कोई भी चरण चुना जा सकता है। उपरोक्त परिभाषा के साथ प्रत्येक चरण में सदैव एकल प्रतीक (स्टैक के शीर्ष) को पॉप किया जाता है, इसे आवश्यकतानुसार कई प्रतीकों से बदल दिया जाता है। परिणामस्वरूप, स्टैक रिक्त होने पर कोई चरण परिभाषित नहीं होता है।
सामान्यतः पुशडाउन ऑटोमेटा गैर-नियतात्मक होते हैं जिसका अर्थ है कि किसी दिए गए तात्कालिक विवरण <math>(p,w,\beta)</math> में यहां कई संभावित चरण हो सकते हैं। गणना में इनमें से कोई भी चरण चुना जा सकता है। उपरोक्त परिभाषा के साथ प्रत्येक चरण में सदैव एकल प्रतीक (स्टैक के शीर्ष) को पॉप किया जाता है, इसे आवश्यकतानुसार कई प्रतीकों से परिवर्तित कर दिया जाता है। परिणामस्वरूप, स्टैक रिक्त होने पर कोई चरण परिभाषित नहीं होता है।


इस प्रकार से पुशडाउन ऑटोमेटन की गणना चरणों का क्रम है। गणना प्रारंभिक स्थिति <math>q_{0}</math> में स्टैक पर प्रारंभिक स्टैक प्रतीक <math>Z</math> और इनपुट टेप पर एक स्ट्रिंग <math>w</math> के साथ प्रारम्भ होती है, इस प्रकार प्रारंभिक विवरण <math>(q_{0},w,Z)</math>के साथ। स्वीकार करने की दो विधियाँ हैं। पुशडाउन ऑटोमेटन या तो अंतिम स्थिति द्वारा स्वीकार करता है, जिसका अर्थ है कि इसके इनपुट को पढ़ने के बाद ऑटोमेटन एक स्वीकार्य स्थिति (<math>F</math> में) तक पहुंच जाता है, या यह रिक्त स्टैक (<math>\varepsilon</math>), द्वारा स्वीकार करता है, जिसका अर्थ है कि इसके इनपुट को पढ़ने के बाद ऑटोमेटन अपने स्टैक को रिक्त कर देता है। अतः पहला स्वीकृति मोड आंतरिक मेमोरी (स्थिति) का उपयोग करता है, दूसरा बाह्य मेमोरी (स्टैक) का।
इस प्रकार से पुशडाउन ऑटोमेटन की गणना चरणों का क्रम है। गणना प्रारंभिक स्थिति <math>q_{0}</math> में स्टैक पर प्रारंभिक स्टैक प्रतीक <math>Z</math> और इनपुट टेप पर एक स्ट्रिंग <math>w</math> के साथ प्रारम्भ होती है, इस प्रकार प्रारंभिक विवरण <math>(q_{0},w,Z)</math>के साथ। स्वीकार करने की दो विधियाँ हैं। पुशडाउन ऑटोमेटन या तो अंतिम स्थिति द्वारा स्वीकार करता है, जिसका अर्थ है कि इसके इनपुट को पढ़ने के बाद ऑटोमेटन एक स्वीकार्य स्थिति (<math>F</math> में) तक पहुंच जाता है, या यह रिक्त स्टैक (<math>\varepsilon</math>), द्वारा स्वीकार करता है, जिसका अर्थ है कि इसके इनपुट को पढ़ने के बाद ऑटोमेटन अपने स्टैक को रिक्त कर देता है। अतः पहला स्वीकृति मोड आंतरिक मेमोरी (स्थिति) का उपयोग करता है, दूसरा बाह्य मेमोरी (स्टैक) का।
Line 43: Line 43:
अतः यहाँ <math>\vdash_M^*</math> चरण संबंध <math>\vdash_M</math> के [[ प्रतिवर्ती समापन |प्रतिवर्ती संवरक]] और [[ सकर्मक समापन |सकर्मक संवरक]] का प्रतिनिधित्व करता है जिसका अर्थ है निरंतर चरणों की कोई भी संख्या (शून्य, एक या अधिक)।
अतः यहाँ <math>\vdash_M^*</math> चरण संबंध <math>\vdash_M</math> के [[ प्रतिवर्ती समापन |प्रतिवर्ती संवरक]] और [[ सकर्मक समापन |सकर्मक संवरक]] का प्रतिनिधित्व करता है जिसका अर्थ है निरंतर चरणों की कोई भी संख्या (शून्य, एक या अधिक)।


इस प्रकार से प्रत्येक एकल पुशडाउन ऑटोमेटन के लिए इन दोनों लैंग्वेज का कोई संबंध नहीं होना चाहिए: वे समान हो सकते हैं परन्तु सामान्यतः ऐसा नहीं होता है। ऑटोमेटन के विनिर्देश में स्वीकृति का इच्छित विधि भी सम्मिलित होना चाहिए। सभी पुशडाउन ऑटोमेटा पर आधारित दोनों स्वीकृति प्रतिबंधें लैंग्वेज के ही वर्ग को परिभाषित करती हैं।
इस प्रकार से प्रत्येक एकल पुशडाउन ऑटोमेटन के लिए इन दोनों लैंग्वेज का कोई संबंध नहीं होना चाहिए: वे समान हो सकते हैं परन्तु सामान्यतः ऐसा नहीं होता है। ऑटोमेटन के विनिर्देश में स्वीकृति का इच्छित विधि भी सम्मिलित होना चाहिए। सभी पुशडाउन ऑटोमेटा पर आधारित दोनों स्वीकृति प्रतिबंधें लैंग्वेज के एक ही समूह को परिभाषित करती हैं।


'''प्रमेय.''' प्रत्येक पुशडाउन ऑटोमेटन <math>M</math> के लिए कोई पुशडाउन ऑटोमेटन <math>M'</math> का निर्माण किया जा सकता है जैसे कि <math>L(M)=N(M')</math>, और इसके विपरीत, प्रत्येक पुशडाउन ऑटोमेटन <math>M</math> के लिए एक पुशडाउन ऑटोमेटन <math>M'</math> का निर्माण किया जा सकता है जैसे कि <math>N(M)=L(M')</math>।
'''प्रमेय.''' प्रत्येक पुशडाउन ऑटोमेटन <math>M</math> के लिए कोई पुशडाउन ऑटोमेटन <math>M'</math> का निर्माण किया जा सकता है जैसे कि <math>L(M)=N(M')</math>, और इसके विपरीत, प्रत्येक पुशडाउन ऑटोमेटन <math>M</math> के लिए एक पुशडाउन ऑटोमेटन <math>M'</math> का निर्माण किया जा सकता है जैसे कि <math>N(M)=L(M')</math>।
Line 68: Line 68:
:<math>(q,\epsilon,Z,r,Z)</math>।
:<math>(q,\epsilon,Z,r,Z)</math>।


शब्दों में, पहले दो निर्देश कहते हैं कि स्थिति p में जब भी प्रतीक 0 पढ़ा जाता है, तो एक A को स्टैक पर पुश किया जाता है। प्रतीक A को दूसरे A के ऊपर पुश करने को शीर्ष A को AA द्वारा प्रतिस्थापित करने के रूप में औपचारिक रूप दिया जाता है (और इसी प्रकार Z के शीर्ष पर प्रतीक A को पुश करने के लिए)।
शब्दों में, पहले दो निर्देश कहते हैं कि स्थिति '''p''' में जब भी प्रतीक '''0''' पढ़ा जाता है, तो एक '''A''' को स्टैक पर पुश किया जाता है। प्रतीक '''A''' को दूसरे '''A''' के ऊपर पुश करने को शीर्ष A को '''AA''' द्वारा प्रतिस्थापित करने के रूप में औपचारिक रूप दिया जाता है (और इसी प्रकार Z के शीर्ष पर प्रतीक A को पुश करने के लिए)।


तीसरे और चौथे निर्देश कहते हैं कि, किसी भी क्षण ऑटोमेटन स्थित p से अवस्था q तक जा सकता है।
तीसरे और चौथे निर्देश कहते हैं कि, किसी भी क्षण ऑटोमेटन स्थित p से अवस्था q तक जा सकता है।
Line 76: Line 76:
अंत में, छठा निर्देश कहता है कि मशीन अवस्था q से स्वीकार करने योग्य अवस्था r की ओर तभी जा सकती है, जब स्टैक में एकल Z हो।
अंत में, छठा निर्देश कहता है कि मशीन अवस्था q से स्वीकार करने योग्य अवस्था r की ओर तभी जा सकती है, जब स्टैक में एकल Z हो।


ऐसा लगता है कि पीडीए के लिए सामान्यतः इस्तेमाल किया जाने वाला कोई प्रतिनिधित्व नहीं है। यहां हमने निर्देश <math>(p,a,A,q,\alpha)</math> को स्थिति p से अवस्था q तक एक किनारे द्वारा दर्शाया गया है जिसे <math>a; A/\alpha</math> द्वारा लेबल किया गया है; ({{mvar|a}} पढ़ें; {{mvar|A}} को <math>\alpha</math> से बदलें)।
ऐसा लगता है कि पीडीए के लिए सामान्यतः उपयोग किया जाने वाला कोई प्रतिनिधित्व नहीं है। यहां हमने निर्देश <math>(p,a,A,q,\alpha)</math> को स्थिति p से अवस्था q तक एक किनारे द्वारा दर्शाया गया है जिसे <math>a; A/\alpha</math> द्वारा लेबल किया गया है; ({{mvar|a}} पढ़ें; {{mvar|A}} को <math>\alpha</math> से परिवर्तित करें)।


=== गणना प्रक्रिया को समझना ===
=== गणना प्रक्रिया को समझना ===
Line 95: Line 95:
==पीडीए और संदर्भ-मुक्त लैंग्वेज==
==पीडीए और संदर्भ-मुक्त लैंग्वेज==


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


इस प्रकार से तकनीकी रूप से, संदर्भ-मुक्त व्याकरण को देखते हुए, पीडीए की ही स्थिति है, 1, और इसका संक्रमण संबंध इस प्रकार बनाया गया है।
इस प्रकार से तकनीकी रूप से, संदर्भ-मुक्त व्याकरण को देखते हुए, पीडीए की एक ही स्थिति है, 1, और इसका संक्रमण संबंध इस प्रकार बनाया गया है।


# प्रत्येक नियम <math>A\to\alpha</math> के लिए <math>(1,\varepsilon,A,1,\alpha)</math> (विस्तृत करें)
# प्रत्येक नियम <math>A\to\alpha</math> के लिए <math>(1,\varepsilon,A,1,\alpha)</math> (विस्तृत करें)
Line 106: Line 106:
इस प्रकार से ग्रीबैक सामान्य रूप में संदर्भ-मुक्त व्याकरण के लिए, प्रत्येक व्याकरण नियम ''A'' → ''a''γ के लिए (1,γ) ∈ δ(1,a,A) को परिभाषित करने से समतुल्य गैर-डीटरमिनिस्ट पुशडाउन ऑटोमेटन भी प्राप्त होता है।<ref name="Hopcroft.Ullman.1979">{{cite book | isbn=0-201-02988-X | author=John E. Hopcroft and Jeffrey D. Ullman | title=ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय| location=Reading/MA | publisher=Addison-Wesley | year=1979 | url-access=registration | url=https://archive.org/details/introductiontoau00hopc }}</ref>{{rp|115}}
इस प्रकार से ग्रीबैक सामान्य रूप में संदर्भ-मुक्त व्याकरण के लिए, प्रत्येक व्याकरण नियम ''A'' → ''a''γ के लिए (1,γ) ∈ δ(1,a,A) को परिभाषित करने से समतुल्य गैर-डीटरमिनिस्ट पुशडाउन ऑटोमेटन भी प्राप्त होता है।<ref name="Hopcroft.Ullman.1979">{{cite book | isbn=0-201-02988-X | author=John E. Hopcroft and Jeffrey D. Ullman | title=ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय| location=Reading/MA | publisher=Addison-Wesley | year=1979 | url-access=registration | url=https://archive.org/details/introductiontoau00hopc }}</ref>{{rp|115}}


किसी दिए गए पीडीए के लिए व्याकरण ढूंढना इतना सरल नहीं है। चाल पीडीए के दो स्थितियों को व्याकरण के गैर-टर्मिनलों में कोड करने की है।
किसी दिए गए पीडीए के लिए व्याकरण ढूंढना इतना सरल नहीं है। चाल पीडीए की दो स्थितियों को व्याकरण के गैर-टर्मिनलों में कोड करने की है।


'''प्रमेय.''' प्रत्येक पुशडाउन ऑटोमेटन <math>M</math> के लिए एक संदर्भ-मुक्त व्याकरण <math>G</math> का निर्माण किया जा सकता है जैसे कि {{nobr|<math>N(M)=L(G)</math>.}}<ref name="Hopcroft.Ullman.1979"/>{{rp|116}}
'''प्रमेय.''' प्रत्येक पुशडाउन ऑटोमेटन <math>M</math> के लिए एक संदर्भ-मुक्त व्याकरण <math>G</math> का निर्माण किया जा सकता है जैसे कि {{nobr|<math>N(M)=L(G)</math>.}}<ref name="Hopcroft.Ullman.1979"/>{{rp|116}}
Line 116: Line 116:
==पीडीए और ट्यूरिंग मशीनें==
==पीडीए और ट्यूरिंग मशीनें==


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


इस प्रकार से पीडीए टीएम से दुर्बल है, इसे इस तथ्य से समझा जा सकता है कि प्रक्रिया 'पॉप' कुछ डेटा को हटा देती है। पीडीए को टीएम जितना दृढ बनाने के लिए, हमें 'पॉप' के माध्यम से लुप्त हुए डेटा को कहीं सहेजना होगा। हम दूसरा स्टैक प्रारम्भ करके इसे प्राप्त कर सकते हैं। अंतिम अनुच्छेद के पीडीए के टीएम मॉडल में, यह 3 टेप वाले टीएम के बराबर है, जहां पहला टेप मात्र-पढ़ने के लिए इनपुट टेप है, और दूसरा और तीसरा टेप 'पुश और पॉप' (स्टैक) टेप हैं। ऐसे पीडीए के लिए किसी दिए गए टीएम का अनुकरण करने के लिए, हम दोनों स्टैक को रिक्त रखते हुए, पहले टेप में पीडीए का इनपुट देते हैं। इसके बाद यह इनपुट टेप से सभी इनपुट को पहले स्टैक तक पुशडाउन करता है। जब संपूर्ण इनपुट को पहले स्टैक में स्थानांतरित कर दिया जाता है, तो अब हम सामान्य टीएम के जैसे आगे बढ़ते हैं, जहां टेप पर दाईं ओर जाना पहले स्टैक से प्रतीक को पॉप करने और दूसरे स्टैक में (संभवतः अपडेट किए गए) प्रतीक को पुशडाउन के समान है, और बाईं ओर जाने से दूसरे स्टैक से प्रतीक को पॉप करने और (संभवतः अपडेट किए गए) प्रतीक को पहले स्टैक में पुशडाउन के समान होता है। इसलिए हमारे निकट 2 स्टैक वाला पीडीए है जो किसी भी टीएम का अनुकरण कर सकता है।
इस प्रकार से पीडीए टीएम से दुर्बल है, इसे इस तथ्य से समझा जा सकता है कि प्रक्रिया 'पॉप' कुछ डेटा को हटा देती है। पीडीए को टीएम जितना दृढ बनाने के लिए, हमें 'पॉप' के माध्यम से लुप्त हुए डेटा को कहीं सहेजना होगा। हम दूसरा स्टैक प्रारम्भ करके इसे प्राप्त कर सकते हैं। अंतिम अनुच्छेद के पीडीए के टीएम मॉडल में, यह 3 टेप वाले टीएम के बराबर है, जहां पहला टेप मात्र-पढ़ने के लिए इनपुट टेप है, और दूसरा और तीसरा टेप 'पुश और पॉप' (स्टैक) टेप हैं। ऐसे पीडीए के लिए किसी दिए गए टीएम का अनुकरण करने के लिए, हम दोनों स्टैक को रिक्त रखते हुए, पहले टेप में पीडीए का इनपुट देते हैं। इसके बाद यह इनपुट टेप से सभी इनपुट को पहले स्टैक तक पुशडाउन करता है। जब संपूर्ण इनपुट को पहले स्टैक में स्थानांतरित कर दिया जाता है, तो अब हम सामान्य टीएम के जैसे आगे बढ़ते हैं, जहां टेप पर दाईं ओर जाना पहले स्टैक से प्रतीक को पॉप करने और दूसरे स्टैक में (संभवतः अपडेट किए गए) प्रतीक को पुशडाउन के समान है, और बाईं ओर जाने से दूसरे स्टैक से प्रतीक को पॉप करने और (संभवतः अपडेट किए गए) प्रतीक को पहले स्टैक में पुशडाउन के समान होता है। इसलिए हमारे निकट 2 स्टैक वाला पीडीए है जो किसी भी टीएम का अनुकरण कर सकता है।
Line 126: Line 126:
इस प्रकार से जीपीडीए को औपचारिक रूप से 6-टुपल के रूप में परिभाषित किया गया है:
इस प्रकार से जीपीडीए को औपचारिक रूप से 6-टुपल के रूप में परिभाषित किया गया है:
:<math>M=(Q,\  \Sigma,\  \Gamma,\  \delta, \ q_{0}, \ F)</math>
:<math>M=(Q,\  \Sigma,\  \Gamma,\  \delta, \ q_{0}, \ F)</math>
जहाँ <math>Q, \Sigma\,, \Gamma\,, q_0</math>, और {{tmath|F}} को पीडीए के जैसे ही परिभाषित किया गया है।
जहाँ <math>Q, \Sigma\,, \Gamma\,, q_0</math>, और {{tmath|F}} को पीडीए के जैसे एक ही परिभाषित किया गया है।
:<math>\,\delta</math>: <math>Q \times  \Sigma_{\epsilon}  \times \Gamma^{*} \longrightarrow P( Q \times \Gamma^{*} )</math>
:<math>\,\delta</math>: <math>Q \times  \Sigma_{\epsilon}  \times \Gamma^{*} \longrightarrow P( Q \times \Gamma^{*} )</math>
संक्रमण फलन है।
संक्रमण फलन है।
Line 140: Line 140:
जहाँ <math>q_1, q_2 \in Q, w \in\Sigma_{\epsilon}, x_1, x_2,\ldots,x_m\in\Gamma^{*}, m\geq 0, y_1, y_2,\ldots, y_n\in\Gamma^{*}, n\geq 0</math>।
जहाँ <math>q_1, q_2 \in Q, w \in\Sigma_{\epsilon}, x_1, x_2,\ldots,x_m\in\Gamma^{*}, m\geq 0, y_1, y_2,\ldots, y_n\in\Gamma^{*}, n\geq 0</math>।


इस प्रकार से पीडीए के लिए निम्नलिखित बदलावों का निर्माण करें:
इस प्रकार से पीडीए के लिए निम्नलिखित परिवर्तनों का निर्माण करें:


:<math>\begin{array}{lcl}
:<math>\begin{array}{lcl}
Line 160: Line 160:
\end{array}</math>
\end{array}</math>
==स्टैक ऑटोमेटन==
==स्टैक ऑटोमेटन==
अतः पुशडाउन ऑटोमेटा के सामान्यीकरण के रूप में, गिंसबर्ग, ग्रीबैक और हैरिसन (1967) ने '''स्टैक ऑटोमेटा''' की जांच की, जो अतिरिक्त रूप से इनपुट स्ट्रिंग में बाएं या दाएं चरण रख सकता है (बाहर विसर्पण से रोकने के लिए विशेष एंडमार्कर प्रतीकों से घिरा हुआ), और ऊपर या नीचे चरण रख सकता है मात्र-पढ़ने योग्य मोड में स्टैक करें।<ref>{{cite journal| author=Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison| title=स्टैक ऑटोमेटा और संकलन| journal=J. ACM| year=1967| volume=14| number=1| pages=172–201| doi=10.1145/321371.321385| doi-access=free}}</ref><ref>{{cite journal| author=Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison| title=वन-वे स्टैक ऑटोमेटा| journal=J. ACM| year=1967| volume=14| number=2| pages=389–418| doi=10.1145/321386.321403}}</ref> स्टैक ऑटोमेटन को अव्यामार्जनीय कहा जाता है यदि यह स्टैक से कभी नहीं निकलता है। गैरडेटर्मिनिस्टिक, गैररेज़िंग स्टैक ऑटोमेटा द्वारा स्वीकृत लैंग्वेज का वर्ग [[NSPACE|एनस्पेस]](n<sup>2</sup>) है, जो संदर्भ-संवेदनशील लैंग्वेज कम्प्यूटेशनल गुणों का सुपरसेट है।<ref name="Hopcroft.Ullman.1967">{{cite journal|author1=John E. Hopcroft |author2=Jeffrey D. Ullman | title=नॉनरेज़िंग स्टैक ऑटोमेटा| journal=Journal of Computer and System Sciences| year=1967| volume=1| number=2| pages=166–186| doi=10.1016/s0022-0000(67)80013-8| doi-access=free}}</ref> डीटरमिनिस्ट, गैररेज़िंग स्टैक ऑटोमेटा द्वारा स्वीकृत लैंग्वेज का वर्ग [[DSPACE|डी]][[NSPACE|स्पेस]](n⋅log(n)) है।<ref name="Hopcroft.Ullman.1967"/>
अतः पुशडाउन ऑटोमेटा के सामान्यीकरण के रूप में, गिंसबर्ग, ग्रीबैक और हैरिसन (1967) ने '''स्टैक ऑटोमेटा''' की जांच की थी, जो अतिरिक्त रूप से इनपुट स्ट्रिंग में बाएं या दाएं चरण रख सकता है (बाहर विसर्पण से रोकने के लिए विशेष एंडमार्कर प्रतीकों से घिरा हुआ), और ऊपर या निम्न चरण रख सकता है मात्र-पढ़ने योग्य मोड में स्टैक करें।<ref>{{cite journal| author=Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison| title=स्टैक ऑटोमेटा और संकलन| journal=J. ACM| year=1967| volume=14| number=1| pages=172–201| doi=10.1145/321371.321385| doi-access=free}}</ref><ref>{{cite journal| author=Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison| title=वन-वे स्टैक ऑटोमेटा| journal=J. ACM| year=1967| volume=14| number=2| pages=389–418| doi=10.1145/321386.321403}}</ref> स्टैक ऑटोमेटन को अव्यामार्जनीय कहा जाता है यदि यह स्टैक से कभी नहीं निकलता है। गैरडेटर्मिनिस्टिक, गैर इरेज़िंग स्टैक ऑटोमेटा द्वारा स्वीकृत लैंग्वेज का समूह [[NSPACE|एनस्पेस]](n<sup>2</sup>) है, जो संदर्भ-संवेदनशील लैंग्वेज कम्प्यूटेशनल गुणों का सुपरसेट है।<ref name="Hopcroft.Ullman.1967">{{cite journal|author1=John E. Hopcroft |author2=Jeffrey D. Ullman | title=नॉनरेज़िंग स्टैक ऑटोमेटा| journal=Journal of Computer and System Sciences| year=1967| volume=1| number=2| pages=166–186| doi=10.1016/s0022-0000(67)80013-8| doi-access=free}}</ref> डीटरमिनिस्ट, गैर इरेज़िंग स्टैक ऑटोमेटा द्वारा स्वीकृत लैंग्वेज का समूह [[DSPACE|डी]][[NSPACE|स्पेस]](n⋅log(n)) है।<ref name="Hopcroft.Ullman.1967"/>
==वैकल्पिक पुशडाउन ऑटोमेटा==
==वैकल्पिक पुशडाउन ऑटोमेटा==
इस प्रकार से एक '''वैकल्पिक पुशडाउन ऑटोमेटन (एपीडीए)''' स्थिति सेट के साथ पुशडाउन ऑटोमेटन
इस प्रकार से एक '''वैकल्पिक पुशडाउन ऑटोमेटन (एपीडीए)''' स्थिति समूह के साथ पुशडाउन ऑटोमेटन


* <math>Q=Q_\exists \cup Q_\forall</math> जहाँ <math>Q_\exists \cap Q_\forall=\emptyset</math> है।
* <math>Q=Q_\exists \cup Q_\forall</math> जहाँ <math>Q_\exists \cap Q_\forall=\emptyset</math> है।


<math>Q_\exists</math> और <math>Q_\forall</math> में स्थिति को अस्तित्व संबंधी सम्मान सार्वभौमिक कहा जाता है। अस्तित्वगत स्थिति में एपीडीए गैर-डीटरमिनिस्ट रूप से अगले स्थिति को चुनता है और स्वीकार करता है यदि परिणामी गणनाओं में से कम से कम स्वीकार करता है। सार्वभौमिक स्थिति में एपीडीए सभी अगले स्थितियों में चला जाता है और यदि सभी परिणामी गणनाएँ स्वीकार हो जाती हैं तो स्वीकार करता है।
<math>Q_\exists</math> और <math>Q_\forall</math> में स्थिति को अस्तित्व संबंधी सम्मान सार्वभौमिक कहा जाता है। अस्तित्वगत स्थिति में एपीडीए गैर-डीटरमिनिस्ट रूप से अगली स्थिति को चुनता है और स्वीकार करता है यदि परिणामी गणनाओं में से कम से कम स्वीकार करता है। सार्वभौमिक स्थिति में एपीडीए सभी अगली स्थितियों में चला जाता है और यदि सभी परिणामी गणनाएँ स्वीकार हो जाती हैं तो स्वीकार करता है।


अतः यह मॉडल चंद्रा, [[डेक्सटर कोज़ेन]] और [[लैरी स्टॉकमेयर]] द्वारा प्रस्तुत किया गया था।<ref name="ChandraKozen1981">{{cite journal|last1=Chandra|first1=Ashok K.|last2=Kozen|first2=Dexter C.|last3=Stockmeyer|first3=Larry J.|title=अदल-बदल|journal=Journal of the ACM|volume=28|issue=1|year=1981|pages=114–133|issn=0004-5411|doi=10.1145/322234.322243}}</ref> लैडनर, लिप्टन और स्टॉकमेयर ने सिद्ध किया कि<ref name="LadnerLipton1984">{{cite journal|last1=Ladner|first1=Richard E.|last2=Lipton|first2=Richard J.|last3=Stockmeyer|first3=Larry J.|title=वैकल्पिक पुशडाउन और स्टैक ऑटोमेटा|journal=SIAM Journal on Computing|volume=13|issue=1|year=1984|pages=135–155|issn=0097-5397|doi=10.1137/0213010}}</ref> यह मॉडल [[EXPTIME]] के ​​बराबर है अर्थात एक लैंग्वेज को कुछ एपीडीए द्वारा स्वीकार किया जाता है, और मात्र तभी, इसे एक घातीय-समय एल्गोरिदम द्वारा निर्धारित किया जा सकता है।
अतः यह मॉडल चंद्रा, [[डेक्सटर कोज़ेन]] और [[लैरी स्टॉकमेयर]] द्वारा प्रस्तुत किया गया था।<ref name="ChandraKozen1981">{{cite journal|last1=Chandra|first1=Ashok K.|last2=Kozen|first2=Dexter C.|last3=Stockmeyer|first3=Larry J.|title=अदल-बदल|journal=Journal of the ACM|volume=28|issue=1|year=1981|pages=114–133|issn=0004-5411|doi=10.1145/322234.322243}}</ref> लैडनर, लिप्टन और स्टॉकमेयर ने सिद्ध किया कि<ref name="LadnerLipton1984">{{cite journal|last1=Ladner|first1=Richard E.|last2=Lipton|first2=Richard J.|last3=Stockmeyer|first3=Larry J.|title=वैकल्पिक पुशडाउन और स्टैक ऑटोमेटा|journal=SIAM Journal on Computing|volume=13|issue=1|year=1984|pages=135–155|issn=0097-5397|doi=10.1137/0213010}}</ref> यह मॉडल [[EXPTIME]] के ​​बराबर है अर्थात एक लैंग्वेज को कुछ एपीडीए द्वारा स्वीकार किया जाता है, और मात्र तभी, इसे एक घातीय-समय एल्गोरिदम द्वारा निर्धारित किया जा सकता है।

Revision as of 11:15, 27 July 2023

Combinational logicFinite-state machinePushdown automatonTuring machineAutomata theoryAutomata theory.svg
About this image
Classes of automata
(Clicking on each layer gets an article on that subject)

गणना के सिद्धांत में, सैद्धांतिक कंप्यूटर विज्ञान की शाखा, पुशडाउन ऑटोमेटन (पीडीए) है एक प्रकार का ऐसा ऑटोमेटा सिद्धांत जो एक स्टैक (डेटा संरचना) को नियोजित करता है।

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

डीटरमिनिस्ट पुशडाउन ऑटोमेटा सभी डीटरमिनिस्ट डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज को पहचान सकता है जबकि गैर-डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज इस लैंग्वेज को पहचान सकता है, पूर्व का उपयोग प्रायः पार्सर डिज़ाइन में किया जाता है।

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

अनौपचारिक विवरण

पुशडाउन ऑटोमेटन का आरेख

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

  1. यह स्टैक के शीर्ष का उपयोग यह निर्धारित करने के लिए कर सकता है कि कौन सा ट्रांजीशन लेना है।
  2. यह ट्रांजीशन निष्पादित करने के भाग के रूप में स्टैक में परिवर्तन कर सकता है।

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

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

संक्रमण संबंध
  • आरंभिक अवस्था है।
  • प्रारंभिक स्टैक प्रतीक है।
  • स्वीकार करने वाली स्थितियों का समूह है।

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

इस प्रकार से अनेक ग्रंथों में[2]: 110  संक्रमण संबंध को (समतुल्य) औपचारिकता द्वारा प्रतिस्थापित किया जाता है, जहां

  • संक्रमण फलन है, जो प्रतिचित्रण को के परिमित उपसमुच्चय में प्रतिचित्रित करता है।

यहाँ में इनपुट पर पढ़ते समय स्टैक पर की स्थिति में सभी संभावित क्रियाएं सम्मिलित हैं। उदाहरण के लिए कोई ठीक तब लिखता है जब क्योंकि । ध्यान दें कि इस परिभाषा में परिमित आवश्यक है।

गणना

पुशडाउन ऑटोमेटन का चरण

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

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

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

इस प्रकार से औपचारिक रूप से कोई परिभाषित करता है

  1. साथ और (अंतिम स्थिति)
  2. साथ (रिक्त हीप)

अतः यहाँ चरण संबंध के प्रतिवर्ती संवरक और सकर्मक संवरक का प्रतिनिधित्व करता है जिसका अर्थ है निरंतर चरणों की कोई भी संख्या (शून्य, एक या अधिक)।

इस प्रकार से प्रत्येक एकल पुशडाउन ऑटोमेटन के लिए इन दोनों लैंग्वेज का कोई संबंध नहीं होना चाहिए: वे समान हो सकते हैं परन्तु सामान्यतः ऐसा नहीं होता है। ऑटोमेटन के विनिर्देश में स्वीकृति का इच्छित विधि भी सम्मिलित होना चाहिए। सभी पुशडाउन ऑटोमेटा पर आधारित दोनों स्वीकृति प्रतिबंधें लैंग्वेज के एक ही समूह को परिभाषित करती हैं।

प्रमेय. प्रत्येक पुशडाउन ऑटोमेटन के लिए कोई पुशडाउन ऑटोमेटन का निर्माण किया जा सकता है जैसे कि , और इसके विपरीत, प्रत्येक पुशडाउन ऑटोमेटन के लिए एक पुशडाउन ऑटोमेटन का निर्माण किया जा सकता है जैसे कि

उदाहरण

इस प्रकार से निम्नलिखित पीडीए का औपचारिक विवरण है जो अंतिम स्थिति द्वारा भाषा को पहचानता है:

के लिए पीडीए (अंतिम स्थिति के अनुसार)

, जहाँ

  • अवस्था:
  • इनपुट वर्णमाला:
  • स्टैक वर्णमाला:
  • प्रारंभ स्थिति:
  • स्टार्ट स्टैक प्रतीक: Z
  • स्वीकार करने की स्थिति:

अतः इस प्रकार से संक्रमण संबंध में निम्नलिखित छह निर्देश सम्मिलित हैं:

,
,
,
,
, और

शब्दों में, पहले दो निर्देश कहते हैं कि स्थिति p में जब भी प्रतीक 0 पढ़ा जाता है, तो एक A को स्टैक पर पुश किया जाता है। प्रतीक A को दूसरे A के ऊपर पुश करने को शीर्ष A को AA द्वारा प्रतिस्थापित करने के रूप में औपचारिक रूप दिया जाता है (और इसी प्रकार Z के शीर्ष पर प्रतीक A को पुश करने के लिए)।

तीसरे और चौथे निर्देश कहते हैं कि, किसी भी क्षण ऑटोमेटन स्थित p से अवस्था q तक जा सकता है।

पाँचवाँ निर्देश कहता है कि अवस्था q में, प्रत्येक प्रतीक 1 पढ़ने के लिए, एक A पॉप किया जाता है।

अंत में, छठा निर्देश कहता है कि मशीन अवस्था q से स्वीकार करने योग्य अवस्था r की ओर तभी जा सकती है, जब स्टैक में एकल Z हो।

ऐसा लगता है कि पीडीए के लिए सामान्यतः उपयोग किया जाने वाला कोई प्रतिनिधित्व नहीं है। यहां हमने निर्देश को स्थिति p से अवस्था q तक एक किनारे द्वारा दर्शाया गया है जिसे द्वारा लेबल किया गया है; (a पढ़ें; A को से परिवर्तित करें)।

गणना प्रक्रिया को समझना

0011 के लिए गणना स्वीकार करना

इस प्रकार से निम्नलिखित दर्शाता है कि उपरोक्त पीडीए विभिन्न इनपुट स्ट्रिंग पर कैसे गणना करता है। चरण चिह्न ⊢ से सबस्क्रिप्ट M को यहां हटा दिया गया है।

  1. Input string = 0011. There are various computations, depending on the moment the move from state p to state q is made. Only one of these is accepting.

    1. The final state is accepting, but the input is not accepted this way as it has not been read.

    2. No further steps possible.

    3. Accepting computation: ends in accepting state, while complete input has been read.
  2. Input string = 00111. Again there are various computations. None of these is accepting.

    1. The final state is accepting, but the input is not accepted this way as it has not been read.

    2. No further steps possible.

    3. The final state is accepting, but the input is not accepted this way as it has not been (completely) read.

पीडीए और संदर्भ-मुक्त लैंग्वेज

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

इस प्रकार से तकनीकी रूप से, संदर्भ-मुक्त व्याकरण को देखते हुए, पीडीए की एक ही स्थिति है, 1, और इसका संक्रमण संबंध इस प्रकार बनाया गया है।

  1. प्रत्येक नियम के लिए (विस्तृत करें)
  2. प्रत्येक टर्मिनल प्रतीक के लिए (मैच)

अतः पीडीए रिक्त स्टैक द्वारा स्वीकार करता है। इसका प्रारंभिक स्टैक प्रतीक व्याकरण का प्रारंभ प्रतीक है।

इस प्रकार से ग्रीबैक सामान्य रूप में संदर्भ-मुक्त व्याकरण के लिए, प्रत्येक व्याकरण नियम Aaγ के लिए (1,γ) ∈ δ(1,a,A) को परिभाषित करने से समतुल्य गैर-डीटरमिनिस्ट पुशडाउन ऑटोमेटन भी प्राप्त होता है।[2]: 115 

किसी दिए गए पीडीए के लिए व्याकरण ढूंढना इतना सरल नहीं है। चाल पीडीए की दो स्थितियों को व्याकरण के गैर-टर्मिनलों में कोड करने की है।

प्रमेय. प्रत्येक पुशडाउन ऑटोमेटन के लिए एक संदर्भ-मुक्त व्याकरण का निर्माण किया जा सकता है जैसे कि .[2]: 116 

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

इस प्रकार से दो स्टैक तक एक्सेस वाला सीमित ऑटोमेटन अधिक शक्तिशाली उपकरण है, जो ट्यूरिंग मशीन की शक्ति के बराबर है।[2]: 171  रैखिक परिबद्ध ऑटोमेटन उपकरण है जो पुशडाउन ऑटोमेटन से अधिक शक्तिशाली है परन्तु ट्यूरिंग मशीन से कम शक्तिशाली है।[note 1]

पीडीए और ट्यूरिंग मशीनें

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

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

सामान्यीकृत पुशडाउन ऑटोमेटन (जीपीडीए)

अतः जीपीडीए पीडीए है जो स्टैक पर कुछ ज्ञात लंबाई की पूर्ण स्ट्रिंग लिखता है या चरण में स्टैक से पूर्ण स्ट्रिंग को हटा देता है।

इस प्रकार से जीपीडीए को औपचारिक रूप से 6-टुपल के रूप में परिभाषित किया गया है:

जहाँ , और को पीडीए के जैसे एक ही परिभाषित किया गया है।

:

संक्रमण फलन है।

इस प्रकार से जीपीडीए के लिए गणना नियम पीडीए के समान हैं, अतिरिक्त इसके कि ' और अब प्रतीकों के अतिरिक्त तार हैं।

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

निम्नलिखित सिमुलेशन का उपयोग करके जीपीडीए और पीडीए की तुल्यता के लिए विश्लेषणात्मक प्रमाण तैयार किया जा सकता है:

मान लीजिए जीपीडीए का परिवर्तन हो

जहाँ

इस प्रकार से पीडीए के लिए निम्नलिखित परिवर्तनों का निर्माण करें:

स्टैक ऑटोमेटन

अतः पुशडाउन ऑटोमेटा के सामान्यीकरण के रूप में, गिंसबर्ग, ग्रीबैक और हैरिसन (1967) ने स्टैक ऑटोमेटा की जांच की थी, जो अतिरिक्त रूप से इनपुट स्ट्रिंग में बाएं या दाएं चरण रख सकता है (बाहर विसर्पण से रोकने के लिए विशेष एंडमार्कर प्रतीकों से घिरा हुआ), और ऊपर या निम्न चरण रख सकता है मात्र-पढ़ने योग्य मोड में स्टैक करें।[4][5] स्टैक ऑटोमेटन को अव्यामार्जनीय कहा जाता है यदि यह स्टैक से कभी नहीं निकलता है। गैरडेटर्मिनिस्टिक, गैर इरेज़िंग स्टैक ऑटोमेटा द्वारा स्वीकृत लैंग्वेज का समूह एनस्पेस(n2) है, जो संदर्भ-संवेदनशील लैंग्वेज कम्प्यूटेशनल गुणों का सुपरसेट है।[1] डीटरमिनिस्ट, गैर इरेज़िंग स्टैक ऑटोमेटा द्वारा स्वीकृत लैंग्वेज का समूह डीस्पेस(n⋅log(n)) है।[1]

वैकल्पिक पुशडाउन ऑटोमेटा

इस प्रकार से एक वैकल्पिक पुशडाउन ऑटोमेटन (एपीडीए) स्थिति समूह के साथ पुशडाउन ऑटोमेटन

  • जहाँ है।

और में स्थिति को अस्तित्व संबंधी सम्मान सार्वभौमिक कहा जाता है। अस्तित्वगत स्थिति में एपीडीए गैर-डीटरमिनिस्ट रूप से अगली स्थिति को चुनता है और स्वीकार करता है यदि परिणामी गणनाओं में से कम से कम स्वीकार करता है। सार्वभौमिक स्थिति में एपीडीए सभी अगली स्थितियों में चला जाता है और यदि सभी परिणामी गणनाएँ स्वीकार हो जाती हैं तो स्वीकार करता है।

अतः यह मॉडल चंद्रा, डेक्सटर कोज़ेन और लैरी स्टॉकमेयर द्वारा प्रस्तुत किया गया था।[6] लैडनर, लिप्टन और स्टॉकमेयर ने सिद्ध किया कि[7] यह मॉडल EXPTIME के ​​बराबर है अर्थात एक लैंग्वेज को कुछ एपीडीए द्वारा स्वीकार किया जाता है, और मात्र तभी, इसे एक घातीय-समय एल्गोरिदम द्वारा निर्धारित किया जा सकता है।

इस प्रकार से ऐज़िकोविट्ज़ और कमिंसकी[8] ने सिंक्रोनाइज्ड अल्टरनेटिंग पुशडाउन ऑटोमेटा (एसएपीडीए) प्रस्तुत किया गया जो कि संयोजक व्याकरण के समतुल्य है, उसी प्रकार जैसे गैर-डीटरमिनिस्ट पीडीए संदर्भ-मुक्त व्याकरण के समतुल्य है।

यह भी देखें

टिप्पणियाँ

  1. Linear bounded automata are acceptors for the class of context-sensitive languages,[2]: 225  which is a proper superclass of the context-free languages, and a proper subclass of Turing-recognizable (i.e. recursively enumerable) languages.[2]: 228 

संदर्भ

  1. 1.0 1.1 1.2 John E. Hopcroft; Jeffrey D. Ullman (1967). "नॉनरेज़िंग स्टैक ऑटोमेटा". Journal of Computer and System Sciences. 1 (2): 166–186. doi:10.1016/s0022-0000(67)80013-8.
  2. 2.0 2.1 2.2 2.3 2.4 2.5 John E. Hopcroft and Jeffrey D. Ullman (1979). ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय. Reading/MA: Addison-Wesley. ISBN 0-201-02988-X.
  3. Holzer, Markus; Kutrib, Martin (2019). "Non-Recursive Trade-Offs Are "Almost Everywhere"". Computing with Foresight and Industry. 11558: 25–36. doi:10.1007/978-3-030-22996-2_3. This follows from the quoted [22, Proposition 7] and the stated observation that any deterministic pushdown automaton can be converted into an equivalent finite automaton[clarify] of at most doubly-exponential size.
  4. Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison (1967). "स्टैक ऑटोमेटा और संकलन". J. ACM. 14 (1): 172–201. doi:10.1145/321371.321385.
  5. Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison (1967). "वन-वे स्टैक ऑटोमेटा". J. ACM. 14 (2): 389–418. doi:10.1145/321386.321403.
  6. Chandra, Ashok K.; Kozen, Dexter C.; Stockmeyer, Larry J. (1981). "अदल-बदल". Journal of the ACM. 28 (1): 114–133. doi:10.1145/322234.322243. ISSN 0004-5411.
  7. Ladner, Richard E.; Lipton, Richard J.; Stockmeyer, Larry J. (1984). "वैकल्पिक पुशडाउन और स्टैक ऑटोमेटा". SIAM Journal on Computing. 13 (1): 135–155. doi:10.1137/0213010. ISSN 0097-5397.
  8. Aizikowitz, Tamar; Kaminski, Michael (2011). "LR(0) Conjunctive Grammars and Deterministic Synchronized Alternating Pushdown Automata". Computer Science – Theory and Applications. Lecture Notes in Computer Science. Vol. 6651. pp. 345–358. doi:10.1007/978-3-642-20712-9_27. ISBN 978-3-642-20711-2. ISSN 0302-9743.

बाह्य संबंध

  • JFLAP, simulator for several types of automata including nondeterministic pushdown automata
  • CoAn, another simulator for several machine types including nondeterministic pushdown automata (C++, Windows, Linux, MacOS)