नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन: Difference between revisions

From Vigyanwiki
No edit summary
Line 1: Line 1:
{{Short description|Type of finite-state machine in automata theory}}
{{Short description|Type of finite-state machine in automata theory}}
[[File:Relatively small NFA.svg|100px|thumb|नियमित अभिव्यक्ति के लिए एनएफए|(0<nowiki>|</nowiki>1)<sup>*</sup> 1 (0<nowiki>|</nowiki>1)<sup>3</sup>.<br />उस [[औपचारिक भाषा]] के लिए एक [[नियतात्मक परिमित ऑटोमेटन]] में कम से कम 16 अवस्थाएँ होती हैं।]][[ऑटोमेटा सिद्धांत]] में, एक परिमित-अवस्था मशीन को नियतात्मक परिमित ऑटोमेटन (DFA) कहा जाता है, यदि
[[File:Relatively small NFA.svg|100px|thumb|नियमित अभिव्यक्ति के लिए एनएफए|(0<nowiki>|</nowiki>1)<sup>*</sup> 1 (0<nowiki>|</nowiki>1)<sup>3</sup>.<br />उस [[औपचारिक भाषा]] के लिए एक [[नियतात्मक परिमित ऑटोमेटन]] में कम से कम 16 अवस्थाएँ होती हैं।]][[ऑटोमेटा सिद्धांत]] में, एक परिमित-अवस्था मशीन को नियतात्मक परिमित ऑटोमेटन (DFA) कहा जाता है, यदि
* इसका प्रत्येक बदलाव स्रोत स्थिति और निविष्ट प्रतीक द्वारा विशिष्ट रूप से निर्धारित होता है, और
* इसका प्रत्येक परिवर्तन स्रोत स्थिति और निविष्ट प्रतीक द्वारा विशिष्ट रूप से निर्धारित होता है, और
* प्रत्येक स्थिति परिवर्तन के लिए एक निविष्ट प्रतीक पढ़ना आवश्यक है।
* प्रत्येक स्थिति परिवर्तन के लिए एक निविष्ट प्रतीक पढ़ना आवश्यक है।
'<nowiki/>'''नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन' ('NFA')''', या '''<nowiki/>'नॉनडेटर्मिनिस्टिक परिमित-स्थिति मशीन'''' को इन प्रतिबंधों का पालन करने की आवश्यकता नहीं है। विशेष रूप से, प्रत्येक डीएफए (DFA) एक एनएफए (NFA) भी है। कभी-कभी 'एनएफए' शब्द का प्रयोग एक संकीर्ण अर्थ में किया जाता है, जो एक एनएफए का संदर्भ देता है जो डीएफए नहीं है, लेकिन इस लेख में ऐसा नहीं है।
'<nowiki/>'''नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन' ('NFA')''', या '''<nowiki/>'नॉनडेटर्मिनिस्टिक परिमित-स्थिति मशीन'''' को इन प्रतिबंधों का पालन करने की आवश्यकता नहीं है। विशेष रूप से, प्रत्येक DFA(DFA) एक NFA (NFA) भी है। कभी-कभी 'NFA' शब्द का प्रयोग एक संकीर्ण अर्थ में किया जाता है, जो एक NFA का संदर्भ देता है जो DFAनहीं है, लेकिन इस लेख में ऐसा नहीं है।


[[सबसेट निर्माण एल्गोरिदम|उप-समूचय निर्माण कलन विधि]] का उपयोग करके, प्रत्येक एनएफए को समकक्ष डीएफए में अनुवादित किया जा सकता है अर्थात, डीएफए समान औपचारिक भाषा को मान्यता देता है।<ref>{{cite book |title=भाषाओं का परिचय और संगणना का सिद्धांत|last1=Martin |first1=John |year=2010 |page=108 |publisher=McGraw Hill |isbn= 978-0071289429}}</ref>डीएफए की तरह, एनएफए केवल [[नियमित भाषा]]ओं को पहचानते हैं।
[[सबसेट निर्माण एल्गोरिदम|उप-समूचय निर्माण कलन विधि]] का उपयोग करके, प्रत्येक NFA को समकक्ष DFAमें अनुवादित किया जा सकता है अर्थात, DFAसमान औपचारिक भाषा को मान्यता देता है।<ref>{{cite book |title=भाषाओं का परिचय और संगणना का सिद्धांत|last1=Martin |first1=John |year=2010 |page=108 |publisher=McGraw Hill |isbn= 978-0071289429}}</ref>DFAकी तरह, NFA केवल [[नियमित भाषा]]ओं को पहचानते हैं।
   
   
एनएफए की प्रारम्भ 1959 में माइकल ओ. राबिन और [[दाना स्कॉट]] द्वारा की गई थी,<ref>{{cite journal |doi=10.1147/rd.32.0114 |last=Rabin |first=M. O. |last2=Scott |first2=D. |title=परिमित ऑटोमेटा और उनकी निर्णय समस्याएं|journal=IBM Journal of Research and Development |volume=3 |issue=2 |pages=114–125 |date=April 1959 }}</ref> जिन्होंने डीएफए के समकक्ष भी दिखाया। एनएफए का उपयोग [[नियमित अभिव्यक्ति]]यों के कार्यान्वयन में किया जाता है: थॉम्पसन का निर्माण एनएफए में नियमित अभिव्यक्ति को संकलित करने के लिए एक कलन विधि है जो स्ट्रिंग्स पर पैटर्न मिलान को कुशलतापूर्वक निष्पादित कर सकता है। इसके विपरीत, क्लेन के कलन विधि का उपयोग एनएफए को नियमित अभिव्यक्ति में परिवर्तित करने के लिए किया जा सकता है (जिसका आकार सामान्यतः निविष्ट ऑटोमेटन में घातांक होता है)।
NFA की प्रारम्भ 1959 में माइकल ओ. राबिन और [[दाना स्कॉट]] द्वारा की गई थी,<ref>{{cite journal |doi=10.1147/rd.32.0114 |last=Rabin |first=M. O. |last2=Scott |first2=D. |title=परिमित ऑटोमेटा और उनकी निर्णय समस्याएं|journal=IBM Journal of Research and Development |volume=3 |issue=2 |pages=114–125 |date=April 1959 }}</ref> जिन्होंने DFAके समकक्ष भी दिखाया। NFA का उपयोग [[नियमित अभिव्यक्ति]]यों के कार्यान्वयन में किया जाता है: थॉम्पसन का निर्माण NFA में नियमित अभिव्यक्ति को संकलित करने के लिए एक कलन विधि है जो स्ट्रिंग्स पर पैटर्न मिलान को कुशलतापूर्वक निष्पादित कर सकता है। इसके विपरीत, क्लेन के कलन विधि का उपयोग NFA को नियमित अभिव्यक्ति में परिवर्तित करने के लिए किया जा सकता है (जिसका आकार सामान्यतः निविष्ट ऑटोमेटन में घातांक होता है)।


एनएफए को कई प्रयोगो से सामान्यीकृत किया गया है, उदाहरण के लिए, ε-मूव्स, परिमित-राज्य ट्रांसड्यूसर, पुशडाउन ऑटोमेटा, वैकल्पिक ऑटोमेटा, ω-ऑटोमेटा और संभाव्य ऑटोमेटा के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटा। डीएफए के अलावा, एनएफए के अन्य ज्ञात विशेष मामले असंदिग्ध परिमित ऑटोमेटा (यूएफए) और स्व-सत्यापन परिमित ऑटोमेटा (एसवीएफए) हैं।
NFA को कई प्रयोगो से सामान्यीकृत किया गया है, उदाहरण के लिए, ε-मूव्स, परिमित-राज्य ट्रांसड्यूसर, पुशडाउन ऑटोमेटा, वैकल्पिक ऑटोमेटा, ω-ऑटोमेटा और संभाव्य ऑटोमेटा के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटा। DFAके अलावा, NFA के अन्य ज्ञात विशेष मामले असंदिग्ध परिमित ऑटोमेटा (यूएफए) और स्व-सत्यापन परिमित ऑटोमेटा (एसवीएफए) हैं।


==अनौपचारिक परिचय==
==अनौपचारिक परिचय==


