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

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


[[सबसेट निर्माण एल्गोरिदम|उप-समूचय निर्माण कलन विधि]] का उपयोग करके, प्रत्येक NFA को समकक्ष DFAमें अनुवादित किया जा सकता है अर्थात, DFAसमान औपचारिक भाषा को मान्यता देता है।<ref>{{cite book |title=भाषाओं का परिचय और संगणना का सिद्धांत|last1=Martin |first1=John |year=2010 |page=108 |publisher=McGraw Hill |isbn= 978-0071289429}}</ref>DFAकी तरह, NFA केवल [[नियमित भाषा]]ओं को पहचानते हैं।
[[सबसेट निर्माण एल्गोरिदम|उप-समूचय निर्माण कलन विधि]] का उपयोग करके, प्रत्येक NFA को समकक्ष DFA में अनुवादित किया जा सकता है अर्थात, DFA समान औपचारिक भाषा को मान्यता देता है।<ref>{{cite book |title=भाषाओं का परिचय और संगणना का सिद्धांत|last1=Martin |first1=John |year=2010 |page=108 |publisher=McGraw Hill |isbn= 978-0071289429}}</ref>DFA की तरह, NFA केवल [[नियमित भाषा]]ओं को पहचानते हैं।
   
   
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 की प्रारम्भ 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 के अन्य ज्ञात विशेष मामले असंदिग्ध परिमित ऑटोमेटा (यूएफए) और स्व-सत्यापन परिमित ऑटोमेटा (एसवीएफए) हैं।
NFA को कई प्रयोगो से सामान्यीकृत किया गया है, उदाहरण के लिए, ε-मूव्स, परिमित-राज्य ट्रांसड्यूसर, पुशडाउन ऑटोमेटा, वैकल्पिक ऑटोमेटा, ω-ऑटोमेटा और संभाव्य ऑटोमेटा के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटा। DFA के अलावा, NFA के अन्य ज्ञात विशेष सन्दर्भ असंदिग्ध परिमित ऑटोमेटा (यूएफए) और स्व-सत्यापन परिमित ऑटोमेटा (एसवीएफए) हैं।


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


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}}
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}}


दूसरे तरीके में, 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}}
दूसरे तरीके में, 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 25: Line 25:
* स्थितियों का एक सीमित [[सेट (गणित)|समुच्चय (गणित)]] <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 37: Line 37:
*# <math>r_{i+1} \in \delta (r_i, a_{i+1})</math>, के लिए <math>i = 0, \ldots, n-1</math>
*# <math>r_{i+1} \in \delta (r_i, a_{i+1})</math>, के लिए <math>i = 0, \ldots, n-1</math>
*# <math>r_n \in F</math>.
*# <math>r_n \in F</math>.
:शब्दों में, पहली शर्त कहती है कि मशीन प्रारंभ अवस्था <math>q_0</math> में शुरू होती है . दूसरी शर्त कहती है कि स्ट्रिंग <math>w</math> का प्रत्येक अक्षर दिया गया है , मशीन ट्रांज़िशन फ़ंक्शन <math>\delta</math> के अनुसार एक स्थिति से दूसरे स्थिति में स्थानांतरित होगी . आखिरी शर्त कहती है कि मशीन स्वीकार करती है <math>w</math> यदि अंतिम निविष्ट <math>w</math> मशीन को स्वीकार करने वाले स्थितियों में से एक में रुकने का कारण बनता है। के क्रम में <math>w</math> द्वारा स्वीकार किया जाना <math>M</math>, यह आवश्यक नहीं है कि प्रत्येक स्थिति अनुक्रम एक स्वीकार्य स्थिति में समाप्त हो, यदि कोई ऐसा करता है तो यह पर्याप्त है। अन्यथा, अर्थात यदि इसे प्राप्त करना बिल्कुल भी असंभव है <math>q_0</math> से एक स्थिति तक <math>F</math> अनुगमन करते हुए <math>w</math>, ऐसा कहा जाता है कि ऑटोमेटन स्ट्रिंग को अस्वीकार कर देता है। तार का समुच्चय <math>M</math> एक्सेप्ट्स द्वारा स्वीकृत औपचारिक भाषा है <math>M</math> तथा इस भाषा को निरूपित किया जाता है <math>L(M)</math>.<ref name="Aho.Hopcroft.Ullman.1974"/>{{rp|320}}<!---using "deduction" relation "\vdash"---><ref name="Sipser.1997"/>{{rp|54}}
:शब्दों में, पहली अनुबंध कहती है कि मशीन प्रारंभ अवस्था <math>q_0</math> में प्रारम्भ होती है . दूसरी अनुबंध कहती है कि स्ट्रिंग <math>w</math> का प्रत्येक अक्षर दिया गया है , मशीन ट्रांज़िशन फलन <math>\delta</math> के अनुसार एक स्थिति से दूसरे स्थिति में स्थानांतरित होगी . आखिरी अनुबंध कहती है कि मशीन स्वीकार करती है <math>w</math> यदि अंतिम निविष्ट <math>w</math> मशीन को स्वीकार करने वाले स्थितियों में से एक में रुकने का कारण बनता है। के क्रम में <math>w</math> द्वारा स्वीकार किया जाना <math>M</math>, यह आवश्यक नहीं है कि प्रत्येक स्थिति अनुक्रम एक स्वीकार्य स्थिति में समाप्त हो, यदि कोई ऐसा करता है तो यह पर्याप्त है। अन्यथा, अर्थात यदि इसे प्राप्त करना पूर्णतः भी असंभव है <math>q_0</math> से एक स्थिति तक <math>F</math> अनुगमन करते हुए <math>w</math>, ऐसा कहा जाता है कि ऑटोमेटन स्ट्रिंग को अस्वीकार कर देता है। तार का समुच्चय <math>M</math> एक्सेप्ट्स द्वारा स्वीकृत औपचारिक भाषा है <math>M</math> तथा इस भाषा को निरूपित किया जाता है <math>L(M)</math>.<ref name="Aho.Hopcroft.Ullman.1974"/>{{rp|320}}<!---using "deduction" relation "\vdash"---><ref name="Sipser.1997"/>{{rp|54}}


