कैसे सिद्ध किया जाए कि एक व्याकरण असंदिग्ध है?


25

मेरी समस्या यह है कि मैं कैसे साबित कर सकता हूं कि एक व्याकरण असंदिग्ध है? मेरे पास निम्नलिखित व्याकरण है:

Sstatementif expression then Sif expression then S else S

और यह एक व्याकरण व्याकरण के लिए, मुझे लगता है कि यह सही है:

  • SS1S2

  • S1if expression then Sif expression then S2 else S1

  • S2if expression then S2 else S2statement

मुझे पता है कि एक अस्पष्ट व्याकरण में हर शब्द के लिए एक पेड़ होता है।

जवाबों:


20

भाषा लिए एक व्याकरण असंदिग्धता साबित करने का एक तरीका है (कम से कम) । इसमें दो चरण होते हैं:एलG=(N,T,δ,S)L

  1. साबित करें ।LL(G)
  2. साबित।[zn]SG(z)=|Ln|

पहला कदम बहुत स्पष्ट है: दिखाओ कि व्याकरण आपके द्वारा इच्छित शब्दों को उत्पन्न करता है (कम से कम), यह सही है।

दूसरे चरण से पता चलता है कि लंबाई के शब्दों के लिए कई वाक्य रचना पेड़ के रूप में है के रूप में लंबाई के शब्द है - 1. के साथ इस unambiguity निकलता है। यह के संरचना कार्य का उपयोग करता है जो चोम्स्की और श्टज़ेनबर्गर [1], अर्थात् वापस जाता हैएन एलGnLजीnG

SG(z)=n=0tnzn

साथ वाक्य रचना पेड़ों की संख्या लंबाई के शब्दों के लिए है । बेशक आपके पास होना चाहिएइसके लिए काम करना है।G n | एल एन |tn=[zn]SG(z)Gn|Ln|

अच्छी बात यह है कि संदर्भ-मुक्त भाषाओं के लिए (आमतौर पर) प्राप्त करना आसान है, हालांकि लिए एक बंद फ़ॉर्म मुश्किल हो सकता है। रूपांतरण nonterminal प्रति एक चर के साथ कार्यों का एक समीकरण प्रणाली में:SG जीtnG