एनएफए के व्यवहार का वर्णन करने के दो तरीके हैं, और ये दोनों समान हैं। पहला तरीका एनएफए के नाम पर [[गैर-नियतात्मक एल्गोरिथ्म|गैर-नियतात्मक]]  का उपयोग करता है। प्रत्येक निविष्ट प्रतीक के लिए, एनएफए एक नई स्थिति में परिवर्तित हो जाता है जब तक कि सभी निविष्ट प्रतीकों का उपभोग नहीं हो जाता। प्रत्येक चरण में, ऑटोमेटन गैर-नियतात्मक रूप से लागू बदलावों में से एक को चुनता है। यदि कम से कम एक भाग्यशाली रनउपस्थित है, अर्थात विकल्पों का कुछ क्रम जो पूरी तरह से निविष्ट का उपभोग करने के बाद एक स्वीकार्य स्थिति की ओर ले जाता है, तो इसे स्वीकार कर लिया जाता है। अन्यथा, अर्थात यदि कोई विकल्प अनुक्रम नहीं है तो सभी निविष्ट का उपभोग कर सकता है<ref>A choice sequence may lead into a "dead end" where no transition is applicable for the current input symbol; in this case it is considered unsuccessful.</ref> और एक स्वीकार्य स्थिति की ओर ले जाता है, निविष्ट अस्वीकार कर दिया जाता है।<ref name="Hopcroft.Ullman.1979">{{cite book | isbn=0-201-02988-X | author=John E. Hopcroft and Jeffrey D. Ullman | title=ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय| location=Reading/MA | publisher=Addison-Wesley | year=1979 | url=https://archive.org/details/introductiontoau00hopc }}</ref>{{rp|19}}<ref name="Aho.Hopcroft.Ullman.1974">{{cite book | isbn=0-201-00029-6 | author=Alfred V. Aho and John E. Hopcroft and Jeffrey D. Ullman | title=कंप्यूटर एल्गोरिदम का डिज़ाइन और विश्लेषण| url=https://archive.org/details/designanalysisof00ahoarich | url-access=registration | location=Reading/MA | publisher=Addison-Wesley | year=1974 }}</ref>{{rp|319}}
NFA के व्यवहार का वर्णन करने के दो तरीके हैं, और ये दोनों समान हैं। पहला तरीका NFA के नाम पर [[गैर-नियतात्मक एल्गोरिथ्म|गैर-नियतात्मक]]  का उपयोग करता है। प्रत्येक निविष्ट प्रतीक के लिए, NFA एक नई स्थिति में परिवर्तित हो जाता है जब तक कि सभी निविष्ट प्रतीकों का उपभोग नहीं हो जाता। प्रत्येक चरण में, ऑटोमेटन गैर-नियतात्मक रूप से लागू परिवर्तनों में से एक को चुनता है। यदि कम से कम एक भाग्यशाली रनउपस्थित है, अर्थात विकल्पों का कुछ क्रम जो पूरी तरह से निविष्ट का उपभोग करने के बाद एक स्वीकार्य स्थिति की ओर ले जाता है, तो इसे स्वीकार कर लिया जाता है। अन्यथा, अर्थात यदि कोई विकल्प अनुक्रम नहीं है तो सभी निविष्ट का उपभोग कर सकता है<ref>A choice sequence may lead into a "dead end" where no transition is applicable for the current input symbol; in this case it is considered unsuccessful.</ref> और एक स्वीकार्य स्थिति की ओर ले जाता है, निविष्ट अस्वीकार कर दिया जाता है।<ref name="Hopcroft.Ullman.1979">{{cite book | isbn=0-201-02988-X | author=John E. Hopcroft and Jeffrey D. Ullman | title=ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय| location=Reading/MA | publisher=Addison-Wesley | year=1979 | url=https://archive.org/details/introductiontoau00hopc }}</ref>{{rp|19}}<ref name="Aho.Hopcroft.Ullman.1974">{{cite book | isbn=0-201-00029-6 | author=Alfred V. Aho and John E. Hopcroft and Jeffrey D. Ullman | title=कंप्यूटर एल्गोरिदम का डिज़ाइन और विश्लेषण| url=https://archive.org/details/designanalysisof00ahoarich | url-access=registration | location=Reading/MA | publisher=Addison-Wesley | year=1974 }}</ref>{{rp|319}}


दूसरे तरीके में, एनएफए एक-एक करके निविष्ट प्रतीकों की एक श्रृंखला का उपभोग करता है। प्रत्येक चरण में, जब भी दो या अधिक बदलाव लागू होते हैं, तो यह स्वयं को उचित रूप से कई प्रतियों में क्लोन कर लेता है, प्रत्येक एक अलग बदलाव का अनुसरण करता है। यदि कोई बदलाव लागू नहीं होता है, तो वर्तमान प्रतिलिपि निष्क्रिय हो जाती है, और वह ख़त्म हो जाती है। यदि, पूरे निविष्ट का उपभोग करने के बाद, कोई भी प्रतियाँ स्वीकार की स्थिति में है, तो निविष्ट स्वीकार कर लिया जाता है, अन्यथा, इसे अस्वीकार कर दिया जाता है।<ref name="Hopcroft.Ullman.1979"/>{{rp|19–20}}<!---not an error: Hopcroft and Ullman use both informal explanations---><ref name="Sipser.1997">{{cite book | author=Michael Sipser | title=संगणना के सिद्धांत का परिचय| location=Boston/MA | publisher=PWS Publishing Co. | year=1997 | isbn=0-534-94728-X | url=https://archive.org/details/introductiontoth00sips }}</ref>{{rp|48}}<ref name="Hopcroft.Motwani.Ullman.2003">{{cite book | url=http://148.216.38.247/~rrusiles/Fie/Horizontal/Hopcroft_Introduction_to_Automata_Theory_Languages_and_Computation.pdf | isbn=0-201-44124-1 | author=John E. Hopcroft and Rajeev Motwani and Jeffrey D. Ullman | title=ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय| location=Upper Saddle River/NJ | publisher=Addison Wesley | year=2003 }}</ref>{{rp|56}}
दूसरे तरीके में, NFA एक-एक करके निविष्ट प्रतीकों की एक श्रृंखला का उपभोग करता है। प्रत्येक चरण में, जब भी दो या अधिक परिवर्तन लागू होते हैं, तो यह स्वयं को उचित रूप से कई प्रतियों में क्लोन कर लेता है, प्रत्येक एक अलग परिवर्तन का अनुसरण करता है। यदि कोई परिवर्तन लागू नहीं होता है, तो वर्तमान प्रतिलिपि निष्क्रिय हो जाती है, और वह ख़त्म हो जाती है। यदि, पूरे निविष्ट का उपभोग करने के बाद, कोई भी प्रतियाँ स्वीकार की स्थिति में है, तो निविष्ट स्वीकार कर लिया जाता है, अन्यथा, इसे अस्वीकार कर दिया जाता है।<ref name="Hopcroft.Ullman.1979"/>{{rp|19–20}}<!---not an error: Hopcroft and Ullman use both informal explanations---><ref name="Sipser.1997">{{cite book | author=Michael Sipser | title=संगणना के सिद्धांत का परिचय| location=Boston/MA | publisher=PWS Publishing Co. | year=1997 | isbn=0-534-94728-X | url=https://archive.org/details/introductiontoth00sips }}</ref>{{rp|48}}<ref name="Hopcroft.Motwani.Ullman.2003">{{cite book | url=http://148.216.38.247/~rrusiles/Fie/Horizontal/Hopcroft_Introduction_to_Automata_Theory_Languages_and_Computation.pdf | isbn=0-201-44124-1 | author=John E. Hopcroft and Rajeev Motwani and Jeffrey D. Ullman | title=ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय| location=Upper Saddle River/NJ | publisher=Addison Wesley | year=2003 }}</ref>{{rp|56}}


==औपचारिक परिभाषा==
==औपचारिक परिभाषा==
Line 21: Line 21:


===ऑटोमेटन===
===ऑटोमेटन===
एनएफए को औपचारिक रूप से 5-[[ टपल ]] द्वारा दर्शाया जाता है,
NFA को औपचारिक रूप से 5-[[ टपल ]] द्वारा दर्शाया जाता है,
<math>(Q, \Sigma, \delta, q_0, F)</math>, जिसमें सम्मिलित है
<math>(Q, \Sigma, \delta, q_0, F)</math>, जिसमें सम्मिलित है
* स्थितियों का एक सीमित [[सेट (गणित)|समुच्चय (गणित)]] <math>Q</math>।
* स्थितियों का एक सीमित [[सेट (गणित)|समुच्चय (गणित)]] <math>Q</math>।
* [[इनपुट प्रतीक|निविष्ट प्रतीकों]] का एक सीमित समुच्चय <math>\Sigma</math>.
* [[इनपुट प्रतीक|निविष्ट प्रतीकों]] का एक सीमित समुच्चय <math>\Sigma</math>.
* एक बदलाव फ़ंक्शन <math>\delta</math> : <math>Q\times\Sigma \rightarrow \mathcal{P}(Q)</math>.
* एक परिवर्तन फ़ंक्शन <math>\delta</math> : <math>Q\times\Sigma \rightarrow \mathcal{P}(Q)</math>.
* एक प्रारंभिक (या आरंभ) अवस्था <math>q_0 \in Q</math>.
* एक प्रारंभिक (या आरंभ) अवस्था <math>q_0 \in Q</math>.
* स्थितियों का एक समुच्चय <math>F</math> स्वीकार करने वाले (या अंतिम) स्थितियों के रूप में प्रतिष्ठित <math>F \subseteq Q</math>.
* स्थितियों का एक समुच्चय <math>F</math> स्वीकार करने वाले (या अंतिम) स्थितियों के रूप में प्रतिष्ठित <math>F \subseteq Q</math>.
Line 32: Line 32:


===स्वीकृत भाषा===
===स्वीकृत भाषा===
<math>M = (Q, \Sigma, \delta, q_0, F)</math> एनएफए दिया गया , इसकी स्वीकृत भाषा <math>L(M)</math> द्वारा दर्शाया जाता है , और इसे वर्णमाला <math>\Sigma</math> के सभी तारों के समुच्चय के रूप में परिभाषित किया गया है जिसे <math>M</math> स्वीकार किया जाता है .उपरोक्त अनौपचारिक स्पष्टीकरणों के अनुरूप, एक स्ट्रिंग <math>w = a_1 a_2 ... a_n</math> की कई समान औपचारिक परिभाषाएँ हैं जिसे <math>M</math> द्वारा स्वीकार किया जा रहा है :
<math>M = (Q, \Sigma, \delta, q_0, F)</math> NFA दिया गया , इसकी स्वीकृत भाषा <math>L(M)</math> द्वारा दर्शाया जाता है , और इसे वर्णमाला <math>\Sigma</math> के सभी तारों के समुच्चय के रूप में परिभाषित किया गया है जिसे <math>M</math> स्वीकार किया जाता है .उपरोक्त अनौपचारिक स्पष्टीकरणों के अनुरूप, एक स्ट्रिंग <math>w = a_1 a_2 ... a_n</math> की कई समान औपचारिक परिभाषाएँ हैं जिसे <math>M</math> द्वारा स्वीकार किया जा रहा है :
*<math>w</math> स्वीकार है यदि स्थितियों का अनुक्रम <math>r_0, r_1, ..., r_n</math>, <math>Q</math>  में उपस्थित है, ऐसा है कि:
*<math>w</math> स्वीकार है यदि स्थितियों का अनुक्रम <math>r_0, r_1, ..., r_n</math>, <math>Q</math>  में उपस्थित है, ऐसा है कि:
*# <math>r_0 = q_0</math>
*# <math>r_0 = q_0</math>
Line 45: Line 45:


===प्रारंभिक अवस्था===
===प्रारंभिक अवस्था===
उपरोक्त ऑटोमेटन परिभाषा एकल प्रारंभिक अवस्था का उपयोग करती है, जो आवश्यक नहीं है। कभी-कभी, एनएफए को प्रारंभिक अवस्थाओं के एक समुच्चय के साथ परिभाषित किया जाता है। एक आसान निर्माण है जो कई प्रारंभिक स्थितियों वाले एनएफए को एक प्रारंभिक स्थिति वाले एनएफए में परिवर्तित करता है, जो एक सुविधाजनक संकेतन प्रदान करता है।
उपरोक्त ऑटोमेटन परिभाषा एकल प्रारंभिक अवस्था का उपयोग करती है, जो आवश्यक नहीं है। कभी-कभी, NFA को प्रारंभिक अवस्थाओं के एक समुच्चय के साथ परिभाषित किया जाता है। एक आसान निर्माण है जो कई प्रारंभिक स्थितियों वाले NFA को एक प्रारंभिक स्थिति वाले NFA में परिवर्तित करता है, जो एक सुविधाजनक संकेतन प्रदान करता है।


==उदाहरण==
==उदाहरण==
Line 55: Line 55:
| COLSPAN=2  | [[File:NFASimpleExample Runs1011.gif|thumb|530px|All possible runs of ''M'' on input string "1011".<br />''Arc label:'' input symbol, ''node label'': state, ''{{color|#00c000|green}}:'' start state, ''{{color|#c00000|red}}:'' accepting state(s).]]
| COLSPAN=2  | [[File:NFASimpleExample Runs1011.gif|thumb|530px|All possible runs of ''M'' on input string "1011".<br />''Arc label:'' input symbol, ''node label'': state, ''{{color|#00c000|green}}:'' start state, ''{{color|#c00000|red}}:'' accepting state(s).]]
|}
|}
निम्नलिखित ऑटोमेटन <math>M</math>, एक द्विआधारी वर्णमाला के साथ, यह निर्धारित करता है कि निविष्ट 1 के साथ समाप्त होता है या नहीं।माना कि <math>M = (\{p, q\}, \{0, 1\}, \delta, p, \{q\})</math> जहाँ बदलाव फलन <math>\delta</math> को [[राज्य संक्रमण तालिका|स्थिति बदलाव तालिका]] द्वारा परिभाषित किया जा सकता है (ऊपरी बाएँ चित्र की तुलना करें):
निम्नलिखित ऑटोमेटन <math>M</math>, एक द्विआधारी वर्णमाला के साथ, यह निर्धारित करता है कि निविष्ट 1 के साथ समाप्त होता है या नहीं।माना कि <math>M = (\{p, q\}, \{0, 1\}, \delta, p, \{q\})</math> जहाँ परिवर्तन फलन <math>\delta</math> को [[राज्य संक्रमण तालिका|स्थिति परिवर्तन तालिका]] द्वारा परिभाषित किया जा सकता है (ऊपरी बाएँ चित्र की तुलना करें):
:{| class="wikitable" style="text-align:center;"
:{| class="wikitable" style="text-align:center;"
! {{diagonal split header|State|Input}}
! {{diagonal split header|State|Input}}
Line 93: Line 93:
इसके विपरीत, स्ट्रिंग 10 को अस्वीकार कर दिया गया है <math>M</math> (उस निविष्ट के लिए सभी संभावित स्थिति अनुक्रम ऊपरी दाएँ चित्र में दिखाए गए हैं), चूँकि एकमात्र स्वीकार्य स्थिति तक पहुँचने का कोई रास्ता नहीं है, <math>q</math>, अंतिम 0 प्रतीक को पढ़कर। जबकि <math>q</math> आरंभिक 1 का उपभोग करने के बाद पहुंचा जा सकता है, इसका मतलब यह नहीं है कि निविष्ट 10 स्वीकार कर लिया गया है; बल्कि, इसका मतलब है कि एक निविष्ट स्ट्रिंग 1 स्वीकार किया जाएगा।
इसके विपरीत, स्ट्रिंग 10 को अस्वीकार कर दिया गया है <math>M</math> (उस निविष्ट के लिए सभी संभावित स्थिति अनुक्रम ऊपरी दाएँ चित्र में दिखाए गए हैं), चूँकि एकमात्र स्वीकार्य स्थिति तक पहुँचने का कोई रास्ता नहीं है, <math>q</math>, अंतिम 0 प्रतीक को पढ़कर। जबकि <math>q</math> आरंभिक 1 का उपभोग करने के बाद पहुंचा जा सकता है, इसका मतलब यह नहीं है कि निविष्ट 10 स्वीकार कर लिया गया है; बल्कि, इसका मतलब है कि एक निविष्ट स्ट्रिंग 1 स्वीकार किया जाएगा।


==डीएफए के समतुल्य==
==DFAके समतुल्य==


एक नियतात्मक परिमित ऑटोमेटन (डीएफए) को एक विशेष प्रकार के एनएफए के रूप में देखा जा सकता है, जिसमें प्रत्येक स्थिति और प्रतीक के लिए, बदलाव फ़ंक्शन में बिल्कुल एक स्थिति होता है। इस प्रकार, यह स्पष्ट है कि प्रत्येक औपचारिक भाषा जिसे डीएफए द्वारा मान्यता दी जा सकती है, उसे एनएफए द्वारा मान्यता दी जा सकती है।
एक नियतात्मक परिमित ऑटोमेटन (डीएफए) को एक विशेष प्रकार के NFA के रूप में देखा जा सकता है, जिसमें प्रत्येक स्थिति और प्रतीक के लिए, परिवर्तन फ़ंक्शन में बिल्कुल एक स्थिति होता है। इस प्रकार, यह स्पष्ट है कि प्रत्येक औपचारिक भाषा जिसे DFAद्वारा मान्यता दी जा सकती है, उसे NFA द्वारा मान्यता दी जा सकती है।


इसके विपरीत, प्रत्येक एनएफए के लिए, एक डीएफए होता है जो समान औपचारिक भाषा को पहचानता है। डीएफए का निर्माण [[पॉवरसेट निर्माण|पॉवरसमुच्चय निर्माण]] का उपयोग करके किया जा सकता है।
इसके विपरीत, प्रत्येक NFA के लिए, एक DFAहोता है जो समान औपचारिक भाषा को पहचानता है। DFAका निर्माण [[पॉवरसेट निर्माण|पॉवरसमुच्चय निर्माण]] का उपयोग करके किया जा सकता है।


यह परिणाम दर्शाता है कि एनएफए, अपने अतिरिक्त लचीलेपन के बावजूद, उन भाषाओं को पहचानने में असमर्थ हैं जिन्हें कुछ डीएफए द्वारा पहचाना नहीं जा सकता है। निर्माण में आसान एनएफए को अधिक कुशलतापूर्वक निष्पादन योग्य डीएफए में परिवर्तित करना व्यवहार में भी महत्वपूर्ण है। हालाँकि, यदि एनएफए में एन स्थिति हैं, तो परिणामी डीएफए में 2 तक हो सकते हैं<sup>n</sup> स्थिति, जो कभी-कभी बड़े एनएफए के लिए निर्माण को अव्यवहारिक बना देता है।
यह परिणाम दर्शाता है कि NFA, अपने अतिरिक्त लचीलेपन के बावजूद, उन भाषाओं को पहचानने में असमर्थ हैं जिन्हें कुछ DFAद्वारा पहचाना नहीं जा सकता है। निर्माण में आसान NFA को अधिक कुशलतापूर्वक निष्पादन योग्य DFAमें परिवर्तित करना व्यवहार में भी महत्वपूर्ण है। हालाँकि, यदि NFA में एन स्थिति हैं, तो परिणामी DFAमें 2 तक हो सकते हैं<sup>n</sup> स्थिति, जो कभी-कभी बड़े NFA के लिए निर्माण को अव्यवहारिक बना देता है।


==NFA ε-चालों के साथ==
==NFA ε-चालों के साथ==


ε-मूव्स (NFA-ε) के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन एनएफए का एक और सामान्यीकरण है। इस प्रकार के ऑटोमेटन में, बदलाव फ़ंक्शन को [[खाली स्ट्रिंग]] ε पर अतिरिक्त रूप से परिभाषित किया गया है। निविष्ट प्रतीक का उपभोग किए बिना एक बदलाव को ε-बदलाव कहा जाता है और स्थिति आरेखों में ε लेबल वाले तीर द्वारा दर्शाया जाता है। ε-बदलाव उन प्रणालियों को मॉडलिंग करने का एक सुविधाजनक तरीका प्रदान करता है जिनकी वर्तमान स्थिति सटीक रूप से ज्ञात नहीं है: अर्थात, यदि हम एक प्रणाली का मॉडलिंग कर रहे हैं और यह स्पष्ट नहीं है कि वर्तमान स्थिति (कुछ निविष्ट स्ट्रिंग को संसाधित करने के बाद) q या q' होनी चाहिए, तो हम इन दोनों स्थितियों के बीच एक ε-बदलाव जोड़ सकते हैं, इस प्रकार दोनों स्थितियों में ऑटोमेटन को एक साथ रख सकते हैं।
ε-मूव्स (NFA-ε) के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन NFA का एक और सामान्यीकरण है। इस प्रकार के ऑटोमेटन में, परिवर्तन फ़ंक्शन को [[खाली स्ट्रिंग]] ε पर अतिरिक्त रूप से परिभाषित किया गया है। निविष्ट प्रतीक का उपभोग किए बिना एक परिवर्तन को ε-परिवर्तन कहा जाता है और स्थिति आरेखों में ε लेबल वाले तीर द्वारा दर्शाया जाता है। ε-परिवर्तन उन प्रणालियों को मॉडलिंग करने का एक सुविधाजनक तरीका प्रदान करता है जिनकी वर्तमान स्थिति सटीक रूप से ज्ञात नहीं है: अर्थात, यदि हम एक प्रणाली का मॉडलिंग कर रहे हैं और यह स्पष्ट नहीं है कि वर्तमान स्थिति (कुछ निविष्ट स्ट्रिंग को संसाधित करने के बाद) q या q' होनी चाहिए, तो हम इन दोनों स्थितियों के बीच एक ε-परिवर्तन जोड़ सकते हैं, इस प्रकार दोनों स्थितियों में ऑटोमेटन को एक साथ रख सकते हैं।


===औपचारिक परिभाषा===
===औपचारिक परिभाषा===
एनएफए-ε को औपचारिक रूप से 5-टुपल द्वारा दर्शाया जाता है, <math>(Q, \Sigma, \delta, q_0, F)</math>, को मिलाकर
NFA-ε को औपचारिक रूप से 5-टुपल द्वारा दर्शाया जाता है, <math>(Q, \Sigma, \delta, q_0, F)</math>, को मिलाकर
* स्थिति का एक सीमित समुच्चय (गणित) (कंप्यूटर विज्ञान) <math>Q</math>
* स्थिति का एक सीमित समुच्चय (गणित) (कंप्यूटर विज्ञान) <math>Q</math>
* निविष्ट प्रतीकों का एक सीमित समुच्चय जिसे [[वर्णमाला (कंप्यूटर विज्ञान)]] कहा जाता है <math>\Sigma</math>
* निविष्ट प्रतीकों का एक सीमित समुच्चय जिसे [[वर्णमाला (कंप्यूटर विज्ञान)]] कहा जाता है <math>\Sigma</math>
* एक बदलाव [[फ़ंक्शन (गणित)]] <math>\delta : Q \times (\Sigma \cup \{\epsilon\}) \rightarrow \mathcal{P}(Q)</math>
* एक परिवर्तन [[फ़ंक्शन (गणित)]] <math>\delta : Q \times (\Sigma \cup \{\epsilon\}) \rightarrow \mathcal{P}(Q)</math>
* एक प्रारंभिक (या परिमित-अवस्था मशीन#प्रारंभ स्थिति) स्थिति <math>q_0 \in Q</math>
* एक प्रारंभिक (या परिमित-अवस्था मशीन#प्रारंभ स्थिति) स्थिति <math>q_0 \in Q</math>
* स्थितियों का एक समुच्चय <math>F</math> परिमित-अवस्था मशीन के रूप में प्रतिष्ठित#स्वीकार .28या अंतिम.29 स्थिति|स्वीकार (या अंतिम) स्थिति <math>F \subseteq Q</math>.
* स्थितियों का एक समुच्चय <math>F</math> परिमित-अवस्था मशीन के रूप में प्रतिष्ठित#स्वीकार .28या अंतिम.29 स्थिति|स्वीकार (या अंतिम) स्थिति <math>F \subseteq Q</math>.
Line 117: Line 117:
===ε-किसी स्थिति या स्थितियों के समूह का बंद होना===
===ε-किसी स्थिति या स्थितियों के समूह का बंद होना===


एक स्थिति के लिए <math>q \in Q</math>, माना कि <math>E(q)</math> उन स्थितियों के समूह को निरूपित करें जिनसे पहुंच योग्य है <math>q</math> बदलाव फलन में ε-बदलाव का अनुसरण करके <math>\delta</math>, अर्थात।,
एक स्थिति के लिए <math>q \in Q</math>, माना कि <math>E(q)</math> उन स्थितियों के समूह को निरूपित करें जिनसे पहुंच योग्य है <math>q</math> परिवर्तन फलन में ε-परिवर्तन का अनुसरण करके <math>\delta</math>, अर्थात।,
<math>p \in E(q)</math> यदि स्थितियों का कोई क्रम है <math>q_1,..., q_k</math> ऐसा है कि
<math>p \in E(q)</math> यदि स्थितियों का कोई क्रम है <math>q_1,..., q_k</math> ऐसा है कि
* <math>q_1 = q</math>,
* <math>q_1 = q</math>,
Line 125: Line 125:
<math>E(q)</math> इसे एप्सिलॉन क्लोजर (ε-क्लोजर भी) के रूप में जाना जाता है <math>q</math>.
<math>E(q)</math> इसे एप्सिलॉन क्लोजर (ε-क्लोजर भी) के रूप में जाना जाता है <math>q</math>.


एक समुच्चय का ε-क्लोजर <math>P</math> एनएफए के स्थितियों की संख्या को किसी भी स्थिति से पहुंच योग्य स्थितियों के समूह के रूप में परिभाषित किया गया है <math>P</math> निम्नलिखित ε-बदलाव। औपचारिक रूप से, के लिए <math>P \subseteq Q</math>, परिभाषित करना <math>E(P) = \bigcup\limits_{q\in P} E(q)</math>.
एक समुच्चय का ε-क्लोजर <math>P</math> NFA के स्थितियों की संख्या को किसी भी स्थिति से पहुंच योग्य स्थितियों के समूह के रूप में परिभाषित किया गया है <math>P</math> निम्नलिखित ε-परिवर्तन। औपचारिक रूप से, के लिए <math>P \subseteq Q</math>, परिभाषित करना <math>E(P) = \bigcup\limits_{q\in P} E(q)</math>.


===विस्तारित बदलाव फ़ंक्शन===
===विस्तारित परिवर्तन फ़ंक्शन===
ε-चालों के बिना एनएफए के समान, बदलाव फ़ंक्शन <math>\delta</math> एनएफए-ε को स्ट्रिंग्स तक बढ़ाया जा सकता है।
ε-चालों के बिना NFA के समान, परिवर्तन फ़ंक्शन <math>\delta</math> NFA-ε को स्ट्रिंग्स तक बढ़ाया जा सकता है।
अनौपचारिक रूप से, <math>\delta^*(q,w)</math> उन सभी अवस्थाओं के समुच्चय को दर्शाता है जिन तक ऑटोमेटन स्थिति में शुरू होने पर पहुंच सकता है <math>q \in Q</math> और स्ट्रिंग को पढ़ना <math>w \in \Sigma^* .</math>
अनौपचारिक रूप से, <math>\delta^*(q,w)</math> उन सभी अवस्थाओं के समुच्चय को दर्शाता है जिन तक ऑटोमेटन स्थिति में शुरू होने पर पहुंच सकता है <math>q \in Q</math> और स्ट्रिंग को पढ़ना <math>w \in \Sigma^* .</math>
कार्यक्रम <math>\delta^*: Q \times \Sigma^* \rightarrow \mathcal{P}(Q)</math> निम्नानुसार पुनरावर्ती रूप से परिभाषित किया जा सकता है।
कार्यक्रम <math>\delta^*: Q \times \Sigma^* \rightarrow \mathcal{P}(Q)</math> निम्नानुसार पुनरावर्ती रूप से परिभाषित किया जा सकता है।
Line 134: Line 134:
:अनौपचारिक रूप से: खाली स्ट्रिंग को पढ़ने से ऑटोमेटन स्थिति से बाहर हो सकता है <math>q</math> ईपीएसलॉन के बंद होने की किसी भी स्थिति के लिए <math>q .</math>
:अनौपचारिक रूप से: खाली स्ट्रिंग को पढ़ने से ऑटोमेटन स्थिति से बाहर हो सकता है <math>q</math> ईपीएसलॉन के बंद होने की किसी भी स्थिति के लिए <math>q .</math>
* <math display=inline>\delta^*(q,wa) = \bigcup_{r \in \delta^*(q,w)} E(\delta(r,a)) ,</math> प्रत्येक स्थिति के लिए <math>q \in Q ,</math> प्रत्येक स्ट्रिंग <math>w \in \Sigma^*</math> और प्रत्येक प्रतीक <math>a \in \Sigma .</math>
* <math display=inline>\delta^*(q,wa) = \bigcup_{r \in \delta^*(q,w)} E(\delta(r,a)) ,</math> प्रत्येक स्थिति के लिए <math>q \in Q ,</math> प्रत्येक स्ट्रिंग <math>w \in \Sigma^*</math> और प्रत्येक प्रतीक <math>a \in \Sigma .</math>
:अनौपचारिक रूप से: स्ट्रिंग पढ़ना <math>w</math> ऑटोमेटन को स्थिति से बाहर चला सकता है <math>q</math> किसी भी स्थिति के लिए <math>r</math> पुनरावर्ती गणना समुच्चय में <math>\delta^*(q,w)</math>; उसके बाद, प्रतीक को पढ़ना <math>a</math> इसे चला सकते हैं <math>r</math> ईपीएसलॉन बंद करने में किसी भी स्थिति के लिए <math>\delta(r,a) .</math> कहा जाता है कि ऑटोमेटन एक स्ट्रिंग को स्वीकार करता है <math>w</math> अगर
:अनौपचारिक रूप से: स्ट्रिंग पढ़ना <math>w</math> ऑटोमेटन को स्थिति से बाहर चला सकता है <math>q</math> किसी भी स्थिति के लिए <math>r</math> पुनरावर्ती गणना समुच्चय में <math>\delta^*(q,w)</math>; उसके बाद, प्रतीक को पढ़ना <math>a</math> इसे चला सकते हैं <math>r</math> ईपीएसलॉन बंद करने में किसी भी स्थिति के लिए <math>\delta(r,a) .</math> कहा जाता है कि ऑटोमेटन एक स्ट्रिंग को स्वीकार करता है <math>w</math> यदि
:<math>\delta^*(q_0,w) \cap F \neq \emptyset ,</math> अर्थात अगर पढ़ रहे हैं <math>w</math> ऑटोमेटन को उसकी आरंभिक स्थिति से चला सकता है <math>q_0</math> कुछ स्वीकार करने वाले स्थिति में <math>F .</math><ref name="Hopcroft.Ullman.1979"/>{{rp|25}}
:<math>\delta^*(q_0,w) \cap F \neq \emptyset ,</math> अर्थात यदि पढ़ रहे हैं <math>w</math> ऑटोमेटन को उसकी आरंभिक स्थिति से चला सकता है <math>q_0</math> कुछ स्वीकार करने वाले स्थिति में <math>F .</math><ref name="Hopcroft.Ullman.1979"/>{{rp|25}}


===उदाहरण===
===उदाहरण===
[[Image:NFAexample.svg|thumb|250px|एम के लिए [[राज्य आरेख|स्थिति आरेख]]]]माना कि <math>M</math> एक बाइनरी वर्णमाला के साथ एक एनएफए-ε हो, जो यह निर्धारित करता है कि निविष्ट में 0 की सम संख्या है या 1 की सम संख्या है। ध्यान दें कि 0 घटनाएँ भी घटनाओं की एक सम संख्या है।
[[Image:NFAexample.svg|thumb|250px|एम के लिए [[राज्य आरेख|स्थिति आरेख]]]]माना कि <math>M</math> एक बाइनरी वर्णमाला के साथ एक NFA-ε हो, जो यह निर्धारित करता है कि निविष्ट में 0 की सम संख्या है या 1 की सम संख्या है। ध्यान दें कि 0 घटनाएँ भी घटनाओं की एक सम संख्या है।


औपचारिक संकेतन में, चलो <math display=block>M = (\{S_0, S_1, S_2, S_3, S_4\}, \{0, 1\}, \delta, S_0, \{S_1, S_3\})</math> कहाँ
औपचारिक संकेतन में, चलो <math display=block>M = (\{S_0, S_1, S_2, S_3, S_4\}, \{0, 1\}, \delta, S_0, \{S_1, S_3\})</math> कहाँ
बदलाव संबंध <math>\delta</math> इस स्थिति बदलाव तालिका द्वारा परिभाषित किया जा सकता है:
परिवर्तन संबंध <math>\delta</math> इस स्थिति परिवर्तन तालिका द्वारा परिभाषित किया जा सकता है:
{| class="wikitable" style="margin-left:auto;margin-right:auto; text-align:center;"
{| class="wikitable" style="margin-left:auto;margin-right:auto; text-align:center;"
! {{diagonal split header|State|Input}}
! {{diagonal split header|State|Input}}
Line 177: Line 177:
हम परिभाषित करते हैं <math>M</math> ε-चालों का उपयोग करना लेकिन <math>M</math> ε-चालों का उपयोग किए बिना परिभाषित किया जा सकता है।
हम परिभाषित करते हैं <math>M</math> ε-चालों का उपयोग करना लेकिन <math>M</math> ε-चालों का उपयोग किए बिना परिभाषित किया जा सकता है।


===एनएफए के समतुल्य===
===NFA के समतुल्य===


यह दिखाने के लिए कि एनएफएएनएफए के बराबर है, पहले ध्यान दें कि एनएफए एनएफए-ε का एक विशेष मामला है, इसलिए यह दिखाना बाकी है कि प्रत्येक एनएफए-ε के लिए, एक समकक्ष एनएफएउपस्थित है।
यह दिखाने के लिए कि NFANFA के बराबर है, पहले ध्यान दें कि NFA NFA-ε का एक विशेष मामला है, इसलिए यह दिखाना बाकी है कि प्रत्येक NFA-ε के लिए, एक समकक्ष NFAउपस्थित है।


एप्सिलॉन चालों के साथ एक एनएफए दिया गया <math>M = (Q, \Sigma, \delta, q_0, F) ,</math>
एप्सिलॉन चालों के साथ एक NFA दिया गया o show NFA-ε is equivalent to NFA, first note that NFA is a speciaase of <math>q \in Q</math> NFA-ε, so it remains to show for every NFफ़ंक्शन, there exists an equivalent NFA.
एनएफए को परिभाषित करें <math>M' = (Q, \Sigma, \delta', q_0, F') ,</math> कहाँ
 
Given an NFA with epsilon moves  define an NFA
 
where
NFA को परिभाषित करें <math>M' = (Q, \Sigma, \delta', q_0, F') ,</math> कहाँ
:<math>F' = \begin{cases} F \cup \{ q_0 \} & \text{ if } E(q_0) \cap F \neq \{\} \\ F & \text{ otherwise } \\ \end{cases} </math>
:<math>F' = \begin{cases} F \cup \{ q_0 \} & \text{ if } E(q_0) \cap F \neq \{\} \\ F & \text{ otherwise } \\ \end{cases} </math>
और
और
:<math>\delta'(q,a) = \delta^*(q,a) </math> प्रत्येक स्थिति के लिए <math>q \in Q</math> और प्रत्येक प्रतीक <math>a \in \Sigma ,</math> विस्तारित बदलाव फ़ंक्शन का उपयोग करना <math>\delta^*</math> ऊपर परिभाषित.
:<math>\delta'(q,a) = \delta^*(q,a) </math> प्रत्येक स्थिति <math>q \in Q</math> के लिए और प्रत्येक प्रतीक <math>a \in \Sigma ,</math> विस्तारित परिवर्तन फलन का उपयोग करना <math>\delta^*</math> ऊपर परिभाषित.
 
<math>M</math> और <math>M' </math>  <math>\delta</math> और <math>\delta' </math> के परिवर्तन कार्यों में अंतर करना होगा अर्थात. और स्ट्रिंग्स में उनका विस्<math>\delta^*(q_0,w) \cap F \neq \{\},</math> तार, <math>\delta</math> और <math>\delta'^* ,</math> क्रमशः निर्मारा, <math>M'</math> कोई ε-परिवर्तन नहीं है।


के बदलाव कार्यों में अंतर करना होगा <math>M</math> और <math>M' ,</math> अर्थात. <math>\delta</math> और <math>\delta' ,</math> और स्ट्रिंग्स में उनका विस्तार, <math>\delta</math> और <math>\delta'^* ,</math> क्रमश।
कोई <math>\delta'^*(q_0,w) = \delta^*(q_0,w)</math> साबित कर सकता है  प्रत्येक स्ट्रिंग <math>w \neq \varepsilon</math> के लिए , की लंबाई <math>w </math> पर [[गणितीय प्रेरण]] द्वारा
निर्माण द्वारा, <math>M'</math> कोई ε-बदलाव नहीं है।


कोई इसे साबित कर सकता है <math>\delta'^*(q_0,w) = \delta^*(q_0,w)</math> प्रत्येक स्ट्रिंग के लिए <math>w \neq \varepsilon</math>, की लंबाई पर [[गणितीय प्रेरण]] द्वारा <math>w .</math>
इसके आधार पर <math>\delta'^*(q_0,w) \cap F' \neq \{\}</math> यह दिखा सकता है यदि और केवल यदि, प्रत्येक स्ट्रिंग के लिए <math>w \in \Sigma^* </math> <math>\delta^*(q_0,w) \cap F \neq \{\}</math> है
इसके आधार पर कोई यह दिखा सकता है <math>\delta'^*(q_0,w) \cap F' \neq \{\}</math> अगर और केवल अगर, <math>\delta^*(q_0,w) \cap F \neq \{\},</math> प्रत्येक स्ट्रिंग के लिए <math>w \in \Sigma^* :</math>
* यदि <math>w = \varepsilon ,</math> यह <math>F' </math> की परिभाषा से अनुसरण करता है
* अगर <math>w = \varepsilon ,</math> यह की परिभाषा से अनुसरण करता है <math>F' .</math>
* अन्यथा माना  कि <math>w = va</math> साथ <math>v \in \Sigma^*</math> और <math>a \in \Sigma .</math> :से <math>\delta'^*(q_0,w) = \delta^*(q_0,w)</math> और <math>F \subseteq F' ,</math> अपने पास <math display="block">\delta'^*(q_0,w) \cap F' \neq \{\} \;\Leftarrow\; \delta^*(q_0,w) \cap F \neq \{\} ;</math> हमें अभी भी <math>\Rightarrow</math> दिशा दिखाना है।
* नहीं तो चलो <math>w = va</math> साथ <math>v \in \Sigma^*</math> और <math>a \in \Sigma .</math> :से <math>\delta'^*(q_0,w) = \delta^*(q_0,w)</math> और <math>F \subseteq F' ,</math> अपने पास <math display=block>\delta'^*(q_0,w) \cap F' \neq \{\} \;\Leftarrow\; \delta^*(q_0,w) \cap F \neq \{\} ;</math> हमें अभी भी दिखाना है<math>\Rightarrow</math>दिशा।
:*यदि <math>\delta'^*(q_0,w)</math> स्थिति <math>F' \setminus \{ q_0 \} </math> में सम्मिलित है तब <math>\delta^*(q_0,w)</math> जिसमें वही स्थिति सम्मिलित है, जो <math>F</math> में निहित है .
:*अगर <math>\delta'^*(q_0,w)</math> में एक स्थिति सम्मिलित है <math>F' \setminus \{ q_0 \} ,</math> तब <math>\delta^*(q_0,w)</math> जिसमें वही अवस्था समाहित है, जो निहित है <math>F</math>.
:*यदि <math>\delta'^*(q_0,w)</math> <math>q_0 ,</math> और <math>q_0 \in F </math> में सम्मिलित है तब  <math>\delta^*(q_0,w)</math> में स्थिति <math>F </math> अर्थात. <math>q_0 </math> भी सम्मिलित है 
:*अगर <math>\delta'^*(q_0,w)</math> रोकना <math>q_0 ,</math> और <math>q_0 \in F ,</math> तब  <math>\delta^*(q_0,w)</math> में एक स्थिति भी सम्मिलित है <math>F ,</math> अर्थात. <math>q_0 .</math>
:*यदि <math>\delta'^*(q_0,w)</math> <math>q_0 </math> और <math>q_0 \not\in F </math> में सम्मिलित है तब {{clarify span|स्थिति in <math>E(q_0) \cap F</math>|reason=Which one? Why should such a state exist?|date=April 2022}} <math display="inline">\delta^*(q_0,w) = \bigcup_{r \in \delta^*(q,v)} E(\delta(r,a)) </math> में होना चाहिए <ref name="Hopcroft.Ullman.1979" />{{rp|26-27}}
:*अगर <math>\delta'^*(q_0,w)</math> रोकना <math>q_0 ,</math> और <math>q_0 \not\in F ,</math> तब {{clarify span|the state in <math>E(q_0) \cap F</math>|reason=Which one? Why should such a state exist?|date=April 2022}} अंदर होना चाहिए <math display=inline>\delta^*(q_0,w) = \bigcup_{r \in \delta^*(q,v)} E(\delta(r,a)) .</math><ref name="Hopcroft.Ullman.1979"/>{{rp|26-27}}


चूंकि एनएफए डीएफए के बराबर है, एनएफए-ε भी डीएफए के बराबर है।
चूंकि NFA DFA के बराबर है, NFA-ε भी DFA के बराबर है।


==बंद गुण==
==बंद गुण==
[[File:Thompson-or.svg|thumb|कुछ दिए गए एनएफए की भाषाओं के मिलन को स्वीकार करते हुए एनएफए की रचना की गई {{color|#800000|''N''(''s'')}} और {{color|#008000|''N''(''t'')}}. भाषा संघ में एक निविष्ट स्ट्रिंग w के लिए, रचित ऑटोमेटन q से एक उपयुक्त सबऑटोमेटन की प्रारंभ स्थिति (बाएं रंगीन सर्कल) में ε-बदलाव का अनुसरण करता है - {{color|#800000|''N''(''s'')}} या {{color|#008000|''N''(''t'')}} - जो, w का अनुसरण करके, एक स्वीकार्य स्थिति (दाएं रंग का वृत्त) तक पहुंच सकता है; वहां से, अवस्था f तक दूसरे ε-बदलाव द्वारा पहुंचा जा सकता है। ε-बदलावों के कारण, संकलित एनएफए उचित रूप से गैर-नियतात्मक है, भले ही दोनों हों {{color|#800000|''N''(''s'')}} और {{color|#008000|''N''(''t'')}} डीएफए थे; इसके विपरीत, संघ भाषा (यहां तक ​​कि दो डीएफए) के लिए डीएफए का निर्माण करना अधिक जटिल है।]]एनएफए द्वारा स्वीकृत भाषाओं का समुच्चय निम्नलिखित परिचालनों के तहत बंद है। इन क्लोजर ऑपरेशंस का उपयोग थॉम्पसन के निर्माण कलन विधि में किया जाता है, जो किसी भी नियमित अभिव्यक्ति से एनएफए का निर्माण करता है। उनका उपयोग यह साबित करने के लिए भी किया जा सकता है कि एनएफए बिल्कुल नियमित भाषाओं को पहचानते हैं।
[[File:Thompson-or.svg|thumb|कुछ दिए गए NFA की भाषाओं के मिलन को स्वीकार करते हुए NFA की रचना की गई {{color|#800000|''N''(''s'')}} और {{color|#008000|''N''(''t'')}}. भाषा संघ में एक निविष्ट स्ट्रिंग w के लिए, रचित ऑटोमेटन q से एक उपयुक्त सबऑटोमेटन की प्रारंभ स्थिति (बाएं रंगीन सर्कल) में ε-परिवर्तन का अनुसरण करता है - {{color|#800000|''N''(''s'')}} या {{color|#008000|''N''(''t'')}} - जो, w का अनुसरण करके, एक स्वीकार्य स्थिति (दाएं रंग का वृत्त) तक पहुंच सकता है; वहां से, अवस्था f तक दूसरे ε-परिवर्तन द्वारा पहुंचा जा सकता है। ε-परिवर्तनों के कारण, संकलित NFA उचित रूप से गैर-नियतात्मक है, भले ही दोनों हों {{color|#800000|''N''(''s'')}} और {{color|#008000|''N''(''t'')}} DFAथे; इसके विपरीत, संघ भाषा (यहां तक ​​कि दो डीएफए) के लिए DFAका निर्माण करना अधिक जटिल है।]]NFA द्वारा स्वीकृत भाषाओं का समुच्चय निम्नलिखित परिचालनों के तहत बंद है। इन क्लोजर ऑपरेशंस का उपयोग थॉम्पसन के निर्माण कलन विधि में किया जाता है, जो किसी भी नियमित अभिव्यक्ति से NFA का निर्माण करता है। उनका उपयोग यह साबित करने के लिए भी किया जा सकता है कि NFA बिल्कुल नियमित भाषाओं को पहचानते हैं।


*संघ (cf. चित्र); अर्थात्, यदि भाषा एल<sub>1</sub> कुछ एनएफए ए द्वारा स्वीकार किया जाता है<sub>1</sub> और मैं<sub>2</sub> कुछ ए द्वारा<sub>2</sub>, फिर एक एनएफए ए<sub>u</sub> ऐसा निर्माण किया जा सकता है जो L भाषा को स्वीकार करता हो<sub>1</sub>∪L<sub>2</sub>.
*संघ (सीएफ. चित्र); अर्थात्, यदि भाषा L1 को कुछ NFA A1 द्वारा और L2 को कुछ A2 द्वारा स्वीकार किया जाता है, तो एक NFA Au का निर्माण किया जा सकता है जो भाषा L1∪L2 को स्वीकार करता है।
*अंतच्छेदन; इसी तरह, से<sub>1</sub> और ए<sub>2</sub> एनएफए ए<sub>i</sub> ऐसा निर्माण किया जा सकता है जो L को स्वीकार करता हो<sub>1</sub>∩L<sub>2</sub>.
*चौराहा; इसी तरह, A1 और A2 से एक NFA Ai का निर्माण किया जा सकता है जो L1∩L2 को स्वीकार करता है।
*संयोजन
*कड़ी
*नकार; इसी तरह, से<sub>1</sub> एनएफए ए<sub>n</sub> ऐसा निर्माण किया जा सकता है जो Σ को स्वीकार करता हो<sup>*</sup>\L<sub>1</sub>.
*नकार; इसी तरह, A1 से एक NFA An का निर्माण किया जा सकता है जो Σ*\L1 को स्वीकार करता है।
*[[क्लीन क्लोजर]]
*[[क्लीन क्लोजर]]


चूंकि एनएफए ε-मूव्स (एनएफए-ε) के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन के बराबर हैं, उपरोक्त क्लोजर एनएफए-ε के क्लोजर गुणों का उपयोग करके सिद्ध किए जाते हैं।
चूंकि NFA ε-मूव्स (NFA-ε) के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन के बराबर हैं, उपरोक्त क्लोजर NFA-ε के क्लोजर गुणों का उपयोग करके सिद्ध किए जाते हैं।


==गुण==
==गुण==
मशीन निर्दिष्ट प्रारंभिक अवस्था में शुरू होती है और अपने वर्णमाला (कंप्यूटर विज्ञान) से प्रतीकों की एक श्रृंखला में पढ़ती है। ऑटोमेटन वर्तमान स्थिति का उपयोग करके अगली स्थिति निर्धारित करने के लिए स्थिति बदलाव फ़ंक्शन Δ का उपयोग करता है, और प्रतीक बस पढ़ता है या खाली स्ट्रिंग। हालाँकि, एनएफए की अगली स्थिति न केवल वर्तमान निविष्ट घटना पर निर्भर करती है, बल्कि बाद की निविष्ट घटनाओं की मनमानी संख्या पर भी निर्भर करती है। जब तक ये आगामी घटनाएँ घटित नहीं हो जातीं तब तक यह निर्धारित करना संभव नहीं है कि मशीन किस स्थिति में है।<ref>FOLDOC Free Online Dictionary of Computing, ''[http://foldoc.org/nfa Finite-State Machine]''</ref> यदि, जब ऑटोमेटन ने पढ़ना समाप्त कर लिया है, यह स्वीकार करने की स्थिति में है, तो एनएफए को स्ट्रिंग को स्वीकार करने के लिए कहा जाता है, अन्यथा इसे स्ट्रिंग को अस्वीकार करने के लिए कहा जाता है।
मशीन फ़ंक्शन्दिष्ट प्रारंभिक अवस्था में शुरू होती है और अपने वर्णमाला (कंप्यूटर विज्ञान) से प्रतीकों की एक श्रृंखला में पढ़ती है। ऑटोमेटन वर्तमान स्थिति का उपयोग करके अगली स्थिति निर्धारित करने के लिए स्थिति परिवर्तन फलन Δ का उपयोग करता है, और प्रतीक बस पढ़ता है या खाली स्ट्रिंग। हालाँकि, NFA की अगली स्थिति न केवल वर्तमान निविष्ट घटना पर निर्भर करती है, बल्कि बाद की निविष्ट घटनाओं की मनमानी संख्या पर भी निर्भर करती है। जब तक ये आगामी घटनाएँ घटित नहीं हो जातीं तब तक यह निर्धारित करना संभव नहीं है कि मशीन किस स्थिति में है।<ref>FOLDOC Free Online Dictionary of Computing, ''[http://foldoc.org/nfa Finite-State Machine]''</ref> यदि, जब ऑटोमेटन ने पढ़ना समाप्त कर लिया है, यह स्वीकार करने की स्थिति में है, तो NFA को स्ट्रिंग को स्वीकार करने के लिए कहा जाता है, अन्यथा इसे स्ट्रिंग को अस्वीकार करने के लिए कहा जाता है।


एनएफए द्वारा स्वीकृत सभी स्ट्रिंग्स का समुच्चय वह भाषा है जिसे एनएफए स्वीकार करता है। यह भाषा एक नियमित भाषा है.
NFA द्वारा स्वीकृत सभी स्ट्रिंग्स का समुच्चय वह भाषा है जिसे NFA स्वीकार करता है। यह भाषा एक नियमित भाषा है.


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


==कार्यान्वयन==
==कार्यान्वयन==
एनएफए लागू करने के कई तरीके हैं:
NFA लागू करने के कई तरीके हैं:
* समतुल्य डीएफए में कनवर्ट करें। कुछ मामलों में इससे स्थितियों की संख्या में तेजी से बढ़ोतरी हो सकती है।<ref>{{cite web|url=https://cseweb.ucsd.edu//~ccalabro/essays/fsa.pdf|title=एनएफए से डीएफए ब्लोअप|website=cseweb.ucsd.edu|date=February 27, 2005|access-date=6 March 2023|author=Chris Calabro}}</ref>
* समतुल्य DFAमें कनवर्ट करें। कुछ मामलों में इससे स्थितियों की संख्या में तेजी से बढ़ोतरी होफ़ंक्शनती है।<ref>{{cite web|url=https://cseweb.ucsd.edu//~ccalabro/essays/fsa.pdf|title=एनएफए से डीएफए ब्लोअप|website=cseweb.ucsd.edu|date=February 27, 2005|access-date=6 March 2023|author=Chris Calabro}}</ref>
* सभी स्थितियों की एक समुच्चय डेटा संरचना रखें जिसमें एनएफए वर्तमान में हो सकता है। एक निविष्ट प्रतीक की खपत पर, अगले स्थितियों का समुच्चय प्राप्त करने के लिए सभीउपस्थिता स्थितियों पर लागू बदलाव फ़ंक्शन के परिणामों को समुच्चय करें; यदि ε-चालों की अनुमति है, तो ऐसी चाल (ε-बंद) द्वारा पहुंच योग्य सभी स्थितियों को सम्मिलित करें। प्रत्येक चरण के लिए अधिकतम s की आवश्यकता होती है<sup>2</sup>गणना, जहां s एनएफए के स्थितियों की संख्या है। अंतिम निविष्ट प्रतीक की खपत पर, यदि वर्तमान स्थिति में से एक अंतिम स्थिति है, तो मशीन स्ट्रिंग को स्वीकार करती है। लंबाई n की एक स्ट्रिंग को समय बिग ओ नोटेशन # औपचारिक परिभाषा (एनएस) में संसाधित किया जा सकता है<sup>2</sup>),<ref name="Hopcroft.Motwani.Ullman.2003"/>{{rp|153}} और स्थान O(s)।
* सभी स्थितियों की एक समुच्चय डेटा संरचना रखें जिसमें NFA वर्तमान में हो सकता है। एक निविष्ट प्रतीक की खपत पर, अगले स्थितियों का समुच्चय प्राप्त करने के लिए सभीउपस्थित स्थितियों पर लागू परिवर्तन फलन के परिणामों को समुच्चय करें; यदि ε-चालों की अनुमति है, तो ऐसी चाल (ε-बंद) द्वारा पहुंच योग्य सभी स्थितियों को सम्मिलित करें। प्रत्येक चरण के लिए अधिकतम s<sup>2</sup> गणना की आवश्यकता होती है , जहां s NFA के स्थितियों की संख्या है। अंतिम निविष्ट प्रतीक की खपत पर, यदि वर्तमान स्थिति में से एक अंतिम स्थिति है, तो मशीन स्ट्रिंग को स्वीकार करती है। लंबाई n की एक स्ट्रिंग को समय ''O''(''ns''<sup>2</sup>)<ref name="Hopcroft.Motwani.Ullman.2003"/>{{rp|153}},और स्थान O(s) में संसाधित किया जा सकता है)।
* एकाधिक प्रतियाँ बनाएँ। प्रत्येक n-तरफ़ा निर्णय के लिए, NFA मशीन की n−1 प्रतियां बनाता है। प्रत्येक एक अलग स्थिति में प्रवेश करेगा। यदि, अंतिम निविष्ट प्रतीक का उपभोग करने पर, एनएफए की कम से कम एक प्रति स्वीकार करने की स्थिति में है, तो एनएफए स्वीकार करेगा। (इसके लिए भी, एनएफए स्थितियों की संख्या के संबंध में रैखिक भंडारण की आवश्यकता होती है, क्योंकि प्रत्येक एनएफए स्थिति के लिए एक मशीन हो सकती है।)
* एकाधिक प्रतियाँ बनाएँ। प्रत्येक n-तरफ़ा निर्णय के लिए, NFA मशीन की n−1 प्रतियां बनाता है। प्रत्येक एक अलग स्थिति में प्रवेश करेगा। यदि, अंतिम निविष्ट प्रतीक का उपभोग करने पर, NFA की कम से कम एक प्रति स्वीकार करने की स्थिति में है, तो NFA स्वीकार करेगा। (इसके लिए भी, NFA स्थितियों की संख्या के संबंध में रैखिक भंडारण की आवश्यकता होती है, क्योंकि प्रत्येक NFA स्थिति के लिए एक मशीन हो सकती है।)
* एनएफए की बदलाव संरचना के माध्यम से टोकन को स्पष्ट रूप से प्रचारित करें और जब भी कोई टोकन अंतिम स्थिति में पहुंचे तो उसका मिलान करें। यह कभी-कभी उपयोगी होता है जब एनएफए को उन घटनाओं के बारे में अतिरिक्त संदर्भ को एन्कोड करना चाहिए जिन्होंने बदलाव को ट्रिगर किया। (ऐसे कार्यान्वयन के लिए जो ऑब्जेक्ट संदर्भों पर नज़र रखने के लिए इस तकनीक का उपयोग करता है, ट्रेसमैच पर एक नज़र डालें।)<ref>Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2005. [http://abc.comlab.ox.ac.uk/papers#oopsla2005 Adding trace matching with free variables to AspectJ] {{Webarchive|url=https://web.archive.org/web/20090918053718/http://abc.comlab.ox.ac.uk/papers#oopsla2005 |date=2009-09-18 }}. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (San Diego, CA, USA, October 16–20, 2005). OOPSLA '05. ACM, New York, NY, 345-364.</ref>
* NFA की परिवर्तन संरचना के माध्यम से टोकन को स्पष्ट रूप से प्रचारित करें और जब भी कोई टोकन अंतिम स्थिति में पहुंचे तो उसका मिलान करें। यह कभी-कभी उपयोगी होता है जब NFA को उन घटनाओं के बारे में अतिरिक्त संदर्भ को एन्कोड करना चाहिए जिन्होंने परिवर्तन को ट्रिगर किया। (ऐसे कार्यान्वयन के लिए जो ऑब्जेक्ट संदर्भों पर नज़र रखने के लिए इस तकनीक का उपयोग करता है, ट्रेसमैच पर एक नज़र डालें।)<ref>Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2005. [http://abc.comlab.ox.ac.uk/papers#oopsla2005 Adding trace matching with free variables to AspectJ] {{Webarchive|url=https://web.archive.org/web/20090918053718/http://abc.comlab.ox.ac.uk/papers#oopsla2005 |date=2009-09-18 }}. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (San Diego, CA, USA, October 16–20, 2005). OOPSLA '05. ACM, New York, NY, 345-364.</ref>
* एनएफए दिए जाने पर यह जांचने के लिए पीएसपीएसीई-पूर्ण है कि क्या यह सार्वभौमिक है, अर्थात, यदि कोई स्ट्रिंग है जिसे यह स्वीकार नहीं करता है।<ref>Historically shown in: {{Cite journal|last=Meyer|first=A. R.|last2=Stockmeyer|first2=L. J.|date=1972-10-25|title=The equivalence problem for regular expressions with squaring requires exponential space|journal=Proceedings of the 13th Annual Symposium on Switching and Automata Theory (SWAT)|location=USA|publisher=IEEE Computer Society|pages=125–129|doi=10.1109/SWAT.1972.29}} For a modern presentation, see [http://www.lsv.fr/~jacomme/1718/ca/td4_sol.pdf]</ref> समावेशन समस्या के बारे में भी यही सच है, अर्थात, दो एनएफए दिए जाने पर, एक की भाषा दूसरे की भाषा का उप-समूचय है।
* NFA दिए जाने पर यह जांचने के लिए पीएसपीएसीई-पूर्ण है कि क्या यह सार्वभौमिक है, अर्थात, यदि कोई स्ट्रिंग है जिसे यह स्वीकार नहीं करता है।<ref>Historically shown in: {{Cite journal|last=Meyer|first=A. R.|last2=Stockmeyer|first2=L. J.|date=1972-10-25|title=The equivalence problem for regular expressions with squaring requires exponential space|journal=Proceedings of the 13th Annual Symposium on Switching and Automata Theory (SWAT)|location=USA|publisher=IEEE Computer Society|pages=125–129|doi=10.1109/SWAT.1972.29}} For a modern presentation, see [http://www.lsv.fr/~jacomme/1718/ca/td4_sol.pdf]</ref> समावेशन समस्या के बारे में भी यही सच है, अर्थात, दो NFA दिए जाने पर, एक की भाषा दूसरे की भाषा का उप-समूचय है।


==एनएफए का अनुप्रयोग==
==NFA का अनुप्रयोग==
एनएफए और डीएफए इस मायने में समतुल्य हैं कि यदि कोई भाषा एनएफए द्वारा स्वीकृत है, तो इसे डीएफए द्वारा भी स्वीकृत है और इसके विपरीत भी। ऐसी समतुल्यता की स्थापना महत्वपूर्ण एवं उपयोगी है। यह उपयोगी है क्योंकि किसी दी गई भाषा को पहचानने के लिए एनएफए का निर्माण करना कभी-कभी उस भाषा के लिए डीएफए के निर्माण की तुलना में बहुत आसान होता है। यह महत्वपूर्ण है क्योंकि गणना के सिद्धांत में कई महत्वपूर्ण गुणों को समुच्चय करने के लिए आवश्यक गणितीय कार्य की जटिलता को कम करने के लिए एनएफए का उपयोग किया जा सकता है। उदाहरण के लिए, डीएफए की तुलना में एनएफए का उपयोग करके नियमित भाषाओं के नियमित भाषाओं#क्लोजर गुणों को साबित करना बहुत आसान है।
NFA और DFAइस मायने में समतुल्य हैं कि यदि कोई भाषा NFA द्वारा स्वीकृत है, तो इसे DFAद्वारा भी स्वीकृत है और इसके विपरीत भी। ऐसी समतुल्यता की स्थापना महत्वपूर्ण एवं उपयोगी है। यह उपयोगी है क्योंकि किसी दी गई भाषा को पहचानने के लिए NFA का निर्माण करना कभी-कभी उस भाषा के लिए DFAके निर्माण की तुलना में बहुत आसान होता है। यह महत्वपूर्ण है क्योंकि गणना के सिद्धांत में कई महत्वपूर्ण गुणों को समुच्चय करने के लिए आवश्यक गणितीय कार्य की जटिलता को कम करने के लिए NFA का उपयोग किया जा सकता है। उदाहरण के लिए, DFAकी तुलना में NFA का उपयोग करके नियमित भाषाओं के क्लोजर गुणों को साबित करना बहुत आसान है।


==यह भी देखें==
==यह भी देखें==

Revision as of 11:58, 26 July 2023

(0|1)* 1 (0|1)3.
उस औपचारिक भाषा के लिए एक नियतात्मक परिमित ऑटोमेटन में कम से कम 16 अवस्थाएँ होती हैं।

ऑटोमेटा सिद्धांत में, एक परिमित-अवस्था मशीन को नियतात्मक परिमित ऑटोमेटन (DFA) कहा जाता है, यदि

  • इसका प्रत्येक परिवर्तन स्रोत स्थिति और निविष्ट प्रतीक द्वारा विशिष्ट रूप से निर्धारित होता है, और
  • प्रत्येक स्थिति परिवर्तन के लिए एक निविष्ट प्रतीक पढ़ना आवश्यक है।

'नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन' ('NFA'), या 'नॉनडेटर्मिनिस्टिक परिमित-स्थिति मशीन' को इन प्रतिबंधों का पालन करने की आवश्यकता नहीं है। विशेष रूप से, प्रत्येक DFA(DFA) एक NFA (NFA) भी है। कभी-कभी 'NFA' शब्द का प्रयोग एक संकीर्ण अर्थ में किया जाता है, जो एक NFA का संदर्भ देता है जो DFAनहीं है, लेकिन इस लेख में ऐसा नहीं है।

उप-समूचय निर्माण कलन विधि का उपयोग करके, प्रत्येक NFA को समकक्ष DFAमें अनुवादित किया जा सकता है अर्थात, DFAसमान औपचारिक भाषा को मान्यता देता है।[1]DFAकी तरह, NFA केवल नियमित भाषाओं को पहचानते हैं।

NFA की प्रारम्भ 1959 में माइकल ओ. राबिन और दाना स्कॉट द्वारा की गई थी,[2] जिन्होंने DFAके समकक्ष भी दिखाया। NFA का उपयोग नियमित अभिव्यक्तियों के कार्यान्वयन में किया जाता है: थॉम्पसन का निर्माण NFA में नियमित अभिव्यक्ति को संकलित करने के लिए एक कलन विधि है जो स्ट्रिंग्स पर पैटर्न मिलान को कुशलतापूर्वक निष्पादित कर सकता है। इसके विपरीत, क्लेन के कलन विधि का उपयोग NFA को नियमित अभिव्यक्ति में परिवर्तित करने के लिए किया जा सकता है (जिसका आकार सामान्यतः निविष्ट ऑटोमेटन में घातांक होता है)।

NFA को कई प्रयोगो से सामान्यीकृत किया गया है, उदाहरण के लिए, ε-मूव्स, परिमित-राज्य ट्रांसड्यूसर, पुशडाउन ऑटोमेटा, वैकल्पिक ऑटोमेटा, ω-ऑटोमेटा और संभाव्य ऑटोमेटा के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटा। DFAके अलावा, NFA के अन्य ज्ञात विशेष मामले असंदिग्ध परिमित ऑटोमेटा (यूएफए) और स्व-सत्यापन परिमित ऑटोमेटा (एसवीएफए) हैं।

अनौपचारिक परिचय

NFA के व्यवहार का वर्णन करने के दो तरीके हैं, और ये दोनों समान हैं। पहला तरीका NFA के नाम पर गैर-नियतात्मक का उपयोग करता है। प्रत्येक निविष्ट प्रतीक के लिए, NFA एक नई स्थिति में परिवर्तित हो जाता है जब तक कि सभी निविष्ट प्रतीकों का उपभोग नहीं हो जाता। प्रत्येक चरण में, ऑटोमेटन गैर-नियतात्मक रूप से लागू परिवर्तनों में से एक को चुनता है। यदि कम से कम एक भाग्यशाली रनउपस्थित है, अर्थात विकल्पों का कुछ क्रम जो पूरी तरह से निविष्ट का उपभोग करने के बाद एक स्वीकार्य स्थिति की ओर ले जाता है, तो इसे स्वीकार कर लिया जाता है। अन्यथा, अर्थात यदि कोई विकल्प अनुक्रम नहीं है तो सभी निविष्ट का उपभोग कर सकता है[3] और एक स्वीकार्य स्थिति की ओर ले जाता है, निविष्ट अस्वीकार कर दिया जाता है।[4]: 19 [5]: 319 

दूसरे तरीके में, NFA एक-एक करके निविष्ट प्रतीकों की एक श्रृंखला का उपभोग करता है। प्रत्येक चरण में, जब भी दो या अधिक परिवर्तन लागू होते हैं, तो यह स्वयं को उचित रूप से कई प्रतियों में क्लोन कर लेता है, प्रत्येक एक अलग परिवर्तन का अनुसरण करता है। यदि कोई परिवर्तन लागू नहीं होता है, तो वर्तमान प्रतिलिपि निष्क्रिय हो जाती है, और वह ख़त्म हो जाती है। यदि, पूरे निविष्ट का उपभोग करने के बाद, कोई भी प्रतियाँ स्वीकार की स्थिति में है, तो निविष्ट स्वीकार कर लिया जाता है, अन्यथा, इसे अस्वीकार कर दिया जाता है।[4]: 19–20 [6]: 48 [7]: 56 

औपचारिक परिभाषा

औपचारिक परिभाषा के अधिक प्रारंभिक परिचय के लिए, ऑटोमेटा सिद्धांत देखें।

ऑटोमेटन

NFA को औपचारिक रूप से 5-टपल द्वारा दर्शाया जाता है, , जिसमें सम्मिलित है

  • स्थितियों का एक सीमित समुच्चय (गणित)
  • निविष्ट प्रतीकों का एक सीमित समुच्चय .
  • एक परिवर्तन फ़ंक्शन  : .
  • एक प्रारंभिक (या आरंभ) अवस्था .
  • स्थितियों का एक समुच्चय स्वीकार करने वाले (या अंतिम) स्थितियों के रूप में प्रतिष्ठित .

यहाँ, के पावर समुच्चय को दर्शाता है .

स्वीकृत भाषा

NFA दिया गया , इसकी स्वीकृत भाषा द्वारा दर्शाया जाता है , और इसे वर्णमाला के सभी तारों के समुच्चय के रूप में परिभाषित किया गया है जिसे स्वीकार किया जाता है .उपरोक्त अनौपचारिक स्पष्टीकरणों के अनुरूप, एक स्ट्रिंग की कई समान औपचारिक परिभाषाएँ हैं जिसे द्वारा स्वीकार किया जा रहा है :

  • स्वीकार है यदि स्थितियों का अनुक्रम , में उपस्थित है, ऐसा है कि:
    1. , के लिए
    2. .
शब्दों में, पहली शर्त कहती है कि मशीन प्रारंभ अवस्था में शुरू होती है . दूसरी शर्त कहती है कि स्ट्रिंग का प्रत्येक अक्षर दिया गया है , मशीन ट्रांज़िशन फ़ंक्शन के अनुसार एक स्थिति से दूसरे स्थिति में स्थानांतरित होगी . आखिरी शर्त कहती है कि मशीन स्वीकार करती है यदि अंतिम निविष्ट मशीन को स्वीकार करने वाले स्थितियों में से एक में रुकने का कारण बनता है। के क्रम में द्वारा स्वीकार किया जाना , यह आवश्यक नहीं है कि प्रत्येक स्थिति अनुक्रम एक स्वीकार्य स्थिति में समाप्त हो, यदि कोई ऐसा करता है तो यह पर्याप्त है। अन्यथा, अर्थात यदि इसे प्राप्त करना बिल्कुल भी असंभव है से एक स्थिति तक अनुगमन करते हुए , ऐसा कहा जाता है कि ऑटोमेटन स्ट्रिंग को अस्वीकार कर देता है। तार का समुच्चय एक्सेप्ट्स द्वारा स्वीकृत औपचारिक भाषा है तथा इस भाषा को निरूपित किया जाता है .[5]: 320 [6]: 54 
  • वैकल्पिक रूप से, स्वीकार किया जाता है यदि , कहाँ रिकर्सन (कंप्यूटर विज्ञान) को इसके द्वारा परिभाषित किया गया है:
    1. कहाँ खाली स्ट्रिंग है, और
    2. सभी के लिए .
शब्दों में, स्थिति से पहुंच योग्य सभी स्थितियों का समूह है स्ट्रिंग का उपभोग करके . डोर यदि कोई स्वीकार करने वाला स्थिति है तो स्वीकार किया जाता है आरंभिक स्थिति से पहुंचा जा सकता है सेवन करने से .[4]: 21 [7]: 59 

प्रारंभिक अवस्था

उपरोक्त ऑटोमेटन परिभाषा एकल प्रारंभिक अवस्था का उपयोग करती है, जो आवश्यक नहीं है। कभी-कभी, NFA को प्रारंभिक अवस्थाओं के एक समुच्चय के साथ परिभाषित किया जाता है। एक आसान निर्माण है जो कई प्रारंभिक स्थितियों वाले NFA को एक प्रारंभिक स्थिति वाले NFA में परिवर्तित करता है, जो एक सुविधाजनक संकेतन प्रदान करता है।

उदाहरण

The state diagram for M. It is not deterministic since in state p reading a 1 can lead to p or to q.
All possible runs of M on input string "10".
All possible runs of M on input string "1011".
Arc label: input symbol, node label: state, green: start state, red: accepting state(s).

निम्नलिखित ऑटोमेटन , एक द्विआधारी वर्णमाला के साथ, यह निर्धारित करता है कि निविष्ट 1 के साथ समाप्त होता है या नहीं।माना कि जहाँ परिवर्तन फलन को स्थिति परिवर्तन तालिका द्वारा परिभाषित किया जा सकता है (ऊपरी बाएँ चित्र की तुलना करें):

Input
State
0 1

समुच्चय के बाद से इसमें एक से अधिक स्थिति सम्मिलित हैं, गैर नियतिवादी है. की भाषा रेगुलर एक्सप्रेशन द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है (0|1)*1.

निविष्ट स्ट्रिंग 1011 के लिए सभी संभावित स्थिति अनुक्रम निचले चित्र में दिखाए गए हैं। स्ट्रिंग द्वारा स्वीकार किया जाता है चूँकि एक अवस्था अनुक्रम उपरोक्त परिभाषा को संतुष्ट करता है; इससे कोई फर्क नहीं पड़ता कि अन्य अनुक्रम ऐसा करने में विफल रहते हैं। चित्र की व्याख्या दो प्रयोगो से की जा सकती है:

  • #अनौपचारिक परिचय लकी-रन स्पष्टीकरण के संदर्भ में, चित्र में प्रत्येक पथ विकल्पों के अनुक्रम को दर्शाता है .
  • क्लोनिंग स्पष्टीकरण के संदर्भ में, प्रत्येक ऊर्ध्वाधर कॉलम सभी क्लोन दिखाता है किसी दिए गए समय बिंदु पर, एक नोड से निकलने वाले कई तीर क्लोनिंग का संकेत देते हैं, एक नोड जिसमें तीर नहीं निकल रहे हैं, एक क्लोन की मृत्यु का संकेत देता है।

एक ही चित्र को दो प्रयोगो से पढ़ने की व्यवहार्यता उपरोक्त दोनों स्पष्टीकरणों की समानता को भी इंगित करती है।

  • #मान्य भाषा की औपचारिक परिभाषाओं में से प्रथम को ध्यान में रखते हुए 1011 को इसे पढ़ने के समय से ही स्वीकार किया जाता है स्थिति अनुक्रम को पार कर सकता है , जो शर्तें 1 से 3 को संतुष्ट करता है।
  • दूसरी औपचारिक परिभाषा के संबंध में, नीचे से ऊपर की गणना यह दर्शाती है , इस तरह , इस तरह , इस तरह , और इसलिए ; चूँकि वह समुच्चय असंयुक्त नहीं है , स्ट्रिंग 1011 स्वीकार की जाती है।

इसके विपरीत, स्ट्रिंग 10 को अस्वीकार कर दिया गया है (उस निविष्ट के लिए सभी संभावित स्थिति अनुक्रम ऊपरी दाएँ चित्र में दिखाए गए हैं), चूँकि एकमात्र स्वीकार्य स्थिति तक पहुँचने का कोई रास्ता नहीं है, , अंतिम 0 प्रतीक को पढ़कर। जबकि आरंभिक 1 का उपभोग करने के बाद पहुंचा जा सकता है, इसका मतलब यह नहीं है कि निविष्ट 10 स्वीकार कर लिया गया है; बल्कि, इसका मतलब है कि एक निविष्ट स्ट्रिंग 1 स्वीकार किया जाएगा।

DFAके समतुल्य

एक नियतात्मक परिमित ऑटोमेटन (डीएफए) को एक विशेष प्रकार के NFA के रूप में देखा जा सकता है, जिसमें प्रत्येक स्थिति और प्रतीक के लिए, परिवर्तन फ़ंक्शन में बिल्कुल एक स्थिति होता है। इस प्रकार, यह स्पष्ट है कि प्रत्येक औपचारिक भाषा जिसे DFAद्वारा मान्यता दी जा सकती है, उसे NFA द्वारा मान्यता दी जा सकती है।

इसके विपरीत, प्रत्येक NFA के लिए, एक DFAहोता है जो समान औपचारिक भाषा को पहचानता है। DFAका निर्माण पॉवरसमुच्चय निर्माण का उपयोग करके किया जा सकता है।

यह परिणाम दर्शाता है कि NFA, अपने अतिरिक्त लचीलेपन के बावजूद, उन भाषाओं को पहचानने में असमर्थ हैं जिन्हें कुछ DFAद्वारा पहचाना नहीं जा सकता है। निर्माण में आसान NFA को अधिक कुशलतापूर्वक निष्पादन योग्य DFAमें परिवर्तित करना व्यवहार में भी महत्वपूर्ण है। हालाँकि, यदि NFA में एन स्थिति हैं, तो परिणामी DFAमें 2 तक हो सकते हैंn स्थिति, जो कभी-कभी बड़े NFA के लिए निर्माण को अव्यवहारिक बना देता है।

NFA ε-चालों के साथ

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

औपचारिक परिभाषा

NFA-ε को औपचारिक रूप से 5-टुपल द्वारा दर्शाया जाता है, , को मिलाकर

  • स्थिति का एक सीमित समुच्चय (गणित) (कंप्यूटर विज्ञान)
  • निविष्ट प्रतीकों का एक सीमित समुच्चय जिसे वर्णमाला (कंप्यूटर विज्ञान) कहा जाता है
  • एक परिवर्तन फ़ंक्शन (गणित)
  • एक प्रारंभिक (या परिमित-अवस्था मशीन#प्रारंभ स्थिति) स्थिति
  • स्थितियों का एक समुच्चय परिमित-अवस्था मशीन के रूप में प्रतिष्ठित#स्वीकार .28या अंतिम.29 स्थिति|स्वीकार (या अंतिम) स्थिति .

यहाँ, के पावर समुच्चय को दर्शाता है और खाली स्ट्रिंग को दर्शाता है.

ε-किसी स्थिति या स्थितियों के समूह का बंद होना

एक स्थिति के लिए , माना कि उन स्थितियों के समूह को निरूपित करें जिनसे पहुंच योग्य है परिवर्तन फलन में ε-परिवर्तन का अनुसरण करके , अर्थात।, यदि स्थितियों का कोई क्रम है ऐसा है कि

  • ,
  • प्रत्येक के लिए , और
  • .

इसे एप्सिलॉन क्लोजर (ε-क्लोजर भी) के रूप में जाना जाता है .

एक समुच्चय का ε-क्लोजर NFA के स्थितियों की संख्या को किसी भी स्थिति से पहुंच योग्य स्थितियों के समूह के रूप में परिभाषित किया गया है निम्नलिखित ε-परिवर्तन। औपचारिक रूप से, के लिए , परिभाषित करना .

विस्तारित परिवर्तन फ़ंक्शन

ε-चालों के बिना NFA के समान, परिवर्तन फ़ंक्शन NFA-ε को स्ट्रिंग्स तक बढ़ाया जा सकता है। अनौपचारिक रूप से, उन सभी अवस्थाओं के समुच्चय को दर्शाता है जिन तक ऑटोमेटन स्थिति में शुरू होने पर पहुंच सकता है और स्ट्रिंग को पढ़ना कार्यक्रम निम्नानुसार पुनरावर्ती रूप से परिभाषित किया जा सकता है।

  • , प्रत्येक स्थिति के लिए और कहाँ एप्सिलॉन बंद होने को दर्शाता है;
अनौपचारिक रूप से: खाली स्ट्रिंग को पढ़ने से ऑटोमेटन स्थिति से बाहर हो सकता है ईपीएसलॉन के बंद होने की किसी भी स्थिति के लिए
  • प्रत्येक स्थिति के लिए प्रत्येक स्ट्रिंग और प्रत्येक प्रतीक
अनौपचारिक रूप से: स्ट्रिंग पढ़ना ऑटोमेटन को स्थिति से बाहर चला सकता है किसी भी स्थिति के लिए पुनरावर्ती गणना समुच्चय में ; उसके बाद, प्रतीक को पढ़ना इसे चला सकते हैं ईपीएसलॉन बंद करने में किसी भी स्थिति के लिए कहा जाता है कि ऑटोमेटन एक स्ट्रिंग को स्वीकार करता है यदि
अर्थात यदि पढ़ रहे हैं ऑटोमेटन को उसकी आरंभिक स्थिति से चला सकता है कुछ स्वीकार करने वाले स्थिति में [4]: 25 

उदाहरण

एम के लिए स्थिति आरेख

माना कि एक बाइनरी वर्णमाला के साथ एक NFA-ε हो, जो यह निर्धारित करता है कि निविष्ट में 0 की सम संख्या है या 1 की सम संख्या है। ध्यान दें कि 0 घटनाएँ भी घटनाओं की एक सम संख्या है।

औपचारिक संकेतन में, चलो

कहाँ परिवर्तन संबंध इस स्थिति परिवर्तन तालिका द्वारा परिभाषित किया जा सकता है:

Input
State
0 1 ε
S0 {} {} {S1, S3}
S1 {S2} {S1} {}
S2 {S1} {S2} {}
S3 {S3} {S4} {}
S4 {S4} {S3} {}

इसे दो नियतात्मक परिमित स्वचालित यंत्रों के मिलन के रूप में देखा जा सकता है: एक स्थितियों के साथ और दूसरा स्थितियों के साथ . की भाषा इस नियमित अभिव्यक्ति द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है . हम परिभाषित करते हैं ε-चालों का उपयोग करना लेकिन ε-चालों का उपयोग किए बिना परिभाषित किया जा सकता है।

NFA के समतुल्य

यह दिखाने के लिए कि NFA-ε NFA के बराबर है, पहले ध्यान दें कि NFA NFA-ε का एक विशेष मामला है, इसलिए यह दिखाना बाकी है कि प्रत्येक NFA-ε के लिए, एक समकक्ष NFAउपस्थित है।

एप्सिलॉन चालों के साथ एक NFA दिया गया o show NFA-ε is equivalent to NFA, first note that NFA is a speciaase of NFA-ε, so it remains to show for every NFफ़ंक्शन, there exists an equivalent NFA.

Given an NFA with epsilon moves  define an NFA

where NFA को परिभाषित करें कहाँ

और

प्रत्येक स्थिति के लिए और प्रत्येक प्रतीक विस्तारित परिवर्तन फलन का उपयोग करना ऊपर परिभाषित.

और और के परिवर्तन कार्यों में अंतर करना होगा अर्थात. और स्ट्रिंग्स में उनका विस् तार, और क्रमशः निर्मारा, कोई ε-परिवर्तन नहीं है।

कोई साबित कर सकता है प्रत्येक स्ट्रिंग के लिए , की लंबाई पर गणितीय प्रेरण द्वारा

इसके आधार पर यह दिखा सकता है यदि और केवल यदि, प्रत्येक स्ट्रिंग के लिए है

  • यदि यह की परिभाषा से अनुसरण करता है
  • अन्यथा माना  कि साथ और :से और अपने पास
    हमें अभी भी दिशा दिखाना है।
  • यदि स्थिति में सम्मिलित है तब जिसमें वही स्थिति सम्मिलित है, जो में निहित है .
  • यदि और में सम्मिलित है तब में स्थिति अर्थात. भी सम्मिलित है
  • यदि और में सम्मिलित है तब स्थिति in [clarify] में होना चाहिए [4]: 26–27 

चूंकि NFA DFA के बराबर है, NFA-ε भी DFA के बराबर है।

बंद गुण

कुछ दिए गए NFA की भाषाओं के मिलन को स्वीकार करते हुए NFA की रचना की गई N(s) और N(t). भाषा संघ में एक निविष्ट स्ट्रिंग w के लिए, रचित ऑटोमेटन q से एक उपयुक्त सबऑटोमेटन की प्रारंभ स्थिति (बाएं रंगीन सर्कल) में ε-परिवर्तन का अनुसरण करता है - N(s) या N(t) - जो, w का अनुसरण करके, एक स्वीकार्य स्थिति (दाएं रंग का वृत्त) तक पहुंच सकता है; वहां से, अवस्था f तक दूसरे ε-परिवर्तन द्वारा पहुंचा जा सकता है। ε-परिवर्तनों के कारण, संकलित NFA उचित रूप से गैर-नियतात्मक है, भले ही दोनों हों N(s) और N(t) DFAथे; इसके विपरीत, संघ भाषा (यहां तक ​​कि दो डीएफए) के लिए DFAका निर्माण करना अधिक जटिल है।

NFA द्वारा स्वीकृत भाषाओं का समुच्चय निम्नलिखित परिचालनों के तहत बंद है। इन क्लोजर ऑपरेशंस का उपयोग थॉम्पसन के निर्माण कलन विधि में किया जाता है, जो किसी भी नियमित अभिव्यक्ति से NFA का निर्माण करता है। उनका उपयोग यह साबित करने के लिए भी किया जा सकता है कि NFA बिल्कुल नियमित भाषाओं को पहचानते हैं।

  • संघ (सीएफ. चित्र); अर्थात्, यदि भाषा L1 को कुछ NFA A1 द्वारा और L2 को कुछ A2 द्वारा स्वीकार किया जाता है, तो एक NFA Au का निर्माण किया जा सकता है जो भाषा L1∪L2 को स्वीकार करता है।
  • चौराहा; इसी तरह, A1 और A2 से एक NFA Ai का निर्माण किया जा सकता है जो L1∩L2 को स्वीकार करता है।
  • कड़ी
  • नकार; इसी तरह, A1 से एक NFA An का निर्माण किया जा सकता है जो Σ*\L1 को स्वीकार करता है।
  • क्लीन क्लोजर

चूंकि NFA ε-मूव्स (NFA-ε) के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन के बराबर हैं, उपरोक्त क्लोजर NFA-ε के क्लोजर गुणों का उपयोग करके सिद्ध किए जाते हैं।

गुण

मशीन फ़ंक्शन्दिष्ट प्रारंभिक अवस्था में शुरू होती है और अपने वर्णमाला (कंप्यूटर विज्ञान) से प्रतीकों की एक श्रृंखला में पढ़ती है। ऑटोमेटन वर्तमान स्थिति का उपयोग करके अगली स्थिति निर्धारित करने के लिए स्थिति परिवर्तन फलन Δ का उपयोग करता है, और प्रतीक बस पढ़ता है या खाली स्ट्रिंग। हालाँकि, NFA की अगली स्थिति न केवल वर्तमान निविष्ट घटना पर निर्भर करती है, बल्कि बाद की निविष्ट घटनाओं की मनमानी संख्या पर भी निर्भर करती है। जब तक ये आगामी घटनाएँ घटित नहीं हो जातीं तब तक यह निर्धारित करना संभव नहीं है कि मशीन किस स्थिति में है।[8] यदि, जब ऑटोमेटन ने पढ़ना समाप्त कर लिया है, यह स्वीकार करने की स्थिति में है, तो NFA को स्ट्रिंग को स्वीकार करने के लिए कहा जाता है, अन्यथा इसे स्ट्रिंग को अस्वीकार करने के लिए कहा जाता है।

NFA द्वारा स्वीकृत सभी स्ट्रिंग्स का समुच्चय वह भाषा है जिसे NFA स्वीकार करता है। यह भाषा एक नियमित भाषा है.

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

कार्यान्वयन

NFA लागू करने के कई तरीके हैं:

  • समतुल्य DFAमें कनवर्ट करें। कुछ मामलों में इससे स्थितियों की संख्या में तेजी से बढ़ोतरी होफ़ंक्शनती है।[9]
  • सभी स्थितियों की एक समुच्चय डेटा संरचना रखें जिसमें NFA वर्तमान में हो सकता है। एक निविष्ट प्रतीक की खपत पर, अगले स्थितियों का समुच्चय प्राप्त करने के लिए सभीउपस्थित स्थितियों पर लागू परिवर्तन फलन के परिणामों को समुच्चय करें; यदि ε-चालों की अनुमति है, तो ऐसी चाल (ε-बंद) द्वारा पहुंच योग्य सभी स्थितियों को सम्मिलित करें। प्रत्येक चरण के लिए अधिकतम s2 गणना की आवश्यकता होती है , जहां s NFA के स्थितियों की संख्या है। अंतिम निविष्ट प्रतीक की खपत पर, यदि वर्तमान स्थिति में से एक अंतिम स्थिति है, तो मशीन स्ट्रिंग को स्वीकार करती है। लंबाई n की एक स्ट्रिंग को समय O(ns2)[7]: 153 ,और स्थान O(s) में संसाधित किया जा सकता है)।
  • एकाधिक प्रतियाँ बनाएँ। प्रत्येक n-तरफ़ा निर्णय के लिए, NFA मशीन की n−1 प्रतियां बनाता है। प्रत्येक एक अलग स्थिति में प्रवेश करेगा। यदि, अंतिम निविष्ट प्रतीक का उपभोग करने पर, NFA की कम से कम एक प्रति स्वीकार करने की स्थिति में है, तो NFA स्वीकार करेगा। (इसके लिए भी, NFA स्थितियों की संख्या के संबंध में रैखिक भंडारण की आवश्यकता होती है, क्योंकि प्रत्येक NFA स्थिति के लिए एक मशीन हो सकती है।)
  • NFA की परिवर्तन संरचना के माध्यम से टोकन को स्पष्ट रूप से प्रचारित करें और जब भी कोई टोकन अंतिम स्थिति में पहुंचे तो उसका मिलान करें। यह कभी-कभी उपयोगी होता है जब NFA को उन घटनाओं के बारे में अतिरिक्त संदर्भ को एन्कोड करना चाहिए जिन्होंने परिवर्तन को ट्रिगर किया। (ऐसे कार्यान्वयन के लिए जो ऑब्जेक्ट संदर्भों पर नज़र रखने के लिए इस तकनीक का उपयोग करता है, ट्रेसमैच पर एक नज़र डालें।)[10]
  • NFA दिए जाने पर यह जांचने के लिए पीएसपीएसीई-पूर्ण है कि क्या यह सार्वभौमिक है, अर्थात, यदि कोई स्ट्रिंग है जिसे यह स्वीकार नहीं करता है।[11] समावेशन समस्या के बारे में भी यही सच है, अर्थात, दो NFA दिए जाने पर, एक की भाषा दूसरे की भाषा का उप-समूचय है।

NFA का अनुप्रयोग

NFA और DFAइस मायने में समतुल्य हैं कि यदि कोई भाषा NFA द्वारा स्वीकृत है, तो इसे DFAद्वारा भी स्वीकृत है और इसके विपरीत भी। ऐसी समतुल्यता की स्थापना महत्वपूर्ण एवं उपयोगी है। यह उपयोगी है क्योंकि किसी दी गई भाषा को पहचानने के लिए NFA का निर्माण करना कभी-कभी उस भाषा के लिए DFAके निर्माण की तुलना में बहुत आसान होता है। यह महत्वपूर्ण है क्योंकि गणना के सिद्धांत में कई महत्वपूर्ण गुणों को समुच्चय करने के लिए आवश्यक गणितीय कार्य की जटिलता को कम करने के लिए NFA का उपयोग किया जा सकता है। उदाहरण के लिए, DFAकी तुलना में NFA का उपयोग करके नियमित भाषाओं के क्लोजर गुणों को साबित करना बहुत आसान है।

यह भी देखें

टिप्पणियाँ

  1. Martin, John (2010). भाषाओं का परिचय और संगणना का सिद्धांत. McGraw Hill. p. 108. ISBN 978-0071289429.
  2. Rabin, M. O.; Scott, D. (April 1959). "परिमित ऑटोमेटा और उनकी निर्णय समस्याएं". IBM Journal of Research and Development. 3 (2): 114–125. doi:10.1147/rd.32.0114.
  3. A choice sequence may lead into a "dead end" where no transition is applicable for the current input symbol; in this case it is considered unsuccessful.
  4. 4.0 4.1 4.2 4.3 4.4 John E. Hopcroft and Jeffrey D. Ullman (1979). ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय. Reading/MA: Addison-Wesley. ISBN 0-201-02988-X.
  5. 5.0 5.1 Alfred V. Aho and John E. Hopcroft and Jeffrey D. Ullman (1974). कंप्यूटर एल्गोरिदम का डिज़ाइन और विश्लेषण. Reading/MA: Addison-Wesley. ISBN 0-201-00029-6.
  6. 6.0 6.1 Michael Sipser (1997). संगणना के सिद्धांत का परिचय. Boston/MA: PWS Publishing Co. ISBN 0-534-94728-X.
  7. 7.0 7.1 7.2 John E. Hopcroft and Rajeev Motwani and Jeffrey D. Ullman (2003). ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय (PDF). Upper Saddle River/NJ: Addison Wesley. ISBN 0-201-44124-1.
  8. FOLDOC Free Online Dictionary of Computing, Finite-State Machine
  9. Chris Calabro (February 27, 2005). "एनएफए से डीएफए ब्लोअप" (PDF). cseweb.ucsd.edu. Retrieved 6 March 2023.
  10. Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2005. Adding trace matching with free variables to AspectJ Archived 2009-09-18 at the Wayback Machine. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (San Diego, CA, USA, October 16–20, 2005). OOPSLA '05. ACM, New York, NY, 345-364.
  11. Historically shown in: Meyer, A. R.; Stockmeyer, L. J. (1972-10-25). "The equivalence problem for regular expressions with squaring requires exponential space". Proceedings of the 13th Annual Symposium on Switching and Automata Theory (SWAT). USA: IEEE Computer Society: 125–129. doi:10.1109/SWAT.1972.29. For a modern presentation, see [1]


संदर्भ

  • M. O. Rabin and D. Scott, "Finite Automata and their Decision Problems", IBM Journal of Research and Development, 3:2 (1959) pp. 115–125.
  • Michael Sipser, Introduction to the Theory of Computation. PWS, Boston. 1997. ISBN 0-534-94728-X. (see section 1.2: Nondeterminism, pp. 47–63.)
  • John E. Hopcroft and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, Addison-Wesley Publishing, Reading Massachusetts, 1979. ISBN 0-201-02988-X. (See chapter 2.)