सीएफजी के लिए चॉम्स्की सामान्य रूप जैसे सामान्य रूपों का महत्व


12

मैं समझता हूं कि संदर्भ-मुक्त व्याकरण का उपयोग संदर्भ-मुक्त भाषाओं का प्रतिनिधित्व करने के लिए किया जा सकता है। इसमें अस्पष्टताएं हो सकती हैं। हमारे पास चॉम्स्की और ग्रीबाच सामान्य रूप भी हैं। मैं उस की जरूरत को नहीं समझ सका।

वे भाषाओं के सिद्धांत में महत्वपूर्ण क्यों हैं? मैंने सभी पाठ्यपुस्तकों को इन सामान्य रूपों के बारे में बताने के लिए कहा, लेकिन उनके महत्व के बारे में कुछ भी नहीं बताया।


2
रचनात्मक प्रमाण देते समय सामान्य रूप काम में आते हैं।
कारोलिस जुओदेलो

जवाबों:


12

कम से कम दो प्रासंगिक उपयोग हैं।

  1. प्रमाणों की सरलता
    संदर्भ-मुक्त व्याकरण के आसपास बहुत सारे प्रमाण हैं, जिनमें पुन: प्रयोज्य और ऑटोमेटा के समतुल्य शामिल हैं। वे सरल हैं जितने अधिक व्याकरणों के सेट को प्रतिबंधित करना है उससे आपको निपटना होगा। इसलिए, सामान्य रूप वहां मददगार हो सकते हैं।

    एक ठोस उदाहरण के रूप में, ग्रीबाच सामान्य रूप का उपयोग (रचनात्मक रूप से) यह दिखाने के लिए किया जाता है कि प्रत्येक CFL के लिए एक -transition-free PDA है (जिसमें शामिल नहीं है )।εεε

  2. पार्सिंग को सक्षम करता है
    जबकि पीडीए का उपयोग किसी भी व्याकरण के साथ शब्दों को पार्स करने के लिए किया जा सकता है, यह अक्सर असुविधाजनक होता है। सामान्य रूप हमें काम करने के लिए अधिक संरचना प्रदान कर सकते हैं, जिसके परिणामस्वरूप आसान पार्सिंग एल्गोरिदम हैं।

    एक ठोस उदाहरण के रूप में, CYK एल्गोरिथ्म चॉम्स्की सामान्य रूप का उपयोग करता है। ग्रीबाच सामान्य रूप, दूसरी ओर, पुनरावर्ती-वंश पार्सिंग को सक्षम करता है; भले ही बैकट्रैकिंग आवश्यक हो, अंतरिक्ष जटिलता रैखिक है।


5

चॉम्स्की सामान्य रूप एक बहुपद समय एल्गोरिथ्म को यह तय करने में सक्षम बनाता है कि क्या एक व्याकरण द्वारा एक स्ट्रिंग उत्पन्न किया जा सकता है। यदि आप गतिशील प्रोग्रामिंग जानते हैं तो एल्गोरिथ्म बहुत चालाक है ...

यदि आपके इनपुट की लंबाई ( ) n है तो आप मंद n x n का 2d सरणी ( A ) लेते हैं ।मैंnnn

व्याकरण G के सभी प्रतीकों को दर्शाता हैजो उप-स्ट्रिंग I ( i , j ) को प्राप्त कर सकते हैं।[मैं,जे]जीमैं(मैं,जे)

तो आखिरकार अगर में स्टार्ट सिंबल ( S ) होता है तो इसका मतलब है कि स्ट्रिंग I को S से लिया जा सकता है जो कि हम जांचना चाहते थे।[1,n]एसएस

def decide (string s,grammar G):
    //base case
    for i=1 to n:
        N[i,i]=I[i]    //as the substring of length one can be generated by only a
                       terminal.
    //end base case

    //induction
    for s=1 to n:       //length of substring
        for i=1 to n-s-1: //start index of substring
            for j=i to i+s-1:   //something else
                 if there exists a rule A->BC such that B belongs to N[i,j] and C
                 belongs to N[j+1,i+s-1] then add A to N[i,i+s-1]
    //endInduction

    if S belongs to N[1,n] then accept else reject.

मुझे पता है कि अनुक्रमणिका बहुत पागल लगती है। लेकिन मूल रूप से यहाँ क्या हो रहा है।

  • आधार मामला बहुत स्पष्ट है मुझे लगता है।

  • रोंरों

  • 5sub1->बीसीबीसीएन[1,6]

  • एन[1,n]


  • 3
    यह CYK एल्गोरिथ्म है जो क) आपको ऐसे और बी के रूप में नाम देना चाहिए) मेरे उत्तर में उल्लेख किया गया है। ध्यान दें कि बहुपद रनटाइम केवल प्रभावशाली है क्योंकि एल्गोरिथ्म सभी CFG पर समान है, अर्थात यह सामान्य है।
    राफेल

    @ राफेल ओके .... मुझे नाम पता नहीं था :)
    ishan3243

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