WHY δ ka yeh signature hai: kisi bhi moment pe machine dekhti hai (current state, agla input symbol ya kuch nahi, stack ke top pe symbol). Uska response ek set hota hai (new state, push karne wali string) — ek set isliye kyunki PDAs nondeterministic hote hain, aur ε-input use karke woh input consume kiye bina stack ko rearrange kar sakti hai.
WHY yeh triple: yeh exactly woh information hai jo machine ka poora future determine karne ke liye chahiye — jo input already padha ja chuka hai usse koi matlab nahi, sirf jo bacha hai aur jo memory mein hai woh matter karta hai.
Idea: har a ke liye ek A push karo, har b ke liye ek A pop karo. Stack exactly tab empty hogi jab counts match karein.
States {q}, Z0 = bottom. Transitions:
δ(q,a,Z0)={(q,AZ0)} — Kyun? pehla a: bottom marker ke upar A push karo.
δ(q,a,A)={(q,AA)} — Kyun? har agle a ke liye: ek aur A push karo (count up).
δ(q,b,A)={(q,ε)} — Kyun? har b ke liye: ek A pop karo (ek a ko match karo).
δ(q,ε,Z0)={(q,ε)} — Kyun? barabar a's aur b's ke baad A's khatam ho jaate hain; Z0 pop karo ⇒ empty stack ⇒ accept.
aabb pe run:(q,aabb,Z0)⊢(q,abb,AZ0)⊢(q,bb,AAZ0)⊢(q,b,AZ0)⊢(q,ε,Z0)⊢(q,ε,ε)✓Yeh step (last) kyun: rule 4 ε-input pe marker ko pop karta hai, empty stack bacha ke → empty stack se accept.
Rules 1–3 rakho, lekin Z0 dump karne ki jagah, use check karo:
4'. δ(q,ε,Z0)={(qf,Z0)} — final state qf mein move karo jab sirf marker bacha ho.
F={qf} set karo. Popping kyun nahi? Final-state acceptance stack ko ignore karta hai; humein sirf qf mein hona chahiye jab input poora padh liya ho.
aabb pe run khatam hota hai (q,ε,Z0)⊢(qf,ε,Z0), qf∈F → accept. ✓
L={wwR∣w∈{a,b}∗} ke liye PDA guess karta hai midpoint:
Phase 1: har input symbol push karo.
ε-move: guess karo "hum abhi middle pe hain."
Phase 2: pop karna current input se match karna chahiye.
Nondeterministic kyun? Ek deterministic PDA unmarked middle detect nahi kar sakta. Yeh dikhata hai DPDA ⊊ PDA: nondeterministic PDAs strictly zyada strong hote hain.
Recall Feynman: ek 12-saal ke bachche ko samjhao
Sochoh ek robot letters ki ek strip padh raha hai. Robot ke paas ek chhota sa brain hai (kuch moods) aur plates ka ek stack. Jab woh koi letter dekhta hai toh woh ek plate upar rakh sakta hai ya top wali plate utha sakta hai. Yeh check karne ke liye ki "har open bracket ka ek close bracket hai," woh har ( ke liye ek plate neeche rakhta hai aur har ) ke liye ek uthaa leta hai. Agar end mein saari plates khatam ho jaayein, toh brackets match kiye! "Empty stack = accept" matlab koi plate nahi bachi. "Final state = accept" matlab robot ek khush mood mein khatam hota hai, plates ki parwah kiye bina. "Tum pass ho gaye" kehne ke do tarike, same power.