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

From Vigyanwiki
 
(8 intermediate revisions by 4 users not shown)
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 अवस्थाएँ होती हैं।]][[ऑटोमेटा सिद्धांत]] में, एक परिमित-अवस्था मशीन को डेटर्मिनिस्टिक (निश्चयात्मक) परिमित ऑटोमेटन (स्वचालन) (डीएफए ) कहा जाता है, यदि
* इसका प्रत्येक परिवर्तन स्रोत स्थिति और निविष्ट प्रतीक द्वारा विशिष्ट रूप से निर्धारित होता है, और
* इसका प्रत्येक परिवर्तन स्रोत स्थिति और निविष्ट प्रतीक द्वारा विशिष्ट रूप से निर्धारित होता है, और
* प्रत्येक स्थिति परिवर्तन के लिए एक निविष्ट प्रतीक पढ़ना आवश्यक है।
* प्रत्येक स्थिति परिवर्तन के लिए एक निविष्ट प्रतीक पढ़ना आवश्यक है।
'<nowiki/>'''नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन' ('NFA')''', या '''<nowiki/>'नॉनडेटर्मिनिस्टिक परिमित-स्थिति मशीन'''' को इन प्रतिबंधों का पालन करने की आवश्यकता नहीं है। विशेष रूप से, प्रत्येक DFA (DFA ) एक NFA (NFA) भी है। कभी-कभी 'NFA' शब्द का प्रयोग एक संकीर्ण अर्थ में किया जाता है, जो एक NFA का संदर्भ देता है जो DFA नहीं है, लेकिन इस लेख में ऐसा नहीं है।
'<nowiki/>'''नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन' ('एनफए')''', या '''<nowiki/>'नॉनडेटर्मिनिस्टिक(अनिश्चयात्मक) परिमित-स्थिति मशीन'''' को इन प्रतिबंधों का पालन करने की आवश्यकता नहीं है। विशेष रूप से, प्रत्येक डीएफए एक एनफए भी है। कभी-कभी 'एनफए' शब्द का प्रयोग एक संकीर्ण अर्थ में किया जाता है, जो एक एनफए का संदर्भ देता है जो डीएफए नहीं है, लेकिन इस लेख में ऐसा नहीं है।


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


===ऑटोमेटन===
===ऑटोमेटन===
NFA को औपचारिक रूप से 5-[[ टपल ]] द्वारा दर्शाया जाता है,
एनफए को औपचारिक रूप से 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>.
Line 32: Line 31:


===स्वीकृत भाषा===
===स्वीकृत भाषा===
<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>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>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>
*# <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}}


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


==उदाहरण==
==उदाहरण==
{| style="float: right; border-spacing: 0;"
{| style="float: right; border-spacing: 0;"
|-
|-
| VALIGN=TOP | [[File:NFASimpleExample.svg|thumb|250px|The [[state diagram]] for ''M''. It is not deterministic since in state ''p'' reading a 1 can lead to ''p'' or to ''q''.]]
| VALIGN=TOP | [[File:NFASimpleExample.svg|thumb|250px|m के लिए स्थिति आरेख। यह नियतात्मक नहीं है क्योंकि स्थिति p में 1 पढ़ने से p या q हो सकता है।]]
| VALIGN=TOP | [[File:NFASimpleExample Runs10.gif|thumb|250px|All possible runs of ''M'' on input string "10".]]
| VALIGN=TOP | [[File:NFASimpleExample Runs10.gif|thumb|250px|इनपुट स्ट्रिंग "10" पर m के सभी संभावित रन।]]
|-
|-
| 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|इनपुट स्ट्रिंग "1011" पर m के सभी संभावित रन।आर्क लेबल: इनपुट प्रतीक, नोड लेबल: स्थिति, हरा: प्रारंभ स्थिति, लाल: स्वीकार करने वाली स्थिति।]]
|}
|}
निम्नलिखित ऑटोमेटन <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> को [[राज्य संक्रमण तालिका|स्थिति परिवर्तन तालिका]] द्वारा परिभाषित किया जा सकता है (ऊपरी बाएँ चित्र की तुलना करें):
Line 69: Line 68:
| <math>\emptyset</math>
| <math>\emptyset</math>
|}
|}
समुच्चय के बाद से <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> द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है .


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


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


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


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


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


==NFA ε-मूव्स के साथ==
==एनफए ε-मूव्स(स्थान-परिवर्तन) के साथ==


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


===औपचारिक परिभाषा===
===औपचारिक परिभाषा===
NFA-ε को औपचारिक रूप से 5-टुपल द्वारा दर्शाया जाता है, <math>(Q, \Sigma, \delta, q_0, F)</math>,  जिसमें सम्मिलित है
एनफए-ε को औपचारिक रूप से 5-टुपल द्वारा दर्शाया जाता है, <math>(Q, \Sigma, \delta, q_0, F)</math>,  जिसमें सम्मिलित है
* स्थिति का एक सीमित समुच्चय (गणित) <math>Q</math>
* स्थिति का एक सीमित समुच्चय (गणित) <math>Q</math>
* निविष्ट प्रतीकों का एक सीमित समुच्चय जिसे [[वर्णमाला (कंप्यूटर विज्ञान)|वर्णमाला]] कहा जाता है <math>\Sigma</math>
* निविष्ट प्रतीकों का एक सीमित समुच्चय जिसे [[वर्णमाला (कंप्यूटर विज्ञान)|वर्णमाला]] कहा जाता है <math>\Sigma</math>
Line 123: Line 122:
<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> एनफए के स्थितियों की संख्या को किसी भी स्थिति <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> निम्नानुसार पुनरावर्ती रूप से परिभाषित किया जा सकता है।
ε-मूव्स के रहित एनफए के समान, परिवर्तन फलन <math>\delta</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,\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> के संवरण होने की किसी भी स्थिति के लिए
Line 136: Line 135:


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


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


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