*वैकल्पिक रूप से, <math>w</math> स्वीकार किया जाता है यदि <math>\delta^*(q_0, w) \cap F \not = \emptyset</math>, कहाँ <math>\delta^*: Q \times \Sigma^* \rightarrow \mathcal{P}(Q)</math> [[रिकर्सन (कंप्यूटर विज्ञान)]] को इसके द्वारा परिभाषित किया गया है:
*वैकल्पिक रूप से, <math>w</math> स्वीकार किया जाता है यदि <math>\delta^*(q_0, w) \cap F \not = \emptyset</math>, जहाँ <math>\delta^*: Q \times \Sigma^* \rightarrow \mathcal{P}(Q)</math> [[रिकर्सन (कंप्यूटर विज्ञान)]] को इसके द्वारा परिभाषित किया गया है:
*# <math>\delta^*(r, \epsilon) = \{r\}</math> कहाँ <math>\epsilon</math> खाली स्ट्रिंग है, और
*# <math>\delta^*(r, \epsilon) = \{r\}</math> जहाँ <math>\epsilon</math>रिक्तस्ट्रिंग है, और
*# <math>\delta^*(r, xa)= \bigcup_{r' \in \delta^*(r, x)} \delta(r', a)</math> सभी के लिए <math>x \in \Sigma^*, a \in \Sigma</math>.
*# <math>\delta^*(r, xa)= \bigcup_{r' \in \delta^*(r, x)} \delta(r', a)</math> सभी के लिए <math>x \in \Sigma^*, a \in \Sigma</math>.
:शब्दों में, <math>\delta^*(r, x)</math> स्थिति से पहुंच योग्य सभी स्थितियों का समूह है <math>r</math> स्ट्रिंग का उपभोग करके <math>x</math>. डोर <math>w</math> यदि कोई स्वीकार करने वाला स्थिति है तो स्वीकार किया जाता है <math>F</math> आरंभिक स्थिति से पहुंचा जा सकता है <math>q_0</math> सेवन करने से <math>w</math>.<ref name="Hopcroft.Ullman.1979"/>{{rp|21}}<ref name="Hopcroft.Motwani.Ullman.2003"/>{{rp|59}}
:शब्दों में, <math>\delta^*(r, x)</math> स्थिति से पहुंच योग्य सभी स्थितियों का समूह है <math>r</math> स्ट्रिंग का उपयोग करके <math>x</math>. डोर <math>w</math> यदि कोई स्वीकार करने वाला स्थिति है तो स्वीकार किया जाता है <math>F</math> आरंभिक स्थिति से पहुंचा जा सकता है <math>q_0</math> सेवन करने से <math>w</math>.<ref name="Hopcroft.Ullman.1979"/>{{rp|21}}<ref name="Hopcroft.Motwani.Ullman.2003"/>{{rp|59}}


