व्याकरण स्वाभाविक रूप से पुनरावर्ती वस्तुएँ हैं, इसलिए उत्तर स्पष्ट प्रतीत होता है: प्रेरण द्वारा। उस ने कहा, बारीकियों को सही पाने के लिए अक्सर मुश्किल होता है। अगली कड़ी में मैं एक ऐसी तकनीक का वर्णन करूंगा, जो यांत्रिक चरणों के लिए कई व्याकरण-शुद्धता प्रमाण को कम करने की अनुमति देती है, बशर्ते कुछ रचनात्मक प्रीप्रोसेसिंग किया जाता है।
मूल विचार यह है कि स्वयं को व्याकरण और भाषा के शब्दों तक सीमित न रखें ; इस तरह से व्याकरण की संरचना को समझना कठिन है। इसके बजाय, हम उन वाक्यों के समूह के बारे में बहस करेंगे जिन्हें व्याकरण बना सकता है। इसके अलावा, हम एक चुनौतीपूर्ण लक्ष्य को कई छोटे लक्ष्यों में विभाजित करेंगे, जो अधिक ट्रैक्टेबल हैं।
चलो गैर टर्मिनलों के साथ एक औपचारिक व्याकरण , टर्मिनल , नियमों और प्रतीक शुरू करने । हम द्वारा निरूपित वाक्य के सेट से प्राप्त किया जा सकता दिया , यह है कि । द्वारा उत्पन्न भाषा है । मान लीजिए हम चाहते हैं कि दिखाना चाहते हैं कुछ के लिए ।एन टी δ एस ∈ एन θ ( जी ) एस δ अल्फा ∈ θ ( जी )G=(N,T,δ,S)NTδS∈Nϑ(G)Sδजी एल ( जी ) = θ ( जी ) ∩ टी * एल = एल ( जी ) एल ⊆ टी *α∈ϑ(G)⟺S⇒∗αGL(G)=ϑ(G)∩T∗L=L(G)L⊆T∗
Ansatz
यहाँ हम उस के बारे में जाने। हम को परिभाषित करते हैं ताकिM1,…,Mk⊆(N∪T)∗
- ϑ(G)=⋃i=1kMi और
- T∗∩⋃i=1kMi=L ।
जबकि 2. आमतौर पर की परिभाषा से स्पष्ट है , 1. कुछ गंभीर काम की आवश्यकता है। दो आइटम एक साथ स्पष्ट रूप से वांछित के रूप में।L ( G ) = LMiL(G)=L
अंकन की आसानी के लिए, आइए ।M=⋃ki=1Mi
पथरीली सड़क
इस तरह के सबूत के प्रदर्शन के लिए दो प्रमुख चरण हैं।
कैसे (अच्छा) खोजने के लिए ? Mi
एक रणनीति यह है कि व्याकरण के माध्यम से चरणों की जांच की जाए । प्रत्येक व्याकरण इस विचार के लिए उत्तरदायी नहीं है; सामान्य तौर पर, यह एक रचनात्मक कदम है। यह मदद करता है अगर हम व्याकरण को स्वयं परिभाषित कर सकते हैं; कुछ अनुभव के साथ, हम इस दृष्टिकोण के साथ व्याकरण को अधिक ट्रैफ़िक में परिभाषित करने में सक्षम होंगे।
कैसे साबित करें 1.?
किसी भी सेट समानता के साथ, दो दिशाएं हैं।
- जीϑ(G)⊆M : (संरचनात्मक) के निर्माण पर प्रेरण ।G
- एम आई एसM⊆ϑ(G) : आमतौर पर द्वारा एक इंडक्शन , उस से शुरू होता है जिसमें होता है ।MiS
यह उतना ही विशिष्ट है जितना इसे मिलता है; विवरण हाथ में व्याकरण और भाषा पर निर्भर करता है।
उदाहरण
भाषा पर विचार करें
L={anbncm∣n,m∈N}
और व्याकरण द्वारा दिए गए साथδG=({S,A},{a,b,c},δ,S)δ
SA→Sc∣A→aAb∣ε
जिसके लिए हम उस को दिखाना चाहते हैं । यह व्याकरण किन चरणों में काम करता है? ठीक है, पहले यह और फिर उत्पन्न करता है । यह तुरंत की हमारी पसंद को सूचित करता है , अर्थात्c m a n b n M iL=L(G)cmanbnMi
M0M1M2={Scm∣m∈N},={anAbncm∣m,n∈N},={anbncm∣m,n∈N}.
जैसा कि और , आइटम 2. पहले से ही ध्यान रखा गया है। 1 की ओर, हमने घोषणा को दो भागों में विभाजित किया है।एम 0 ∩ टी * = एम 1 ∩ टी * = ∅M2=LM0∩T∗=M1∩T∗=∅
ϑ(G)⊆M
हम के नियमों के साथ संरचनात्मक प्रेरण करते हैं ।G
आइए: के बाद से हम लंगर सफलतापूर्वक।S=Sc0∈M0
IH: वाक्य के कुछ सेटों के लिए मान लें कि जिसे हम भी जानते हैं ।एक्स ⊆ एमX⊆ϑ(G)X⊆M
है: चलो मनमाना। हमें यह दिखाना होगा कि जो भी फॉर्म है और जो भी नियम आगे लागू होता है, हम नहीं छोड़ते हैं । हम इसे पूरा मामला भेद द्वारा करते हैं। प्रेरण परिकल्पना द्वारा, हम जानते हैं कि (वास्तव में) निम्नलिखित में से एक मामला लागू होता है:अल्फा एमα∈X⊆ϑ(G)∩MαM
- w∈M0 , कि है कुछ ।
दो नियमों को लागू किया जा सकता है, दोनों में एक वाक्य प्राप्त करते हैं :
m ∈ N Mw=Scmm∈N
M
- Scm⇒Scm+1∈M0 और
- Scm⇒Acm=a0Ab0cm∈M1 ।
- w∈M1 , अर्थात for some :
मीटर , एन ∈ एनw=anAbncmm,n∈N
- w⇒an+1Abn+1cm∈M1 और
- w⇒anbncm∈M2 ।
- w∈M3 : बाद से , आगे कोई व्युत्पत्ति संभव नहीं है।w∈T∗
चूंकि हमने सभी मामलों को सफलतापूर्वक कवर किया है, इसलिए इंडक्शन पूरा हो गया है।
ϑ(G)⊇M
हम प्रति एक (सरल) प्रमाण प्रदर्शन करते हैं । ध्यान दें कि हम प्रमाणों की श्रृंखला कैसे हैं ताकि "बाद में" "पहले" का उपयोग करके लंगर कर ।MiMiMi
- M1 : हम पर एक इंडक्शन करते हैं , में एंकरिंग करते हैं और स्टेप में का उपयोग करते हैं ।mSc0=SS→Sc
- M2 : हम को एक मनमाना मान देते हैं और पर प्रेरित करते हैं । हम पूर्व प्रमाण द्वारा उस का उपयोग करके में लंगर । चरण माध्यम ।mnAcmS⇒∗Scm⇒AcmA→aAb
- M3 : मनमाना हम लिए पूर्व प्रमाण का उपयोग करते हैं ।m,n∈NS⇒∗anAbncm⇒anbncm
यह 1. के प्रमाण की दूसरी दिशा को समाप्त करता है, और हम कर रहे हैं।
हम देख सकते हैं कि हम इसका अत्यधिक दोहन करते हैं कि व्याकरण रैखिक है । गैर-रेखीय व्याकरण के लिए, हमें को एक से अधिक परिवर्तनीय पैरामीटर (प्रमाण में) के साथ चाहिए, जो बदसूरत हो सकता है। यदि व्याकरण पर हमारा नियंत्रण है, तो यह हमें इसे सरल बनाए रखना सिखाता है। उदाहरण के तौर पर देखें कि यह व्याकरण बराबर है :MiG
SAC→aAbC∣ε→aAb∣ε→cC∣ε
व्यायाम
के लिए एक व्याकरण दें
L={bkal(bc)manbo∣k,l,m,n,o∈N,k≠o,2l=n,m≥2}
और इसकी शुद्धता साबित करते हैं।
यदि आपको परेशानी है, तो एक व्याकरण:
पर विचार करें के निर्माण के साथG=({S,Br,Bl,A,C},{a,b,c},δ,S)
SBlBrAC→bSb∣Bl∣Br→bBl∣bA→Brb∣Ab→aAaa∣C→bcC∣bcbc
और :Mi
M0M1M2M3M4M5={biSbi∣i∈N}={biBlbo∣o∈N,i≥o}={bkBrbi∣k∈N,i≥k}={bkaiAa2ibo∣k,o,i∈N,k≠o}={bkal(bc)iCa2lbo∣k,o,l,i∈N,k≠o}=L
गैर-रैखिक व्याकरण के बारे में क्या?
संदर्भ-मुक्त भाषाओं के वर्ग की विशेषता विशेषता डाइक भाषा है : अनिवार्य रूप से, हर संदर्भ-मुक्त भाषा को डाइक भाषा और एक नियमित भाषा के प्रतिच्छेदन के रूप में व्यक्त किया जा सकता है। दुर्भाग्य से, डाइक भाषा रैखिक नहीं है, अर्थात हम कोई व्याकरण नहीं दे सकते हैं जो स्वाभाविक रूप से इस दृष्टिकोण के अनुकूल है।
हम निश्चित रूप से, अभी भी को परिभाषित कर सकते हैं और प्रमाण कर सकते हैं, लेकिन यह नेस्टेड साथ अधिक कठिन होने के लिए बाध्य है और क्या नहीं। एक सामान्य तरीका है जो मुझे पता है कि कुछ हद तक मदद कर सकता है। हम यह दिखाने के लिए कि हम कम से कम सभी आवश्यक शब्द उत्पन्न करते हैं, और यह कि हम सही मात्रा में शब्द (प्रति लंबाई) उत्पन्न करते हैं। औपचारिक रूप से, हम दिखाते हैं किMi
- ϑ(G)⊇L और
- |L(G)∩Tn|=|L∩Tn|सभी लिए ।n∈N
इस तरह, हम अपने आप को भाषा में मूल ansatz और शोषण संरचना से "आसान" दिशा तक सीमित कर सकते हैं, व्याकरण की अनदेखी सुविधाओं की अनदेखी हो सकती है। बेशक, कोई मुफ्त दोपहर का भोजन नहीं है: हमें उन शब्दों को गिनने का सारा नया काम मिलता है जो प्रत्येक लिए उत्पन्न करता है । हमारे लिए भाग्यशाली है, यह अक्सर ट्रैक्टेबल होता है; विवरण के लिए यहां और यहां देखें । आप मेरे स्नातक थीसिस में कुछ उदाहरण पा सकते हैं ।G n∈N
अस्पष्ट और गैर-संदर्भ-मुक्त व्याकरणों के लिए, मुझे डर है कि हम वापस एक asatz और सोच टोपी के लिए वापस आ रहे हैं।
- गिनती के लिए उस विशेष विधि का उपयोग करते समय, हमें एक बोनस के रूप में मिलता है कि व्याकरण अस्पष्ट है। बदले में, इसका मतलब यह भी है कि तकनीक को अस्पष्ट व्याकरण के लिए असफल होना है क्योंकि हम कभी भी 2 साबित नहीं कर सकते हैं।