What is the output type of an NFA's δ? → P(Q), a set of states.
What makes an NFA accept w? → some path: δ^(q0,w)∩F=∅.
Why include q in ECLOSE(q)? → zero ε-moves is allowed.
Is ε∈Σ? → No.
Are NFAs more powerful than DFAs? → No; same language class (regular).
What is the formal 5-tuple of an NFA?
(Q,Σ,δ,q0,F) with δ:Q×(Σ∪{ε})→P(Q).
How does an NFA's δ differ from a DFA's?
NFA returns a set (P(Q)) and allows ε in its domain; DFA returns a single state and has no ε.
Define ε-closure of a state q.
All states reachable from q by zero or more ε-transitions, including q itself.
When does an NFA accept a string w?
When δ^(q0,w)∩F=∅ — at least one reachable state is accepting.
What is the base case of δ^?
δ^(q,ε)=ECLOSE(q).
Write the inductive step of δ^.
δ^(q,xa)=ECLOSE(⋃r∈δ^(q,x)δ(r,a)).
Is ε a member of Σ?
No; ε only appears in δ's domain as Σ∪{ε}.
What does δ(q,a)=∅ mean in an NFA?
That branch dies on a; it is not an error, other branches may still accept.
Are NFAs strictly more powerful than DFAs?
No — both recognize exactly the regular languages.
Recall Feynman: explain to a 12-year-old
Imagine you're playing a maze game and at some doors you can clone yourself and send copies down several hallways at once. Some doors are even secret slides that move a clone instantly without using up a step (that's the ε-move). You win if any copy of you reaches the treasure room. You don't need all of them — just one lucky clone. An NFA is a machine that plays exactly this game with letters of a word as steps.
Dekho, DFA bahut strict hota hai: har state se, har symbol par, exactly ek hi next state. NFA thoda chill cousin hai — ek state se ek symbol par tum multiple states me ja sakte ho, ya kahin nahi (empty set), ya bina koi symbol padhe hi free me move kar sakte ho. Yeh free move hi epsilon transition hai. Soch lo jaise tum maze me apne clones bana rahe ho aur sab hallways try kar rahe ho — agar koi ek bhi clone treasure (final state) tak pahunch gaya, to string accept ho gayi. Sabhi clones ko pahunchna zaroori nahi.
Formal definition same 5-tuple hai (Q,Σ,δ,q0,F), bas ek twist: δ ka output ek single state nahi, balki ek set of states (P(Q)) hai, aur input me ε allowed hai. Yahi do changes poora khel hain. Epsilon ko Σ ke andar mat daalna — woh sirf δ ke domain me Σ∪{ε} ke roop me aata hai, kabhi string ka actual symbol nahi banta.
Jab string run karte ho, har symbol padhne ke baad ECLOSE (epsilon-closure) lena nahi bhulna — matlab jitne states free epsilon arrows se reach ho sakte hain, sab add kar do. Yeh step log aksar miss kar dete hain aur galti se reject kar dete hain. Acceptance ka rule: δ^(q0,w)∩F=∅ — yaani kam se kam ek reachable state final hona chahiye.
Important baat: NFA, DFA se zyada powerful nahi hai. Dono exactly same languages (regular languages) recognize karte hain — subset construction se NFA ko DFA me convert kar sakte ho. NFA ka faayda sirf yeh hai ki design karna aasaan ho jaata hai, especially union, concatenation, aur star jaise operations ke liye epsilon transitions bahut handy hote hain.