===प्रारंभिक अवस्था===
===प्रारंभिक अवस्था===
Line 70: Line 70:
|}
|}
समुच्चय के बाद से <math>\delta(p,1)</math> इसमें एक से अधिक स्थिति सम्मिलित हैं, <math>M</math> गैर नियतिवादी है.
समुच्चय के बाद से <math>\delta(p,1)</math> इसमें एक से अधिक स्थिति सम्मिलित हैं, <math>M</math> गैर नियतिवादी है.
की भाषा <math>M</math> रेगुलर एक्सप्रेशन द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है <code>(0|1)*1</code>.
की भाषा <math>M</math> नियमित अभिव्यक्ति <code>0|1)*1</code> द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है .


निविष्ट स्ट्रिंग 1011 के लिए सभी संभावित स्थिति अनुक्रम निचले चित्र में दिखाए गए हैं।
निविष्ट स्ट्रिंग 1011 के लिए सभी संभावित स्थिति अनुक्रम निचले चित्र में दिखाए गए हैं।
Line 83: Line 83:
|State sequence 3: || ''p'' ||  || ''p'' ||  || ''p'' ||  || ''p'' ||  || ''q''
|State sequence 3: || ''p'' ||  || ''p'' ||  || ''p'' ||  || ''p'' ||  || ''q''
|}--->
|}--->
स्ट्रिंग द्वारा स्वीकार किया जाता है <math>M</math> चूँकि एक अवस्था अनुक्रम उपरोक्त परिभाषा को संतुष्ट करता है; इससे कोई फर्क नहीं पड़ता कि अन्य अनुक्रम ऐसा करने में विफल रहते हैं।
स्ट्रिंग द्वारा स्वीकार किया जाता है <math>M</math> चूँकि एक अवस्था अनुक्रम उपरोक्त परिभाषा को संतुष्ट करता है; इससे कोई फर्क नहीं पड़ता कि अन्य अनुक्रम ऐसा करने में विफल रहते हैं। चित्र की व्याख्या दो प्रयोगो से की जा सकती है:
चित्र की व्याख्या दो प्रयोगो से की जा सकती है:
* उपरोक्त "लकी-रन" स्पष्टीकरण के संदर्भ में, चित्र में प्रत्येक पथ विकल्पों के अनुक्रम को दर्शाता है <math>M</math>.
* #अनौपचारिक परिचय लकी-रन स्पष्टीकरण के संदर्भ में, चित्र में प्रत्येक पथ विकल्पों के अनुक्रम को दर्शाता है <math>M</math>.
* क्लोनिंग स्पष्टीकरण के संदर्भ में, प्रत्येक ऊर्ध्वाधर कॉलम सभी क्लोन <math>M</math> दिखाता है किसी दिए गए समय बिंदु पर, एक नोड से निकलने वाले कई तीर क्लोनिंग का संकेत देते हैं, एक नोड जिसमें तीर नहीं निकल रहे हैं, एक क्लोन की घातक का संकेत देता है।
* क्लोनिंग स्पष्टीकरण के संदर्भ में, प्रत्येक ऊर्ध्वाधर कॉलम सभी क्लोन दिखाता है <math>M</math> किसी दिए गए समय बिंदु पर, एक नोड से निकलने वाले कई तीर क्लोनिंग का संकेत देते हैं, एक नोड जिसमें तीर नहीं निकल रहे हैं, एक क्लोन की मृत्यु का संकेत देता है।
एक ही चित्र को दो प्रयोगो से पढ़ने की व्यवहार्यता उपरोक्त दोनों स्पष्टीकरणों की समानता को भी इंगित करती है।
एक ही चित्र को दो प्रयोगो से पढ़ने की व्यवहार्यता उपरोक्त दोनों स्पष्टीकरणों की समानता को भी इंगित करती है।
* #मान्य भाषा की औपचारिक परिभाषाओं में से प्रथम को ध्यान में रखते हुए 1011 को इसे पढ़ने के समय से ही स्वीकार किया जाता है <math>M</math> स्थिति अनुक्रम को पार कर सकता है <math>\langle r_0,r_1,r_2,r_3,r_4 \rangle = \langle p, p, p, p, q \rangle</math>, जो शर्तें 1 से 3 को संतुष्ट करता है।
* उपरोक्त औपचारिक परिभाषाओं में से पहली को ध्यान में रखते हुए, "1011" को इसे पढ़ते समय से स्वीकार किया जाता है <math>M</math> स्थिति अनुक्रम <math>\langle r_0,r_1,r_2,r_3,r_4 \rangle = \langle p, p, p, p, q \rangle</math> को पार कर सकता है , जो अनुबंध 1 से 3 को संतुष्ट करता है।
* दूसरी औपचारिक परिभाषा के संबंध में, नीचे से ऊपर की गणना यह दर्शाती है <math>\delta^*(p,\epsilon) = \{ p \}</math>, इस तरह <math>\delta^*(p,1) = \delta(p,1) = \{ p,q \}</math>, इस तरह <math>\delta^*(p,10) = \delta(p,0) \cup \delta(q,0) = \{ p \} \cup \{\}</math>, इस तरह <math>\delta^*(p,101) = \delta(p,1) = \{ p,q \}</math>, और इसलिए <math>\delta^*(p,1011) = \delta(p,1) \cup \delta(q,1) = \{ p,q \} \cup \{\}</math>; चूँकि वह समुच्चय असंयुक्त नहीं है <math>\{ q \}</math>, स्ट्रिंग 1011 स्वीकार की जाती है।
* दूसरी औपचारिक परिभाषा के संबंध में, नीचे से ऊपर की गणना यह दर्शाती है <math>\delta^*(p,\epsilon) = \{ p \}</math>, इस तरह <math>\delta^*(p,1) = \delta(p,1) = \{ p,q \}</math>, इस तरह <math>\delta^*(p,10) = \delta(p,0) \cup \delta(q,0) = \{ p \} \cup \{\}</math>, इस तरह <math>\delta^*(p,101) = \delta(p,1) = \{ p,q \}</math>, और इसलिए <math>\delta^*(p,1011) = \delta(p,1) \cup \delta(q,1) = \{ p,q \} \cup \{\}</math>; चूँकि वह समुच्चय असंयुक्त नहीं है <math>\{ q \}</math>, स्ट्रिंग 1011 स्वीकार की जाती है।


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


