क्या "छोटी" मशीनें हैं जो कुशलता से नियमित अभिव्यक्तियों से मेल खा सकती हैं?


30

यह सर्वविदित है कि एक नियमित अभिव्यक्ति को आकार के एक nondeterministic परिमित ऑटोमोटन द्वारा नियमित अभिव्यक्ति के लिए आनुपातिक रूप से पहचाना जा सकता है, या एक नियतात्मक एफए द्वारा जो संभवतः घातीय रूप से बड़ा है। इसके अलावा, एक स्ट्रिंग और एक नियमित अभिव्यक्ति आर दिया गया , एनएफए समय के आधार पर सदस्यता का परीक्षण कर सकता है | s | | आर | , और DFA समय के आधार पर सदस्यता का परीक्षण कर सकते हैं | s |sr|s||r||s|। एनएफए के लिए मंदी इस तथ्य से उत्पन्न होती है कि अनिवार्य रूप से हमें संभावित राज्यों के सेट को ट्रैक करने की आवश्यकता होती है जिसमें ऑटोमेटन अंदर हो सकता है, और डीएफए के लिए तेजी से झटका इस तथ्य से उत्पन्न होता है कि इसके राज्य राज्यों के अधिकार के तत्व हैं NFA।

क्या यह कुशलतापूर्वक संभव है (यानी, समय में से बेहतर है, और O ( 2 | r ) से बेहतर अंतरिक्ष नियमित अभिव्यक्ति को पहचानता है, अगर हम परिमित ऑटोमेटा से अधिक शक्तिशाली मशीनों का उपयोग करने की अनुमति देते हैं। (उदाहरण के लिए, क्या पुशडाउन ऑटोमेटा, या काउंटर मशीनों के साथ नियमित भाषाओं को मान्यता देने के लिए पर्याप्त लाभ हैं?)O(|r||s|)O(2|r|)


2
जब आप कहते हैं कि "NFA के लिए समय आनुपातिक में सदस्यता परीक्षण कर सकते हैं " क्या आपका मतलब है कि एक (नियतात्मक) रैम मशीन है कि स्पष्ट रास्ते में NFA simulates इतना समय लगता है? या "एनएफए के रन टाइम" को परिभाषित करने का कोई और तरीका है जो किसी अन्य कम्प्यूटेशनल मॉडल को संदर्भित नहीं करता है? (इसके अलावा समझदार लेकिन बहुत उपयोगी नहीं परिभाषा यह है कि का कहना है कि स्ट्रिंग के लिए किसी भी NFA के क्रम से रों है | रों | ।)|s||r|s|s|
राडू ग्रिगोर

हां, यह मेरे प्रश्न की सही व्याख्या है।
नील कृष्णस्वामी

2
तो मुझे लगता है और अधिक प्राकृतिक बस इस पूछने के लिए: वहाँ एक एल्गोरिथ्म (एक रैम मशीन पर) अगर एक स्ट्रिंग है फैसला करता है नियमित अभिव्यक्ति द्वारा परिभाषित भाषा में है r कि में काम करता है ( | है || आर | ) समय और ( 2 | r | ) स्थान? (खासकर यदि आप एक रैम मशीन के संदर्भ में एक पुशडाउन ऑटोमेटा के रनटाइम को परिभाषित करते हैं।)sro(|s||r|)o(2|r|)
रादू ग्रिगोर सेप

1
मुझे समस्या बिल्कुल समझ में नहीं आ रही है। क्या इनपुट एक स्ट्रिंग एस और एक नियमित अभिव्यक्ति आर है, और समस्या यह तय करना है कि क्या एस भाषा में नियमित अभिव्यक्ति आर द्वारा परिभाषित है?
रॉबिन कोठारी

@ रॉबिन: हाँ, यह बात है। मैं जानना चाहूंगा कि क्या आप परिमित ऑटोमेटा की तुलना में अधिक कम्प्यूटेशनल पावर का उपयोग करके या फिर अतिरिक्त सुविधाओं (जैसे स्टैक, रैम) की मदद से नियमित अभिव्यक्ति को अधिक कुशलता से मैच कर सकते हैं, बस मदद नहीं करते हैं।
नील कृष्णस्वामी

जवाबों:


20

इस प्रकार, अंतरिक्ष के लिए समय का व्यापार करना काफी आसान है।

rO(rs)O(2r)

kSir/kSiAiSi02r/k1

T[i,j,c,Ai]ijk1cAiSiSjyT[i,j,c,Ai]ySjAiyc

kSiAiSici,jSjAicSjO(k2)O(sk2)

O(k22r/k)

kO(rs)O(r2s)

k


ak

@ नील: यदि डेविड का समाधान सबसे अच्छा रैम मशीन कर सकता है, तो ढेर, काउंटर, आदि मदद नहीं करेंगे। (लेकिन, निश्चित रूप से, उन्होंने केवल ऊपरी सीमाएं दीं, निचली सीमाएं नहीं।)
रादु ग्रिगोर

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

wwlgrO(sr2)O(r/w)rwkr/wO(sr2/w2)2w

4

यह एक उत्तर नहीं है, लेकिन एक टिप्पणी के लिए बहुत लंबा है। मैं यह समझाने की कोशिश कर रहा हूं कि प्रश्न, जैसा कि सामने आया है, समझना मुश्किल हो सकता है।

एक डिवाइस एक्स के लिए कम्प्यूटेशनल जटिलता को परिभाषित करने के दो तरीके हैं ।

पहला और सबसे प्राकृतिक तरीका आंतरिक है । यह कहने की आवश्यकता है कि डिवाइस X इनपुट का उपयोग कैसे करता है, ताकि हम बाद में यह देख सकें कि इनपुट का आकार n डिवाइस के रन समय को कैसे प्रभावित करता है। एक को यह भी कहना चाहिए कि ऑपरेशन (या चरण ) के रूप में क्या मायने रखता है । फिर हम बस डिवाइस को इनपुट पर चलाते हैं और संचालन को गिनते हैं।

O(f(n))f(n)

उदाहरण के लिए, एनएफए के लिए एक आंतरिक परिभाषा कहती है कि यह लंबाई n की एक स्ट्रिंग को संसाधित करने के लिए n कदम उठाती है ; एक बाहरी परिभाषा जो डिवाइस Y के रूप में एक रैम मशीन का उपयोग करती है, जो कहती है कि सबसे अच्छी तरह से ज्ञात ऊपरी बाध्य शायद डेविड एप्पस्टीन ने उत्तर दिया है। (अन्यथा यह अजीब होगा कि (1) अन्य उत्तर में बताए गए सर्वोत्तम व्यावहारिक कार्यान्वयन बेहतर विकल्प का उपयोग नहीं करते हैं और (2) यहां किसी ने भी बेहतर विकल्प का संकेत नहीं दिया है।) ध्यान दें कि सख्ती से अपने डिवाइस एक्स को नियमित अभिव्यक्ति देना। , लेकिन चूंकि NFA का आकार समान है, इसलिए इसे उस डिवाइस X के रूप में लेना सुरक्षित है जिसे आप देख रहे हैं।

Ω(f(n))

तो, एक अर्थ में, सबसे अच्छा जवाब जिसके लिए आप उम्मीद कर सकते हैं कि सेल जांच मॉडल की तरह कुछ में एक प्रमाण है कि एनएफए का अनुकरण करने के लिए निश्चित समय की आवश्यकता होती है। (ध्यान दें कि यदि आप रूपांतरण एनएफए को डीएफए में ध्यान में रखते हैं, तो आपको बड़े डीएफए को लिखने के लिए समय की आवश्यकता है, इसलिए मेमोरी एकमात्र मुद्दा नहीं है।)


4

यहां तक ​​कि अगर आप मानते हैं कि नियमित अभिव्यक्ति मिलान के बारे में जानने के लिए नया या पुराना कुछ भी नहीं है, तो मैं सबसे लंबे समय से एक सबसे सुंदर कागजात की जांच करता हूं: एस फिशर, एफ हच और टी द्वारा नियमित अभिव्यक्ति पर एक नाटक। विल्के, आईसीएफपी 2010।

(एमएमटी चक्रवर्ती इस पेपर की सिफारिश करने के लिए श्रेय के हकदार हैं।)

EDIT: इस पेपर के प्रासंगिक होने का कारण यह है कि यह एक नई तकनीक (60 के दशक से ग्लूशकोव पर आधारित) का वर्णन करता है जो आरई के अनुरूप पूर्ण एनएफए (अकेले डीएफए) का निर्माण करने से बचता है। इसके बजाय जो किया जाता है वह आरई के सिंटेक्स ट्री पर एनएफए द्वारा किसी शब्द की स्वीकृति के लिए एक प्रसिद्ध एल्गोरिथ्म के समान एक अंकन एल्गोरिथ्म चलता है। प्रदर्शन माप बताते हैं कि यह प्रतिस्पर्धी है, यहां तक ​​कि Google की हाल ही में प्रकाशित re2 लाइब्रेरी के साथ भी।


पढ़ने के लिए एक अच्छा पेपर !!
Hsien-Chih चांग 張顯 '

1

रस कॉक्स के इस लेख पर एक नज़र डालें । यह एक एनएफए-आधारित दृष्टिकोण का वर्णन करता है, जो पहले केन थॉम्पसन द्वारा नियोजित किया गया था, जिसके द्वारा एक इनपुट स्ट्रिंग s को O (| s | c ) c और स्पेस O (| r | d | d ), समय में एक नियमित अभिव्यक्ति r से मिलान किया जा सकता है । c और d ऊपरी सीमा वाले स्थिरांक हैं। लेख में तकनीक के सी कार्यान्वयन का भी विवरण दिया गया है।


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