[A(z)=(A,a0ak)δ i=0k τ(ai) :AN] with τ(a)={a(z),aNz,aT.

यह कठिन लग सकता है लेकिन वास्तव में केवल एक रूपात्मक परिवर्तन है जो उदाहरण में स्पष्ट हो जाएगा। विचार यह है कि उत्पन्न टर्मिनल प्रतीकों को के घातांक में गिना जाता है और क्योंकि प्रणाली का , के समान रूप है , अक्सर योग में होता है क्योंकि टर्मिनलों को द्वारा उत्पन्न किया जा सकता है । विवरण के लिए कुइच [2] की जाँच करें।G z n n GzGznnG

इस समीकरण प्रणाली को सुलझाने (कंप्यूटर बीजगणित!) पैदावार ; अब आपको "केवल" गुणांक खींचना होगा (बंद, सामान्य रूप में)। टीसीएस चीट शीट और कंप्यूटर बीजगणित अक्सर ऐसा कर सकते हैं।S(z)=SG(z)


उदाहरण

नियमों के साथ सरल व्याकरण पर विचार करेंG

SaSabSbε

यह स्पष्ट है कि (चरण 1, प्रेरण द्वारा प्रमाण)। कर रहे हैं लंबाई के खोल देना यदि भी है, अन्यथा।2 nL(G)={wwRw{a,b}} एनएन2n2nn0

समीकरण प्रणाली पैदावार की स्थापना

S(z)=2z2S(z)+1

जिसका हल है

SG(z)=112z2

गुणांक की संख्या के साथ मेल खाते हैं , इसलिए असंदिग्ध है।SG G


  1. चॉम्स्की द्वारा श्लेष -मुक्त भाषा का बीजगणितीय सिद्धांत , श्टजेनबर्गर (1963)
  2. कुइच (1970) द्वारा संदर्भ-मुक्त भाषाओं के प्रवेश पर

3
जैसा कि आप जानते हैं @ राफेल, अस्पष्टता निर्णायक नहीं है, इसलिए आपके कम से कम एक कदम को यंत्रीकृत नहीं किया जा सकता है। कोई भी विचार जो? लिए एक बंद फ़ॉर्म प्राप्त करना ? tn
मार्टिन बर्गर

2
यदि डिग्री बहुत अधिक है, तो समीकरण प्रणाली को हल करने योग्य एल्गोरिथम नहीं हो सकता है, और सटीक कार्यकुशलता को उत्पन्न करने वाले कार्यों से बाहर निकालना कठिन भी हो सकता है। "अभ्यास" में, हालांकि, एक अक्सर छोटे "डिग्री" के व्याकरण से संबंधित होता है - ध्यान दें, कहते हैं, चॉम्स्की सामान्य रूप से छोटी डिग्री के समीकरण सिस्टम की ओर जाता है - और कम से कम -asymptotics प्राप्त करने के लिए तरीके हैं गुणांक; यह अस्पष्टता स्थापित करने के लिए पर्याप्त हो सकता है। ध्यान दें कि स्पष्टता साबित करने के लिए, गुणांक खींचने के बिना पर्याप्त है; हालांकि इस पहचान को साबित करना कठिन हो सकता है। SL(z)=SG(z)
राफेल

साभार @Raphael क्या आप किसी ऐसे ग्रंथ के बारे में जानते हैं जो विस्तार से विकसित होता है कि यदि कोई चॉम्स्की सामान्य रूप का उपयोग करता है तो भी अनिर्णय कैसे हो सकता है? (मैं कुइच को पकड़ नहीं सकता।)
मार्टिन बर्गर

@MartinBerger मैंने अपनी टूडू सूची में आपकी टिप्पणी को फिर से खोज लिया; लंबी चुप्पी के लिए खेद है। तीन चरण हैं जो (मुझे लगता है) सामान्य रूप से गणना योग्य नहीं हैं: 1) निर्धारित करें । 2) कम्प्यूट | एल एन | । 3) निर्धारित करें [ z n ] S g ( z ) । विशेष रूप से, 2 का उपयोग करने के लिए एल का क्या प्रतिनिधित्व )? SG|Ln|[zn]Sg(z)L
राफेल

का प्रतिनिधित्व एक समस्या क्यों है ? हम उदाहरण के लिए संकलक के लिए सीएफजी का प्रतिनिधित्व करने के कई तरीकों में से किसी का उपयोग कर सकते हैं। शायद आपका मतलब है कि एल एन का प्रतिनिधित्व कैसे करें ? LLn
मार्टिन बर्जर

6

यह एक अच्छा प्रश्न है, लेकिन कुछ Googling ने आपको बताया होगा कि अस्पष्टता तय करने के लिए कोई सामान्य तरीका नहीं है , इसलिए आपको अपने प्रश्न को और अधिक विशिष्ट बनाने की आवश्यकता है।


2
ओपी प्रमाण तकनीकों के लिए कहता है, एल्गोरिदम नहीं।
राफेल

मै भी यही सोचता हूँ; यह प्रश्न में उल्लेख किया जा सकता है।
रीइनियरियरपोस्ट

1
Google सच्चाई का एक दैवज्ञ नहीं है, क्योंकि जानकार लोकतांत्रिक नहीं है, और Google परिणाम हैं। मैं इस मामले में Google पर भरोसा नहीं करूंगा, क्योंकि लोग अक्सर एक-दूसरे से कॉपी-कैट करते हैं कि वे क्या कॉपी करते हैं, इसकी शुद्धता की जांच किए बिना। बिना सबूत दिखाए, वे गलत हो सकते हैं।
SasQ