==DFAके समतुल्य==
==DFA के समतुल्य==


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


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


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


==NFA ε-चालों के साथ==
==NFA ε-मूव्स के साथ==


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


===औपचारिक परिभाषा===
===औपचारिक परिभाषा===
NFA-ε को औपचारिक रूप से 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> परिमित-अवस्था मशीन के रूप में <math>F \subseteq Q</math>.


यहाँ, <math>\mathcal{P}(Q)</math> के पावर समुच्चय को दर्शाता है <math>Q</math> और <math>\epsilon</math> खाली स्ट्रिंग को दर्शाता है.
यहाँ, <math>\mathcal{P}(Q)</math> के पावर समुच्चय को दर्शाता है <math>Q</math> और <math>\epsilon</math> रिक्त स्ट्रिंग को दर्शाता है.


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


एक स्थिति के लिए <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>,
* <math>q_{i+1} \in \delta(q_i, \varepsilon)</math> प्रत्येक के लिए <math>1 \le i < k</math>, और
* <math>q_{i+1} \in \delta(q_i, \varepsilon)</math> प्रत्येक के लिए <math>1 \le i < k</math>, और
* <math>q_k = p</math>.
* <math>q_k = p</math>.


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


===विस्तारित परिवर्तन फ़ंक्शन===
===विस्तारित परिवर्तन फलन===
ε-चालों के बिना NFA के समान, परिवर्तन फ़ंक्शन <math>\delta</math> NFA-ε को स्ट्रिंग्स तक बढ़ाया जा सकता है।अनौपचारिक रूप से, <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> निम्नानुसार पुनरावर्ती रूप से परिभाषित किया जा सकता है।
ε-मूव्स के रहित NFA के समान, परिवर्तन फलन <math>\delta</math> NFA-ε को स्ट्रिंग्स तक बढ़ाया जा सकता है। अनौपचारिक रूप से, <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,\varepsilon) = E(q)</math>, प्रत्येक स्थिति के लिए <math>q \in Q ,</math> और जहाँ <math>E</math> एप्सिलॉन बंद होने को दर्शाता है;
* <math>\delta^*(q,\varepsilon) = E(q)</math>, प्रत्येक स्थिति के लिए <math>q \in Q ,</math> और जहाँ <math>E</math> एप्सिलॉन संवरण होने को दर्शाता है;
:अनौपचारिक रूप से: खाली स्ट्रिंग को पढ़ने से ऑटोमेटन स्थिति <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>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>\delta^*(q_0,w) \cap F \neq \emptyset ,</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>w</math> ऑटोमेटन को उसकी आरंभिक स्थिति <math>q_0</math> से कुछ स्वीकार करने वाले स्थिति <math>F </math> में चला सकता है <ref name="Hopcroft.Ullman.1979" />{{rp|25}}


