शब्दों की भाषा के लिए संदर्भ-संवेदनशील व्याकरण स्वयं के साथ समाप्‍त


9

मैं एक संदर्भ-संवेदी व्याकरण की तलाश में हूं जो निम्नलिखित भाषा का वर्णन करता है: ।L={www{a,b},|w|1}

मुझे इस बात की समस्या है कि कोई भी नियम जैसे की अनुमति नहीं है और इसलिए मैं शब्द के "मध्य" को इंगित करने वाले किसी भी गैर-प्रमाणिक स्थान को नहीं रख सकता। क्या समस्या की कोई चाल है?Xε


1
बोरिंग जवाब: एक एलबीए बनाएं और एलबीए और संदर्भ-संवेदनशील व्याकरण को समान रूप से शक्तिशाली साबित करने के लिए उपयोग किए गए सिमुलेशन को लागू करें।
राफेल

जवाबों:


6

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

आपके उदाहरण में, एक nonterminal है Mमध्य के लिए, लेकिन जैसे ही इसे हटाया नहीं जा सकता है, यह एक सामान्य पत्र के रूप में भी गिना जाता है। इस प्रकार हमारी दो प्रतियाँ हैंMa तथा Mbप्रतिस्थापित किए गए अक्षरों को इंगित करना। व्युत्पत्ति के अंत में मार्करों को उनके पत्र सामग्री द्वारा प्रतिस्थापित किया जाना चाहिए, जैसे साधारण प्रस्तुतियों द्वाराMaa

ज्यादातर मामलों में के आवेदन Maaव्युत्पत्ति प्रक्रिया के अंत में प्रदर्शन किया जाना चाहिए। कुछ निर्माणों में यह "समयबद्ध" होने की आवश्यकता नहीं है: जबMबहुत जल्द गायब हो जाता है, व्युत्पत्ति एक उचित स्थिति नहीं पा सकता है और प्रक्रिया सफलतापूर्वक बंद नहीं होगी। अन्य मामलों में व्यक्ति को एक प्रकार के नियंत्रण की आवश्यकता होती है। यह कभी-कभी एक नॉनटर्मिनल को एक संकेत के रूप में पेश करके किया जाता है जो अक्षरों के साथ चलता है। फिर से, इस सिग्नल को एक टर्मिनल भी ले जाना चाहिए अन्यथा आप समान समस्याओं में समाप्त हो जाते हैं।

तथाकथित मोनोटोनिक व्याकरण में चारों ओर चलती जानकारी आसान है (αβ साथ में |α|β|) जैसे नियमों का उपयोग करना XAAX, जिसे देखा जा सकता है X ऊपर से कूदना A। उचित संदर्भ के प्रति संवेदनशील व्याकरणों के लिए इसे तीन चरणों में विभाजित करने की आवश्यकता है:XAXAX,XAXAAX,AAXAX। प्रत्येक उत्पादन में एक अक्षर को एक उचित संदर्भ में बदल दिया जाता है। यह देखने के लिए काफी कुछ कल्पना लगती है कि यह प्रक्रिया व्युत्पत्ति के अन्य भागों के साथ बातचीत नहीं करती है। जैसे, क्या होता है जबA अंतिम चरण में पहले एक और व्युत्पत्ति कदम में शामिल है?

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


क्या इसे प्रोडक्शन के लिए एक निश्चित क्रम में देखने की आवश्यकता नहीं होगी, ताकि अंत में नॉन-माइनर्स को पुन: व्यवस्थित करने से पहले मा → का उपयोग नहीं किया जाएगा? या क्या मैं कुछ न कुछ भूल रहा हूं?
MrBolton

मैंने अपने उत्तर में एक नोट जोड़ा। इस तरह के उत्पादन को लागू करने वाले कुछ समाधानों में जल्द ही एक भावुक रूप होगा, जिसे सफलतापूर्वक समाप्त नहीं किया जा सकता है। अन्य मामलों में प्रस्तुतियों को ध्यान से सिंक्रनाइज़ किया जाना है। सामान्य ज्ञान और परीक्षण-और-त्रुटि का मामला।
हेंड्रिक जन

1

संक्षिप्त डिफ़ॉल्ट उत्तर: एक LBA के साथ आते हैं जो भाषा को स्वीकार करता है और उस संदर्भ-संवेदनशील व्याकरण को साबित करने के लिए उपयोग किए गए सिमुलेशन का उपयोग करता है और LBA भाषाओं के समान सेट को परिभाषित करता है। लेकिन यह निश्चित रूप से नहीं है कि आप क्या हैं।

इस विशिष्ट मामले में, एक सही-रेखीय व्याकरण का उपयोग करने के बारे में सोचने की कोशिश करें Σदो बार, बाएं के लिए एक और दाएं आधे के लिए एक। आपको यह सुनिश्चित करना होगा कि दोनों व्याकरण "सिंक में" प्राप्त हों।

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

संदर्भ-संवेदनशील व्याकरणों के साथ एक समस्या है: वे कभी भी गैर-टर्मिनलों को नहीं हटा सकते हैं (छोड़कर) Sεयदि खाली शब्द भाषा में है)। इसलिए, हमें केवल उतने ही गैर-टर्मिनलों का निर्माण करना होगा जितने की हमें आवश्यकता है; कोई भी निरर्थक नहीं हो सकता।

इसे प्राप्त करने का एक तरीका एलबीए के बारे में कुछ प्रमाणों के लिए उसी चाल का उपयोग करना है: सभी गैर-टर्मिनलों को उत्पन्न करें जिनकी आपको पहले आवश्यकता है , "टेप" तैयार करें। बाद में, उस टेप पर "चारों ओर घूमें"। केवल "अंत में", सभी गैर-टर्मिनलों को टर्मिनलों से बदलें।