एप्सिलॉन मूव्स <math>M = (Q, \Sigma, \delta, q_0, F) ,</math> के साथ NFA को <math>M' = (Q, \Sigma, \delta', q_0, F') ,</math> परिभाषित जहाँ
एप्सिलॉन मूव्स <math>M = (Q, \Sigma, \delta, q_0, F) ,</math> के साथ एनफए को <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 192: Line 191:
:*यदि <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 के बराबर है।
चूंकि एनफए डीएफए के बराबर है, एनफए-ε भी डीएफए के बराबर है।


==संवरण गुण==
==संवरण गुण==
[[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|कुछ दिए गए एनफए की भाषाओं के मिलन को स्वीकार करते हुए एनफए की रचना की गई {{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'')}} डीएफए थे; इसके विपरीत, संघ भाषा (यहां तक ​​कि दो डीएफए) के लिए डीएफए का निर्माण करना अधिक जटिल है।]]एनफए द्वारा स्वीकृत भाषाओं का समुच्चय निम्नलिखित परिचालनों के तहत संवरण है। इन संवरण संचालन का उपयोग थॉम्पसन के निर्माण कलन विधि में किया जाता है, जो किसी भी नियमित अभिव्यक्ति से एनफए का निर्माण करता है। उनका उपयोग यह सिद्ध करने के लिए भी किया जा सकता है कि एनफए पूर्णतः नियमित भाषाओं को पहचानते हैं।


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


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


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


==यह भी देखें==
==यह भी देखें==
*डेटर्मिनिस्टिक परिमित स्वचालन
*डेटर्मिनिस्टिक परिमित स्वचालन
* दोतरफा गैर-डेटर्मिनिस्टिक परिमित ऑटोमेटन
* दोतरफा दूसरा-डेटर्मिनिस्टिक परिमित ऑटोमेटन
* पुशडाउन ऑटोमेटन
* पुशडाउन ऑटोमेटन
* [[नॉनडेटर्मिनिस्टिक ट्यूरिंग मशीन]]
* [[नॉनडेटर्मिनिस्टिक ट्यूरिंग मशीन]]
Line 238: Line 237:
* 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.)''
* 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.)''


{{Formal languages and grammars}}
[[Category:All Wikipedia articles needing clarification|Nondeterministic Finite-State Machine]]
{{Strings |state=collapsed}}
[[Category:Collapse templates|Nondeterministic Finite-State Machine]]
 
[[Category:Created On 20/07/2023|Nondeterministic Finite-State Machine]]
{{DEFAULTSORT:Nondeterministic Finite-State Machine}}[[Category: स्वचालित रूप से समाप्त हो गया]]  
[[Category:Lua-based templates|Nondeterministic Finite-State Machine]]
 
[[Category:Machine Translated Page|Nondeterministic Finite-State Machine]]
 
[[Category:Navigational boxes| ]]
 
[[Category:Navigational boxes without horizontal lists|Nondeterministic Finite-State Machine]]
[[Category: Machine Translated Page]]
[[Category:Pages with script errors|Nondeterministic Finite-State Machine]]
[[Category:Created On 20/07/2023]]
[[Category:Short description with empty Wikidata description|Nondeterministic Finite-State Machine]]
[[Category:Sidebars with styles needing conversion|Nondeterministic Finite-State Machine]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Nondeterministic Finite-State Machine]]
[[Category:Templates generating microformats|Nondeterministic Finite-State Machine]]
[[Category:Templates that add a tracking category|Nondeterministic Finite-State Machine]]
[[Category:Templates that are not mobile friendly|Nondeterministic Finite-State Machine]]
[[Category:Templates that generate short descriptions|Nondeterministic Finite-State Machine]]
[[Category:Templates using TemplateData|Nondeterministic Finite-State Machine]]
[[Category:Webarchive template wayback links|Nondeterministic Finite-State Machine]]
[[Category:Wikipedia articles needing clarification from April 2022|Nondeterministic Finite-State Machine]]
[[Category:Wikipedia metatemplates|Nondeterministic Finite-State Machine]]
[[Category:स्वचालित रूप से समाप्त हो गया|Nondeterministic Finite-State Machine]]

Latest revision as of 14:49, 12 September 2023

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

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

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

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

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

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

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

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

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

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

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

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

ऑटोमेटन

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

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

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

स्वीकृत भाषा

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

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

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

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

उदाहरण

m के लिए स्थिति आरेख। यह नियतात्मक नहीं है क्योंकि स्थिति p में 1 पढ़ने से p या q हो सकता है।
इनपुट स्ट्रिंग "10" पर m के सभी संभावित रन।
इनपुट स्ट्रिंग "1011" पर m के सभी संभावित रन।आर्क लेबल: इनपुट प्रतीक, नोड लेबल: स्थिति, हरा: प्रारंभ स्थिति, लाल: स्वीकार करने वाली स्थिति।

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

Input
State
0 1

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

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

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

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

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

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

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

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

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

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

एनफए ε-मूव्स(स्थान-परिवर्तन) के साथ

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

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

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

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

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

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

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

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

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

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

विस्तारित परिवर्तन फलन

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

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

उदाहरण

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

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

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

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

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

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

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

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

एप्सिलॉन मूव्स के साथ एनफए को परिभाषित जहाँ

और

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

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

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

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

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

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

संवरण गुण

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

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

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

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

गुण

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

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

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

कार्यान्वयन

एनफए लागू करने के कई विधि हैं:

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

एनफए का अनुप्रयोग

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

यह भी देखें

टिप्पणियाँ

  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.)