वहाँ एक व्याकरण के निर्माण के लिए एक ज्ञात तरीका है जो परिमित तार का एक सेट निर्धारित है?


10

मेरे पढ़ने से ऐसा लगता है कि अधिकांश व्याकरण अनंत संख्या में तार उत्पन्न करने से चिंतित हैं। अगर आपने दूसरे तरीके से काम किया तो क्या होगा?

यदि m लम्बाई के n तार दिए जाते हैं, तो एक व्याकरण बनाना संभव होना चाहिए जो उन तारों को उत्पन्न करेगा, और बस उन तारों को।

क्या ऐसा करने का कोई ज्ञात तरीका है? आदर्श रूप से एक तकनीक का नाम जिसका मैं अनुसंधान कर सकता हूं। वैकल्पिक रूप से, मैं ऐसी विधि खोजने के लिए एक साहित्य खोज करने के बारे में कैसे जाऊंगा?


5
तुच्छ: स्ट्रिंग्स के बीएनएफ तालिका का निर्माण।
जोशुआ

स्ट्रिंग्स परिभाषा द्वारा परिमित हैं। और जब तक आपके पास इसके बारे में कुछ बारीक विवरण न हो, आप एक अनंत सेट "दिया" नहीं कर सकते।
वॉनब्रांड

जवाबों:


11

यह "व्याकरण प्रेरण" के सामान्य विषय के अंतर्गत आता है; उस वाक्यांश पर खोज करने से साहित्य का टन बढ़ जाएगा। उदाहरण के लिए, उदाहरण देखें, एक संदर्भ मुक्त व्याकरण , https://en.wikipedia.org/wiki/Grammar_induction , https://cstheory.stackexchange.com/q/27347/5038

नियमित भाषाओं (संदर्भ-मुक्त लोगों के बजाय) के लिए, क्या रेगेक्स गोल्फ एनपी-कम्प्लीट है? , सबसे छोटा DFA जो दिए गए स्ट्रिंग्स को स्वीकार करता है और दिए गए अन्य स्ट्रिंग्स को अस्वीकार करता है , क्या नियमित सेट सीखने के लिए Dana Angluin के एल्गोरिथ्म में सुधार है , और https://cstheory.stackexchange.com/q/1854/5038


संभवतः अनंत नियमित भाषाओं के लिए व्याकरण को प्रस्तुत करना इस समस्या से कठिन और काफी अलग है।
रीइन्टीरियरपोस्ट

मैं इस प्रश्न को सही तरीके से चिह्नित कर रहा हूं, क्योंकि हालांकि यह सीधे प्रश्न का उत्तर नहीं देता है (जो यह बताता है कि यह तुच्छ रूप से कहा जा सकता है), यह मुझे उस तरह की शब्दावली प्रदान करता है, जिसे मुझे आगे अनुसंधान करने की आवश्यकता है।
गुस्ताव बर्तराम

8

यदि तार की संख्या परिमित है सेट करें S={s1,s2....sm} आप हमेशा संदर्भ मुक्त व्याकरण के साथ आ सकते हैं जो उन सभी तार उत्पन्न करता है, चलो A एक गैर टर्मिनल हो तो नियम हो सकता है रों1|रों2|रोंn। तार के एक सीमित सेट के लिए आप एक परिमित राज्य ऑटोमेटा के साथ भी आ सकते हैं जो केवल उन तारों को स्वीकार करता है। तो तार के परिमित सेट का मामला वास्तव में तुच्छ है।


मुझे लगता है कि मुझे अपनी पार्सिंग पाठ्यपुस्तक की समीक्षा करने की आवश्यकता है। पूर्वव्यापी में यह उत्तर स्पष्ट प्रतीत होता है। धन्यवाद!
गुस्ताव बर्तराम

3

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

  1. सूची: प्रत्येक स्ट्रिंग के लिए w भाषा में, एक नियम है एसw। चलोएसशुरू नॉनटर्मिनल हो। किया हुआ।
  2. उपसर्ग वृक्ष: प्रत्येक उपसर्ग के लिए w भाषा में एक स्ट्रिंग, नॉनटर्मिनल है Xw। प्रत्येक स्ट्रिंग के लिएw1xw2 भाषा में, जहां एक्स एक प्रतीक है, नियम है एक्सw1एक्सएक्सw2। प्रत्येक स्ट्रिंग के लिएw भाषा में, नियम है एक्सwε। चलोएक्सεशुरू नॉनटर्मिनल हो। किया हुआ।
  3. प्रत्यय वृक्ष: वही, उलटा।
  4. न्यूनतम आकार के एक व्याकरण का निर्माण करने के लिए एक एल्गोरिथ्म लागू करना, उदाहरण के लिए न्यूनतम नियमों की संख्या। मैं नहीं जानता कि यह कितना कठिन है।

हां, पहले उत्तर के बाद यह स्पष्ट था कि मुझे अतिरिक्त मानदंड लागू करना चाहिए था, लेकिन पहले उत्तर के बाद प्रश्न को बदलना अनुचित लगा।
गुस्ताव बर्तराम

फिर भी, मैं तार के दिए गए परिमित सेट के लिए एक न्यूनतम व्याकरण खोजने की समय जटिलता को जानना पसंद करूंगा ... आइए हम कहते हैं, तार की कुल लंबाई में, या परिणाम की कुल लंबाई में।
रीइन्टीरियरपोस्ट

