ऐसे शब्द जिनमें समान दाएं और बाएं-सहयोगी उत्पाद होते हैं


9

मैंने हॉपक्रॉफ्ट और उल्मैन की पुस्तक का उपयोग करके गैर निर्धारक ऑटोमेटा का अध्ययन करना शुरू कर दिया है । मैं एक समस्या में फंस गया हूँ जो मुझे बहुत दिलचस्प लगी:

एक गैर नियतात्मक परिमित ऑटोमोटन को सभी स्ट्रिंग्स को स्वीकार करते हुए मान लें जो निम्न तालिका के अनुसार गुणा करके दाएं से बाएं और दाएं से बाएं का मूल्यांकन करते हैं:

×abcaaacbcabcbca

इसलिए यदि हमारे पास स्ट्रिंग , तो बाएं से दाएं उत्पाद और दाएं से बाएं तरफ का उत्पादabc
(a×b)×c=a×c=c
a×(b×c)=a×b=a

तो स्वीकार्य नहीं होना चाहिए। मेरे लिए यह स्पष्ट है कि कोई भी तार या या एक ग्रहणशील स्ट्रिंग है (उसी आंशिक तारों पर उनका दायां और बायां मूल्यांकन कार्य)। यह एक NFA कि सही मूल्यांकन के लिए छोड़ दिया वर्णन करता है देने के लिए आसान है, लेकिन समस्या यह है कि अगर मशीन की कोशिश की गणना करने के लिए है दाएं से बाएं मूल्यांकन मैं इसे स्ट्रिंग की लंबाई के लिए ज़रूरी है लगता है (ताकि अनंत स्मृति आवश्यक है)।abcaabbcc

तो एक गैर नियतात्मक ऑटोमेटा कैसे बाएं से दाएं मूल्यांकन के लिए तुलना करने के लिए दाएं से बाएं का मूल्यांकन कर सकता है?

जवाबों:


6

यहां पहली चाल एक ऑटोमेटन के संक्रमण तालिका के रूप में गुणा तालिका के बारे में सोचना है Aप्रत्येक राज्य आपके गुणन तालिका में एक पत्र का प्रतिनिधित्व करता है, लेकिन अभी तक स्वीकृति के बारे में चिंता नहीं है। तो बाईं ओर और तालिका के शरीर में अक्षर वास्तव में राज्य हैं - उन्हें लिखने के लिए यह अधिक सटीक होगाqa,qb,qc, लेकिन मैं नहीं करूंगा। शीर्ष पर अक्षर इनपुट हैं।

फिर ऑटोमेटन का निर्माण करें AT ( "T"ट्रांसपोज़ के लिए) रिवर्स गुणा के लिए ट्रांसपोज़िंग द्वाराA:

ATabcaacbbaacccba

इसलिए A(abc) आपको राज्य में ले जाता है c, और इसी तरह AT(cba) राज्य में चला जाता है a का AT, जैसा कि आप ध्यान दें।

तथापि, ATमान लें कि आप दाएँ-बाएँ जा रहे हैं, और हम अभी भी बाएँ-से-दाएँ जाना चाहते हैं। तो दूसरी चाल ऑटोमेटन को उल्टा करना है (गुणन नहीं, जो हमें बस वापस मिल जाएगा हम शुरू हो गए थे), सभी तीरों को उलट कर, जो एक गैर-नियतात्मक ऑटोमैटोन की ओर जाता हैATR नीचे दिए गए संक्रमण तालिका द्वारा दिए गए, सबसेट अक्षरों से संकेतित किए गए चिकन के नीचे रखने के लिए, ताकि चिकन खरोंच हो ac सच है {a,c}। (आशा है कि मुझे यह सब ठीक लगा - काम करने के लिए लगता है)।

ATRabcaabbcbcaccabababbcacbccacabcacabcabbcabcabcabcabc

आप इसे एक गैर-निर्धारक ऑटोमेटन के रूप में व्याख्या कर सकते हैं जिसमें केवल तीन पंक्तियों के ऊपर पंक्ति या सभी 8 पंक्तियों के साथ एक निर्धारित संस्करण है।

अंत में, समस्या को हल करने की मशीन मूल का क्रॉस-उत्पाद ऑटोमेटन है A तथा ATR, अर्थात् A×ATR दो ऑटोमेटा के प्रतिच्छेदन व्यवहार करने के लिए (हमें ज़रूरत नहीं है) AT कोई और)। A×ATR राज्यों है कि जैसे जोड़े हैं a,ac। संक्रमण समारोह चलता हैA तथा ATRस्वतंत्र रूप से। एक एकल शुरुआत राज्य1,1 के अंदर जाता है a,a इनपुट के तहत a, में b,b इनपुट के तहत b, आदि।

