नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन

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

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

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

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

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

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

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

यहाँ, $$\mathcal{P}(Q)$$ के सत्ता स्थापित  को दर्शाता है $$Q$$.

मान्यताप्राप्त भाषा
एनएफए दिया गया $$M = (Q, \Sigma, \delta, q_0, F)$$, इसकी मान्यता प्राप्त भाषा द्वारा निरूपित की जाती है $$L(M)$$, और इसे वर्णमाला के सभी तारों के सेट के रूप में परिभाषित किया गया है $$\Sigma$$ जिसे स्वीकार किया जाता है $$M$$.


 * 1) अनौपचारिक परिचय अनौपचारिक स्पष्टीकरण के अनुरूप, एक स्ट्रिंग की कई समान औपचारिक परिभाषाएँ हैं $$w = a_1 a_2 ... a_n$$ द्वारा स्वीकार किया जा रहा है $$M$$:
 * $$w$$ यदि राज्यों का अनुक्रम स्वीकार किया जाता है, $$r_0, r_1, ..., r_n$$, में मौजूद है $$Q$$ ऐसा है कि:
 * $$r_0 = q_0$$
 * $$r_{i+1} \in \delta (r_i, a_{i+1})$$, के लिए $$i = 0, \ldots, n-1$$
 * $$r_n \in F$$.
 * शब्दों में, पहली शर्त कहती है कि मशीन प्रारंभ अवस्था में शुरू होती है $$q_0$$. दूसरी शर्त कहती है कि स्ट्रिंग का प्रत्येक अक्षर दिया गया है $$w$$, मशीन ट्रांज़िशन फ़ंक्शन के अनुसार एक राज्य से दूसरे राज्य में स्थानांतरित होगी $$\delta$$. आखिरी शर्त कहती है कि मशीन स्वीकार करती है $$w$$ यदि अंतिम इनपुट $$w$$ मशीन को स्वीकार करने वाले राज्यों में से एक में रुकने का कारण बनता है। के क्रम में $$w$$ द्वारा स्वीकार किया जाना $$M$$, यह आवश्यक नहीं है कि प्रत्येक राज्य अनुक्रम एक स्वीकार्य स्थिति में समाप्त हो, यदि कोई ऐसा करता है तो यह पर्याप्त है। अन्यथा, यानी यदि इसे प्राप्त करना बिल्कुल भी असंभव है $$q_0$$ से एक राज्य तक $$F$$ अनुगमन करते हुए $$w$$, ऐसा कहा जाता है कि ऑटोमेटन स्ट्रिंग को अस्वीकार कर देता है। तार का सेट $$M$$ एक्सेप्ट्स द्वारा मान्यता प्राप्त औपचारिक भाषा है $$M$$ तथा इस भाषा को निरूपित किया जाता है $$L(M)$$.


 * वैकल्पिक रूप से, $$w$$ स्वीकार किया जाता है यदि $$\delta^*(q_0, w) \cap F \not = \emptyset$$, कहाँ $$\delta^*: Q \times \Sigma^* \rightarrow \mathcal{P}(Q)$$ रिकर्सन (कंप्यूटर विज्ञान) को इसके द्वारा परिभाषित किया गया है:
 * $$\delta^*(r, \epsilon) = \{r\}$$ कहाँ $$\epsilon$$ खाली स्ट्रिंग है, और
 * $$\delta^*(r, xa)= \bigcup_{r' \in \delta^*(r, x)} \delta(r', a)$$ सभी के लिए $$x \in \Sigma^*, a \in \Sigma$$.
 * शब्दों में, $$\delta^*(r, x)$$ राज्य से पहुंच योग्य सभी राज्यों का समूह है $$r$$ स्ट्रिंग का उपभोग करके $$x$$. डोर $$w$$ यदि कोई स्वीकार करने वाला राज्य है तो स्वीकार किया जाता है $$F$$ आरंभिक स्थिति से पहुंचा जा सकता है $$q_0$$ सेवन करने से $$w$$.

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

उदाहरण
निम्नलिखित ऑटोमेटन $$M$$, एक द्विआधारी वर्णमाला के साथ, यह निर्धारित करता है कि इनपुट 1 के साथ समाप्त होता है या नहीं। होने देना $$M = (\{p, q\}, \{0, 1\}, \delta, p, \{q\})$$ कहाँ संक्रमण समारोह $$\delta$$ इस राज्य संक्रमण तालिका द्वारा परिभाषित किया जा सकता है (ऊपरी बाएँ चित्र की तुलना करें):
 * {| class="wikitable" style="text-align:center;"

! ! 0 ! 1 ! $$p$$ ! $$q$$ सेट के बाद से $$\delta(p,1)$$ इसमें एक से अधिक राज्य शामिल हैं, $$M$$ गैर नियतिवादी है. की भाषा $$M$$ रेगुलर एक्सप्रेशन द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है.
 * $$\{p\}$$
 * $$\{p,q\}$$
 * $$\emptyset$$
 * $$\emptyset$$
 * }

