नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन: Difference between revisions
(→संदर्भ) |
|||
(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 अवस्थाएँ होती हैं।]][[ऑटोमेटा सिद्धांत]] में, एक परिमित-अवस्था मशीन को डेटर्मिनिस्टिक परिमित ऑटोमेटन ( | [[File:Relatively small NFA.svg|100px|thumb|(0<nowiki>|</nowiki>1)<sup>*</sup> 1 (0<nowiki>|</nowiki>1)<sup>3</sup>.<br />उस [[औपचारिक भाषा]] के लिए एक [[नियतात्मक परिमित ऑटोमेटन|डेटर्मिनिस्टिक परिमित ऑटोमेटन]] में कम से कम 16 अवस्थाएँ होती हैं।]][[ऑटोमेटा सिद्धांत]] में, एक परिमित-अवस्था मशीन को डेटर्मिनिस्टिक (निश्चयात्मक) परिमित ऑटोमेटन (स्वचालन) (डीएफए ) कहा जाता है, यदि | ||
* इसका प्रत्येक परिवर्तन स्रोत स्थिति और निविष्ट प्रतीक द्वारा विशिष्ट रूप से निर्धारित होता है, और | * इसका प्रत्येक परिवर्तन स्रोत स्थिति और निविष्ट प्रतीक द्वारा विशिष्ट रूप से निर्धारित होता है, और | ||
* प्रत्येक स्थिति परिवर्तन के लिए एक निविष्ट प्रतीक पढ़ना आवश्यक है। | * प्रत्येक स्थिति परिवर्तन के लिए एक निविष्ट प्रतीक पढ़ना आवश्यक है। | ||
'<nowiki/>'''नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन' (' | '<nowiki/>'''नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन' ('एनफए')''', या '''<nowiki/>'नॉनडेटर्मिनिस्टिक(अनिश्चयात्मक) परिमित-स्थिति मशीन'''' को इन प्रतिबंधों का पालन करने की आवश्यकता नहीं है। विशेष रूप से, प्रत्येक डीएफए एक एनफए भी है। कभी-कभी 'एनफए' शब्द का प्रयोग एक संकीर्ण अर्थ में किया जाता है, जो एक एनफए का संदर्भ देता है जो डीएफए नहीं है, लेकिन इस लेख में ऐसा नहीं है। | ||
[[सबसेट निर्माण एल्गोरिदम|उप-समूचय निर्माण कलन विधि]] का उपयोग करके, प्रत्येक | [[सबसेट निर्माण एल्गोरिदम|उप-समूचय निर्माण कलन विधि]] का उपयोग करके, प्रत्येक एनफए को समकक्ष डीएफए में अनुवादित किया जा सकता है अर्थात, डीएफए समान औपचारिक भाषा को मान्यता देता है।<ref>{{cite book |title=भाषाओं का परिचय और संगणना का सिद्धांत|last1=Martin |first1=John |year=2010 |page=108 |publisher=McGraw Hill |isbn= 978-0071289429}}</ref>डीएफए की तरह, एनफए केवल [[नियमित भाषा]]ओं को पहचानते हैं। | ||
एनफए की प्रारम्भ 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> जिन्होंने डीएफए के समकक्ष भी दिखाया। एनफए का उपयोग [[नियमित अभिव्यक्ति]]यों के कार्यान्वयन में किया जाता है: थॉम्पसन का निर्माण एनफए में नियमित अभिव्यक्ति को संकलित करने के लिए एक कलन विधि है जो स्ट्रिंग्स पर पैटर्न मिलान को कुशलतापूर्वक निष्पादित कर सकता है। इसके विपरीत, क्लेन के कलन विधि का उपयोग एनफए को नियमित अभिव्यक्ति में परिवर्तित करने के लिए किया जा सकता है (जिसका आकार सामान्यतः निविष्ट ऑटोमेटन में घातांक होता है)। | |||
एनफए को कई प्रयोगो से सामान्यीकृत किया गया है, उदाहरण के लिए, ε-मूव्स, परिमित-राज्य ट्रांसड्यूसर, पुशडाउन ऑटोमेटा, वैकल्पिक ऑटोमेटा, ω-ऑटोमेटा और संभाव्य ऑटोमेटा के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटा। डीएफए के अलावा, एनफए के अन्य ज्ञात विशेष सन्दर्भ असंदिग्ध परिमित ऑटोमेटा (यूएफए) और स्व-सत्यापन परिमित ऑटोमेटा (एसवीएफए) हैं। | |||
==अनौपचारिक परिचय== | ==अनौपचारिक परिचय== | ||
एनफए के व्यवहार का वर्णन करने के दो विधि हैं, और ये दोनों समान हैं। पहला विधि एनफए के नाम पर [[गैर-नियतात्मक एल्गोरिथ्म|दूसरा-डेटर्मिनिस्टिक]] का उपयोग करता है। प्रत्येक निविष्ट प्रतीक के लिए, एनफए एक नई स्थिति में परिवर्तित हो जाता है जब तक कि सभी निविष्ट प्रतीकों का उपयोग नहीं हो जाता। प्रत्येक चरण में, ऑटोमेटन दूसरा-डेटर्मिनिस्टिक रूप से लागू परिवर्तनों में से एक को चुनता है। यदि कम से कम एक लकी रन उपस्थित है, अर्थात विकल्पों का कुछ क्रम जो पूरी तरह से निविष्ट का उपयोग करने के बाद एक स्वीकार्य स्थिति की ओर ले जाता है, तो इसे स्वीकार कर लिया जाता है। अन्यथा, अर्थात यदि कोई विकल्प अनुक्रम नहीं है तो सभी निविष्ट का उपयोग कर सकता है<ref>A choice sequence may lead into a "dead end" where no transition is applicable for the current input symbol; in this case it is considered unsuccessful.</ref> और एक स्वीकार्य स्थिति की ओर ले जाता है, निविष्ट अस्वीकार कर दिया जाता है।<ref name="Hopcroft.Ullman.1979">{{cite book | isbn=0-201-02988-X | author=John E. Hopcroft and Jeffrey D. Ullman | title=ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय| location=Reading/MA | publisher=Addison-Wesley | year=1979 | url=https://archive.org/details/introductiontoau00hopc }}</ref>{{rp|19}}<ref name="Aho.Hopcroft.Ullman.1974">{{cite book | isbn=0-201-00029-6 | author=Alfred V. Aho and John E. Hopcroft and Jeffrey D. Ullman | title=कंप्यूटर एल्गोरिदम का डिज़ाइन और विश्लेषण| url=https://archive.org/details/designanalysisof00ahoarich | url-access=registration | location=Reading/MA | publisher=Addison-Wesley | year=1974 }}</ref>{{rp|319}} | |||
दूसरे | दूसरे विधि में, एनफए एक-एक करके निविष्ट प्रतीकों की एक श्रृंखला का उपयोग करता है। प्रत्येक चरण में, जब भी दो या अधिक परिवर्तन लागू होते हैं, तो यह स्वयं को उचित रूप से कई प्रतियों में क्लोन कर लेता है, प्रत्येक एक अलग परिवर्तन का अनुसरण करता है। यदि कोई परिवर्तन लागू नहीं होता है, तो वर्तमान प्रतिलिपि निष्क्रिय हो जाती है, और वह ख़त्म हो जाती है। यदि, पूरे निविष्ट का उपयोग करने के बाद, कोई भी प्रतियाँ स्वीकार की स्थिति में है, तो निविष्ट स्वीकार कर लिया जाता है, अन्यथा, इसे अस्वीकार कर दिया जाता है।<ref name="Hopcroft.Ullman.1979"/>{{rp|19–20}}<!---not an error: Hopcroft and Ullman use both informal explanations---><ref name="Sipser.1997">{{cite book | author=Michael Sipser | title=संगणना के सिद्धांत का परिचय| location=Boston/MA | publisher=PWS Publishing Co. | year=1997 | isbn=0-534-94728-X | url=https://archive.org/details/introductiontoth00sips }}</ref>{{rp|48}}<ref name="Hopcroft.Motwani.Ullman.2003">{{cite book | url=http://148.216.38.247/~rrusiles/Fie/Horizontal/Hopcroft_Introduction_to_Automata_Theory_Languages_and_Computation.pdf | isbn=0-201-44124-1 | author=John E. Hopcroft and Rajeev Motwani and Jeffrey D. Ullman | title=ऑटोमेटा सिद्धांत, भाषाएँ और संगणना का परिचय| location=Upper Saddle River/NJ | publisher=Addison Wesley | year=2003 }}</ref>{{rp|56}} | ||
==औपचारिक परिभाषा== | ==औपचारिक परिभाषा== | ||
Line 21: | Line 21: | ||
===ऑटोमेटन=== | ===ऑटोमेटन=== | ||
एनफए को औपचारिक रूप से 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> | <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>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>\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}} | ||
===प्रारंभिक अवस्था=== | ===प्रारंभिक अवस्था=== | ||
उपरोक्त ऑटोमेटन परिभाषा एकल प्रारंभिक अवस्था का उपयोग करती है, जो आवश्यक नहीं है। कभी-कभी, | उपरोक्त ऑटोमेटन परिभाषा एकल प्रारंभिक अवस्था का उपयोग करती है, जो आवश्यक नहीं है। कभी-कभी, एनफए को प्रारंभिक अवस्थाओं के एक समुच्चय के साथ परिभाषित किया जाता है। एक आसान निर्माण है जो कई प्रारंभिक स्थितियों वाले एनफए को एक प्रारंभिक स्थिति वाले एनफए में परिवर्तित करता है, जो एक सुविधाजनक संकेतन प्रदान करता है। | ||
==उदाहरण== | ==उदाहरण== | ||
{| style="float: right; border-spacing: 0;" | {| style="float: right; border-spacing: 0;" | ||
|- | |- | ||
| VALIGN=TOP | [[File:NFASimpleExample.svg|thumb|250px| | | VALIGN=TOP | [[File:NFASimpleExample.svg|thumb|250px|m के लिए स्थिति आरेख। यह नियतात्मक नहीं है क्योंकि स्थिति p में 1 पढ़ने से p या q हो सकता है।]] | ||
| VALIGN=TOP | [[File:NFASimpleExample Runs10.gif|thumb|250px| | | VALIGN=TOP | [[File:NFASimpleExample Runs10.gif|thumb|250px|इनपुट स्ट्रिंग "10" पर m के सभी संभावित रन।]] | ||
|- | |- | ||
| COLSPAN=2 | [[File:NFASimpleExample Runs1011.gif|thumb|530px| | | 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" स्वीकार की जाएगी। | ||
== | ==डीएफए के समतुल्य== | ||
डेटर्मिनिस्टिक परिमित ऑटोमेटन ( | डेटर्मिनिस्टिक परिमित ऑटोमेटन (डीएफए) को एक विशेष प्रकार के एनफए के रूप में देखा जा सकता है, जिसमें प्रत्येक स्थिति और प्रतीक के लिए, परिवर्तन फलन में पूर्णतः एक स्थिति होता है। इस प्रकार, यह स्पष्ट है कि प्रत्येक औपचारिक भाषा जिसे डीएफए द्वारा मान्यता दी जा सकती है, उसे एनफए द्वारा मान्यता दी जा सकती है। | ||
इसके विपरीत, प्रत्येक | इसके विपरीत, प्रत्येक एनफए के लिए, एक डीएफए होता है जो समान औपचारिक भाषा को पहचानता है। डीएफए का निर्माण [[पॉवरसेट निर्माण|पॉवरसमुच्चय निर्माण]] का उपयोग करके किया जा सकता है। | ||
यह परिणाम दर्शाता है कि | यह परिणाम दर्शाता है कि एनफए, अपने अतिरिक्त तन्यता के तथापि, उन भाषाओं को पहचानने में असमर्थ हैं जिन्हें कुछ डीएफए द्वारा पहचाना नहीं जा सकता है। निर्माण में आसान एनफए को अधिक कुशलतापूर्वक निष्पादन योग्य डीएफए में परिवर्तित करना व्यवहार में भी महत्वपूर्ण है। यद्यपि, यदि एनफए में n स्थिति हैं, तो परिणामी डीएफए में 2<sup>n</sup> तक हो सकते हैं स्थिति, जो कभी-कभी बड़े एनफए के लिए निर्माण को अव्यवहारिक बना देता है। | ||
== | ==एनफए ε-मूव्स(स्थान-परिवर्तन) के साथ== | ||
ε-मूव्स ( | ε-मूव्स (एनफए-ε) के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन एनफए का एक और सामान्यीकरण है। इस प्रकार के ऑटोमेटन में, परिवर्तन फलन को रिक्त [[खाली स्ट्रिंग|स्ट्रिंग]] ε पर अतिरिक्त रूप से परिभाषित किया गया है। निविष्ट प्रतीक का उपयोग किए रहित परिवर्तन को ε-परिवर्तन कहा जाता है और स्थिति आरेखों में ε लेबल वाले तीर द्वारा दर्शाया जाता है। ε-परिवर्तन उन प्रणालियों को प्रतिरूप करने का एक सुविधाजनक विधि प्रदान करता है जिनकी वर्तमान स्थिति सटीक रूप से ज्ञात नहीं है अर्थात, यदि हम एक प्रणाली का प्रतिरूप कर रहे हैं और यह स्पष्ट नहीं है कि वर्तमान स्थिति (कुछ निविष्ट स्ट्रिंग को संसाधित करने के बाद) q या q' होनी चाहिए, तो हम इन दोनों स्थितियों के बीच एक ε-परिवर्तन जोड़ सकते हैं, इस प्रकार दोनों स्थितियों में ऑटोमेटन को एक साथ रख सकते हैं। | ||
===औपचारिक परिभाषा=== | ===औपचारिक परिभाषा=== | ||
एनफए-ε को औपचारिक रूप से 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> | एक समुच्चय का ε-संवरण <math>P</math> एनफए के स्थितियों की संख्या को किसी भी स्थिति <math>P</math> निम्नलिखित ε-परिवर्तन से पहुंच योग्य स्थितियों के समूह के रूप में परिभाषित किया गया है। औपचारिक रूप से, <math>P \subseteq Q</math> के लिए <math>E(P) = \bigcup\limits_{q\in P} E(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> एक बाइनरी वर्णमाला के साथ एक | [[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> इसे दो | <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 = (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}} | ||
चूंकि | चूंकि एनफए डीएफए के बराबर है, एनफए-ε भी डीएफए के बराबर है। | ||
==संवरण गुण== | ==संवरण गुण== | ||
[[File:Thompson-or.svg|thumb|कुछ दिए गए | [[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 को कुछ | *यूनियन (सीएफ. चित्र); अर्थात्, यदि भाषा L1 को कुछ एनफए A1 द्वारा और L2 को कुछ A2 द्वारा स्वीकार किया जाता है, तो एक एनफए Au का निर्माण किया जा सकता है जो भाषा L1∪L2 को स्वीकार करता है। | ||
*इंटरसेक्शन; इसी तरह, A1 और A2 से एक | *इंटरसेक्शन; इसी तरह, A1 और A2 से एक एनफए Ai का निर्माण किया जा सकता है जो L1∩L2 को स्वीकार करता है। | ||
*संयोजन | *संयोजन | ||
*प्रतिवाद; इसी तरह, A1 से एक | *प्रतिवाद; इसी तरह, A1 से एक एनफए An का निर्माण किया जा सकता है जो Σ*\L1 को स्वीकार करता है। | ||
*[[क्लीन क्लोजर|क्लीन संवरण]] | *[[क्लीन क्लोजर|क्लीन संवरण]] | ||
चूंकि | चूंकि एनफए ε-मूव्स (एनफए-ε) के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन के बराबर हैं, उपरोक्त संवरण एनफए-ε के संवरण गुणों का उपयोग करके सिद्ध किए जाते हैं। | ||
==गुण== | ==गुण== | ||
मशीन निर्दिष्ट प्रारंभिक अवस्था में प्रारम्भ होती है और अपने वर्णमाला से प्रतीकों की एक श्रृंखला में पढ़ती है। ऑटोमेटन वर्तमान स्थिति का उपयोग करके अगली स्थिति निर्धारित करने के लिए स्थिति परिवर्तन फलन Δ का उपयोग करता है, और प्रतीक बस पढ़ता है या रिक्त स्ट्रिंग। यद्यपि, | मशीन निर्दिष्ट प्रारंभिक अवस्था में प्रारम्भ होती है और अपने वर्णमाला से प्रतीकों की एक श्रृंखला में पढ़ती है। ऑटोमेटन वर्तमान स्थिति का उपयोग करके अगली स्थिति निर्धारित करने के लिए स्थिति परिवर्तन फलन Δ का उपयोग करता है, और प्रतीक बस पढ़ता है या रिक्त स्ट्रिंग। यद्यपि, एनफए की अगली स्थिति न केवल वर्तमान निविष्ट घटना पर निर्भर करती है, बल्कि बाद की निविष्ट घटनाओं की स्वेच्छाचार संख्या पर भी निर्भर करती है। जब तक ये आगामी घटनाएँ घटित नहीं हो जातीं तब तक यह निर्धारित करना संभव नहीं है कि मशीन किस स्थिति में है।<ref>FOLDOC Free Online Dictionary of Computing, ''[http://foldoc.org/nfa Finite-State Machine]''</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> | ||
* सभी स्थितियों की एक समुच्चय डेटा संरचना रखें जिसमें | * सभी स्थितियों की एक समुच्चय डेटा संरचना रखें जिसमें एनफए वर्तमान में हो सकता है। एक निविष्ट प्रतीक की खपत पर, अगले स्थितियों का समुच्चय प्राप्त करने के लिए सभी उपस्थित स्थितियों पर लागू परिवर्तन फलन के परिणामों को समुच्चय करें; यदि ε-मूव्स की अनुमति है, तो ऐसी चाल (ε-संवरण) द्वारा पहुंच योग्य सभी स्थितियों को सम्मिलित करें। प्रत्येक चरण के लिए अधिकतम s<sup>2</sup> गणना की आवश्यकता होती है , जहां s एनफए के स्थितियों की संख्या है। अंतिम निविष्ट प्रतीक की खपत पर, यदि वर्तमान स्थिति में से एक अंतिम स्थिति है, तो मशीन स्ट्रिंग को स्वीकार करती है। लंबाई n की एक स्ट्रिंग को समय ''O''(''ns''<sup>2</sup>)<ref name="Hopcroft.Motwani.Ullman.2003"/>{{rp|153}},और स्थान O(s) में संसाधित किया जा सकता है)। | ||
* एकाधिक प्रतियाँ बनाएँ। प्रत्येक n-तरफ़ा निर्णय के लिए, | * एकाधिक प्रतियाँ बनाएँ। प्रत्येक n-तरफ़ा निर्णय के लिए, एनफए मशीन की n−1 प्रतियां बनाता है। प्रत्येक एक अलग स्थिति में प्रवेश करेगा। यदि, अंतिम निविष्ट प्रतीक का उपयोग करने पर, एनफए की कम से कम एक प्रति स्वीकार करने की स्थिति में है, तो एनफए स्वीकार करेगा। (इसके लिए भी, एनफए स्थितियों की संख्या के संबंध में रैखिक भंडारण की आवश्यकता होती है, क्योंकि प्रत्येक एनफए स्थिति के लिए एक मशीन हो सकती है।) | ||
* | * एनफए की परिवर्तन संरचना के माध्यम से टोकन को स्पष्ट रूप से प्रचारित करें और जब भी कोई टोकन अंतिम स्थिति में पहुंचे तो उसका मिलान करें। यह कभी-कभी उपयोगी होता है जब एनफए को उन घटनाओं के बारे में अतिरिक्त संदर्भ को एन्कोड करना चाहिए जिन्होंने परिवर्तन को ट्रिगर किया। (ऐसे कार्यान्वयन के लिए जो ऑब्जेक्ट संदर्भों पर नज़र रखने के लिए इस तकनीक का उपयोग करता है, ट्रेसमैच पर एक नज़र डालें।)<ref>Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2005. [http://abc.comlab.ox.ac.uk/papers#oopsla2005 Adding trace matching with free variables to AspectJ] {{Webarchive|url=https://web.archive.org/web/20090918053718/http://abc.comlab.ox.ac.uk/papers#oopsla2005 |date=2009-09-18 }}. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (San Diego, CA, USA, October 16–20, 2005). OOPSLA '05. ACM, New York, NY, 345-364.</ref> | ||
* | * एनफए दिए जाने पर यह जांचने के लिए पीएसपीएसीई-पूर्ण है कि क्या यह सार्वभौमिक है, अर्थात, यदि कोई स्ट्रिंग है जिसे यह स्वीकार नहीं करता है।<ref>Historically shown in: {{Cite journal|last=Meyer|first=A. R.|last2=Stockmeyer|first2=L. J.|date=1972-10-25|title=The equivalence problem for regular expressions with squaring requires exponential space|journal=Proceedings of the 13th Annual Symposium on Switching and Automata Theory (SWAT)|location=USA|publisher=IEEE Computer Society|pages=125–129|doi=10.1109/SWAT.1972.29}} For a modern presentation, see [http://www.lsv.fr/~jacomme/1718/ca/td4_sol.pdf]</ref> समावेशन समस्या के बारे में भी यही सच है, अर्थात, दो एनफए दिए जाने पर, एक की भाषा दूसरे की भाषा का उप-समूचय है। | ||
== | ==एनफए का अनुप्रयोग== | ||
एनफए और डीएफए इस मायने में समतुल्य हैं कि यदि कोई भाषा एनफए द्वारा स्वीकृत है, तो इसे डीएफए द्वारा भी स्वीकृत है और इसके विपरीत भी। ऐसी समतुल्यता की स्थापना महत्वपूर्ण एवं उपयोगी है। यह उपयोगी है क्योंकि किसी दी गई भाषा को पहचानने के लिए एनफए का निर्माण करना कभी-कभी उस भाषा के लिए डीएफए के निर्माण की तुलना में बहुत आसान होता है। यह महत्वपूर्ण है क्योंकि गणना के सिद्धांत में कई महत्वपूर्ण गुणों को समुच्चय करने के लिए आवश्यक गणितीय कार्य की जटिलता को कम करने के लिए एनफए का उपयोग किया जा सकता है। उदाहरण के लिए, डीएफए की तुलना में एनफए का उपयोग करके नियमित भाषाओं के संवरण गुणों को सिद्ध करना बहुत आसान है। | |||
==यह भी देखें== | ==यह भी देखें== | ||
*डेटर्मिनिस्टिक परिमित स्वचालन | *डेटर्मिनिस्टिक परिमित स्वचालन | ||
* दोतरफा | * दोतरफा दूसरा-डेटर्मिनिस्टिक परिमित ऑटोमेटन | ||
* पुशडाउन ऑटोमेटन | * पुशडाउन ऑटोमेटन | ||
* [[नॉनडेटर्मिनिस्टिक ट्यूरिंग मशीन]] | * [[नॉनडेटर्मिनिस्टिक ट्यूरिंग मशीन]] | ||
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.)'' | ||
[[Category:All Wikipedia articles needing clarification|Nondeterministic Finite-State Machine]] | |||
[[Category:Collapse templates|Nondeterministic Finite-State Machine]] | |||
[[Category:Created On 20/07/2023|Nondeterministic Finite-State Machine]] | |||
[[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 | [[Category:Pages with script errors|Nondeterministic Finite-State Machine]] | ||
[[Category: | [[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
ऑटोमेटा सिद्धांत में, एक परिमित-अवस्था मशीन को डेटर्मिनिस्टिक (निश्चयात्मक) परिमित ऑटोमेटन (स्वचालन) (डीएफए ) कहा जाता है, यदि
- इसका प्रत्येक परिवर्तन स्रोत स्थिति और निविष्ट प्रतीक द्वारा विशिष्ट रूप से निर्धारित होता है, और
- प्रत्येक स्थिति परिवर्तन के लिए एक निविष्ट प्रतीक पढ़ना आवश्यक है।
'नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन' ('एनफए'), या 'नॉनडेटर्मिनिस्टिक(अनिश्चयात्मक) परिमित-स्थिति मशीन' को इन प्रतिबंधों का पालन करने की आवश्यकता नहीं है। विशेष रूप से, प्रत्येक डीएफए एक एनफए भी है। कभी-कभी 'एनफए' शब्द का प्रयोग एक संकीर्ण अर्थ में किया जाता है, जो एक एनफए का संदर्भ देता है जो डीएफए नहीं है, लेकिन इस लेख में ऐसा नहीं है।
उप-समूचय निर्माण कलन विधि का उपयोग करके, प्रत्येक एनफए को समकक्ष डीएफए में अनुवादित किया जा सकता है अर्थात, डीएफए समान औपचारिक भाषा को मान्यता देता है।[1]डीएफए की तरह, एनफए केवल नियमित भाषाओं को पहचानते हैं।
एनफए की प्रारम्भ 1959 में माइकल ओ. राबिन और दाना स्कॉट द्वारा की गई थी,[2] जिन्होंने डीएफए के समकक्ष भी दिखाया। एनफए का उपयोग नियमित अभिव्यक्तियों के कार्यान्वयन में किया जाता है: थॉम्पसन का निर्माण एनफए में नियमित अभिव्यक्ति को संकलित करने के लिए एक कलन विधि है जो स्ट्रिंग्स पर पैटर्न मिलान को कुशलतापूर्वक निष्पादित कर सकता है। इसके विपरीत, क्लेन के कलन विधि का उपयोग एनफए को नियमित अभिव्यक्ति में परिवर्तित करने के लिए किया जा सकता है (जिसका आकार सामान्यतः निविष्ट ऑटोमेटन में घातांक होता है)।
एनफए को कई प्रयोगो से सामान्यीकृत किया गया है, उदाहरण के लिए, ε-मूव्स, परिमित-राज्य ट्रांसड्यूसर, पुशडाउन ऑटोमेटा, वैकल्पिक ऑटोमेटा, ω-ऑटोमेटा और संभाव्य ऑटोमेटा के साथ नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटा। डीएफए के अलावा, एनफए के अन्य ज्ञात विशेष सन्दर्भ असंदिग्ध परिमित ऑटोमेटा (यूएफए) और स्व-सत्यापन परिमित ऑटोमेटा (एसवीएफए) हैं।
अनौपचारिक परिचय
एनफए के व्यवहार का वर्णन करने के दो विधि हैं, और ये दोनों समान हैं। पहला विधि एनफए के नाम पर दूसरा-डेटर्मिनिस्टिक का उपयोग करता है। प्रत्येक निविष्ट प्रतीक के लिए, एनफए एक नई स्थिति में परिवर्तित हो जाता है जब तक कि सभी निविष्ट प्रतीकों का उपयोग नहीं हो जाता। प्रत्येक चरण में, ऑटोमेटन दूसरा-डेटर्मिनिस्टिक रूप से लागू परिवर्तनों में से एक को चुनता है। यदि कम से कम एक लकी रन उपस्थित है, अर्थात विकल्पों का कुछ क्रम जो पूरी तरह से निविष्ट का उपयोग करने के बाद एक स्वीकार्य स्थिति की ओर ले जाता है, तो इसे स्वीकार कर लिया जाता है। अन्यथा, अर्थात यदि कोई विकल्प अनुक्रम नहीं है तो सभी निविष्ट का उपयोग कर सकता है[3] और एक स्वीकार्य स्थिति की ओर ले जाता है, निविष्ट अस्वीकार कर दिया जाता है।[4]: 19 [5]: 319
दूसरे विधि में, एनफए एक-एक करके निविष्ट प्रतीकों की एक श्रृंखला का उपयोग करता है। प्रत्येक चरण में, जब भी दो या अधिक परिवर्तन लागू होते हैं, तो यह स्वयं को उचित रूप से कई प्रतियों में क्लोन कर लेता है, प्रत्येक एक अलग परिवर्तन का अनुसरण करता है। यदि कोई परिवर्तन लागू नहीं होता है, तो वर्तमान प्रतिलिपि निष्क्रिय हो जाती है, और वह ख़त्म हो जाती है। यदि, पूरे निविष्ट का उपयोग करने के बाद, कोई भी प्रतियाँ स्वीकार की स्थिति में है, तो निविष्ट स्वीकार कर लिया जाता है, अन्यथा, इसे अस्वीकार कर दिया जाता है।[4]: 19–20 [6]: 48 [7]: 56
औपचारिक परिभाषा
औपचारिक परिभाषा के अधिक प्रारंभिक परिचय के लिए, ऑटोमेटा सिद्धांत देखें।
ऑटोमेटन
एनफए को औपचारिक रूप से 5-टपल द्वारा दर्शाया जाता है,, जिसमें सम्मिलित है
- स्थितियों का एक सीमित समुच्चय (गणित) ।
- निविष्ट प्रतीकों का एक सीमित समुच्चय .
- एक परिवर्तन फलन : .
- एक प्रारंभिक (या आरंभ) अवस्था .
- स्थितियों का एक समुच्चय स्वीकार करने वाले (या अंतिम) स्थितियों के रूप में प्रतिष्ठित .
यहाँ, के पावर समुच्चय को दर्शाता है .
स्वीकृत भाषा
एनफए दिया गया , इसकी स्वीकृत भाषा द्वारा दर्शाया जाता है , और इसे वर्णमाला के सभी तारों के समुच्चय के रूप में परिभाषित किया गया है जिसे स्वीकार किया जाता है .उपरोक्त अनौपचारिक स्पष्टीकरणों के अनुरूप, एक स्ट्रिंग की कई समान औपचारिक परिभाषाएँ हैं जिसे द्वारा स्वीकार किया जा रहा है :
- स्वीकार है यदि स्थितियों का अनुक्रम , में उपस्थित है, ऐसा है कि:
- , के लिए
- .
- शब्दों में, पहली अनुबंध कहती है कि मशीन प्रारंभ अवस्था में प्रारम्भ होती है . दूसरी अनुबंध कहती है कि स्ट्रिंग का प्रत्येक अक्षर दिया गया है , मशीन ट्रांज़िशन फलन के अनुसार एक स्थिति से दूसरे स्थिति में स्थानांतरित होगी . आखिरी अनुबंध कहती है कि मशीन स्वीकार करती है यदि अंतिम निविष्ट मशीन को स्वीकार करने वाले स्थितियों में से एक में रुकने का कारण बनता है। के क्रम में द्वारा स्वीकार किया जाना , यह आवश्यक नहीं है कि प्रत्येक स्थिति अनुक्रम एक स्वीकार्य स्थिति में समाप्त हो, यदि कोई ऐसा करता है तो यह पर्याप्त है। अन्यथा, अर्थात यदि इसे प्राप्त करना पूर्णतः भी असंभव है से एक स्थिति तक अनुगमन करते हुए , ऐसा कहा जाता है कि ऑटोमेटन स्ट्रिंग को अस्वीकार कर देता है। तार का समुच्चय एक्सेप्ट्स द्वारा स्वीकृत औपचारिक भाषा है तथा भाषा को निरूपित किया जाता है .[5]: 320 [6]: 54
- वैकल्पिक रूप से, स्वीकार किया जाता है यदि , जहाँ रिकर्सन (कंप्यूटर विज्ञान) को इसके द्वारा परिभाषित किया गया है:
- जहाँ रिक्त स्ट्रिंग है, और
- सभी के लिए .
- शब्दों में, स्थिति से पहुंच योग्य सभी स्थितियों का समूह है स्ट्रिंग का उपयोग करके . डोर यदि कोई स्वीकार करने वाला स्थिति है तो स्वीकार किया जाता है आरंभिक स्थिति सेवन करने से से पहुंचा जा सकता है [4]: 21 [7]: 59
प्रारंभिक अवस्था
उपरोक्त ऑटोमेटन परिभाषा एकल प्रारंभिक अवस्था का उपयोग करती है, जो आवश्यक नहीं है। कभी-कभी, एनफए को प्रारंभिक अवस्थाओं के एक समुच्चय के साथ परिभाषित किया जाता है। एक आसान निर्माण है जो कई प्रारंभिक स्थितियों वाले एनफए को एक प्रारंभिक स्थिति वाले एनफए में परिवर्तित करता है, जो एक सुविधाजनक संकेतन प्रदान करता है।
उदाहरण
निम्नलिखित ऑटोमेटन , एक द्विआधारी वर्णमाला के साथ, यह निर्धारित करता है कि निविष्ट 1 के साथ समाप्त होता है या नहीं।माना कि जहाँ परिवर्तन फलन को स्थिति परिवर्तन तालिका द्वारा परिभाषित किया जा सकता है (ऊपरी बाएँ चित्र की तुलना करें):
- InputState
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} | {} |
इसे दो डीएफए एक स्थितियों के साथ और दूसरा स्थितियों के साथ के मिलन के रूप में देखा जा सकता है। की भाषा इस नियमित अभिव्यक्ति द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है। हम ε-मूव्स का प्रयोग करके को परिभाषित करते हैं लेकिन ε-मूव्स का उपयोग किए रहित को परिभाषित किया जा सकता है।
एनफए के समतुल्य
यह दिखाने के लिए कि एनफए-ε एनफए के समतुल्य है, पहले ध्यान दें कि एनफए, एनफए-ε का एक विशेष विषय है, इसलिए यह दिखाना शेष है कि प्रत्येक एनफए-ε के लिए, एक समकक्ष एनफए उपस्थित है।
एप्सिलॉन मूव्स के साथ एनफए को परिभाषित जहाँ
और
- प्रत्येक स्थिति के लिए और प्रत्येक प्रतीक विस्तारित परिवर्तन फलन का उपयोग करना ऊपर परिभाषित.
और और के परिवर्तन कार्यों में अंतर करना होगा अर्थात. और स्ट्रिंग्स में उनका विस् तार, और क्रमशः निर्मारा, कोई ε-परिवर्तन नहीं है।
कोई सिद्ध कर सकता है प्रत्येक स्ट्रिंग के लिए , की लंबाई पर गणितीय प्रेरण द्वारा
इसके आधार पर यह दिखा सकता है यदि और केवल यदि, प्रत्येक स्ट्रिंग के लिए है
- यदि यह की परिभाषा से अनुसरण करता है
- अन्यथा माना कि साथ और :से और अपने पास हमें अभी भी दिशा दिखाना है।
चूंकि एनफए डीएफए के बराबर है, एनफए-ε भी डीएफए के बराबर है।
संवरण गुण
एनफए द्वारा स्वीकृत भाषाओं का समुच्चय निम्नलिखित परिचालनों के तहत संवरण है। इन संवरण संचालन का उपयोग थॉम्पसन के निर्माण कलन विधि में किया जाता है, जो किसी भी नियमित अभिव्यक्ति से एनफए का निर्माण करता है। उनका उपयोग यह सिद्ध करने के लिए भी किया जा सकता है कि एनफए पूर्णतः नियमित भाषाओं को पहचानते हैं।
- यूनियन (सीएफ. चित्र); अर्थात्, यदि भाषा 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] समावेशन समस्या के बारे में भी यही सच है, अर्थात, दो एनफए दिए जाने पर, एक की भाषा दूसरे की भाषा का उप-समूचय है।
एनफए का अनुप्रयोग
एनफए और डीएफए इस मायने में समतुल्य हैं कि यदि कोई भाषा एनफए द्वारा स्वीकृत है, तो इसे डीएफए द्वारा भी स्वीकृत है और इसके विपरीत भी। ऐसी समतुल्यता की स्थापना महत्वपूर्ण एवं उपयोगी है। यह उपयोगी है क्योंकि किसी दी गई भाषा को पहचानने के लिए एनफए का निर्माण करना कभी-कभी उस भाषा के लिए डीएफए के निर्माण की तुलना में बहुत आसान होता है। यह महत्वपूर्ण है क्योंकि गणना के सिद्धांत में कई महत्वपूर्ण गुणों को समुच्चय करने के लिए आवश्यक गणितीय कार्य की जटिलता को कम करने के लिए एनफए का उपयोग किया जा सकता है। उदाहरण के लिए, डीएफए की तुलना में एनफए का उपयोग करके नियमित भाषाओं के संवरण गुणों को सिद्ध करना बहुत आसान है।
यह भी देखें
- डेटर्मिनिस्टिक परिमित स्वचालन
- दोतरफा दूसरा-डेटर्मिनिस्टिक परिमित ऑटोमेटन
- पुशडाउन ऑटोमेटन
- नॉनडेटर्मिनिस्टिक ट्यूरिंग मशीन
टिप्पणियाँ
- ↑ Martin, John (2010). भाषाओं का परिचय और संगणना का सिद्धांत. McGraw Hill. p. 108. ISBN 978-0071289429.
- ↑ Rabin, M. O.; Scott, D. (April 1959). "परिमित ऑटोमेटा और उनकी निर्णय समस्याएं". IBM Journal of Research and Development. 3 (2): 114–125. doi:10.1147/rd.32.0114.
- ↑ 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.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.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.0 6.1 Michael Sipser (1997). संगणना के सिद्धांत का परिचय. Boston/MA: PWS Publishing Co. ISBN 0-534-94728-X.
- ↑ 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.
- ↑ FOLDOC Free Online Dictionary of Computing, Finite-State Machine
- ↑ Chris Calabro (February 27, 2005). "एनएफए से डीएफए ब्लोअप" (PDF). cseweb.ucsd.edu. Retrieved 6 March 2023.
- ↑ 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.
- ↑ 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.)