गैर-नियतात्मक संस्करण में स्वीकार करने वाले राज्य हैं a,a आदि निर्धारक संस्करण में, स्वीकार करने वाले राज्य ऐसे जोड़े हैं जिनमें पहला घटक है दूसरे घटक के सेट, जैसे कि a,a या b,bc

A×ATR दिखाया गया है के रूप में संवर्धित और निर्धारित 25=38+1अगर मैं इसे विस्तार से नहीं लिखता तो मुझे क्षमा करें। लेकिन गैर-निर्धारक संस्करण केवल है10=33+1 राज्यों।


धन्यवाद, इसने वास्तव में मुझे गैर-नियतत्ववाद के पीछे के विचार और एक ऑटोमेटा के "रिवर्स" को समझने में आपके उत्तर की मदद की। मुझे होपक्रॉफ्ट की पुस्तक का उपयोग करके इस अवधारणाओं को समझने में समस्या हो रही थी, अब मैं Sipser की पुस्तक "कम्प्यूटिंग के सिद्धांत का परिचय" का उपयोग कर रहा हूं।
श्री एरियल

इनपुट पर विचार करें ba1,1 की ओर जाता है b,b इनपुट के बाद b, और फिर c, इनपुट के तहत a, इसलिए baस्वीकार नहीं किया जाता है, लेकिन होना चाहिए?
कब्रिस्तान

8

() अगर L एक नियमित भाषा है, फिर LR, भाषा जिसमें सभी शब्दों का उल्टा होता हैL, भी नियमित है। इसे एक व्यायाम के रूप में लें।

यह समस्या को हल करने में हमारी मदद कैसे करता है? चलोLa,Lb,Lc ऐसी सभी भाषाओं से युक्त हों, जिनका मूल्यांकन करना है a,b,cजब बाएं से दाएं का मूल्यांकन। जिस भाषा में आप रुचि रखते हैं

(LaLaR)(LbLbR)(LcLcR).
इससे पता चलता है कि यदि आप जानते हैं कि कैसे साबित करना है (), तो आप प्रश्न में भाषा के लिए एनएफए का निर्माण कर सकते हैं।

वास्तव में, यदि आप के प्रमाण के विचार का उपयोग करते हैं(), तो आप शायद आगे बढ़ सकते हैं और ऑटोमेटन का निर्माण कर सकते हैं। तो चलिए इस पर विचार करते हैं। विशेष रूप से, के लिए एक एनएफए के निर्माण की कोशिश करते हैंLaRका मूल्यांकन करने वाले सभी तार की भाषा a जब दाएं से बाएं का मूल्यांकन किया जाता है।

विचार यह है। मान लीजिए कि आपको जो पहला अक्षर दिखाई दे रहा हैb। फिर बाकी स्ट्रिंग का मूल्यांकन करना होगाb (जबसे bx=a का तात्पर्य x=b)। इसी तरह का तर्क पहले अक्षर के लागू होने पर लागू होता हैc। जब पहला अक्षर हैaहालाँकि, बाकी दोनों का मूल्यांकन कर सकते हैं a या b, या अशक्त हो। एनएफए के साथ, हम अनुमान लगा सकते हैं (और बाद में हमारे अनुमान को सत्यापित करते हैं)।

यह संकेत आपको सोचने के लिए पर्याप्त दे सकता है, और उम्मीद है कि समस्या को हल करेगा।


फार्मूला के साथ इसे साबित करने का अच्छा तरीका है - इसके लिए अपवोट। वैकल्पिक "गैर-नियतात्मक अनुमान-और-सत्यापित" विचार के लिए, जो आमतौर पर एक प्रमाण के लिए ठीक है, लेकिन समस्या के अनुरोध के रूप में वास्तव में बाहर ले जाने के लिए बहुत मुश्किल है। मुझे लगता है कि यहां बहुत सारे लापता विवरण हैं, जैसे कि स्ट्रिंग का ट्रैक कैसे रखना है, बैक एंड।
डेविड लुईस

@ डेविड, विवरण उद्देश्य से गायब हैं।
युवल फिल्मस

@ युवल - उन्होंने यह नहीं कहा कि यह होमवर्क था - हम यहाँ के लोगों पर भरोसा करते हैं, सही है? मुझे यह भी लगता है कि यह अस्तित्व प्रमाण काफी बड़ी मशीन में परिणत होगा, संभवतः आवश्यकता से बहुत अधिक।
डेविड लेविस

