4.6.23 · Coding › Theory of Computation
Intuition NP ka ek-sentence soul
NP un problems ki class hai jahan solution dhundhna mushkil ho sakta hai, lekin kisi proposed solution ko check karna easy hai. Socho ek jigsaw puzzle: scratch se solve karna slow hai, lekin agar koi tumhe completed picture de de toh tum seconds mein verify kar sakte ho. Woh asymmetry — solve karna hard, check karna easy — yehi exactly NP capture karta hai.
Definition NP (Nondeterministic Polynomial time)
Ek decision problem (yes/no language) L NP mein hai agar ek verifier exist karta ho — ek deterministic polynomial-time algorithm V — aur ek polynomial p , aisa ki har input x ke liye:
x ∈ L ⟺ ∃ c with ∣ c ∣ ≤ p ( ∣ x ∣ ) and V ( x , c ) = 1.
Yahan c ko certificate (ya witness / proof) kehte hain.
Do equivalent views — dono NP hain, aur unhe equal prove karna ek standard exercise hai:
Verifier view (practical wala): "yes" instances ke paas ek short certificate hota hai jo ek fast checker accept karta hai.
Nondeterministic machine view (naam ki origin): ek nondeterministic Turing machine jo guess kar sakta hai aur polynomial time mein run karta hai, accept karta hai agar koi bhi computation branch accept kare.
Intuition Dono views kyun same hain
Nondeterministic machine certificate ko bit-by-bit "guess" karta hai (guessed string exactly c hai), phir deterministically check karta hai (woh V hai). Ulta, ek verifier + guessing front-end ek nondeterministic machine hai. Certificate hi nondeterministic guess written down hai.
Hum "easy to check" ko formalize karna chahte hain. Raw idea se shuru karo aur har piece ko force karo:
Step 1 — Humein ek extra piece of information chahiye (certificate).
Kyun? "Solution check karna" requires the solution to check. "Kya yeh graph 3-colorable hai?" ke liye, certificate ek coloring hai. c ke bina tum wapas solving mein aa jaoge, checking mein nahi. Isliye hum ∃ c introduce karte hain.
Step 2 — Certificate short hona chahiye: ∣ c ∣ ≤ p ( ∣ x ∣ ) .
Kyun? Agar hum, say, exponential length ke certificates allow karte, toh verifier unhe polynomial time mein read bhi nahi kar paata, aur koi bhi problem trivially "qualify" kar leti. ∣ c ∣ ko ∣ x ∣ mein ek polynomial se bound karna proof ko reasonably sized rakhta hai.
Step 3 — Verifier V polynomial time mein run karna chahiye.
Kyun? "Easy to check" ka literally matlab fast hona chahiye. Polynomial time hamare "feasible" ka robust notion hai. Ek slow checker hard problems ko andar ghusne deta.
Step 4 — One-sided existence: sirf "yes" ko certificate chahiye.
Kyun? x ∈ L ⟺ ∃ c ( V ( x , c ) = 1 ) . "No" instances ke liye, koi bhi certificate kaam nahi karta — dikhane ke liye kuch nahi hai. Yahi asymmetry hai jiske wajah se NP aur co-NP alag maane jaate hain.
Steps 1–4 ko milana hi definition hai. Kuch assume nahi kiya gaya; har clause ek concrete loophole ka minimal fix hai.
L ∈ NP show karne ke liye, teen questions ka jawab do:
Certificate kya hai? ("guessed" object)
Yeh polynomially short kyun hai? (∣ c ∣ ≤ p ( ∣ x ∣ ) )
V ise poly time mein kaise check karta hai?
∈ NP
Problem: Ek Boolean formula ϕ di gayi hai, kya woh satisfiable hai?
Certificate c : variables ke liye ek truth assignment. Yeh step kyun? "Yes" answer ka matlab hai koi assignment ϕ ko true banata hai — woh assignment hi proof hai.
Length: ek bit per variable ⇒ ∣ c ∣ ≤ number of variables ≤ ∣ ϕ ∣ . Polynomial. ✔
Verifier: c ko ϕ mein plug karo, har clause evaluate karo. Yeh step kyun? Ek formula evaluate karna ek linear scan hai — clearly polynomial. ✔
Agar ϕ satisfiable hai, satisfying assignment V = 1 banata hai. Agar unsatisfiable hai, koi assignment kaam nahi karta, toh koi certificate exist nahi karta. Definition met.
Worked example HAMILTONIAN CYCLE
∈ NP
Problem: Kya graph G jisme n vertices hain, ek aisa cycle rakhta hai jo har vertex ko exactly ek baar visit kare?
Certificate: vertices ka ek permutation v 1 , v 2 , … , v n . Kyun? Ek Hamiltonian cycle exactly saari vertices ki ek ordering hai jo ek closed loop form karti hai.
Length: n vertex labels ⇒ O ( n log n ) bits, polynomial. ✔
Verifier: check karo ki ( v i , v i + 1 ) saare i ke liye ek edge hai, saath mein ( v n , v 1 ) bhi, aur saari n vertices exactly ek baar appear karti hain. Kyun? Ye Hamiltonian cycle ki literal conditions hain; har check O ( n ) hai. ✔
⊆ NP — har easy problem "easy to check" bhi kyun hai
Agar L ∈ P, toh directly poly time mein solve karo aur certificate ignore karo (c = ε use karo). Verifier simply problem re-solve karta hai. Toh ek solver ek (lazy) verifier hai. Hence P ⊆ NP .
P ⊆ NP (upar prove kiya).
NP ⊆ EXP : length ≤ p ( ∣ x ∣ ) ke saare certificates brute-force karo; at most 2 p ( ∣ x ∣ ) hain, har ek poly time mein check hota hai ⇒ overall exponential.
P = NP hai ya nahi, yeh open hai (famous million-dollar question).
Common mistake "NP ka matlab Non-Polynomial hai / definitely hard hai."
Kyun sahi lagta hai: letters "NP" dikh-te hain "not polynomial" jaisi, aur NP-complete problems notoriously slow hain. Fix: NP = N ondeterministic P olynomial. P ⊆ NP, toh NP saari easy problems ko contain karta hai . NP verification fast hone ke baare mein hai, unsolvable hone ke baare mein nahi.
Common mistake "Verifier DONO yes aur no instances ke liye symmetrically kaam karna chahiye."
Kyun sahi lagta hai: acche algorithms usually dono taraf answer karte hain. Fix: NP one-sided hai. Sirf "yes" instances ko ek certificate chahiye jo V ko accept karaye. "No" instances ke liye, guarantee sirf yeh hai ki koi certificate succeed nahi karta. (Symmetric flip co-NP hai.)
Common mistake "Koi bhi extra hint string kisi problem ko NP bana deti hai."
Kyun sahi lagta hai: definition ek certificate c add karta hai. Fix: certificate polynomially bounded hona chahiye AUR poly time mein checkable hona chahiye. Ek exponential-length hint, ya ek aisa hint jisme abhi bhi hard check lagta hai, qualify nahi karta.
Common mistake "Nondeterministic machine = random / probabilistic machine."
Kyun sahi lagta hai: dono mein "ek fixed path follow nahi karna" involve hai. Fix: nondeterminism magical guessing hai — accept karo agar koi branch accept kare (saari branches ka OR). Randomness mein probabilities aur majority votes hote hain. Ye alag models hain.
Recall Feynman: 12-year-old ko explain karo
Ek treasure hunt imagine karo ek bade island par. Khazana dhundhna tumhe forever le sakta hai — millions of spots hain. Lekin agar tumhara dost bole "big oak tree ke neeche river ke paas khodo," toh tum wahan daud ke ja sakte ho aur paanch minute mein check kar sakte ho. NP problems woh treasure hunts hain jahan ek tip check karna quick hai , chahe scratch se search karna brutal ho . "Tip" hi certificate hai. NP promise nahi karta ki hunt fast hai — sirf ki answer verify karna easy hai.
Mnemonic Verifier triple yaad rakho
"Short Certificate, Fast Check, Yes-only."
S hort: ∣ c ∣ ≤ p ( ∣ x ∣ )
F ast: V poly time mein run karta hai
Y es-only: certificate exist karta hai iff answer yes hai.
Mnemonic phrase: "SAT Forecasts Yes" (aur SAT classic NP poster-child hai).
NP literally kya stand karta hai? Nondeterministic Polynomial time — NOT "non-polynomial."
NP ko verifiers ke through define karo. L ∈ NP iff ek poly-time verifier V aur polynomial p hai s.t. x ∈ L ⟺ ∃ c , ∣ c ∣ ≤ p ( ∣ x ∣ ) , V ( x , c ) = 1 .
Certificate/verifier ki teen properties kya honi chahiye? Certificate polynomially short hai; verifier poly time mein run karta hai; certificate exist karta hai iff instance "yes" hai.
NP ki definition one-sided kyun hai? Sirf "yes" instances ko certificate chahiye; "no" instances ke liye koi certificate V ko accept nahi karwa sakta (symmetric version co-NP hai).
SAT ke liye certificate? Ek satisfying truth assignment; formula evaluate karke verify karo (poly time).
Hamiltonian Cycle ke liye certificate? Saari vertices ka ek permutation; check karo ki har consecutive pair (aur wrap-around) ek edge hai aur saari vertices ek baar appear karti hain.
COMPOSITE ke liye certificate? Ek nontrivial factor d , 1 < d < N ; verify karo N mod d = 0 .
P ⊆ NP kyun hai? Ek poly-time solver ek verifier ki tarah act karta hai jo certificate ignore karke problem re-solve karta hai.
NP ⊆ EXP kyun hai? Saare ≤ 2 p ( ∣ x ∣ ) certificates brute-force karo, har ek ko poly time mein check karo.
Verifier aur nondeterministic-machine views kaise connect hote hain? Nondeterministic guess written down hi certificate hai; guessing ke baad deterministic check hi verifier hai.
Kya "nondeterministic" aur "random" same hain? Nahi — nondeterminism accept karta hai agar KOI branch accept kare (ek OR); randomness probabilities/majority use karta hai.
P (complexity class) — "solve fast" sibling; P ⊆ NP.
co-NP — mirror class jisme "no" instances ke liye short certificates hote hain.
NP-Completeness — NP mein sabse hard problems Polynomial-Time Reductions ke through.
Cook–Levin Theorem — SAT NP-complete hai; is note ko verifier idea se jodta hai.
Nondeterministic Turing Machine — naam ke peeche ka machine model.
Boolean Satisfiability (SAT) — canonical NP example upar use kiya gaya.
P vs NP Problem — open question jiske around poori class orbits karti hai.
Hard to solve easy to check
Short size |c| le p of |x|