3.1.1 · Coding › Complexity Analysis
Intuition Ek sentence mein idea
Big-O ek upper bound describe karta hai ki ek function kitni tezi se grow karta hai, constant factors aur chhote inputs ko ignore karke . Jab hum kehte hain "f ( n ) is O ( g ( n )) " toh matlab hai "f utni tez se zyada grow nahi karta jitna g , ek constant multiple tak, jab n kaafi bada ho jaaye."
Intuition Constants kyun hata dete hain
Maano Algorithm A 5 n steps mein run karta hai aur Algorithm B 100 n steps mein. Ek faster machine par, ya smarter compiler ke saath, woh constants 5 aur 100 badal jaate hain. Jo nahi badalta woh hai shape : dono linearly grow karte hain. Big-O shape capture karta hai, machine nahi.
Usi tarah hum chhote n ko ignore karte hain: ek O ( n 2 ) algorithm n = 3 ke liye ek O ( n ) algorithm ko beat kar sakta hai, lekin hum scaling ki parwah karte hain, yaani n → ∞ par behaviour ki.
Toh Big-O jawab deta hai: "Jab input size blast hoti hai, cost roughly kitni badh jaati hai?"
Definition Big-O (formal)
Maano f , g : N → R ≥ 0 . Hum likhte hain
f ( n ) = O ( g ( n ))
agar kuch constants == c > 0 == aur == n 0 ≥ 0 == exist karein aise ki
0 ≤ f ( n ) ≤ c ⋅ g ( n ) for all n ≥ n 0 .
Ise zor se padho: "Koi multiplier c aur koi threshold n 0 hai aise ki n 0 ke baad, f kabhi bhi c g se upar nahi jaata."
Teen cheezein jo tumhe yaad rakhni CHAHIYE:
c — constant multiplier (hidden coefficients ko absorb karta hai).
n 0 — threshold jiske baad bound hold karta hai (chhote-n ki weirdness ko ignore karne deta hai).
Inequality one-sided hai (≤ ): Big-O sirf upper bound hai.
Poora game hai: ek c chuno, ek n 0 chuno, dikhao ki inequality forever baad mein hold karti hai.
Worked example Prove karo
3 n + 7 = O ( n )
Goal: c , n 0 dhundho jaise ki 3 n + 7 ≤ c n for all n ≥ n 0 .
Step 1 — chhote term ko bade term se bound karo.
Yeh step kyun? n ≥ 7 ke liye, 7 ≤ n hai. (Hume koi threshold chahiye; 7 convenient hai.)
3 n + 7 ≤ 3 n + n = 4 n ( n ≥ 7 ) .
Step 2 — constants read off karo.
Yeh step kyun? Right side ab 4 ⋅ n = c g ( n ) hai jahan g ( n ) = n hai.
Toh c = 4 , n 0 = 7 kaam karta hai. ■
(Bahut saare valid choices exist karte hain — jaise c = 10 , n 0 = 1 bhi kaam karta hai. Tumhe sirf ek chahiye.)
Worked example Prove karo
2 n 2 + 3 n + 1 = O ( n 2 )
Goal: 2 n 2 + 3 n + 1 ≤ c n 2 for n ≥ n 0 .
Step 1 — har chhote term ko n 2 se dominate karo.
Yeh step kyun? n ≥ 1 ke liye: 3 n ≤ 3 n 2 aur 1 ≤ n 2 .
2 n 2 + 3 n + 1 ≤ 2 n 2 + 3 n 2 + n 2 = 6 n 2 ( n ≥ 1 ) .
Step 2 — constants read off karo: c = 6 , n 0 = 1 . ■
Lesson: ek degree-d polynomial hamesha O ( n d ) hota hai — har chhoti power ko top power tak push karo.
Worked example Prove karo
f ( n ) = O ( g ( n )) jahan f = n , g = n 2
n ≥ 1 ke liye: n ≤ n 2 , toh c = 1 , n 0 = 1 . Is liye n = O ( n 2 ) .
Yeh kyun matter karta hai: Big-O ek upper bound hai, toh ek function kisi aisi cheez ka O ho sakta hai jo strictly faster grow kare. n = O ( n 2 ) true hai lekin loose hai (tight nahi).
Worked example DISPROVE karo:
n 2 = O ( n )
Yeh step kyun? Maano yeh true hota: n 2 ≤ c n for all n ≥ n 0 .
n > 0 se divide karo: n ≤ c . Lekin c ek fixed constant hai aur n bina bound ke grow karta hai — contradiction jab n > c ho jaaye. Toh koi ( c , n 0 ) exist nahi karta. ■
Yeh dikhata hai ki Big-O claim ko kaise todein : n → ∞ ke saath contradiction nikalo.
Recall Jawab padhne se pehle forecast karo
Q: Kya 1000 n = O ( n ) hai? Pehle yes/no forecast karo, phir justify karo.
Verify: HAAN. c = 1000 , n 0 = 0 lo: 1000 n ≤ 1000 ⋅ n trivially. Bade constants gayab ho jaate hain — Big-O ka yahi point hai.
Recall Forecast karo
Q: Kya 2 n = O ( n 100 ) hai?
Verify: NAHI. Koi bhi exponential eventually kisi bhi polynomial ko overtake kar leta hai: bade n ke liye, 2 n / n 100 → ∞ , toh koi constant c ratio ko cap nahi kar sakta. Exponentials polynomials ko dominate karte hain.
exact running time hai."
Kyun sahi lagta hai: hum casually kehte hain "yeh O ( n ) hai" jaise yeh n ke equal ho.
Fix: Big-O ek upper bound hai, equality nahi. f = O ( g ) allow karta hai ki f slower grow kare. Exact/tight bounds ke liye Θ use karo (dono upper aur lower). f = O ( g ) mein "= " notation ka abuse hai — actually f ∈ O ( g ) hai, ek set membership .
Common mistake "Mujhe constants aur lower-order terms rakhne chahiye."
Kyun sahi lagta hai: real benchmarks mein constant matter karta hai!
Fix: Asymptotic world mein hum deliberately unhe drop karte hain: 5 n 2 + 99 n + 7 = O ( n 2 ) . Definition ka free constant c exactly wahi hai jo coefficients drop karne ki permission deta hai.
n 0 wahan hona chahiye jahan inequality pehli baar true hoti hai."
Kyun sahi lagta hai: lagta hai ki sabse chhota threshold dhundho.
Fix: Koi bhi valid n 0 prove kar deta hai. Tumhe existence chahiye, minimality nahi. Jo bhi algebra easy kare woh lo.
f = O ( g ) toh g = O ( f ) ."
Kyun sahi lagta hai: = se symmetry ka intuition.
Fix: Galat — yeh directional hai. n = O ( n 2 ) lekin n 2 = O ( n ) . Big-O ≤ jaisa hai, = jaisa nahi.
Recall Ek 12-saal ke bacche ko explain karo
Imagine karo tum time kar rahe ho ki ek class mein candy baantne mein kitna time lagta hai. Agar n bacche hain, aur tumhe "roughly n seconds plus thoda setup" lagta hai, toh Big-O woh hai jab tum shoulders shrug karke kehte ho "yeh bacchon ki ginti jaisa grow karta hai." Tumhe parwah nahi ki ek teacher twice as fast hai (woh ek constant hai), aur tumhe chhote setup time ki parwah nahi. Tumhe sirf ek cheez ki parwah hai: agar class double ho jaaye, toh kaam roughly double ho jaata hai. Big-O woh lazy-but-honest tarika hai yeh kehne ka ki kaam scale kaise karta hai jab cheezein bahut badi ho jaati hain.
"O for Over the top, after a while." O = ek Over -estimate (upper bound), jo after a while hold karta hai (past n 0 ), scale karne ki jagah ke saath (× c ).
Big-O formal definition f ( n ) = O ( g ( n )) iff ∃ c > 0 , n 0 ≥ 0 such that 0 ≤ f ( n ) ≤ c g ( n ) for all n ≥ n 0 .
Constant c kya absorb karta hai? Hidden coefficients / constant factors, taaki machine- aur implementation-dependent multipliers ignore ho jaayein.
n 0 ka kya role hai?Ek threshold; bound ko sirf sufficiently large n ke liye hold karna chahiye, chhote-input behaviour ko ignore karke.
Big-O upper bound hai ya lower bound? Sirf upper bound (inequality one-sided ≤ hai). Lower ke liye Ω use karo, tight ke liye Θ .
Prove karo 3 n + 7 = O ( n ) n ≥ 7 ke liye, 3 n + 7 ≤ 3 n + n = 4 n , toh c = 4 , n 0 = 7 .
n 2 = O ( n ) kyun hai?Require karta n ≤ c sab bade n ke liye, jo fixed c ke saath n → ∞ ka contradiction hai.
Big-O ka Sum rule O ( f ) + O ( g ) = O ( max ( f , g )) ; dominant term jeetta hai.
Kya 2 n = O ( n 100 ) hai? Nahi; exponentials eventually kisi bhi polynomial ko dominate karte hain.
Kya f = O ( g ) imply karta hai g = O ( f ) ? Nahi, Big-O directional hai (≤ jaisa), symmetric nahi.
True ya false: ek degree-d polynomial O ( n d ) hota hai True; har chhoti power ko n d se bound karo.
Behaviour as n to infinity
Polynomial is O of top power