@ डेविडविवेलिस: गिल्स ने अधिक पूर्ण उत्तर दिया जो दर्शाता है कि एनएफए वास्तव में बहुत बड़ा नहीं है; nondeterminism करता है कि आप के लिए। हालांकि संबंधित डीएफए बहुत बड़ा हो सकता है।
राफेल

@MohamedAbbas शायद, मैं जांचने की योजना नहीं बना रहा हूं।
युवल फिल्मस

6

प्यारा।

सबसे पहले, एक ऑटोमेटन का निर्माण करें जो उत्पाद को बाएं से दाएं की गणना करता है। आसान! एक संक्रमण रखोxyz जब कभी xy=z। तीन राज्य हैं{a,b,c}तीन संभावित उत्पादों का प्रतिनिधित्व करना। चौथे राज्य में शुरू करें1 साथ में 1xx सबके लिए x। अंतिम स्थिति हैx यदि और केवल अगर इनपुट शब्द का उत्पाद बाएं से दाएं है x

अब चलो एक ऑटोमेटन का निर्माण करते हैं जो उत्पाद को दाईं से बाईं ओर गणना करता है। यह एक गैर-निर्धारक होगा। हम यह कैसे करे? सरल… दूसरी दिशा में जाने के लिए, बस सब कुछ उल्टा कर दें : तीर और उत्पाद की दिशा।

जहां पहले हमारे पास था xyxy, हम अब लेते हैं xyxy: जब हम बाएं से दाएं शब्द का उपभोग करते हैं, तो हम एक उत्पाद से उसके दाहिने हाथ के कारक पर जाते हैं। या, दूसरे शब्दों में,xyyx

डिस्कनेक्ट किया गया नोड जोड़ें 1खाली शब्द के लिए। सभी नोड्स प्रारंभिक हैं।

Now we need to compute both paths together, so we take the product of the two automata: (x1,x2)y(z1,z2) iff x1yz1 and x2yz2. Let the four states (1,x) be initial, and the four states (x,x) be final. A word is recognized by this non-deterministic automaton iff its product from left to right and its product from right to left are the same x.


I'm having a bit of trouble grokking this. Don't you have to verify that xyyx leads to a finite state set? IAC, it's not just as simple as "reverse everything", since you still have to consume from left to right, but multiply from right to left, and I'm not sure you've done that.
David Lewis

@DavidLewis The state set is finite, I defined it to be {overleftarrowa,b,b,1}. I have reversed the order of the multiplication (barring more typos).
Gilles 'SO- stop being evil'

5

It seems that your main problem is utilising nondeterminism, so let me elaborate on that.

The basic idea the others utilise is that a nondeterministic machine can guess the final result.

Let us consider your small example abc and Gilles' construction idea. The automaton "computing" the right-to-left product guesses the result in the beginning and verifies it. So there are three possibilities:

  • Guess a: As the first symol is a, the rl-product of bc must have been a or b.
    • Guess a: As the second symbol is b, the last symbol must have been b.
      • (Guess b:) It is c, so don't accept.
    • Guess b: As the second symbol is b, the last symbol must have been c.
      • (Guess c:) It is indeed c, so we accept.
  • Guess b: As the first symol is a, this is not possible, so don't accept.
  • Guess c: As the first symol is a, the rl-product of bc must have been c
    • (Guess c:) As the second symbol is b, the last symbol must have been a
      • (Guess a:) It is c, so don't accept.

As you can see, the NFA is able to guess and check every possible computation bottom-up. Because the accepted language is defined as the set of strings that is accepted by at least one run, all non-accepting runs on the input are ignored; the NFA "always guesses right".

Now it is easy for this NFA to remember its first choice until the end. If it accepts, it can compare the remembered symbol to the lr-product (deterministically) obtained in parallel (how language intersection relates to NFA is surely covered in Ullman/Hopcroft, and any other basic textbook).


The idea of guessing an string was weird to me, but I have been reading the book of Sipser and I think that is a better aproach for newbies like me in the theory of computation.
Mr. Ariel

Think of guessing as forking with assumed input. But need to be careful with guessing strategies -- ensure that any storage needed for guessing is bounded uniformly for all forked threads, otherwise you don't have a finite-state automaton any more. Also, need a uniform bound on the number of forked threads active. I think Raphael's description here works, but it needs to be mentioned at least.
David Lewis
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.