एक Finite Automaton के साथ शुरू करें। इसमें राज्य और स्वीकृति वाले राज्य और संक्रमण हैं।
अब, यह हर राज्य की की एक से अधिक trasition नियम देते हैं, और कहते हैं कि यह स्वीकार करता है वहां मौजूद संक्रमण नियमों का एक सेट इस तथ्य के बाद उठाया कि स्वीकृति राज्य को इनपुट स्ट्रिंग दी गई है।
एक बार जब आपके पास अपना इनपुट स्ट्रिंग होता है, तो उस स्ट्रिंग को स्वीकार करने के लिए ठोस संक्रमणों का एक निश्चित सेट होता है और कहता है कि यह (एक समय में) गुजरता है। लेकिन यह जो बदलाव करता है वह केवल स्ट्रिंग के अंत में चुना जाता है । जबकि स्ट्रिंग को पढ़ा जा रहा है, कौन सा रास्ता तय करना है।
यह गैर-नियतात्मक है। यह ग्राफ के माध्यम से अपना रास्ता चुन लेता है जब आप इसे पूरी समस्या देते हैं, न कि यह इनपुट को पढ़ता है।
अब, हम इस विचार प्रयोग की तुलना में इसे अलग तरह से औपचारिक रूप देते हैं, लेकिन इससे आपको प्रेरणा मिलती है कि इसे यह नाम क्यों मिला।
यह बताता है कि इसे पहली जगह में नाम कैसे मिला। हां, आप NDFA को पूरी तरह से नियतात्मक तरीके से मॉडल कर सकते हैं, लेकिन नाम चिपचिपे हैं । एक बार जब आप कुछ बॉब को बुलाते हैं, तो इसका नाम बदलकर कुछ और करने के लिए एक संचार लागत होती है, क्योंकि कोई नहीं जानता कि आप किस बारे में बात कर रहे हैं जब आप इसे एलिस कहते हैं।