4.6.3 · Coding › Theory of Computation
Intuition Badi idea (WHY NFAs exist)
Ek DFA ko har (state, symbol) ke liye exactly ek next state choose karna padta hai. Yeh bahut rigid hai. Ek NFA (Nondeterministic Finite Automaton) uska relaxed cousin hai: ek state se, ek symbol par, yeh kai states mein ja sakta hai, zero states mein ja sakta hai, ya bina koi symbol padhe bhi move kar sakta hai (ek ε-transition).
Hum yeh kyun chahte hain? Kyunki isse machines design karna bahut aasaan ho jaata hai. "Kya string mein ab hai?" ya "Kya yeh 01 par khatam hoti hai?" — tum ek NFA seconds mein sketch kar sakte ho jahan DFA ke liye careful bookkeeping ki zarurat padti. Asli fayda yeh hai: har NFA ko ek equivalent DFA mein convert kiya ja sakta hai, isliye NFAs aur DFAs exactly same class of languages accept karte hain (regular languages). NFAs power mein kuch extra nahi karte lekin design mein mehnat bachate hain.
Definition Nondeterminism (intuition)
Machine ko "guess" karne ki permission hai. Har step par woh ek saath kai states mein ho sakti hai. Ek string accept hoti hai agar choices ke through kam se kam ek path exist kare jo accepting state par khatam ho. Ek lucky path kaafi hai.
Intuition DFA ke mukable do naye powers
Multiple targets : δ ( q , a ) ek set of states return karta hai, sirf ek nahi.
ε-moves : machine input ε (empty string) par state change kar sakti hai — yaani free mein , bina koi symbol consume kiye.
Hum "guessing + free moves wali machine" ko nail down karna chahte hain. Humen minimally kaun se pieces chahiye?
States ka ek finite collection → use Q kaho.
Input symbols ki alphabet → Σ .
Ek rule jo bataye hum kahan ja sakte hain → transition function δ .
Ek jagah shuru karne ke liye → q 0 .
Yeh kehne ka tarika ki "tum jeete" → accepting states F .
DFA se bass ek twist hai aur woh hai δ ka output type .
Definition NFA — formal definition
Ek NFA ek 5-tuple N = ( Q , Σ , δ , q 0 , F ) hai jahan
Q = states ka finite set
Σ = finite input alphabet (note: ε ∈ / Σ )
q 0 ∈ Q = start state
F ⊆ Q = accepting (final) states ka set
δ = transition function jiska signature hai
δ : Q × ( Σ ∪ { ε }) ⟶ P ( Q )
Kyunki ε-moves free hain, koi symbol padhne se pehle/baad machine silently ε-arrows ke saath slide kar sakti hai. Humen free mein reachable saari cheez collect karni hai.
Ek state q ke liye, ECLOSE ( q ) woh saari states ka set hai jo q se zero ya zyada ε-transitions use karke reachable hain (q khud bhi shamil hai).
Ek set S ke liye: ECLOSE ( S ) = q ∈ S ⋃ ECLOSE ( q ) .
"q khud ko shamil karna" kyun? Zero ε-moves allowed hai — tum hamesha "free mein wahi reh" sakte ho.
δ ek symbol handle karta hai. Hum ε-moves ko sahi se fold karte hue puri string w ke liye rule derive karte hain.
Base case: kuch bhi padhne se pehle, tum wahin ho jahan start se ε-moves le jaati hain.
δ ^ ( q , ε ) = ECLOSE ( q )
Inductive step: w = x a (string x phir symbol a ) process karne ke liye:
R = δ ^ ( q , x ) lo — x padhne ke baad states ka set.
Har r ∈ R se, a padho: ⋃ r ∈ R δ ( r , a ) collect karo.
Phir ε-closure lo (a consume karne ke baad free slides).
Worked example Example 1 — multiple targets, koi ε nahi
Language: { 0 , 1 } par strings jo 1 par khatam hon.
Q = { q 0 , q 1 } , start q 0 , F = { q 1 } .
δ ( q 0 , 0 ) = { q 0 } , δ ( q 0 , 1 ) = { q 0 , q 1 }
δ ( q 1 , 0 ) = ∅ , δ ( q 1 , 1 ) = ∅
101 trace karo:
Start: { q 0 } . Kyun? ECLOSE(q 0 )={ q 0 } (koi ε-arrows nahi).
1 padho: δ ( q 0 , 1 ) = { q 0 , q 1 } . Yeh step kyun? NFA guess karta hai: shayad yeh 1 aakhri hai (q 1 ), shayad nahi (q 0 ).
0 padho: q 0 → { q 0 } se; q 1 → ∅ se. Toh { q 0 } . Kyun? q 1 wala guess mar gaya (0 end nahi ho sakta), lekin q 0 bachta hai.
1 padho: q 0 → { q 0 , q 1 } se. Result { q 0 , q 1 } .
{ q 0 , q 1 } ∩ F = { q 1 } = ∅ ⇒ accept ✅
Worked example Example 2 — ε-transitions (union aasaan ho gayi)
Language: 0 ∗ ya 1 ∗ form ki strings (saare 0's ya saare 1's, empty bhi allowed).
States: ek fresh start s ; ek all-0 loop a ; ek all-1 loop b . F = { a , b } .
δ ( s , ε ) = { a , b } ← dono branches mein free mein split
δ ( a , 0 ) = { a } , δ ( a , 1 ) = ∅
δ ( b , 1 ) = { b } , δ ( b , 0 ) = ∅
00 trace karo:
Start: δ ^ ( s , ε ) = ECLOSE ( s ) = { s , a , b } . Kyun? ε-arrows s ko dono a aur b mein free mein le jaate hain.
0 padho: s → ∅ , a → { a } , b → ∅ se; union = { a } ; ECLOSE= { a } .
0 padho: a → { a } se ⇒ { a } .
{ a } ∩ F = ∅ ⇒ accept ✅
01 trace karo: pehle 0 ke baad hum { a } mein hain; 1 padho ⇒ δ ( a , 1 ) = ∅ . Set khali ho jaata hai ⇒ reject ✅ (mixed string correctly reject hua).
Worked example Example 3 — empty string
Example 2 mein, kya NFA ε accept karta hai?
δ ^ ( s , ε ) = { s , a , b } , jismein a ∈ F hai ⇒ accept . Yeh kyun matter karta hai: Start ka ε-closure decide karta hai ki empty string language mein hai ya nahi.
Common mistake "NFA tab accept karta hai jab
saare paths final state tak pahunchen."
Kyun sahi lagta hai: Roz ki zindagi mein, "machine string accept karti hai" sunne par guarantee lagti hai, aur guarantees ka matlab "hamesha" lagta hai.
Fix: Acceptance existential hai — final state tak ek surviving path kaafi hai. Formally δ ^ ( q 0 , w ) ∩ F = ∅ , na ki δ ^ ( q 0 , w ) ⊆ F . Dead branches simply ignore ho jaate hain.
Common mistake Har symbol ke baad ε-closure lena bhool jaana.
Kyun sahi lagta hai: ε "kuch nahi karna" jaisa lagta hai, isliye log ise skip kar dete hain.
Fix: ε-moves tumhe symbol ke baad final state mein le ja sakta hai. Closure skip karne se galat rejection ho sakti hai. Hamesha: symbol padho → phir ECLOSE karo .
δ ( q , a ) = ∅ ko error/crash maanna.
Kyun sahi lagta hai: DFA mein ek missing edge broken lagti hai.
Fix: NFA mein, ∅ ka sirf matlab hai woh branch mar gayi . Doosri branches fir bhi accept kar sakti hain. Empty = illegal.
Σ alphabet ke andar ε list karna.
Kyun sahi lagta hai: ε, δ mein appear karta hai, toh ek symbol jaisa lagta hai.
Fix: ε ∈ / Σ . Yeh sirf δ ke domain mein Σ ∪ { ε } ke roop mein use hota hai; yeh kabhi kisi string ka input symbol nahi hota.
Recall Khud test karo (answers chhupao)
Ek NFA ke δ ka output type kya hai? → P ( Q ) , states ka ek set .
NFA w ko kab accept karta hai? → koi ek path: δ ^ ( q 0 , w ) ∩ F = ∅ .
q ko ECLOSE ( q ) mein kyun shamil karte hain? → zero ε-moves allowed hain.
Kya ε ∈ Σ hai? → Nahi.
Kya NFAs DFAs se zyada powerful hain? → Nahi; same language class (regular).
What is the formal 5-tuple of an NFA? ( Q , Σ , δ , q 0 , 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 δ ^ ( q 0 , w ) ∩ F = ∅ — at least one reachable state is accepting.
What is the base case of δ ^ ? δ ^ ( q , ε ) = ECLOSE ( q ) .
Write the inductive step of δ ^ . δ ^ ( q , x a ) = 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: ek 12-saal ke bachche ko explain karo
Socho tum ek maze game khel rahe ho aur kuch doors par tum khud ko clone karke copies ko ek saath kai hallways mein bhej sakte ho. Kuch doors toh secret slides hain jo ek clone ko instantly move kar deti hain bina ek step use kiye (woh hai ε-move). Tum jeet jaate ho agar tumhari koi bhi copy treasure room tak pahunch jaaye. Tumhe saari copies ki zarurat nahi — sirf ek lucky clone kaafi hai. Ek NFA exactly yahi game khelti hai, jahan ek word ke letters steps hain.
"Set out, set in, guess to win."
δ ek set return karta hai (set out),
ε tumhe free mein andar slide karne deta hai (set in),
accept karo agar koi guess jeete.
Aur: N FA = N ondeterminism = Next states ki N umber N one, one, ya many ho sakti hai.
Agar sirf ek line yaad rakho: NFA ka δ ek set output karta hai aur ε use kar sakta hai; accept karo iff koi path F mein land kare. Baaki sab (ε-closure, δ ^ , examples) usi ek idea ka careful bookkeeping hai.
DFA — formal definition — deterministic special case (δ singletons return karta hai, koi ε nahi).
Subset Construction (NFA to DFA) — prove karta hai NFA = DFA in power.
Regular Languages — exactly woh languages jo NFAs/DFAs accept karte hain.
Regular Expressions — Thompson's construction regexes se ε-NFAs banata hai.
Closure Properties of Regular Languages — union/concat/star ε-NFAs se aasaani se design kiye jaate hain.
equivalent to DFA accepts
Transition function delta
5-tuple Q Sigma delta q0 F