आप पुशडाउन ऑटोमेटा का उपयोग करने का प्रयास कर सकते हैं। मूल भाषा के लिए एक पुशडाउन ऑटोमेटन को देखते हुए, हम चक्रीय बदलाव के लिए एक का निर्माण करते हैं। नया दो चरणों में संचालित होता है, जो और शब्द के (जहाँ मूल भाषा में है) के अनुरूप है । पहले चरण में, जब भी ऑटोमेटन एक गैर-टर्मिनल को पॉप करना चाहेगा , तो इसके बजाय एक गैर-टर्मिनल धक्का दे सकता है ; यह विचार है कि पहले चरण के अंत में, स्टैक में रिवर्स ऑर्डर होगा, जो मूल ऑटोमेटन द्वारा पढ़ने के बाद स्टैक में पाए जाते हैं । एक गैर-टर्मिनल को धकेलने के बजाय दूसरे चरण में (स्विच गैर-नियतात्मक है)एक्स y एक्स एक्स y एक एक ' एक्स एक एक ' एक्सyxyxxyAA′xA, हमें गैर-टर्मिनल पॉप करने की अनुमति है । यदि मूल ऑटोमेटन वास्तव में को पढ़ने पर स्टैक उत्पन्न कर सकता है , तो नया पूरी तरह से पूरे स्टैक को पॉप करने में सक्षम होगा।A′x
संपादित करें: यहां कुछ और विवरण दिए गए हैं। मान लीजिए कि हमें वर्णमाला साथ एक पीडीए दिया गया है , राज्यों का सेट , राज्यों को स्वीकार करने का सेट , गैर-टर्मिनल , प्रारंभिक राज्य और स्वीकार्य संक्रमण का एक सेट। प्रत्येक स्वीकार्य संक्रमण फॉर्म , जिसका अर्थ है कि जब राज्य , (या , जिस स्थिति में यह एक मुफ्त संक्रमण है) पढ़ रहा , यदि टॉप-ऑफ-स्टैक (या , जिसका अर्थ है कि स्टैक खाली है), तो PDA स्टेट जगह ले सकता है (यह एक गैर-नियतात्मक मॉडल है) , की जगहक्यू एफ Γ क्ष 0 ( क्ष , एक , एक , क्यू ' , अल्फा ) क्ष एक ∈ एक एक = ε एक ∈ Γ एक = ε क्ष ' एक अल्फा ∈ Γ *ΣQFΓq0(q,a,A,q′,α)qa∈Aa=ϵA∈ΓA=ϵq′A साथ ।α∈Γ∗
नए पीडीए में प्रत्येक लिए एक नया गैर-टर्मिनल । प्रत्येक दो राज्यों के लिए और , दो अवस्थाएँ । शुरुआती राज्य (वास्तविक प्रारंभिक राज्य को उनके बीच गैर-निर्धारक रूप से चुना जाता है ) -transitions के माध्यम से होते हैं । प्रत्येक संक्रमण के लिए इसके अनुरूप बदलाव होते हैं और । अन्य संक्रमण भी हैं।A′A∈Γq,q′∈QA∈Γ∪{ϵ}(q,q′,1),(q,q′,2,A)ϵ(q,q,1)(q,a,A,q′,α)((q,q′′,1),a,A,(q′,q′′,1),α)((q,q′′,2,B),a,A,(q′,q′′,2,B),α)
प्रत्येक संक्रमण के लिए , संक्रमण , जहां और । प्रत्येक अंतिम अवस्था , संक्रमण , जहाँ ।(q,a,A,q′,α)((q,q′′,1),a,B′,(q′,q′′,1),B′A′α)B∈Γ∪{ϵ}ϵ′=ϵq∈F((q,q′′,1),ϵ,A,(q0,q′′,2,ϵ),A)A∈Γ∪{ϵ}
प्रत्येक संक्रमण के लिए , संक्रमण होते हैं , जहां । प्रत्येक संक्रमण के लिए , संक्रमण , जहां । प्रत्येक संक्रमण के लिए , "सामान्यीकृत बदलाव" ; ये एक मध्यवर्ती नए राज्य के माध्यम से दो संक्रमणों के अनुक्रम के रूप में कार्यान्वित किए जाते हैं। संक्रमण\ अल्फा) के साथ(q,a,ϵ,q′,α)((q,q′′,2,A),a,B′,(q′,q′′,2,A),B′α)A∈Γ∪{ϵ}(q,a,ϵ,q′,A)((q,q′′,2,B),a,A′,(q′,q′′,2,A),ϵ)B∈Γ∪{ϵ}(q,a,A,q′,B)((q,q′′,2,C),a,B′A,(q,q′′,2,C),ϵ)(q,a,ϵ,q′,α)|α|≥2उसी तरह संभाला जाता है। प्रत्येक संक्रमण के लिए , संक्रमण , जहां । संक्रमण को इसी तरह संभाला जाता है। अंत में, एकमात्र अंतिम स्थिति , और संक्रमण ।(q,a,A,q′,A)((q,q′′,2,A),a,B,(q′,q′′,2,A),B)B∈Γ′∪{ϵ}(q,a,A,q′,Aα)f((q,q,2,A),ϵ,ϵ,f,ϵ)
(कुछ बदलाव हो सकते हैं जो मुझे याद थे, और कुछ विवरण जो मैं चूक रहा हूं, वे कुछ गड़बड़ हैं।)
याद रखें कि हम एक शब्द को स्वीकार करने की कोशिश कर रहे हैं , जहाँ को मूल पीडीए द्वारा स्वीकार किया जाता है। एक राज्य मतलब है कि हम चरण 1 पर हैं, राज्य , और मूल पीडीए राज्य पढ़ने के बाद । एक राज्य समान है, जहां अंतिम से मेल खाता है जो कि पॉप किया गया था। चरण 1 में, हम पुश करने के लिए अनुमति दी जाती है बजाय पॉपिंग के । हम प्रत्येक गैर-टर्मिनल के लिए करते हैं जो को संसाधित करते समय उत्पन्न होता है , लेकिन केवल को संसाधित करते समय ही पॉप होता है । स्टेज 2 पर, हमें को पॉप करने की अनुमति हैyxxy(q,q′,1)qq′x(q,q′,2,A)AA′A′AxyA′इसके बजाय धक्का । यदि हम ऐसा करते हैं, तो हमें यह याद रखना होगा कि शीर्ष-स्टॉक वास्तव में ; यह केवल तब लागू होता है जब स्टैक पर कोई "अस्थायी" चीजें नहीं होती हैं, जो सिम्युलेटेड पीडीए में टॉप-ऑफ-स्टैक या फॉर्म ।AAϵB′
ये रहा एक सरल उदाहरण। लिए एक ऑटोमेटन पर विचार करें जो प्रत्येक लिए को धक्का देता है , और प्रत्येक लिए को पॉप करता है । नया ऑटोमेटन दो रूपों के शब्दों को स्वीकार करता है: और । पहले रूप के शब्दों के लिए, चरण 1 में समय को धकेलना शामिल है , चरण 2 में पॉपिंग समय , और बार धकेलना और बार । दूसरे रूप के शब्दों के लिए, हम पहले बार धक्का देते हैंxnynAxAyykxnyn−kxkynxn−kkA′kA′n−kAn−kAkA, तो पॉप टाइम्स , पुश टाइम्स , स्टेज 2 के लिए संक्रमण, और पॉप टाइम्स ।kAn−kA′n−kA′
विभिन्न प्रकारों ("()", "[]", "<>") के संतुलित कोष्ठकों की भाषा के लिए यहां एक अधिक जटिल उदाहरण है, जैसे कि प्रत्येक प्रकार के कोष्ठकों के तत्काल वंशज एक अलग प्रकार के होने चाहिए। उदाहरण के लिए, "([] <>)" ठीक है लेकिन "()" गलत है। प्रत्येक "(", हम धक्का के लिए अगर शीर्ष ढेर नहीं है , प्रत्येक के लिए ")", हम पॉप । इसी तरह , "[]" और "<>" से जुड़े हैं। यहां बताया गया है कि हम ">" ([()] <"हम उपभोग करते हैं">) "स्वीकार करते हैं", धक्का , और स्टेज 2 पर संक्रमण करते हैं। हम उपभोग करते हैं "(", पॉपिंगऔर शीर्ष- -स्टैक को याद रखना । हम "[()]" का उपभोग करते हैं, धक्का देते हैं और पॉपिंग करते हैं ; जब धक्काA AABCC′A′A′ABAB , हम जानते हैं कि "असली" टॉप-ऑफ-स्टैक , और इसलिए स्क्वायर ब्रैकेट्स की अनुमति है (हम ">" () () <") द्वारा धोखा नहीं दिया जाएगा); जब धक्का दे रहा है , चूंकि शीर्ष-स्टैक (जो कि या फॉर्म ), तो हम जानते हैं कि "वास्तविक" टॉप-ऑफ-स्टैक है, और इसलिए गोल कोष्ठक की अनुमति है। (भले ही छाया टॉप-ऑफ-स्टैक )। अंत में, हम "<" और पॉप उपभोग करते हैं ।AABϵX′BAC′