पुशडाउन ऑटोमेटन: Difference between revisions
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
गणना के सिद्धांत में, [[सैद्धांतिक कंप्यूटर विज्ञान]] की शाखा, पुशडाउन ऑटोमेटन (पीडीए) है एक प्रकार का [[ऑटोमेटा सिद्धांत]] जो एक [[स्टैक (डेटा संरचना)]] को नियोजित करता है। | गणना के सिद्धांत में, [[सैद्धांतिक कंप्यूटर विज्ञान]] की शाखा, पुशडाउन ऑटोमेटन (पीडीए) है एक प्रकार का [[ऑटोमेटा सिद्धांत]] जो एक [[स्टैक (डेटा संरचना)]] को नियोजित करता है। | ||
मशीनों द्वारा क्या गणना की जा सकती है, इसके सिद्धांतों में पुशडाउन ऑटोमेटा का उपयोग किया जाता है। वे परिमित-स्थिति मशीनों की तुलना में अधिक सक्षम हैं परन्तु [[ट्यूरिंग मशीन|ट्यूरिंग मशीनों]] की तुलना में कम सक्षम हैं ( पीडीए और ट्यूरिंग मशीनें देखें)। | मशीनों द्वारा क्या गणना की जा सकती है, इसके सिद्धांतों में पुशडाउन ऑटोमेटा का उपयोग किया जाता है। वे परिमित-स्थिति मशीनों की तुलना में अधिक सक्षम हैं परन्तु [[ट्यूरिंग मशीन|ट्यूरिंग मशीनों]] की तुलना में कम सक्षम हैं (पीडीए और ट्यूरिंग मशीनें देखें)। | ||
[[नियतात्मक पुशडाउन ऑटोमेटा|डीटरमिनिस्ट पुशडाउन ऑटोमेटा]] सभी डीटरमिनिस्ट [[संदर्भ-मुक्त भाषा|डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज]] को पहचान सकता है जबकि गैर-डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज लैंग्वेज को पहचान सकता है, पूर्व का उपयोग प्रायः [[पार्सर]] डिज़ाइन में किया जाता है। | [[नियतात्मक पुशडाउन ऑटोमेटा|डीटरमिनिस्ट पुशडाउन ऑटोमेटा]] सभी डीटरमिनिस्ट [[संदर्भ-मुक्त भाषा|डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज]] को पहचान सकता है जबकि गैर-डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज लैंग्वेज को पहचान सकता है, पूर्व का उपयोग प्रायः [[पार्सर]] डिज़ाइन में किया जाता है। | ||
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}} संक्रमण संबंध को (समतुल्य) औपचारिकता द्वारा प्रतिस्थापित किया जाता है, जहां | ||
* <math>\delta</math> संक्रमण | * <math>\delta</math> संक्रमण फलन है, जो प्रतिचित्रण <math>Q \times (\Sigma \cup \{\varepsilon\}) \times \Gamma</math> को <math>Q \times \Gamma^*</math> के परिमित उपसमुच्चय में प्रतिचित्रित करता है। | ||
यहाँ <math>\delta(p, a, A)</math> | यहाँ <math>\delta(p, a, A)</math> में इनपुट पर <math>a</math> पढ़ते समय स्टैक पर <math>A</math> की स्थिति <math>p</math> में सभी संभावित क्रियाएं सम्मिलित हैं। उदाहरण के लिए कोई <math>\delta(p, a, A) = \{(q, BA)\}</math> ठीक तब लिखता है जब <math>(q, BA) \in \{(q, BA)\}, (q, BA) \in \delta(p, a, A),</math> क्योंकि <math>((p, a, A), \{(q, BA)\}) \in \delta</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>q_{0}</math> में स्टैक पर प्रारंभिक स्टैक प्रतीक <math>Z</math> और इनपुट टेप पर एक स्ट्रिंग <math>w</math> के साथ प्रारम्भ होती है, इस प्रकार प्रारंभिक विवरण <math>(q_{0},w,Z)</math>के साथ। स्वीकार करने की दो विधियाँ हैं। पुशडाउन ऑटोमेटन या तो अंतिम स्थिति द्वारा स्वीकार करता है, जिसका अर्थ है कि इसके इनपुट को पढ़ने के बाद ऑटोमेटन एक स्वीकार्य स्थिति (<math>F</math> में) तक पहुंच जाता है, या यह रिक्त स्टैक (<math>\varepsilon</math>), द्वारा स्वीकार करता है, जिसका अर्थ है कि इसके इनपुट को पढ़ने के बाद ऑटोमेटन अपने स्टैक को रिक्त कर देता है। पहला स्वीकृति मोड आंतरिक मेमोरी (स्थिति) का उपयोग करता है, दूसरा बाह्य मेमोरी (स्टैक) का। | |||
पुशडाउन ऑटोमेटन की गणना चरणों का क्रम है। गणना | |||
स्वीकार करने | |||
औपचारिक रूप से कोई परिभाषित करता है | औपचारिक रूप से कोई परिभाषित करता है | ||
# <math>L(M) = \{ w\in\Sigma^* | (q_{0},w,Z) \vdash_M^* (f,\varepsilon,\gamma)</math> साथ <math>f \in F</math> और <math>\gamma \in \Gamma^* \}</math> (अंतिम स्थिति) | # <math>L(M) = \{ w\in\Sigma^* | (q_{0},w,Z) \vdash_M^* (f,\varepsilon,\gamma)</math> साथ <math>f \in F</math> और <math>\gamma \in \Gamma^* \}</math> (अंतिम स्थिति) | ||
# <math>N(M) = \{ w\in\Sigma^* | (q_{0},w,Z) \vdash_M^* (q,\varepsilon,\varepsilon)</math> साथ <math>q \in Q \}</math> ( | # <math>N(M) = \{ w\in\Sigma^* | (q_{0},w,Z) \vdash_M^* (q,\varepsilon,\varepsilon)</math> साथ <math>q \in Q \}</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>\{0^n1^n \mid n \ge 0 \}</math> को पहचानता है: | ||
[[Image:Pda-example.svg|thumb|200px|के लिए पीडीए <math>\{0^n1^n \mid n \ge 0\}</math><br/>(अंतिम स्थिति के अनुसार)]] | [[Image:Pda-example.svg|thumb|200px|के लिए पीडीए <math>\{0^n1^n \mid n \ge 0\}</math><br/>(अंतिम स्थिति के अनुसार)]] | ||
<math>M=(Q,\ \Sigma,\ \Gamma,\ \delta, \ q_{0},\ Z, \ F)</math>, | <math>M=(Q,\ \Sigma,\ \Gamma,\ \delta, \ q_{0},\ Z, \ F)</math>, जहाँ | ||
*बताता है: <math>Q = \{ p,q,r \}</math> | *बताता है: <math>Q = \{ p,q,r \}</math> | ||
Line 62: | Line 59: | ||
*स्टार्ट स्टैक प्रतीक: {{mvar|Z}} | *स्टार्ट स्टैक प्रतीक: {{mvar|Z}} | ||
* स्वीकार करने की स्थिति: <math>F = \{r\}</math> | * स्वीकार करने की स्थिति: <math>F = \{r\}</math> | ||
संक्रमण संबंध <math>\delta</math> निम्नलिखित छह निर्देश | संक्रमण संबंध <math>\delta</math> में निम्नलिखित छह निर्देश सम्मिलित हैं: | ||
:<math>(p,0,Z,p,AZ)</math>, | :<math>(p,0,Z,p,AZ)</math>, | ||
Line 71: | 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 से अवस्था q तक जा सकता है। | ||
पाँचवाँ निर्देश कहता है कि अवस्था q में, प्रत्येक प्रतीक 1 पढ़ने के लिए, एक A पॉप किया जाता है। | |||
अंत में, छठा निर्देश कहता है कि मशीन | अंत में, छठा निर्देश कहता है कि मशीन अवस्था q से स्वीकार करने योग्य अवस्था r की ओर तभी जा सकती है, जब स्टैक में एकल Z हो। | ||
ऐसा लगता है कि पीडीए के लिए | ऐसा लगता है कि पीडीए के लिए सामान्यतः इस्तेमाल किया जाने वाला कोई प्रतिनिधित्व नहीं है। यहां हमने निर्देश <math>(p,a,A,q,\alpha)</math> को स्थिति p से अवस्था q तक एक किनारे द्वारा दर्शाया गया है जिसे <math>a; A/\alpha</math> द्वारा लेबल किया गया है; ({{mvar|a}} पढ़ें; {{mvar|A}} को <math>\alpha</math> से बदलें)। | ||
=== गणना प्रक्रिया को समझना === | === गणना प्रक्रिया को समझना === | ||
[[Image:Pda-steps.svg|thumb|214px|के लिए गणना स्वीकार करना {{val|0011}}]]निम्नलिखित दर्शाता है कि उपरोक्त पीडीए विभिन्न इनपुट | [[Image:Pda-steps.svg|thumb|214px|के लिए गणना स्वीकार करना {{val|0011}}]]निम्नलिखित दर्शाता है कि उपरोक्त पीडीए विभिन्न इनपुट स्ट्रिंग पर कैसे गणना करता है। चरण चिह्न ⊢ से सबस्क्रिप्ट M को यहां हटा दिया गया है। | ||
{{ordered list|type=lower-alpha | {{ordered list|type=lower-alpha | ||
|1= Input string = 0011. There are various computations, depending on the moment the move from state {{mvar|p}} to state {{mvar|q}} is made. Only one of these is accepting. | |1= Input string = 0011. There are various computations, depending on the moment the move from state {{mvar|p}} to state {{mvar|q}} is made. Only one of these is accepting. | ||
Line 98: | Line 95: | ||
==पीडीए और संदर्भ-मुक्त लैंग्वेज== | ==पीडीए और संदर्भ-मुक्त लैंग्वेज== | ||
प्रत्येक [[संदर्भ-मुक्त व्याकरण]] को समतुल्य गैर-डीटरमिनिस्ट पुशडाउन ऑटोमेटन में परिवर्तित किया जा सकता है। व्याकरण की व्युत्पत्ति प्रक्रिया को सबसे बाएं | प्रत्येक [[संदर्भ-मुक्त व्याकरण]] को समतुल्य गैर-डीटरमिनिस्ट पुशडाउन ऑटोमेटन में परिवर्तित किया जा सकता है। व्याकरण की व्युत्पत्ति प्रक्रिया को सबसे बाएं विधि से अनुकरण किया जाता है। जहां व्याकरण गैरटर्मिनल को फिर से लिखता है, पीडीए अपने स्टैक से सबसे ऊपरी गैरटर्मिनल लेता है और इसे व्याकरणिक नियम (विस्तार) के दाहिने हाथ के भाग से बदल देता है। जहां व्याकरण टर्मिनल प्रतीक उत्पन्न करता है, पीडीए इनपुट से प्रतीक पढ़ता है जब यह स्टैक (मैच) पर सबसे ऊपरी प्रतीक होता है। अर्थ में पीडीए के स्टैक में व्याकरण का असंसाधित डेटा होता है, जो व्युत्पत्ति ट्री के पूर्व-क्रम पथक्रमण के अनुरूप होता है। | ||
तकनीकी रूप से, संदर्भ-मुक्त व्याकरण को देखते हुए, पीडीए की ही स्थिति है, 1, और इसका संक्रमण संबंध इस प्रकार बनाया गया है। | तकनीकी रूप से, संदर्भ-मुक्त व्याकरण को देखते हुए, पीडीए की ही स्थिति है, 1, और इसका संक्रमण संबंध इस प्रकार बनाया गया है। | ||
# <math>(1,\varepsilon,A,1,\alpha)</math> प्रत्येक | # प्रत्येक नियम <math>A\to\alpha</math> के लिए <math>(1,\varepsilon,A,1,\alpha)</math> (विस्तृत करें) | ||
# प्रत्येक टर्मिनल प्रतीक <math>a</math> के लिए <math>(1,a,a,1,\varepsilon)</math> (मैच) | |||
पीडीए | पीडीए रिक्त स्टैक द्वारा स्वीकार करता है। इसका प्रारंभिक स्टैक प्रतीक व्याकरण का प्रारंभ प्रतीक है। | ||
ग्रीबैक सामान्य रूप में संदर्भ-मुक्त व्याकरण के लिए, प्रत्येक व्याकरण नियम | ग्रीबैक सामान्य रूप में संदर्भ-मुक्त व्याकरण के लिए, प्रत्येक व्याकरण नियम ''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>f</math> के लिए और यादृच्छिक रूप से बड़े पूर्णांक <math>n</math> के लिए, नियमित लैंग्वेज का वर्णन करने वाले आकार <math>n</math> का पीडीए होता है, जिसके सबसे छोटे डीपीडीए में कम से कम <math>f(n)</math>स्थितियां होती हैं।<ref>{{cite journal |last1=Holzer |first1=Markus |last2=Kutrib |first2=Martin |title=Non-Recursive Trade-Offs Are “Almost Everywhere” |journal=Computing with Foresight and Industry |date=2019 |volume=11558 |pages=25–36 |doi=10.1007/978-3-030-22996-2_3}} This follows from the quoted [22, Proposition 7] and the stated observation that {{clarify span|any deterministic pushdown automaton can be converted into an equivalent finite automaton|reason=A finite automaton cannot be equivalent to a pushdown automaton, unless the latter doesn't actually use its stack.|date=June 2022}} of at most doubly-exponential size.</ref> कई गैर-नियमित पीडीए के लिए, किसी भी समकक्ष डीपीडीए को असीमित संख्या में स्थितियों की आवश्यकता होगी। | ||
दो स्टैक तक एक्सेस वाला सीमित ऑटोमेटन अधिक शक्तिशाली उपकरण है, जो ट्यूरिंग मशीन की शक्ति के बराबर है।<ref name="Hopcroft.Ullman.1979"/>{{rp|171}} [[रैखिक परिबद्ध ऑटोमेटन]] उपकरण है जो पुशडाउन ऑटोमेटन से अधिक शक्तिशाली है परन्तु ट्यूरिंग मशीन से कम शक्तिशाली है।{{#tag:ref|Linear bounded automata are acceptors for the class of context-sensitive languages,<ref name="Hopcroft.Ullman.1979"/>{{rp|225}} which is a proper superclass of the context-free languages, and a proper subclass of Turing-recognizable (i.e. [[recursively enumerable]]) languages.<ref name="Hopcroft.Ullman.1979"/>{{rp|228}}|group=note}} | दो स्टैक तक एक्सेस वाला सीमित ऑटोमेटन अधिक शक्तिशाली उपकरण है, जो ट्यूरिंग मशीन की शक्ति के बराबर है।<ref name="Hopcroft.Ullman.1979"/>{{rp|171}} [[रैखिक परिबद्ध ऑटोमेटन]] उपकरण है जो पुशडाउन ऑटोमेटन से अधिक शक्तिशाली है परन्तु ट्यूरिंग मशीन से कम शक्तिशाली है।{{#tag:ref|Linear bounded automata are acceptors for the class of context-sensitive languages,<ref name="Hopcroft.Ullman.1979"/>{{rp|225}} which is a proper superclass of the context-free languages, and a proper subclass of Turing-recognizable (i.e. [[recursively enumerable]]) languages.<ref name="Hopcroft.Ullman.1979"/>{{rp|228}}|group=note}} | ||
Line 119: | Line 116: | ||
==पीडीए और ट्यूरिंग मशीनें== | ==पीडीए और ट्यूरिंग मशीनें== | ||
एक पुशडाउन ऑटोमेटन कम्प्यूटेशनल रूप से दो टेपों के साथ 'प्रतिबंधित' ट्यूरिंग मशीन (टीएम) के बराबर है जो निम्नलिखित | एक पुशडाउन ऑटोमेटन कम्प्यूटेशनल रूप से दो टेपों के साथ 'प्रतिबंधित' ट्यूरिंग मशीन (टीएम) के बराबर है जो निम्नलिखित विधि से प्रतिबंधित है- पहले टेप पर, टीएम मात्र इनपुट पढ़ सकता है और बाएं से दाएं जा सकता है (यह परिवर्तन नहीं कर सकता)। दूसरे टेप पर, यह मात्र डेटा को 'पुश' और 'पॉप' कर सकता है। या समकक्ष, यह पढ़ सकता है, लिख सकता है और बाएँ और दाएँ घूम सकता है, इस प्रतिबंध के साथ कि यह प्रत्येक चरण में मात्र ही कार्य कर सकता है या तो स्ट्रिंग (पॉप) में सबसे बाएँ वर्ण को हटाना है या स्ट्रिंग (पुश) में सबसे बाएँ वर्ण के बाएँ अतिरिक्त वर्ण जोड़ना है। | ||
पीडीए टीएम से | पीडीए टीएम से दुर्बल है, इसे इस तथ्य से समझा जा सकता है कि प्रक्रिया 'पॉप' कुछ डेटा को हटा देती है। पीडीए को टीएम जितना दृढ बनाने के लिए, हमें 'पॉप' के माध्यम से लुप्त हुए डेटा को कहीं सहेजना होगा। हम दूसरा स्टैक प्रारम्भ करके इसे प्राप्त कर सकते हैं। अंतिम अनुच्छेद के पीडीए के टीएम मॉडल में, यह 3 टेप वाले टीएम के बराबर है, जहां पहला टेप मात्र-पढ़ने के लिए इनपुट टेप है, और दूसरा और तीसरा टेप 'पुश और पॉप' (स्टैक) टेप हैं। ऐसे पीडीए के लिए किसी दिए गए टीएम का अनुकरण करने के लिए, हम दोनों स्टैक को रिक्त रखते हुए, पहले टेप में पीडीए का इनपुट देते हैं। इसके बाद यह इनपुट टेप से सभी इनपुट को पहले स्टैक तक पुशडाउन करता है। जब संपूर्ण इनपुट को पहले स्टैक में स्थानांतरित कर दिया जाता है, तो अब हम सामान्य टीएम के जैसे आगे बढ़ते हैं, जहां टेप पर दाईं ओर जाना पहले स्टैक से प्रतीक को पॉप करने और दूसरे स्टैक में (संभवतः अपडेट किए गए) प्रतीक को पुशडाउन के समान है, और बाईं ओर जाने से दूसरे स्टैक से प्रतीक को पॉप करने और (संभवतः अपडेट किए गए) प्रतीक को पहले स्टैक में पुशडाउन के समान होता है। इसलिए हमारे निकट 2 स्टैक वाला पीडीए है जो किसी भी टीएम का अनुकरण कर सकता है। | ||
==सामान्यीकृत पुशडाउन ऑटोमेटन (जीपीडीए)== | ==सामान्यीकृत पुशडाउन ऑटोमेटन (जीपीडीए)== | ||
Line 127: | Line 124: | ||
जीपीडीए पीडीए है जो स्टैक पर कुछ ज्ञात लंबाई की पूर्ण स्ट्रिंग लिखता है या चरण में स्टैक से पूर्ण स्ट्रिंग को हटा देता है। | जीपीडीए पीडीए है जो स्टैक पर कुछ ज्ञात लंबाई की पूर्ण स्ट्रिंग लिखता है या चरण में स्टैक से पूर्ण स्ट्रिंग को हटा देता है। | ||
जीपीडीए को औपचारिक रूप से 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>\,\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> | ||
संक्रमण फलन है। | संक्रमण फलन है। | ||
जीपीडीए के लिए गणना नियम पीडीए के समान हैं, | जीपीडीए के लिए गणना नियम पीडीए के समान हैं, अतिरिक्त इसके कि <math>a_{i+1}</math>' और <math>b_{i+1}</math>अब प्रतीकों के अतिरिक्त तार हैं। | ||
जीपीडीए और पीडीए इस मायने में समतुल्य हैं कि यदि कोई लैंग्वेज पीडीए द्वारा मान्यता प्राप्त है, तो इसे जीपीडीए द्वारा भी मान्यता प्राप्त है और इसके विपरीत भी। | जीपीडीए और पीडीए इस मायने में समतुल्य हैं कि यदि कोई लैंग्वेज पीडीए द्वारा मान्यता प्राप्त है, तो इसे जीपीडीए द्वारा भी मान्यता प्राप्त है और इसके विपरीत भी। | ||
Line 139: | Line 136: | ||
निम्नलिखित सिमुलेशन का उपयोग करके जीपीडीए और पीडीए की तुल्यता के लिए विश्लेषणात्मक प्रमाण तैयार किया जा सकता है: | निम्नलिखित सिमुलेशन का उपयोग करके जीपीडीए और पीडीए की तुल्यता के लिए विश्लेषणात्मक प्रमाण तैयार किया जा सकता है: | ||
मान लीजिए <math>\delta (q_{1}, w, x_{1} x_{2} \cdot x_{m}) \longrightarrow (q_{2}, y_{1} y_{2}...y_{n})</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>। | |||
पीडीए के लिए निम्नलिखित बदलावों का निर्माण करें: | पीडीए के लिए निम्नलिखित बदलावों का निर्माण करें: | ||
Line 163: | Line 160: | ||
\end{array}</math> | \end{array}</math> | ||
==स्टैक ऑटोमेटन== | ==स्टैक ऑटोमेटन== | ||
पुशडाउन ऑटोमेटा के सामान्यीकरण के रूप में, गिंसबर्ग, ग्रीबैक और हैरिसन (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=Q_\exists \cup Q_\forall</math> जहाँ <math>Q_\exists \cap Q_\forall=\emptyset</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="AizikowitzKaminski2011">{{cite book|last1=Aizikowitz|first1=Tamar|title=Computer Science – Theory and Applications|last2=Kaminski|first2=Michael|chapter=LR(0) Conjunctive Grammars and Deterministic Synchronized Alternating Pushdown Automata|volume=6651|year=2011|pages=345–358|issn=0302-9743|doi=10.1007/978-3-642-20712-9_27|series=Lecture Notes in Computer Science|isbn=978-3-642-20711-2}}</ref> सिंक्रोनाइज्ड अल्टरनेटिंग पुशडाउन ऑटोमेटा (एसएपीडीए) | ऐज़िकोविट्ज़ और कमिंसकी<ref name="AizikowitzKaminski2011">{{cite book|last1=Aizikowitz|first1=Tamar|title=Computer Science – Theory and Applications|last2=Kaminski|first2=Michael|chapter=LR(0) Conjunctive Grammars and Deterministic Synchronized Alternating Pushdown Automata|volume=6651|year=2011|pages=345–358|issn=0302-9743|doi=10.1007/978-3-642-20712-9_27|series=Lecture Notes in Computer Science|isbn=978-3-642-20711-2}}</ref> ने सिंक्रोनाइज्ड अल्टरनेटिंग पुशडाउन ऑटोमेटा (एसएपीडीए) प्रस्तुत किया गया जो कि [[संयोजक व्याकरण]] के समतुल्य है, उसी प्रकार जैसे गैर-डीटरमिनिस्ट पीडीए संदर्भ-मुक्त व्याकरण के समतुल्य है। | ||
==यह भी देखें== | ==यह भी देखें== | ||
Line 180: | Line 177: | ||
*[[परिमित स्वचालन]] | *[[परिमित स्वचालन]] | ||
* [[काउंटर ऑटोमेटन]] | * [[काउंटर ऑटोमेटन]] | ||
* | * क्यू स्वचालित | ||
==टिप्पणियाँ== | ==टिप्पणियाँ== | ||
Line 189: | Line 186: | ||
* {{cite book | author = Michael Sipser | year = 1997 | title = Introduction to the Theory of Computation | publisher = PWS Publishing | isbn = 0-534-94728-X | author-link = Michael Sipser | url-access = registration | url = https://archive.org/details/introductiontoth00sips }} Section 2।2: Pushdown Automata, pp। 101–114। | * {{cite book | author = Michael Sipser | year = 1997 | title = Introduction to the Theory of Computation | publisher = PWS Publishing | isbn = 0-534-94728-X | author-link = Michael Sipser | url-access = registration | url = https://archive.org/details/introductiontoth00sips }} Section 2।2: Pushdown Automata, pp। 101–114। | ||
* Jean-Michel Autebert, Jean Berstel, Luc Boasson, [http://www-igm.univ-mlv.fr/~berstel/Articles/1997CFLPDA.pdf Context-Free लैंग्वेजs and Push-Down Automata], in: G। Rozenberg, A। Salomaa (eds।), Handbook of Formal लैंग्वेजs, Vol। 1, Springer-Verlag, 1997, 111–174। | * Jean-Michel Autebert, Jean Berstel, Luc Boasson, [http://www-igm.univ-mlv.fr/~berstel/Articles/1997CFLPDA.pdf Context-Free लैंग्वेजs and Push-Down Automata], in: G। Rozenberg, A। Salomaa (eds।), Handbook of Formal लैंग्वेजs, Vol। 1, Springer-Verlag, 1997, 111–174। | ||
== | ==बाह्य संबंध== | ||
* [https://www.jflap.org JFLAP], simulator for several types of automata including nondeterministic pushdown automata | * [https://www.jflap.org JFLAP], simulator for several types of automata including nondeterministic pushdown automata | ||
* [https://www.elstel.org/coan CoAn], another simulator for several machine types including nondeterministic pushdown automata (C++, Windows, Linux, MacOS) | * [https://www.elstel.org/coan CoAn], another simulator for several machine types including nondeterministic pushdown automata (C++, Windows, Linux, MacOS) |
Revision as of 11:45, 26 July 2023
गणना के सिद्धांत में, सैद्धांतिक कंप्यूटर विज्ञान की शाखा, पुशडाउन ऑटोमेटन (पीडीए) है एक प्रकार का ऑटोमेटा सिद्धांत जो एक स्टैक (डेटा संरचना) को नियोजित करता है।
मशीनों द्वारा क्या गणना की जा सकती है, इसके सिद्धांतों में पुशडाउन ऑटोमेटा का उपयोग किया जाता है। वे परिमित-स्थिति मशीनों की तुलना में अधिक सक्षम हैं परन्तु ट्यूरिंग मशीनों की तुलना में कम सक्षम हैं (पीडीए और ट्यूरिंग मशीनें देखें)।
डीटरमिनिस्ट पुशडाउन ऑटोमेटा सभी डीटरमिनिस्ट डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज को पहचान सकता है जबकि गैर-डीटरमिनिस्ट कॉन्टेक्स्ट-फ्री लैंग्वेज लैंग्वेज को पहचान सकता है, पूर्व का उपयोग प्रायः पार्सर डिज़ाइन में किया जाता है।
पुशडाउन शब्द इस तथ्य को संदर्भित करता है कि स्टैक (अमूर्त डेटा प्रकार) को कैफेटेरिया में ट्रे डिस्पेंसर के जैसे नीचे पुशडाउन के रूप में माना जा सकता है, क्योंकि ऑपरेशन कभी भी शीर्ष अवयव के अतिरिक्त अन्य अवयवों पर कार्य नहीं करते हैं। इसके विपरीत, स्टैक ऑटोमेटन, गहन अवयवों तक एक्सेस और ऑपरेशन की अनुमति देता है। स्टैक ऑटोमेटा पुशडाउन ऑटोमेटा की तुलना में लैंग्वेज के बड़े समूह को पहचान सकता है।[1] एक नेस्टेड स्टैक ऑटोमेटन पूर्ण एक्सेस की अनुमति देता है, और स्टैक्ड मानों को मात्र एकल परिमित प्रतीकों के अतिरिक्त संपूर्ण उप-स्टैक होने की भी अनुमति देता है।
अनौपचारिक विवरण
एक परिमित-स्थिति मशीन मात्र इनपुट सिग्नल और वर्तमान स्थिति को देखती है: इसके निकट कार्य करने के लिए कोई स्टैक नहीं है। यह नवीन स्थिति चुनता है, जो परिवर्तन का अनुसरण करने का परिणाम है। पुशडाउन ऑटोमेटन (पीडीए) परिमित स्थिति मशीन से दो विधियों से भिन्न होता है:
- यह स्टैक के शीर्ष का उपयोग यह निर्धारित करने के लिए कर सकता है कि कौन सा ट्रांजीशन लेना है।
- यह ट्रांजीशन निष्पादित करने के भाग के रूप में स्टैक में परिवर्तन कर सकता है।
एक पुशडाउन ऑटोमेटन किसी दिए गए इनपुट स्ट्रिंग को बाएं से दाएं पढ़ता है। प्रत्येक चरण में, यह इनपुट प्रतीक, वर्तमान स्थिति और स्टैक के शीर्ष पर प्रतीक द्वारा तालिका को अनुक्रमित करके ट्रांजीशन चुनता है। ट्रांज़िशन निष्पादित करने के भाग के रूप में, पुशडाउन ऑटोमेटन स्टैक में परिवर्तन भी कर सकता है। परिवर्तन किसी विशेष प्रतीक को स्टैक के शीर्ष पर पुशडाउन या स्टैक के शीर्ष को पॉप करने के लिए हो सकता है। ऑटोमेटन वैकल्पिक रूप से स्टैक को अनदेखा कर सकता है, और इसे वैसे ही छोड़ सकता है। एक साथ रखें: इनपुट प्रतीक, वर्तमान स्थिति और स्टैक प्रतीक को देखते हुए, ऑटोमेटन किसी अन्य स्थिति में ट्रांजीशन का पालन कर सकता है, और वैकल्पिक रूप से स्टैक में परिवर्तन (पुश या पॉप) कर सकता है।
यदि, प्रत्येक स्थिति में, अधिकतम ऐसी संक्रमण क्रिया संभव है, तो ऑटोमेटन को डीटरमिनिस्ट पुशडाउन ऑटोमेटन (डीपीडीए) कहा जाता है। सामान्यतः, यदि कई क्रियाएं संभव हैं, तो ऑटोमेटन को सामान्य, या गैर-डीटरमिनिस्ट, पीडीए कहा जाता है। दी गई इनपुट स्ट्रिंग गैर-डीटरमिनिस्ट पुशडाउन ऑटोमेटन को कई कॉन्फ़िगरेशन अनुक्रमों में से एक में चला सकती है; यदि उनमें से पूर्ण इनपुट स्ट्रिंग को पढ़ने के बाद स्वीकार्य कॉन्फ़िगरेशन की ओर ले जाता है, तो बाद वाले को ऑटोमेटन द्वारा स्वीकृत लैंग्वेज से संबंधित माना जाता है।
संक्रमण संबंध
- आरंभिक अवस्था है
- प्रारंभिक स्टैक प्रतीक है
- स्वीकार करने वाले स्थितियों का समूह है
एक अवयव , का संक्रमण है । इसका अभिप्राय यह है कि , स्थिति में, इनपुट पर और को सबसे ऊपरी स्टैक प्रतीक के रूप में, के रूप में पढ़ सकता है, स्थिति को में बदल सकता है, पॉप पॉप कर सकता है, इसे दबाकर प्रतिस्थापित कर सकता है। संक्रमण संबंध के घटक का उपयोग यह औपचारिक बनाने के लिए किया जाता है कि पीडीए या तो इनपुट से पत्र पढ़ सकता है, या इनपुट को अछूता छोड़कर आगे बढ़ सकता है।
अनेक ग्रंथों में[2]: 110 संक्रमण संबंध को (समतुल्य) औपचारिकता द्वारा प्रतिस्थापित किया जाता है, जहां
- संक्रमण फलन है, जो प्रतिचित्रण को के परिमित उपसमुच्चय में प्रतिचित्रित करता है।
यहाँ में इनपुट पर पढ़ते समय स्टैक पर की स्थिति में सभी संभावित क्रियाएं सम्मिलित हैं। उदाहरण के लिए कोई ठीक तब लिखता है जब क्योंकि । ध्यान दें कि इस परिभाषा में परिमित आवश्यक है।
गणना
पुशडाउन ऑटोमेटन के शब्दार्थ को औपचारिक बनाने के लिए वर्तमान स्थिति का विवरण प्रस्तुत किया गया है। कोई भी 3-टुपल को का तात्कालिक विवरण (आईडी) कहा जाता है, जिसमें वर्तमान स्थिति, इनपुट टेप का वह भाग जो पढ़ा नहीं गया है, और स्टैक के विवरण (सबसे ऊपर का प्रतीक पहले लिखा गया है) सम्मिलित है। संक्रमण संबंध तात्कालिक विवरण पर के चरण-संबंध को परिभाषित करता है। निर्देश के लिए प्रत्येक और प्रत्येक के लिए एक चरण स्थित है।
सामान्य तौर पर पुशडाउन ऑटोमेटा गैर-नियतात्मक होते हैं जिसका अर्थ है कि किसी दिए गए तात्कालिक विवरण में यहां कई संभावित चरण हो सकते हैं। गणना में इनमें से कोई भी चरण चुना जा सकता है। उपरोक्त परिभाषा के साथ प्रत्येक चरण में सदैव एकल प्रतीक (स्टैक के शीर्ष) को पॉप किया जाता है, इसे आवश्यकतानुसार कई प्रतीकों से बदल दिया जाता है। परिणामस्वरूप, स्टैक रिक्त होने पर कोई चरण परिभाषित नहीं होता है।
पुशडाउन ऑटोमेटन की गणना चरणों का क्रम है। गणना प्रारंभिक स्थिति में स्टैक पर प्रारंभिक स्टैक प्रतीक और इनपुट टेप पर एक स्ट्रिंग के साथ प्रारम्भ होती है, इस प्रकार प्रारंभिक विवरण के साथ। स्वीकार करने की दो विधियाँ हैं। पुशडाउन ऑटोमेटन या तो अंतिम स्थिति द्वारा स्वीकार करता है, जिसका अर्थ है कि इसके इनपुट को पढ़ने के बाद ऑटोमेटन एक स्वीकार्य स्थिति ( में) तक पहुंच जाता है, या यह रिक्त स्टैक (), द्वारा स्वीकार करता है, जिसका अर्थ है कि इसके इनपुट को पढ़ने के बाद ऑटोमेटन अपने स्टैक को रिक्त कर देता है। पहला स्वीकृति मोड आंतरिक मेमोरी (स्थिति) का उपयोग करता है, दूसरा बाह्य मेमोरी (स्टैक) का।
औपचारिक रूप से कोई परिभाषित करता है
- साथ और (अंतिम स्थिति)
- साथ (रिक्त हीप)
यहाँ चरण संबंध के प्रतिवर्ती संवरक और सकर्मक संवरक का प्रतिनिधित्व करता है जिसका अर्थ है निरंतर चरणों की कोई भी संख्या (शून्य, एक या अधिक)।
प्रत्येक एकल पुशडाउन ऑटोमेटन के लिए इन दोनों लैंग्वेज का कोई संबंध नहीं होना चाहिए: वे समान हो सकते हैं परन्तु सामान्यतः ऐसा नहीं होता है। ऑटोमेटन के विनिर्देश में स्वीकृति का इच्छित विधि भी सम्मिलित होना चाहिए। सभी पुशडाउन ऑटोमेटा पर आधारित दोनों स्वीकृति प्रतिबंधें लैंग्वेज के ही वर्ग को परिभाषित करती हैं।
प्रमेय. प्रत्येक पुशडाउन ऑटोमेटन के लिए कोई पुशडाउन ऑटोमेटन का निर्माण किया जा सकता है जैसे कि , और इसके विपरीत, प्रत्येक पुशडाउन ऑटोमेटन के लिए एक पुशडाउन ऑटोमेटन का निर्माण किया जा सकता है जैसे कि ।
उदाहरण
निम्नलिखित पीडीए का औपचारिक विवरण है जो अंतिम स्थिति द्वारा भाषा को पहचानता है:
, जहाँ
- बताता है:
- इनपुट वर्णमाला:
- स्टैक वर्णमाला:
- प्रारंभ स्थिति:
- स्टार्ट स्टैक प्रतीक: Z
- स्वीकार करने की स्थिति:
संक्रमण संबंध में निम्नलिखित छह निर्देश सम्मिलित हैं:
- ,
- ,
- ,
- ,
- , और
- ।
शब्दों में, पहले दो निर्देश कहते हैं कि स्थिति p में जब भी प्रतीक 0 पढ़ा जाता है, तो एक A को स्टैक पर पुश किया जाता है। प्रतीक A को दूसरे A के ऊपर पुश करने को शीर्ष A को AA द्वारा प्रतिस्थापित करने के रूप में औपचारिक रूप दिया जाता है (और इसी प्रकार Z के शीर्ष पर प्रतीक A को पुश करने के लिए)।
तीसरे और चौथे निर्देश कहते हैं कि, किसी भी क्षण ऑटोमेटन स्थित p से अवस्था q तक जा सकता है।
पाँचवाँ निर्देश कहता है कि अवस्था q में, प्रत्येक प्रतीक 1 पढ़ने के लिए, एक A पॉप किया जाता है।
अंत में, छठा निर्देश कहता है कि मशीन अवस्था q से स्वीकार करने योग्य अवस्था r की ओर तभी जा सकती है, जब स्टैक में एकल Z हो।
ऐसा लगता है कि पीडीए के लिए सामान्यतः इस्तेमाल किया जाने वाला कोई प्रतिनिधित्व नहीं है। यहां हमने निर्देश को स्थिति p से अवस्था q तक एक किनारे द्वारा दर्शाया गया है जिसे द्वारा लेबल किया गया है; (a पढ़ें; A को से बदलें)।
गणना प्रक्रिया को समझना
निम्नलिखित दर्शाता है कि उपरोक्त पीडीए विभिन्न इनपुट स्ट्रिंग पर कैसे गणना करता है। चरण चिह्न ⊢ से सबस्क्रिप्ट M को यहां हटा दिया गया है।
- 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.
The final state is accepting, but the input is not accepted this way as it has not been read.
No further steps possible.
Accepting computation: ends in accepting state, while complete input has been read.
- Input string = 00111. Again there are various computations. None of these is accepting.
The final state is accepting, but the input is not accepted this way as it has not been read.
No further steps possible.
The final state is accepting, but the input is not accepted this way as it has not been (completely) read.
पीडीए और संदर्भ-मुक्त लैंग्वेज
प्रत्येक संदर्भ-मुक्त व्याकरण को समतुल्य गैर-डीटरमिनिस्ट पुशडाउन ऑटोमेटन में परिवर्तित किया जा सकता है। व्याकरण की व्युत्पत्ति प्रक्रिया को सबसे बाएं विधि से अनुकरण किया जाता है। जहां व्याकरण गैरटर्मिनल को फिर से लिखता है, पीडीए अपने स्टैक से सबसे ऊपरी गैरटर्मिनल लेता है और इसे व्याकरणिक नियम (विस्तार) के दाहिने हाथ के भाग से बदल देता है। जहां व्याकरण टर्मिनल प्रतीक उत्पन्न करता है, पीडीए इनपुट से प्रतीक पढ़ता है जब यह स्टैक (मैच) पर सबसे ऊपरी प्रतीक होता है। अर्थ में पीडीए के स्टैक में व्याकरण का असंसाधित डेटा होता है, जो व्युत्पत्ति ट्री के पूर्व-क्रम पथक्रमण के अनुरूप होता है।
तकनीकी रूप से, संदर्भ-मुक्त व्याकरण को देखते हुए, पीडीए की ही स्थिति है, 1, और इसका संक्रमण संबंध इस प्रकार बनाया गया है।
- प्रत्येक नियम के लिए (विस्तृत करें)
- प्रत्येक टर्मिनल प्रतीक के लिए (मैच)
पीडीए रिक्त स्टैक द्वारा स्वीकार करता है। इसका प्रारंभिक स्टैक प्रतीक व्याकरण का प्रारंभ प्रतीक है।
ग्रीबैक सामान्य रूप में संदर्भ-मुक्त व्याकरण के लिए, प्रत्येक व्याकरण नियम A → aγ के लिए (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] ने सिंक्रोनाइज्ड अल्टरनेटिंग पुशडाउन ऑटोमेटा (एसएपीडीए) प्रस्तुत किया गया जो कि संयोजक व्याकरण के समतुल्य है, उसी प्रकार जैसे गैर-डीटरमिनिस्ट पीडीए संदर्भ-मुक्त व्याकरण के समतुल्य है।
यह भी देखें
- स्टैक मशीन
- प्रसंग-मुक्त व्याकरण
- परिमित स्वचालन
- काउंटर ऑटोमेटन
- क्यू स्वचालित
टिप्पणियाँ
- ↑ 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.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.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.
- ↑ 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.
- ↑ Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison (1967). "स्टैक ऑटोमेटा और संकलन". J. ACM. 14 (1): 172–201. doi:10.1145/321371.321385.
- ↑ Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison (1967). "वन-वे स्टैक ऑटोमेटा". J. ACM. 14 (2): 389–418. doi:10.1145/321386.321403.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Section 2।2: Pushdown Automata, pp। 101–114।
- Jean-Michel Autebert, Jean Berstel, Luc Boasson, Context-Free लैंग्वेजs and Push-Down Automata, in: G। Rozenberg, A। Salomaa (eds।), Handbook of Formal लैंग्वेजs, Vol। 1, Springer-Verlag, 1997, 111–174।