इनपुट स्ट्रिंग 1011 के लिए सभी संभावित स्थिति अनुक्रम निचले चित्र में दिखाए गए हैं।

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

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

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

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

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

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

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

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

ε-किसी राज्य या राज्यों के समूह का बंद होना
एक राज्य के लिए $$q \in Q$$, होने देना $$E(q)$$ उन राज्यों के समूह को निरूपित करें जिनसे पहुंच योग्य है $$q$$ संक्रमण फलन में ε-संक्रमण का अनुसरण करके $$\delta$$, अर्थात।, $$p \in E(q)$$ यदि राज्यों का कोई क्रम है $$q_1,..., q_k$$ ऐसा है कि
 * $$q_1 = q$$,
 * $$q_{i+1} \in \delta(q_i, \varepsilon)$$ प्रत्येक के लिए $$1 \le i < k$$, और
 * $$q_k = p$$.

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

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

विस्तारित संक्रमण फ़ंक्शन
ε-चालों के बिना एनएफए के समान, संक्रमण फ़ंक्शन $$\delta$$ एनएफए-ε को स्ट्रिंग्स तक बढ़ाया जा सकता है। अनौपचारिक रूप से, $$\delta^*(q,w)$$ उन सभी अवस्थाओं के सेट को दर्शाता है जिन तक ऑटोमेटन राज्य में शुरू होने पर पहुंच सकता है $$q \in Q$$ और स्ट्रिंग को पढ़ना $$w \in \Sigma^* .$$ कार्यक्रम $$\delta^*: Q \times \Sigma^* \rightarrow \mathcal{P}(Q)$$ निम्नानुसार पुनरावर्ती रूप से परिभाषित किया जा सकता है।
 * $$\delta^*(q,\varepsilon) = E(q)$$, प्रत्येक राज्य के लिए $$q \in Q ,$$ और कहाँ $$E$$ एप्सिलॉन बंद होने को दर्शाता है;
 * अनौपचारिक रूप से: खाली स्ट्रिंग को पढ़ने से ऑटोमेटन स्थिति से बाहर हो सकता है $$q$$ ईपीएसलॉन के बंद होने की किसी भी स्थिति के लिए $$q .$$


 * $\delta^*(q,wa) = \bigcup_{r \in \delta^*(q,w)} E(\delta(r,a)) ,$ प्रत्येक राज्य के लिए $$q \in Q ,$$ प्रत्येक स्ट्रिंग $$w \in \Sigma^*$$ और प्रत्येक प्रतीक $$a \in \Sigma .$$
 * अनौपचारिक रूप से: स्ट्रिंग पढ़ना $$w$$ ऑटोमेटन को राज्य से बाहर चला सकता है $$q$$ किसी भी राज्य के लिए $$r$$ पुनरावर्ती गणना सेट में $$\delta^*(q,w)$$; उसके बाद, प्रतीक को पढ़ना $$a$$ इसे चला सकते हैं $$r$$ ईपीएसलॉन बंद करने में किसी भी राज्य के लिए $$\delta(r,a) .$$ कहा जाता है कि ऑटोमेटन एक स्ट्रिंग को स्वीकार करता है $$w$$ अगर
 * $$\delta^*(q_0,w) \cap F \neq \emptyset ,$$ यानी अगर पढ़ रहे हैं $$w$$ ऑटोमेटन को उसकी आरंभिक स्थिति से चला सकता है $$q_0$$ कुछ स्वीकार करने वाले राज्य में $$F .$$

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

औपचारिक संकेतन में, चलो $$M = (\{S_0, S_1, S_2, S_3, S_4\}, \{0, 1\}, \delta, S_0, \{S_1, S_3\})$$ कहाँ संक्रमण संबंध $$\delta$$ इस राज्य संक्रमण तालिका द्वारा परिभाषित किया जा सकता है: $$M$$ इसे दो नियतात्मक परिमित स्वचालित यंत्रों के मिलन के रूप में देखा जा सकता है: एक राज्यों के साथ $$\{S_1, S_2\}$$ और दूसरा राज्यों के साथ $$\{S_3, S_4\}$$. की भाषा $$M$$ इस नियमित अभिव्यक्ति द्वारा दी गई नियमित भाषा द्वारा वर्णित किया जा सकता है $$(1^{*}01^{*}0)^{*} \cup (0^{*}10^{*}1)^{*}$$. हम परिभाषित करते हैं $$M$$ ε-चालों का उपयोग करना लेकिन $$M$$ ε-चालों का उपयोग किए बिना परिभाषित किया जा सकता है।

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

