एक नियमित व्याकरण द्वारा स्वीकार किए गए शब्दों की गिनती


26

एक नियमित भाषा (NFA, DFA, व्याकरण, या regex) को देखते हुए, किसी दिए गए भाषा में शब्दों को स्वीकार करने की संख्या को कैसे गिना जा सकता है? दोनों "बिल्कुल एन अक्षरों के साथ" और "अधिकांश एन पत्रों के साथ" रुचि के हैं।

मार्गरेटा एकरमैन के पास एनएफए द्वारा स्वीकार किए गए शब्दों की गणना के संबंधित विषय पर दो पेपर हैं, लेकिन मैं उन्हें कुशलता से गिनने के लिए संशोधित करने में सक्षम नहीं था।

ऐसा लगता है कि नियमित भाषाओं की प्रतिबंधित प्रकृति की गिनती उन्हें अपेक्षाकृत आसान बना देनी चाहिए - मैं एक एल्गोरिथ्म से लगभग एक सूत्र की अपेक्षा करता हूं। दुर्भाग्य से मेरी खोजों ने अब तक कुछ भी नहीं किया है, इसलिए मुझे गलत शब्दों का उपयोग करना चाहिए।


मुझे लगता है कि आप का अर्थ है "आकार शब्दों को स्वीकार करने की संख्या ", या ऐसा कुछ? वरना, लिए शब्दों को स्वीकार करने की संख्या क्या हैnΣ
सुरेश वेंकट

जवाबों:


37

एक DFA, जिसमें प्रारंभिक अवस्था राज्य है , लंबाई के शब्दों की संख्या है कि राज्य में समाप्त है , जहां DFA के हस्तांतरण मैट्रिक्स (एक मैट्रिक्स है, जिसमें पंक्ति और कॉलम में संख्या विभिन्न इनपुट प्रतीकों की संख्या है जो राज्य से राज्य तक संक्रमण का कारण बनती है )। तो तुम लंबाई स्वीकार शब्द भरोसा कर सकते हैं वास्तव में आसानी से, यहां तक कि जब , मध्यम बड़ी है सिर्फ एक मैट्रिक्स बिजली की गणना और प्रविष्टियां स्वीकार राज्यों के लिए इसी जोड़कर।0kiAk[0,i]Aijijkk

एक ही बात ज्यादा से ज्यादा लंबाई के शब्दों को स्वीकार करने के लिए काम करता , एक अलग मैट्रिक्स के साथ। मैट्रिक्स की एक अतिरिक्त पंक्ति और स्तंभ जोड़ें, सेल में एक पंक्ति और स्तंभ दोनों में एक, नई पंक्ति और प्रारंभिक अवस्था के स्तंभ में एक, और अन्य सभी कक्षों में एक शून्य। मैट्रिक्स में इस परिवर्तन का प्रभाव प्रत्येक शक्ति पर प्रारंभिक स्थिति में एक और पथ जोड़ना है।k

यह एनएफए के लिए काम नहीं करता है। मुझे संदेह है कि सबसे अच्छी बात यह है कि इसे केवल डीएफए में बदल दिया जाए और फिर मैट्रिक्स पावरिंग एल्गोरिथ्म लागू किया जाए।


2
एकदम सही उत्तर: स्पष्ट रूप से केवल एक बार जब आप इसे पढ़ते हैं।
चार्ल्स

1
यदि आपके पास DFA के अलावा कोई इनपुट है, तो इस दृष्टिकोण में घातीय सबसे खराब स्थिति है। क्या यह आपके लिए, @Charles का मुद्दा नहीं है? आप अपने प्रश्नों में नियमित भाव, NFA और व्याकरण शामिल करते हैं, और एक कुशल तरीका भी पूछते हैं।
राफेल

17

चलो एक (गैर नियतात्मक) शुरू करने राज्य के साथ परिमित स्वचालन हो , और ।A=(Q={q1,,qn},Σ,δ,QF)q1QFQδQ×Σ×Q

चलो सभी शब्दों में शुरू स्वीकार किया जा सकता के लिए पैदा समारोह , वह यह है कि वें अपनी श्रृंखला के विस्तार के गुणांक।Qi(z)qin[zn]Qi=|{w|w|=nw accepted from qi}|

स्पष्ट रूप से:

Qi(z)=[qiQF]+(qi,a,qj)δxQj(z)