3

आप जो पूछ रहे हैं वह एक खोज सूचकांक के समान है। वास्तव में Finite State Transducers को बनाया जा सकता है और उन्हें खिलाए गए पाठ को पहचानने के लिए उपयोग किया जा सकता है। छूट के लिए, Lucene इस एल्गोरिथ्म का उपयोग करता है: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.24.3698

व्यावहारिक उपयोग के लिए, एंड्रयू गैलेंट द्वारा इस ब्लॉग पोस्ट को देखें: ऑटोमेटा और रस्ट के साथ 1,600,000,000 कुंजी

पोस्ट में वह पाठ के एक कोष को दिए गए FSA के निर्माण की विधि का वर्णन करता है जैसे कि वह सभी शब्दों को पहचानता है। अंतिम परिणाम रैखिक समय में और निरंतर मेमोरी में पूर्व-सॉर्ट की गई कुंजियों से लगभग न्यूनतम FST का निर्माण करना है।

एफएसए उपसर्गों और प्रत्ययों को साझा करना

कार्यान्वयन उनकी fstलाइब्रेरी में उपलब्ध है : https://github.com/BurntSushi/fst


1

रीइनस्टीरपोस्ट द्वारा प्रस्तुत प्रश्न का उत्तर जो मूल प्रश्न का भी उत्तर देता है:

हम निम्नलिखित के रूप में शब्दकोश automaton का निर्माण करते हैं:

  1. एक ऐसी ऑटोमेटन का निर्माण करें जो वास्तव में पहली स्ट्रिंग को पढ़े और स्वीकार करे।
  2. अगले तार के लिए, इसे ऑटोमेटन के साथ पढ़ना शुरू करें जब तक कि कुछ अक्षर के लिए कोई संक्रमण न हो। बाकी स्ट्रिंग के लिए एक नई शाखा शुरू करें। तब तक दोहराएं जब तक कि सभी तार संसाधित न हो जाएं

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

यह ऑटोमेटन न्यूनतम है। चूंकि नियमित मामले में ऑटोमेटा और व्याकरण लगभग एक से एक के अनुरूप होते हैं, व्याकरण के लिए भी ऐसा ही होता है, निश्चित रूप से, n समय से कम समय में आकार n का निर्माण करना असंभव है।


धन्यवाद। जहां तक ​​इस प्रश्न का उत्तर देने की बात है: मैं यह नहीं देखता कि यह रीइन्टीरियरपोस्ट में क्या योगदान देता है। इसके अलावा, हम ऐसे उत्तर नहीं चाहते हैं जो किसी अन्य उत्तर पर प्रतिक्रिया दें या टिप्पणी करें: यह चर्चा मंच नहीं है। ऐसा करने का तरीका एक नया प्रश्न पोस्ट करना और फिर स्वयं इसका उत्तर देना होगा। मुझे लगता है कि स्पष्ट नहीं हो सकता है। [उस ने कहा, मैं यह नहीं देखता कि आपका जवाब समस्या के बारे में कैसे जवाब देता है। रीइनस्टीरपोस्ट के जवाब के अंत में समस्या यह थी कि न्यूनतम संख्या के नियमों के साथ एक व्याकरण खोजा जाए। आपका उत्तर बताता है कि कम से कम राज्यों के साथ डीएफए कैसे बनाया जाए। (जारी)
DW

1
बेशक हम उस डीएफए को एक नियमित व्याकरण में बदल सकते हैं, लेकिन आपको क्या लगता है कि व्याकरण में नियमों की संख्या के संदर्भ में यह न्यूनतम होगा? ऐसा नहीं है कि जरूरतों को सबूत की तरह लगता है।]
DW

मेरे जवाब का योगदान रनटाइम है, मुझे लगता है। आप सही हैं, कई चीजें जो मैं कहता हूं कि कुछ प्रमाण की आवश्यकता होगी। लेकिन परिमित ऑटोमेटा संक्रमण और नियमित व्याकरण के नियमों के बीच पत्राचार मेरे लिए बहुत स्पष्ट है (यदि उत्तरार्द्ध केवल एक टर्मिनल प्रति नियम उत्पन्न कर सकता है जैसा कि अधिकांश परिभाषाओं में है); फिर मेरा कोई भी व्याकरण छोटा से छोटा कोई ऑटोमनटन देगा। इसलिए मुझे लगता है कि न्यूनतम ऑटोमेटन से व्याकरण (मुझे साबित नहीं होता है कि मेरा न्यूनतम है) भी न्यूनतम होगा। - मैं आपकी सलाह को ध्यान में रखते हुए उत्तर दूंगा, धन्यवाद
पीटर ल्यूपॉल्ड

डीएफए के लिए न्यूनतम की धारणा राज्यों की संख्या के संबंध में है । क्या यह डीएफए में संक्रमण की संख्या के संबंध में, या परिणामी व्याकरण में नियमों की संख्या की न्यूनतमता का अर्थ है ? मुझे लगता है कि हमें आपकी मीट्रिक पर नज़र रखनी होगी, क्योंकि अन्यथा मैं चिंतित हूं कि हम सेब की तुलना संतरे से करेंगे।
DW

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