एप्सिलॉन चालों के साथ एक एनएफए दिया गया $$M = (Q, \Sigma, \delta, q_0, F) ,$$ एनएफए को परिभाषित करें $$M' = (Q, \Sigma, \delta', q_0, F') ,$$ कहाँ
 * $$F' = \begin{cases} F \cup \{ q_0 \} & \text{ if } E(q_0) \cap F \neq \{\} \\ F & \text{ otherwise } \\ \end{cases} $$

और
 * $$\delta'(q,a) = \delta^*(q,a) $$ प्रत्येक राज्य के लिए $$q \in Q$$ और प्रत्येक प्रतीक $$a \in \Sigma ,$$ विस्तारित संक्रमण फ़ंक्शन का उपयोग करना $$\delta^*$$ ऊपर परिभाषित.

के संक्रमण कार्यों में अंतर करना होगा $$M$$ और $$M' ,$$ अर्थात. $$\delta$$ और $$\delta' ,$$ और स्ट्रिंग्स में उनका विस्तार, $$\delta$$ और $$\delta'^* ,$$ क्रमश। निर्माण द्वारा, $$M'$$ कोई ε-संक्रमण नहीं है।

कोई इसे साबित कर सकता है $$\delta'^*(q_0,w) = \delta^*(q_0,w)$$ प्रत्येक स्ट्रिंग के लिए $$w \neq \varepsilon$$, की लंबाई पर गणितीय प्रेरण द्वारा $$w .$$ इसके आधार पर कोई यह दिखा सकता है $$\delta'^*(q_0,w) \cap F' \neq \{\}$$ अगर और केवल अगर, $$\delta^*(q_0,w) \cap F \neq \{\},$$ प्रत्येक स्ट्रिंग के लिए $$w \in \Sigma^* :$$
 * अगर $$w = \varepsilon ,$$ यह की परिभाषा से अनुसरण करता है $$F' .$$
 * नहीं तो चलो $$w = va$$ साथ $$v \in \Sigma^*$$ और $$a \in \Sigma .$$ :से $$\delta'^*(q_0,w) = \delta^*(q_0,w)$$ और $$F \subseteq F' ,$$ अपने पास $$\delta'^*(q_0,w) \cap F' \neq \{\} \;\Leftarrow\; \delta^*(q_0,w) \cap F \neq \{\} ;$$ हमें अभी भी दिखाना है$$\Rightarrow$$दिशा।
 * अगर $$\delta'^*(q_0,w)$$ में एक राज्य शामिल है $$F' \setminus \{ q_0 \} ,$$ तब $$\delta^*(q_0,w)$$ जिसमें वही अवस्था समाहित है, जो निहित है $$F$$.
 * अगर $$\delta'^*(q_0,w)$$ रोकना $$q_0 ,$$ और $$q_0 \in F ,$$ तब $$\delta^*(q_0,w)$$ में एक राज्य भी शामिल है $$F ,$$ अर्थात. $$q_0 .$$
 * अगर $$\delta'^*(q_0,w)$$ रोकना $$q_0 ,$$ और $$q_0 \not\in F ,$$ तब अंदर होना चाहिए $\delta^*(q_0,w) = \bigcup_{r \in \delta^*(q,v)} E(\delta(r,a)) .$

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

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


 * संघ (cf. चित्र); अर्थात्, यदि भाषा एल1 कुछ एनएफए ए द्वारा स्वीकार किया जाता है1 और मैं2 कुछ ए द्वारा2, फिर एक एनएफए एu ऐसा निर्माण किया जा सकता है जो L भाषा को स्वीकार करता हो1∪L2.
 * अंतच्छेदन; इसी तरह, ए से1 और ए2 एनएफए एi ऐसा निर्माण किया जा सकता है जो L को स्वीकार करता हो1∩L2.
 * संयोजन
 * नकार; इसी तरह, ए से1 एनएफए एn ऐसा निर्माण किया जा सकता है जो Σ को स्वीकार करता हो*\L1.
 * क्लीन क्लोजर

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

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

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

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

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