===उदाहरण===
===उदाहरण===
[[Image:NFAexample.svg|thumb|250px|एम के लिए [[राज्य आरेख|स्थिति आरेख]]]]माना कि <math>M</math> एक बाइनरी वर्णमाला के साथ एक NFA-ε हो, जो यह निर्धारित करता है कि निविष्ट में 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 173: Line 170:
| {}
| {}
|}
|}
<math>M</math> इसे दो नियतात्मक परिमित स्वचालित यंत्रों के मिलन के रूप में देखा जा सकता है: एक स्थितियों के साथ <math>\{S_1, S_2\}</math> और दूसरा स्थितियों के साथ <math>\{S_3, S_4\}</math>.<math>M</math> की भाषा इस नियमित अभिव्यक्ति <math>(1^{*}01^{*}0)^{*} \cup (0^{*}10^{*}1)^{*}</math> द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है .हम ε-चालों का प्रयोग करके का <math>M</math> को परिभाषित करते हैं  लेकिन ε-चालों का उपयोग किए बिना <math>M</math> को परिभाषित किया जा सकता है।
<math>M</math> इसे दो DFA एक स्थितियों के साथ <math>\{S_1, S_2\}</math> और दूसरा स्थितियों के साथ <math>\{S_3, S_4\}</math> के मिलन के रूप में देखा जा सकता है। <math>M</math> की भाषा इस नियमित अभिव्यक्ति <math>(1^{*}01^{*}0)^{*} \cup (0^{*}10^{*}1)^{*}</math> द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है। हम ε-मूव्स का प्रयोग करके <math>M</math> को परिभाषित करते हैं  लेकिन ε-मूव्स का उपयोग किए रहित <math>M</math> को परिभाषित किया जा सकता है।


===NFA के समतुल्य===
===NFA के समतुल्य===


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


एप्सिलॉन चालों के साथ एक 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> के साथ 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>
और
और
Line 191: Line 183:
<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^*(q_0,w) \cap F \neq \{\},</math> तार, <math>\delta</math> और <math>\delta'^* ,</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) = \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>w \in \Sigma^* </math> <math>\delta^*(q_0,w) \cap F \neq \{\}</math> है
Line 200: Line 192:
:*यदि <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|स्थिति 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 के बराबर है।
चूंकि NFA DFA के बराबर है, NFA-ε भी DFA के बराबर है।


