एक nondeterministic परिमित ऑटोमेटन एक परिमित राज्य मशीन है जहाँ एक tuple को कई राज्यों में मैप किया जाता है। अर्थात। हम हमेशा की तरह बदलने के δ : क्यू × Σ → क्यू एक के संक्रमण समारोह DFA एक और समारोह के साथ Δ : क्यू × Σ → पी ( क्यू ) ।
यदि आप जानते हैं कि एनएफए क्या है तो आप अगले भाग को छोड़ना चाहते हैं।
औपचारिक परिभाषा
एनएफए को विशिष्ट रूप से वर्णित किया गया है
- राज्यों का एक समुच्चय है
- प्रतीकों में से एक परिमित सेट
- संक्रमण समारोह
- प्रारंभिक अवस्था
- अंतिम राज्यों का एक सेट
मशीन में बाहर शुरू होता है और प्रतीकों की एक निश्चित स्ट्रिंग पढ़ता डब्ल्यू ∈ Σ * , हरेक प्रतीक के लिए यह एक साथ एक वर्तमान स्थिति से संक्रमण समारोह समारोह लागू करते हैं और वर्तमान राज्यों के सेट करने के लिए राज्यों में से प्रत्येक नया सेट जोड़ देगा।
चुनौती
इस चुनौती के लिए हम इसे सरल बनाने के लिए को अनदेखा करेंगे , इसके अलावा वर्णमाला हमेशा z के लिए a (निचला मामला) अक्षर होगा और राज्यों का सेट कुछ गैर-नकारात्मक पूर्णांक N के लिए { 0 … N } होगा । प्रारंभिक अवस्था हमेशा 0 होगी ।
एक शब्द को देखते हुए और NFA का विवरण, अपने कार्य को सभी अंतिम राज्यों निर्धारित करने के लिए है।
उदाहरण
स्ट्रिंग और निम्नलिखित विवरण पर विचार करें :
state, symbol, new-states
0, 'a', [1]
1, 'a', [0]
1, 'b', [1,2]
मशीन में शुरू होगी :
- एक पढ़ा नए राज्यों: { 1 }
- एक पढ़ें : नए राज्य { १
- एक पढ़ा : नए राज्यों
- एक पढ़ा : नए राज्यों
- एक पढ़ें : नए राज्य { 1 ,
तो अंतिम स्थिति और इस प्रकार आउटपुट ।
नोट: स्टेप (2) स्टेट मैप्स के ट्रांज़िशन को विवरण के रूप में itions केवल गैर-खाली सेटों में संक्रमण शामिल करता है।
नियम
इनपुट में एक स्ट्रिंग और NFA के कुछ प्रकार के विवरण होंगे ( -transitions के बिना ):
- इनपुट स्ट्रिंग हमेशा के तत्व हो जाएगा
- मान्य इनपुट्स (तक सीमित नहीं):
- tuples / सूचियों की सूची / सरणी
- नई लाइन अलग इनपुट
- एनएफए के विवरण में केवल परिणाम के रूप में गैर-खाली सेट के साथ संक्रमण शामिल होंगे
- यदि आप समान परिणाम वाले नियमों को संक्षिप्त कर सकते हैं, यदि उनका परिणाम समान है (उदाहरण के नियम)
0,'a',[1,2]
और0,'b',[1,2]
उनके साथ संक्षिप्त किया जा सकता है0,"ab",[1,2]
- आप प्रत्येक नियम को अलग कर सकते हैं (जैसे। नियम
0,'a',[1,2]
हो सकता है0,'a',[1]
और0,'a',[2]
)
- यदि आप समान परिणाम वाले नियमों को संक्षिप्त कर सकते हैं, यदि उनका परिणाम समान है (उदाहरण के नियम)
- यदि आप चाहें तो आप ऊपरी मामलों के पत्र चुन सकते हैं
- आप इनपुट के रूप में राज्यों की संख्या ले सकते हैं
- आप इनपुट के आदेश के कुछ प्रकार मान सकते हैं (जैसे राज्य या प्रतीकों द्वारा आदेश दिया गया)
आउटपुट अंतिम राज्यों की सूची / सेट / नई-लाइन से अलग आउटपुट आदि होगा
- आदेश मायने नहीं रखता
- कोई डुप्लिकेट नहीं (जैसा कि यह एक सेट है)
परीक्षण के मामलों
ये उदाहरण उस प्रारूप में होंगे description word -> states
जहां description
ट्यूपल्स की सूची है (state,symbol,new-states)
:
[] "x" -> []
[] "" -> [0]
[(0,'a',[1]),(1,'a',[0]),(1,'b',[1,2])] "abaab" -> [1,2]
[(0,'a',[1]),(1,'a',[0]),(1,'b',[1,2])] "abc" -> []
[(0,'p',[0,1]),(0,'g',[2]),(1,'c',[1]),(1,'g',[4]),(1,'p',[2]),(2,'c',[0])] "ppcg" -> [2,4]
[(0,'f',[1]),(1,'o',[1,2]),(2,'b',[3]),(3,'a',[4]),(4,'r',[0,4])] "foobar" -> [0,4]
[(0,'f',[1]),(1,'o',[1,2]),(2,'b',[3]),(3,'a',[4]),(4,'r',[0,4])] "fooooooobar" -> [0,4]
[(0,'f',[1]),(1,'o',[1,2]),(2,'b',[3]),(3,'a',[4]),(4,'r',[0,4])] "fobarfo" -> [1,2]
[(0,'f',[1]),(1,'o',[1,2]),(2,'b',[3]),(3,'a',[4]),(4,'r',[0,4])] "foobarrf" -> [1]
[(0,'d',[1,2]),(1,'u',[2]),(2,'u',[2,3]),(2,'p',[3]),(3,'p',[3])] "dup" -> [3]
[(0,'a',[0,2]),(0,'b',[3]),(1,'a',[1]),(1,'b',[1]),(2,'b',[1,4]),(4,'b',[2])] "aab" -> [3,1,4]
[(0,'a',[0,2]),(0,'b',[3]),(1,'a',[1]),(1,'b',[1]),(2,'b',[1,4]),(4,'b',[2])] "abb" -> [1,2]