तो चलो G=(N,Σ,δ,S) साथ में Σ={a,b} (निर्माण आसानी से बड़े अक्षर तक फैला हुआ है) और N, δ निम्नलिखित नियमों द्वारा दिया गया।

SX^lSXraaaaababbababbbbaabbεSXlSXrXlX^r

"टेप" बनाने के लिए नियम हैं। ध्यान दें कि टोपी "सिर की स्थिति" और सूचकांकों को दर्शाता हैl,rनिरूपित करें कि गैर-टर्मिनल शब्द का आधा हिस्सा किससे संबंधित है। नीचे दिए गए कुछ नियमों को सुरक्षित करने के लिए संक्षिप्त शब्द तैयार किए गए हैं। अब हमें बाएं हिस्से में एक प्रतीक को प्राप्त करने के लिए नियमों की आवश्यकता है:

X^lXlXγX^lγX^lXαXγXαγ

सबके लिए (α,γ)Σ2। ध्यान दें कि हम उत्पन्न चिह्न को दाईं ओर ले जाने के लिए ऊपरी सूचकांक का उपयोग कैसे करते हैं।Xa तथा Xb"अंतिम" गैर-टर्मिनल हैं जिनका उपयोग केवल नियंत्रण टोकन को स्थानांतरित करने और बाद में टर्मिनलों को प्राप्त करने के लिए किया जाएगा। इसके अलावा ध्यान दें कि दूसरा नियम (केवल) दाहिने आधे के अंतिम प्रतीक के लिए उपयोग किया जाता है।

कैरी को दाईं ओर ले जाने के लिए, हमें शेष दोनों को पीछे ले जाना होगाXl और पहले से ही उत्पन्न Xα:

X^lγXlX^lXlγX^lγXαX^lXαγXlγXlXlXlγXlγXαXlXαγXαγXβXαXβγ

सबके लिए (α,β,γ)Σ3। अब, एक बार जब कैरी सही कंट्रोल टोकन पर पहुंच जाता है, तो हमें बाईं ओर उपयोग किए गए नियम की नक़ल करनी होगी:

XlγX^rXlX^rγXαγX^rXαX^rγX^rγXrXγX^rX^rγXγ

सबके लिए (α,γ)Σ2। ध्यान दें कि पहले नियम का उपयोग दाहिने आधे के पहले प्रतीक के लिए किया जाता है, और अंतिम नियम का उपयोग केवल बहुत अंतिम प्रतीक के लिए किया जा सकता है, अन्यथा व्युत्पत्ति कभी समाप्त नहीं होती है। अब हमें केवल समाप्ति नियमों की आवश्यकता है

Xαα

सबके लिए αΣऔर हम कर रहे हैं ये नियम, भी, सब कुछ (बाईं ओर) किए जाने के बाद ही लागू किए जा सकते हैं, अन्यथा व्युत्पत्ति समाप्त नहीं होगी।

ध्यान दें कि यह व्याकरण अस्पष्ट है। न केवल कर सकते हैंXαα(सुरक्षित रूप से) किसी भी समय बाईं ओर "सिर" के कहीं भी लागू किया जा सकता है, लेकिन एक ही समय में कई कैर्री भी चल सकते हैं। चूँकि वे कभी भी एक दूसरे से आगे नहीं निकल सकते हैं, सही क्रम बनाए रखा जाता है।

एक टिप्पणी अभी भी किया जाना चाहिए: उपरोक्त व्याकरण है नहीं संदर्भ के प्रति संवेदनशील कई नियमों में परिवर्तन के रूप में दोनों बाएं हाथ की ओर पर प्रतीकों में से। यह संदर्भ-संवेदनशील व्याकरण के लिए अनुमति नहीं है। सौभाग्य से, हम किसी भी नियम का अनुकरण कर सकते हैंR फार्म का

ABCD

द्वारा

ABAYRAYRXRYRXRYRXRDXRDCD

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

क्या आप यह देखते हैं कि इसे कैसे बढ़ाया जाए Lk={wkwΣ}? क्या यह भी काम करता हैL=i1Lk? क्या आप किसी भी समान निर्माण का उपयोग कर सकते हैंLk नियमित के लिए L?


0

हालांकि मुझे नहीं पता कि संदर्भ-संवेदनशील व्याकरण कैसा दिखेगा, आप अपनी समस्या को प्रतीक के साथ दरकिनार कर सकते हैं X निम्नलिखित नुसार।

आप जानते हैं कि आपके संक्षिप्त शब्द w कम से कम लंबाई का होना चाहिए |w|1। इसलिए, आप बस "सांकेतिक शब्दों में बदलना" कर सकते हैंεकुछ नियमों द्वारा आपके व्याकरण की संख्याएँ:

aXaaa,  aXbab,  bXaba,  bXbbb

हालाँकि, मैं अभी तक समग्र समाधान नहीं देख सकता, क्योंकि मेरे दिमाग में ऐसा लगता है कि आपके व्याकरण के नियमों के आपके बाएं हाथ संभावित रूप से लंबे समय तक मिलते हैं, क्योंकि मुझे लगता है कि आप उपसर्गों पर विचार करने की कोशिश करेंगे w किसी तरह आपके नियमों में।


हालाँकि, @ hendrik-jan के दृष्टिकोण का उपयोग करने से आपको दो नियम मिलते हैं।
Rmn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.