4.6.1 · Coding › Theory of Computation
Intuition Bada picture (YEH kyun exist karta hai)
Har computer "baat" — passwords, programs, DNA, protocols — sirf symbols ki ek line hoti hai. Theory of Computation ko ek solid vocabulary chahiye taaki kisi bhi aisi symbol-lines ki collection ke baare mein baat kar sake. Isliye hum ek 3-floor tower banate hain:
Alphabet → String → Language .
Ek alphabet hamare liye Lego bricks deta hai.
Ek string ek cheez hai jo hum bricks se banate hain.
Ek language un allowed cheezein ka set hai jo humne banaye.
Is course mein baaki sab kuch (DFA, regex, grammars, Turing machines) ek aisi machine hai jo decide karti hai ki kaunsi strings ek language mein belong karti hain . Toh ye definitions pakad lo aur baaki sab click karega.
Ek alphabet , jise Σ (Sigma) likha jaata hai, symbols ka ek finite, non-empty set hota hai.
Finite — tum har symbol list kar sakte ho.
Non-empty — kam se kam ek symbol exist karta hai.
Symbol — ek atomic, indivisible token.
YEH finite & non-empty kyun? Agar Σ infinite hota, toh ek finite machine kabhi apne saare inputs "jaaN" nahi sakti. Agar Σ empty hota, toh tum kuch bhi nahi likh sakte — ek bekaar theory.
Binary: Σ = { 0 , 1 }
English-ish: Σ = { a , b , c , … , z }
DNA: Σ = { A , C , G , T }
Single symbol: Σ = { a } (valid! non-empty, finite)
Σ par ek string (ya word ) Σ se liye gaye symbols ka ek finite ordered sequence hota hai.
Empty string , jise ε (epsilon) likha jaata hai, mein koi symbol nahi hota aur yeh har alphabet par ek valid string hai.
Definition String ki length
∣ w ∣ = w mein symbol-positions ki sankhya.
∣ ε ∣ = 0 . w = 0110 ke liye, ∣ w ∣ = 4 .
Hum chahte hain ki concatenation ki length add ho: ∣ x y ∣ = ∣ x ∣ + ∣ y ∣ . ∣ w ∣ ko is tarah banao ki yeh forced ho.
Base: ∣ ε ∣ = 0 — empty string mein count karne ke liye kuch nahi hai.
Step: ek non-empty string hai "koi string x , phir ek aur symbol a ": w = x a .
∣ x a ∣ = ∣ x ∣ + 1
w = a 1 a 2 … a n ko unroll karne par ∣ w ∣ = n 1 + 1 + ⋯ + 1 = n milta hai. ✔
Yeh ( Σ ∗ , concat ) ko identity ε ke saath ek monoid banata hai.
Definition Reversal & substring
Reversal w R : ε R = ε , ( x a ) R = a ( x R ) . Toh ( 011 ) R = 110 . Fact: ( x y ) R = y R x R .
y ek substring hai w ki agar w = x y z kisi strings x , z ke liye.
Prefix : w = y z . Suffix : w = x y .
Definition Kleene star aur plus
Σ k = exactly k length ki saari strings ka set.
==Σ ∗ = ⋃ k ≥ 0 Σ k == = kisi bhi finite length ki saari strings, ε samait .
==Σ + = ⋃ k ≥ 1 Σ k == = length ≥ 1 ki saari strings (ε exclude ).
Relation: Σ ∗ = Σ + ∪ { ε } .
Σ par ek language L , Σ ∗ ka koi bhi subset hota hai: L ⊆ Σ ∗ .
Yeh bas strings ka ek (possibly infinite) set hai.
Intuition "Any subset" kyun?
Ek "language" exactly hai "inputs ka set jo hum accept karte hain." Definition level par koi restriction nahi hoti — restrictions (regular, context-free…) baad mein aati hain aur classify karti hain ki kaunsi languages ek diya hua machine recognise kar sakta hai.
Σ = { 0 , 1 } par Languages
L 1 = ∅ — empty language (kuch accept nahi karta). ∣ L 1 ∣ = 0 .
L 2 = { ε } — sirf empty string accept karta hai. ∣ L 2 ∣ = 1 . (≠ ∅ !)
L 3 = { w : w has even length } — infinite.
L 4 = Σ ∗ — sab kuch accept karta hai.
∅ vs { ε } vs ε (Steel-man)
Galat feeling: "ε 'kuch nahi' hai, aur ∅ 'kuch nahi' hai, toh dono same hain; aur { ε } bhi empty hai."
Yeh sahi kyun lagta hai: teeno sound karte hain "emptiness" ki tarah.
Fix — yeh alag floors par rehte hain:
ε ek string hai (length 0). Ek word.
{ ε } ek language (set) hai jisme ek word hai. ∣ { ε } ∣ = 1 .
∅ ek language hai jisme zero words hain. ∣ ∅ ∣ = 0 .
Box analogy: ∅ = empty box; { ε } = ek blank sheet wala box; ε = blank sheet khud.
Σ ∗ reals ki tarah uncountable hai"
Yeh sahi kyun lagta hai: Σ ∗ infinite hai aur "lagta hai saari binary strings = real numbers in [ 0 , 1 ] ."
Fix: Reals correspond karte hain infinite strings se. Σ ∗ mein sirf finite strings hain, toh hum unhe length se list kar sakte hain → countable . (Saari languages ka set 2 Σ ∗ is uncountable — yahi "kuch languages undecidable hain" ka seed hai.)
Σ = { a , b } ke liye Σ 2 count aur list karo
Formula: ∣ Σ 2 ∣ = 2 2 = 4 . Yeh step kyun? Do positions, 2 choices each, multiply karo.
List (canonical order): aa , ab , ba , bb . Order kyun? Length phir alphabetical → guarantee deta hai ki koi miss na ho.
ε ∈ L jahan L = { w : ∣ w ∣ is even } ?
∣ ε ∣ = 0 . Kyun? Empty string mein koi symbol nahi hai. 0 even hai ⇒ haan , ε ∈ L .
Steel-man: kehne ka mann karta hai "koi string nahi ⇒ kisi length-language mein nahi," lekin 0 ek legitimate even number hai.
L 1 L 2 compute karo jahan L 1 = { 0 , 01 } , L 2 = { 1 , ε }
Har x ∈ L 1 , y ∈ L 2 lo:
0 ⋅ 1 = 01 , 0 ⋅ ε = 0 , 01 ⋅ 1 = 011 , 01 ⋅ ε = 01 .
Collect karo (set!): L 1 L 2 = { 0 , 01 , 011 } . Ek copy kyun drop ki? 01 do baar aaya; sets ek hi rakhte hain.
∣ w R ∣ = ∣ w ∣ ?
Reversal sirf positions ko re-order karta hai; nahi add karta nahi remove karta symbols. Kyun? Positions par bijection ⇒ same count. Toh ∣ w R ∣ = ∣ w ∣ . ✔
Recall Feynman: ek 12-saal ke bacche ko explain karo (hidden — pehle khud try karo!)
Alphabet ko ek letter-stamps ka dibba socho (maano sirf 0 aur 1). Ek string ek word hai jo tum stamp karte ho, jaise 0110 — aur tum kuch bhi stamp nahi kar sakte, woh blank word ε kehlata hai. Ek language ek club hai: yeh ek list hai ki kaunse words allowed hain. Empty club ∅ kissi ko andar nahi aane deta. Ek alag club { ε } exactly ek member ko andar aane deta hai — blank word ko. Computers basically bouncers hain jo check karte hain "kya yeh word club mein hai?"
Mnemonic Tower & empties yaad rakho
"A SLeeping computer" → A lphabet → S tring → L anguage (bricks → wall → allowed walls ka blueprint).
Empties: "∅ has 0, {ε} has 1, ε is the brick." Boxes count karo, blanks nahi.
Alphabet Σ define karne wali teen properties kya hain? Ek finite , non-empty set of symbols .
Σ par string define karo.Σ se symbols ka ek finite ordered sequence (possibly empty).
ε kya hai aur uski length kya hai?Empty string (zero symbols); ∣ ε ∣ = 0 .
String length ki recursive definition. ∣ ε ∣ = 0 aur ∣ x a ∣ = ∣ x ∣ + 1 .
Σ ∗ kya hai?Σ par saari finite strings ka set, ε samait.
Σ + kya hai aur Σ ∗ se uska relation kya hai?Saari non-empty strings; Σ ∗ = Σ + ∪ { ε } .
Σ par length k ki kitni strings hoti hain?∣Σ ∣ k (har k positions mein ∣Σ∣ choices hain).
Σ par language L ki definition.Koi bhi subset L ⊆ Σ ∗ .
∅ aur { ε } mein kya difference hai?∅ mein 0 strings hain (∣ ∅ ∣ = 0 ); { ε } mein 1 string hai (∣ { ε } ∣ = 1 ).
Σ ∗ countable hai ya uncountable?Countably infinite (sirf finite-length strings; shortlex order se list karo).
L 1 L 2 (languages ki concatenation) define karo.{ x y : x ∈ L 1 , y ∈ L 2 } .
∅ ∗ kya hai?{ ε } , kyunki L 0 = { ε } hamesha include hota hai.
w n ki length?n ∣ w ∣ .
Kya concatenation commutative hai? Associative? Commutative nahi (01 = 10 ); associative hai (( x y ) z = x ( y z ) ).
( x y ) R kiske barabar hai?y R x R .
Regular Languages — languages L ⊆ Σ ∗ ki pehli restricted class.
Finite Automata (DFA NFA) — machines jo ek language mein membership decide karti hain.
Regular Expressions — Σ par ∪ , concatenation, ∗ se bani algebra.
Context-Free Grammars — regular se aage ki languages generate karte hain.
Countability and Diophantine Diagonalization — kyun 2 Σ ∗ uncountable hai ⇒ undecidable languages exist karti hain.
Pumping Lemma — yahan prove ki gayi string length & concatenation structure use karta hai.