लिए परिणामी (रैखिक) समीकरण प्रणाली को (Mathematica या एक समान उपकरण का उपयोग करके)। फिर, वांछित मात्रा है।Q1[zn]Q1

यह चॉम्स्की और श्टज़ेनबर्गर (1963) द्वारा व्याकरण के लिए शुरू की गई एक तकनीक पर वापस जाता है; यह ऑटोमेटा को आसानी से स्थानांतरित करता है।

संपादित करें: यदि आप -transitions के लिए खाता बनाना चाहते हैं , तो बस इसी परिवर्तन के लिए योग में कारक छोड़ दें । Similiarly, यदि आप "संकुचित" है किनारों, यानी प्रतीक के बजाय एक शब्द एक संक्रमण पर, की जगह के साथ ।εxaΣwΣkxxk


मैं ऐतिहासिक नोट की सराहना करता हूं!
चार्ल्स

1
एर, यह वास्तव में एक ऐसी विधि है जो कई परिस्थितियों में वास्तव में अच्छी तरह से काम करती है (और सरल है, एक बार जब आप इसे प्राप्त करते हैं)। उदाहरण के लिए, आप सीएफजी को बिल्कुल उसी तरह से कर सकते हैं।
राफेल

1
मैं देखता हूं, मुझे गलत समझा गया। उस स्थिति में, यदि आप इसमें पढ़ना चाहते हैं, तो मैं कुइच (१ ९ ich०) की सिफारिश करता हूं, जो मुझे सी एंड एस के काम से अधिक सुलभ लगी । वह इसे अपनी एक पुस्तक में शामिल करता है, जो मुझे याद नहीं है।
राफेल

1
आप कह रहे हैं आप लंबाई के शब्दों भरोसा कर सकते हैं बहुपद समय में और DFA का निर्माण बिना एक नियमित रूप से भाषा में? MO पर इसके बारे में पूछे जाने पर: mathoverflow.net/questions/162186/…n
joro

1
@ जोरो अस्पष्ट व्याकरण के मामले में, मुझे लगता है कि यह सच है, हाँ।
राफेल

7

मुझे लगता है कि यह एक कठिन गिनती की समस्या है, इस पेपर को देखें: दी गई लंबाई के नियमित अनुक्रमों के आकार की गणना # पी-पूर्ण: एस कन्नन, जेड स्वेडिक और एसआर महाने है। नियमित भाषाओं में स्ट्रिंग्स की गिनती और यादृच्छिक पीढ़ी। ACM-SIAM संगोष्ठी में असतत एल्गोरिदम (सोडा) पर, पृष्ठ 551-557, 1995।


1
ऊपर का पद मानता है कि दी गई लंबाई एकात्मक है। यदि इसके बजाय लंबाई बाइनरी में है, तो समस्या PSPACE- हार्ड है। मैं इसे इस प्रमाण के आधार पर कहता हूं कि दो नियमित अभिव्यक्तियों की तुल्यता का निर्णय PSPACE- कठिन है। उस कमी में, सभी स्ट्रिंग्स को स्वीकार करने के लिए एक रेज-एक्स का निर्माण किया गया था, और दूसरे उन सभी स्ट्रिंग्स को स्वीकार करने के लिए था जो इनपुट डब्ल्यू पर PSPACE मशीन एम के कम्प्यूटिंग इतिहास को अस्वीकार नहीं कर रहे हैं। उस दूसरी नियमित अभिव्यक्ति का उपयोग करना और प्रश्न पर समस्या के इनपुट के रूप में एम पर कम्प्यूटेशन इतिहास की लंबाई इस अन्य समस्या को PSPACE- हार्ड भी बनाती है।
मिखाइल रूडॉय

3

निम्नलिखित: CMTV , जटिलता वर्ग करता है (जो अनिवार्य रूप से, लेकिन कुछ हद तक अधिक सामान्य सेटिंग में) एक इनपुट शब्द पर एक nondeterministiciteite automaton की गणना की संख्या की गणना करने वाले कार्यों की श्रेणी है। एक निश्चित लंबाई। कई परिणाम अब इस जटिलता वर्ग के बारे में ज्ञात हैं, जिनमें सीडीएल के परिणाम के रूप में निर्धारक लॉगस्पेस में शामिल होना शामिल है । ध्यान दें कि इस सेटिंग में ऑटोमेटन तय हो गया है और इनपुट शब्द एकमात्र इनपुट है।#NC1

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