5
@ सासक्यू: आपने मेरे शब्दों को सचमुच पढ़ा। Google मुझे जो देता है वह एटिक्स को यूआरएल है जो चीजों को समझाता है।
रीयरियरपोस्ट

4

कुछ व्याकरणों के लिए, प्रेरण द्वारा एक प्रमाण (शब्द की लंबाई से अधिक) संभव है।


उदाहरण के लिए विचार करें एक व्याकरण से अधिक Σ = { एक , } निम्नलिखित नियमों द्वारा दिए गए:GΣ={a,b}

SaSabSbε

लंबाई के सभी शब्द में एल ( जी ) - वहाँ केवल है ε - केवल एक बाएं व्युत्पत्ति है।1L(G)ε

मान लें कि लंबाई के सभी शब्द कुछ के लिए n एन केवल एक ही छोड़ दिया-व्युत्पत्ति है।nnN

अब मनमाने ढंग से करने पर विचार कुछ के लिए n > 0 । जाहिर है, डब्ल्यू 1Σ । अगर डब्ल्यू 1 = एक है, हम जानते हैं कि हर बाएं व्युत्पत्ति में पहला नियम हो गया है एस एक एस एक ; यदि w 1 = b है , तो यह S b S b होना चाहिएw=w1wwnL(G)Σnn>0w1Σw1=aSaSaw1=bSbSb। इसमें सभी मामले शामिल हैं। प्रेरण परिकल्पना से, हम जानते हैं कि लिए वास्तव में एक वाम-व्युत्पत्ति है । संयोजन में, हम यह निष्कर्ष निकालते हैं कि डब्ल्यू के लिए बिल्कुल एक बाएं व्युत्पत्ति है ।ww


यह कठिन हो जाता है अगर

  • कई गैर-टर्मिनल हैं,
  • व्याकरण रैखिक नहीं है, और / या
  • व्याकरण बाएँ-पुनरावर्ती है।

यह सभी भावुक रूपों (यदि व्याकरण में कोई अनुत्पादक गैर-टर्मिनलों नहीं है) और "रूट" गैर-टर्मिनलों के लिए दावे को मजबूत करने में मदद कर सकता है।

मुझे लगता है कि ग्रीबाच सामान्य रूप में रूपांतरण (संयुक्त राष्ट्र) अस्पष्टता को बनाए रखता है, इस कदम को लागू करने के लिए पहले बाएं-पुनरावृत्ति का अच्छी तरह से ख्याल रख सकता है।

कुंजी हर शब्द की एक विशेषता की पहचान करना है जो एक व्युत्पन्न चरण को कम से कम (कम से कम) ठीक करता है । बाकी सभी इस प्रकार है।


3

असल में, यह एक बाल पीढ़ी की समस्या है। पहली अभिव्यक्ति के साथ शुरू करें, और यह बच्चे पैदा करें .... इसे पुनरावृत्ति (डीएफएस) करते रहें, और कुछ पुनरावृत्तियों के बाद, देखें कि क्या आप दो अलग-अलग बच्चों से समान विस्तारित अभिव्यक्ति उत्पन्न कर सकते हैं। यदि आप ऐसा करने में सक्षम हैं, तो यह अस्पष्ट है। इस एल्गोरिथ्म के चल रहे समय को निर्धारित करने का कोई तरीका नहीं है। मान लें कि यह सुरक्षित है, शायद बच्चों के 30 स्तर पैदा करने के बाद :) (बेशक यह 31 वें पर बम हो सकता है)


1
ओपी प्रमाण तकनीकों के लिए कहता है, एल्गोरिदम नहीं।
राफेल

2
संभवतः यह साबित करने का कोई तरीका नहीं हो सकता है कि कोई व्याकरण अस्पष्ट है या नहीं। तथ्य की बात के रूप में जब वह बमबारी होती है तो यह अनिर्दिष्ट है।
Sain15ошƒаӽ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.