जवाबों:
भाषा लिए एक व्याकरण असंदिग्धता साबित करने का एक तरीका है (कम से कम) । इसमें दो चरण होते हैं:एल
पहला कदम बहुत स्पष्ट है: दिखाओ कि व्याकरण आपके द्वारा इच्छित शब्दों को उत्पन्न करता है (कम से कम), यह सही है।
दूसरे चरण से पता चलता है कि लंबाई के शब्दों के लिए कई वाक्य रचना पेड़ के रूप में है के रूप में लंबाई के शब्द है - 1. के साथ इस unambiguity निकलता है। यह के संरचना कार्य का उपयोग करता है जो चोम्स्की और श्टज़ेनबर्गर [1], अर्थात् वापस जाता हैएन एलजी
साथ वाक्य रचना पेड़ों की संख्या लंबाई के शब्दों के लिए है । बेशक आपके पास होना चाहिएइसके लिए काम करना है।G n | एल एन |
अच्छी बात यह है कि संदर्भ-मुक्त भाषाओं के लिए (आमतौर पर) प्राप्त करना आसान है, हालांकि लिए एक बंद फ़ॉर्म मुश्किल हो सकता है। रूपांतरण nonterminal प्रति एक चर के साथ कार्यों का एक समीकरण प्रणाली में: जी
यह कठिन लग सकता है लेकिन वास्तव में केवल एक रूपात्मक परिवर्तन है जो उदाहरण में स्पष्ट हो जाएगा। विचार यह है कि उत्पन्न टर्मिनल प्रतीकों को के घातांक में गिना जाता है और क्योंकि प्रणाली का , के समान रूप है , अक्सर योग में होता है क्योंकि टर्मिनलों को द्वारा उत्पन्न किया जा सकता है । विवरण के लिए कुइच [2] की जाँच करें।G z n n G
इस समीकरण प्रणाली को सुलझाने (कंप्यूटर बीजगणित!) पैदावार ; अब आपको "केवल" गुणांक खींचना होगा (बंद, सामान्य रूप में)। टीसीएस चीट शीट और कंप्यूटर बीजगणित अक्सर ऐसा कर सकते हैं।
नियमों के साथ सरल व्याकरण पर विचार करें
।
यह स्पष्ट है कि (चरण 1, प्रेरण द्वारा प्रमाण)। कर रहे हैं लंबाई के खोल देना यदि भी है, अन्यथा।2 n एनएन०
समीकरण प्रणाली पैदावार की स्थापना
जिसका हल है
।
गुणांक की संख्या के साथ मेल खाते हैं , इसलिए असंदिग्ध है।
यह एक अच्छा प्रश्न है, लेकिन कुछ Googling ने आपको बताया होगा कि अस्पष्टता तय करने के लिए कोई सामान्य तरीका नहीं है , इसलिए आपको अपने प्रश्न को और अधिक विशिष्ट बनाने की आवश्यकता है।
कुछ व्याकरणों के लिए, प्रेरण द्वारा एक प्रमाण (शब्द की लंबाई से अधिक) संभव है।
उदाहरण के लिए विचार करें एक व्याकरण से अधिक Σ = { एक , ख } निम्नलिखित नियमों द्वारा दिए गए:
लंबाई के सभी शब्द में एल ( जी ) - वहाँ केवल है ε - केवल एक बाएं व्युत्पत्ति है।
मान लें कि लंबाई के सभी शब्द कुछ के लिए n ∈ एन केवल एक ही छोड़ दिया-व्युत्पत्ति है।
अब मनमाने ढंग से करने पर विचार कुछ के लिए n > 0 । जाहिर है, डब्ल्यू 1 ∈ Σ । अगर डब्ल्यू 1 = एक है, हम जानते हैं कि हर बाएं व्युत्पत्ति में पहला नियम हो गया है एस → एक एस एक ; यदि w 1 = b है , तो यह S → b S b होना चाहिए। इसमें सभी मामले शामिल हैं। प्रेरण परिकल्पना से, हम जानते हैं कि लिए वास्तव में एक वाम-व्युत्पत्ति है । संयोजन में, हम यह निष्कर्ष निकालते हैं कि डब्ल्यू के लिए बिल्कुल एक बाएं व्युत्पत्ति है ।
यह कठिन हो जाता है अगर
यह सभी भावुक रूपों (यदि व्याकरण में कोई अनुत्पादक गैर-टर्मिनलों नहीं है) और "रूट" गैर-टर्मिनलों के लिए दावे को मजबूत करने में मदद कर सकता है।
मुझे लगता है कि ग्रीबाच सामान्य रूप में रूपांतरण (संयुक्त राष्ट्र) अस्पष्टता को बनाए रखता है, इस कदम को लागू करने के लिए पहले बाएं-पुनरावृत्ति का अच्छी तरह से ख्याल रख सकता है।
कुंजी हर शब्द की एक विशेषता की पहचान करना है जो एक व्युत्पन्न चरण को कम से कम (कम से कम) ठीक करता है । बाकी सभी इस प्रकार है।
असल में, यह एक बाल पीढ़ी की समस्या है। पहली अभिव्यक्ति के साथ शुरू करें, और यह बच्चे पैदा करें .... इसे पुनरावृत्ति (डीएफएस) करते रहें, और कुछ पुनरावृत्तियों के बाद, देखें कि क्या आप दो अलग-अलग बच्चों से समान विस्तारित अभिव्यक्ति उत्पन्न कर सकते हैं। यदि आप ऐसा करने में सक्षम हैं, तो यह अस्पष्ट है। इस एल्गोरिथ्म के चल रहे समय को निर्धारित करने का कोई तरीका नहीं है। मान लें कि यह सुरक्षित है, शायद बच्चों के 30 स्तर पैदा करने के बाद :) (बेशक यह 31 वें पर बम हो सकता है)