==बंद गुण==
==संवरण गुण==
[[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 बिल्कुल नियमित भाषाओं को पहचानते हैं।
[[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 पूर्णतः नियमित भाषाओं को पहचानते हैं।


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


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


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


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


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


==कार्यान्वयन==
==कार्यान्वयन==
NFA लागू करने के कई तरीके हैं:
NFA लागू करने के कई तरीके हैं:
* समतुल्य 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>
* समतुल्य 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>
* सभी स्थितियों की एक समुच्चय डेटा संरचना रखें जिसमें NFA वर्तमान में हो सकता है। एक निविष्ट प्रतीक की खपत पर, अगले स्थितियों का समुच्चय प्राप्त करने के लिए सभीउपस्थित स्थितियों पर लागू परिवर्तन फलन के परिणामों को समुच्चय करें; यदि ε-चालों की अनुमति है, तो ऐसी चाल (ε-बंद) द्वारा पहुंच योग्य सभी स्थितियों को सम्मिलित करें। प्रत्येक चरण के लिए अधिकतम s<sup>2</sup> गणना की आवश्यकता होती है , जहां s NFA के स्थितियों की संख्या है। अंतिम निविष्ट प्रतीक की खपत पर, यदि वर्तमान स्थिति में से एक अंतिम स्थिति है, तो मशीन स्ट्रिंग को स्वीकार करती है। लंबाई n की एक स्ट्रिंग को समय ''O''(''ns''<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 प्रतियां बनाता है। प्रत्येक एक अलग स्थिति में प्रवेश करेगा। यदि, अंतिम निविष्ट प्रतीक का उपभोग करने पर, NFA की कम से कम एक प्रति स्वीकार करने की स्थिति में है, तो NFA स्वीकार करेगा। (इसके लिए भी, NFA स्थितियों की संख्या के संबंध में रैखिक भंडारण की आवश्यकता होती है, क्योंकि प्रत्येक NFA स्थिति के लिए एक मशीन हो सकती है।)
* एकाधिक प्रतियाँ बनाएँ। प्रत्येक n-तरफ़ा निर्णय के लिए, NFA मशीन की n−1 प्रतियां बनाता है। प्रत्येक एक अलग स्थिति में प्रवेश करेगा। यदि, अंतिम निविष्ट प्रतीक का उपयोग करने पर, NFA की कम से कम एक प्रति स्वीकार करने की स्थिति में है, तो NFA स्वीकार करेगा। (इसके लिए भी, 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>
* 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 दिए जाने पर यह जांचने के लिए पीएसपीएसीई-पूर्ण है कि क्या यह सार्वभौमिक है, अर्थात, यदि कोई स्ट्रिंग है जिसे यह स्वीकार नहीं करता है।<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 का अनुप्रयोग==
NFA और DFAइस मायने में समतुल्य हैं कि यदि कोई भाषा NFA द्वारा स्वीकृत है, तो इसे DFAद्वारा भी स्वीकृत है और इसके विपरीत भी। ऐसी समतुल्यता की स्थापना महत्वपूर्ण एवं उपयोगी है। यह उपयोगी है क्योंकि किसी दी गई भाषा को पहचानने के लिए NFA का निर्माण करना कभी-कभी उस भाषा के लिए DFAके निर्माण की तुलना में बहुत आसान होता है। यह महत्वपूर्ण है क्योंकि गणना के सिद्धांत में कई महत्वपूर्ण गुणों को समुच्चय करने के लिए आवश्यक गणितीय कार्य की जटिलता को कम करने के लिए NFA का उपयोग किया जा सकता है। उदाहरण के लिए, DFAकी तुलना में NFA का उपयोग करके नियमित भाषाओं के क्लोजर गुणों को साबित करना बहुत आसान है।
NFA और DFA इस मायने में समतुल्य हैं कि यदि कोई भाषा NFA द्वारा स्वीकृत है, तो इसे DFA द्वारा भी स्वीकृत है और इसके विपरीत भी। ऐसी समतुल्यता की स्थापना महत्वपूर्ण एवं उपयोगी है। यह उपयोगी है क्योंकि किसी दी गई भाषा को पहचानने के लिए NFA का निर्माण करना कभी-कभी उस भाषा के लिए DFA के निर्माण की तुलना में बहुत आसान होता है। यह महत्वपूर्ण है क्योंकि गणना के सिद्धांत में कई महत्वपूर्ण गुणों को समुच्चय करने के लिए आवश्यक गणितीय कार्य की जटिलता को कम करने के लिए NFA का उपयोग किया जा सकता है। उदाहरण के लिए, DFA की तुलना में NFA का उपयोग करके नियमित भाषाओं के संवरण गुणों को सिद्ध करना बहुत आसान है।


==यह भी देखें==
==यह भी देखें==
*नियतात्मक परिमित स्वचालन
*डेटर्मिनिस्टिक परिमित स्वचालन
* दोतरफा गैर-नियतात्मक परिमित ऑटोमेटन
* दोतरफा गैर-डेटर्मिनिस्टिक परिमित ऑटोमेटन
* पुशडाउन ऑटोमेटन
* पुशडाउन ऑटोमेटन
* [[नॉनडेटर्मिनिस्टिक ट्यूरिंग मशीन]]
* [[नॉनडेटर्मिनिस्टिक ट्यूरिंग मशीन]]

Revision as of 14:08, 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" का उपभोग करने के बाद q तक पहुंचा जा सकता है, इसका मतलब यह नहीं है कि इनपुट "10" स्वीकार किया गया है; बल्कि, इसका मतलब है कि एक इनपुट स्ट्रिंग "1" स्वीकार की जाएगी।

DFA के समतुल्य

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

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

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

NFA ε-मूव्स के साथ

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

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

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

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

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

ε-संवरण किसी स्थिति या स्थितियों के समूह

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

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

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

एक समुच्चय का ε-संवरण 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} {}

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

NFA के समतुल्य

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

एप्सिलॉन मूव्स के साथ 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.)