3.7.2 · D3 · Coding › Algorithm Paradigms › Divide and conquer — template, correctness, recurrence
Yeh page ek drill hai. Parent note ne machinery banayi thi — template, recurrence T ( n ) = a T ( n / b ) + f ( n ) , aur Master Theorem . Yahan hum us machinery par har tarah ka input daalte hain aur answer nikalte hain, taaki jab exam ya koi real problem tumhe ek recurrence de, tum uski shape pehle se dekh chuke ho.
Shuru karne se pehle, ek reminder ki har letter ka kya matlab hai, kyunki hum ise re-derive nahi karenge — hum ise har baar use karenge:
Recall Woh numbers jo tum hamesha pehle padhte ho
Question ::: T ( n ) = a T ( n / b ) + f ( n ) mein a , b , f kya hain?
a ::: kitne subproblems har call spawn karta hai
b ::: woh factor jisse input shrink hota hai (size n → n / b ho jaati hai)
f ( n ) ::: non-recursive work — divide cost plus combine cost
c crit ::: derived watershed exponent log b a , yaani leaves ki cost n l o g b a (a , b se compute hota hai, read off nahi)
Poora game yeh hai: c crit = log b a compute karo, phir f ( n ) ko n c crit se compare karo. Teen outcomes possible hain — f chhota, f barabar, f bada — aur kuch degenerate recurrences bhi hain jahan yeh comparison apply hi nahi hoti. Yahi hamara matrix hai.
Definition Base cases ki cost constant hoti hai
Poore note mein, sabse chhote inputs (threshold se neeche size) directly solve kiye jaate hain, aur hum us direct cost ko T ( 0 ) = T ( 1 ) = Θ ( 1 ) lete hain. Yeh standard convention hai: ek base case ek fixed, input-independent amount of work karta hai. Hum ise har unrolling mein silently use karenge — jab bhi koi subproblem size 0 ya 1 hit kare, uska contribution bas Θ ( 1 ) hai.
Definition Floors, ceilings, aur non-integer splits
Real recurrences rarely perfectly split hoti hain: mergesort on n = 7 makes halves of size 4 aur 3 , toh honestly T ( n ) = T (⌈ n /2 ⌉) + T (⌊ n /2 ⌋) + Θ ( n ) . Kya yeh ± 1 roundings answer badal deti hain? Nahi. Is page ki har recurrence ke liye tum floors aur ceilings drop kar sakte ho aur pretend kar sakte ho ki split exact hai, kyunki correction har level par input ko bas ek constant additive amount se perturb karti hai, jo Θ -class nahi badal sakta. Master Theorem precisely T ( n ) = a T ( n / b ) + f ( n ) ke liye stated hai kyunki ek theorem ("sloppiness lemma") guarantee karta hai ki T (⌈ n / b ⌉) aur T ( n / b ) same asymptotics share karte hain. Sirf jab split bilkul constant factor nahi hoti (Cell E, n → n − 1 ) tabhi yeh rescue fail hota hai.
Har divide-and-conquer recurrence jo tum miloge, in cells mein se ek mein fit hogi. Columns hain f watershed n l o g b a ke relative kaise hai ; rows hain special / degenerate inputs jo naive routine ko tod dete hain.
Cell
Ise yeh cell kya banata hai
Example jo hum solve karte hain
A — Balanced (Case 2)
f ( n ) = Θ ( n l o g b a ) : divide-cost leaf-cost se match karta hai
Ex 1 (Mergesort), Ex 8 (word problem)
B — Leaf-heavy (Case 1)
f ( n ) n l o g b a se polynomially chhota hai
Ex 2 (Karatsuba )
C — Root-heavy (Case 3)
f ( n ) polynomially bada hai, plus regularity hold karta hai
Ex 3
D — Single subproblem (a = 1 )
tree ek chain hai, c crit = 0
Ex 4 (Binary Search )
E — Uneven / degenerate split
subproblem sizes differ karte hain, ya ek size 0 hai; shrink constant factor nahi hai (b → 1 ), toh floors/ceilings ko wave away nahi kiya ja sakta
Ex 5 (bad Quicksort pivot)
F — Basic Master Theorem fails
f sirf ek log factor watershed se off hai — extended rule ya tree chahiye
Ex 6
G — Regularity fails
f root-heavy lagta hai lekin a f ( n / b ) ≤ k f ( n )
Ex 7
H — Exam twist
n shrink / disguised recurrence
Ex 8 (word problem), Ex 9
Ab hum har cell ko hit karte hain.
Worked example Ex 1 — Mergesort, the archetype
T ( n ) = 2 T ( n /2 ) + Θ ( n ) solve karo.
Forecast: padhne se pehle growth guess karo. Do half-size sorts plus ek linear merge — n 2 se fast? n se slow?
a , b , f read off karo. Yahan a = 2 (do halves), b = 2 (har ek n /2 hai), f ( n ) = Θ ( n ) .
Yeh step kyun? Baad mein sab kuch ek comparison hai, aur jab tak yeh teen numbers nahi hain, compare nahi kar sakte.
Watershed compute karo c crit = log b a = log 2 2 = 1 , toh leaf cost n 1 = n hai.
Yeh step kyun? n c crit woh single yardstick hai jispe hum f ( n ) ko hold karte hain.
Compare karo. f ( n ) = Θ ( n ) = Θ ( n 1 ) = Θ ( n c crit ) — bilkul tie. Yahi Case 2 ki definition hai.
Yeh step kyun? Tie ka matlab hai ki recursion tree ka koi bhi level dominate nahi karta; har level Θ ( n ) same work karta hai.
Case 2 apply karo: T ( n ) = Θ ( n c crit log n ) = Θ ( n log n ) .
Yeh step kyun? log 2 n levels hain (neeche figure dekho) aur har ek Θ ( n ) cost karta hai; equal work × number of levels = multiply.
Verify karo: levels directly count karo. Depth i par 2 i nodes hain har ek size n / 2 i ka, toh level work = 2 i ⋅ ( n / 2 i ) = n . Size 1 tak levels ki number: log 2 n . Total = n log 2 n . ✓ Match karta hai. Dekho Mergesort aur Recurrence Relations .
Figure padhne ka tarika: har row recursion ka ek level hai. Black dots subproblems hain; right par red label unka total work dikhata hai. Notice karo punchline — haalaanki dots har level double hote hain aur half shrink hote hain, unki widths cancel ho jaati hain, toh har red label n padhta hai . log 2 n rows hain (left par black double-arrow), aur n work per row times log 2 n rows exactly wahi Θ ( n log n ) hai jo humne compute kiya.
Worked example Ex 2 — Karatsuba multiplication
T ( n ) = 3 T ( n /2 ) + Θ ( n ) solve karo.
Forecast: schoolbook char ki jagah teen half-size multiplies. n 2 se neeche? Kitna?
Read off karo: a = 3 , b = 2 , f ( n ) = Θ ( n ) .
Yeh step kyun? Hamesha wahi pehla move — bina teen numbers ke Master-Theorem case nahi choose kar sakte, aur yahan a = 3 (teen products) poori novelty hai, toh pehle ise pin karo.
Watershed: c crit = log 2 3 ≈ 1.585 . Leaf cost n 1.585 .
Yeh step kyun? Yahan a = b , toh exponent ek clean integer nahi hai — tum actually log lena padega, eyeballing nahi chalega.
Compare karo. Class f ( n ) = Θ ( n ) se representative n lo (class mein koi bhi function same compare karta hai). Kya n , n 1.585 se chhota hai? Haan, aur polynomially bhi: n = n 1.585 − ε with ε ≈ 0.585 > 0 . Yeh Case 1 hai.
Yeh step kyun? Case 1 ko gap ek genuine power of n chahiye (sirf log factor nahi); 0.585 ek fat polynomial gap hai, toh hum safe hain.
Case 1 apply karo: leaves sab kuch swamp kar dete hain, T ( n ) = Θ ( n l o g 2 3 ) ≈ Θ ( n 1.585 ) .
Verify karo: leaf term alone n l o g 2 3 = n 1.585 hai; summed non-recursive work ratio a / b = 3/2 > 1 wali geometric series hai, apne last (leaf) term se dominated — toh total = Θ ( n 1.585 ) . Aur 1.585 < 2 , schoolbook ko beat karta hai. ✓ Dekho Karatsuba .
Worked example Ex 3 — expensive combine wala divide
T ( n ) = 2 T ( n /2 ) + Θ ( n 2 ) solve karo.
Forecast: combine step n 2 heavy hai. Kya recursion abhi bhi matter karti hai, ya top call dominate karta hai?
Read off karo: a = 2 , b = 2 , f ( n ) = Θ ( n 2 ) .
Yeh step kyun? Yahan ek heavy ingredient f ( n ) = n 2 hai — ek expensive combine — toh hum ise explicitly identify karte hain test karne se pehle ki yeh watershed ke kis taraf land karta hai.
Watershed: c crit = log 2 2 = 1 , leaf cost n 1 .
Yeh step kyun? Yardstick n c crit = n 1 haath mein chahiye taaki dekh sakein ki combine cost n 2 usse kitna upar hai.
Compare karo: f ( n ) = n 2 vs n 1 . Ab f bada hai, polynomially: n 2 = n 1 + ε with ε = 1 > 0 . Candidate Case 3 .
Yeh step kyun? Case 3 "root dominates" case hai; claim karne se pehle confirm karna hoga ki f leaves ko ek honest power of n se beat karta hai, aur ε = 1 exactly wahi confirmation hai.
Regularity condition check karo a f ( n / b ) ≤ k f ( n ) for some k < 1 :
2 ⋅ ( 2 n ) 2 = 2 ⋅ 4 n 2 = 2 n 2 = 2 1 f ( n ) .
Toh k = 2 1 < 1 . ✓ Regularity hold karta hai.
Yeh step kyun? Case 3 ek promise hai ki work tree se neeche jaate hue shrink karta hai; regularity us promise ka proof hai. Skip karo aur galat ho sakte ho (dekho Ex 7).
Case 3 apply karo: T ( n ) = Θ ( f ( n )) = Θ ( n 2 ) .
Verify karo: per-level work hai n 2 , 2 n 2 , 4 n 2 , … — ratio 2 1 wali geometric series, sum 2 n 2 = Θ ( n 2 ) , root se dominated. ✓
Figure padhne ka tarika: har bar ek recursion level par total work hai, n 2 ki units mein. Ex 1 ke flat profile ke unlike, yahan bars geometrically shrink karte hain — har ek pichle ka half hai. Depth 0 par tall red bar root hai, aur kyunki bars itni fast girti hain, poora tower bas 2 × us pehle bar ko sum karta hai. "Root dominates" yaise dikhta hai, aur isliye answer Θ ( n 2 ) hai, sirf root ki cost.
Worked example Ex 4 — Binary search
T ( n ) = T ( n /2 ) + Θ ( 1 ) solve karo.
Forecast: tum array ka aadha phenko aur kabhi wapas nahi dekhte. Kitne steps?
Read off karo: a = 1 , b = 2 , f ( n ) = Θ ( 1 ) .
Yeh step kyun? Notice a = 1 : har call ek recursive call karta hai, toh "tree" ek single vertical chain hai, branching tree nahi.
Watershed: c crit = log 2 1 = 0 , leaf cost n 0 = 1 .
Yeh step kyun? 1 ka log 0 hai — leaves ek constant cost karte hain, n ka power nahi. Yahi single-subproblem recurrences ko itna cheap banata hai.
Compare karo: f ( n ) = Θ ( 1 ) = Θ ( n 0 ) = Θ ( n c crit ) — tie, Case 2 .
Yeh step kyun? Hum f ko yardstick n c crit = n 0 = 1 se compare karte hain; dono constant hain, toh na root na leaves dominate karta hai — Case 2 ki pehchaan.
Case 2 apply karo: T ( n ) = Θ ( n 0 log n ) = Θ ( log n ) .
Yeh step kyun? Case 2 leaf cost ko levels ki number se multiply karta hai; leaf cost n 0 = 1 aur log n levels ke saath, product exactly Θ ( log n ) hai.
Verify karo: chain ki length "kitni baar n ko halve kar sakte ho 1 tak pahunchne ke liye" = log 2 n hai, har ek Θ ( 1 ) work karta hai → Θ ( log n ) . ✓ Dekho Binary Search .
Figure padhne ka tarika: a = 1 ki wajah se picture ek single vertical stack hai, branching tree nahi — har level par ek dot, har ek apni shrinking size (n , n /2 , n /4 , … ) aur constant O ( 1 ) work ke saath labelled. Neeche red dot base case hai, size 1 . Black double-arrow rungs count karta hai: log 2 n of them, har ek O ( 1 ) karta hai, toh total Θ ( log n ) hai.
Worked example Ex 5 — Quicksort ka worst pivot (size-
0 subproblem)
Ek bura pivot sab kuch ek side par daal deta hai. Recurrence ban jaata hai
T ( n ) = T ( n − 1 ) + T ( 0 ) + Θ ( n ) .
Ise solve karo.
Forecast: split n − 1 aur 0 hai — "divide" barely shrink karta hai. Kya yeh abhi bhi n log n hai? Ya bura?
Size-0 term collapse karo. Hamare base-case convention se T ( 0 ) = Θ ( 1 ) , toh yeh Θ ( n ) non-recursive work mein absorb ho jaata hai:
T ( n ) = T ( n − 1 ) + Θ ( 1 ) + Θ ( n ) = T ( n − 1 ) + Θ ( n ) .
Yeh step kyun? Size 0 ka subproblem koi recursion nahi karta — woh bas ek constant return karta hai. Us constant ko explicitly name karna (T ( 0 ) = Θ ( 1 ) ) hi use allow karta hai Θ ( n ) term mein drop karne ke liye, bajaaye ek mysterious second recursive call chhod ne ke.
Degeneracy spot karo. Surviving subproblem size n − 1 hai: shrink n → n − 1 hai, i.e. b → 1 . Master Theorem apply nahi hota.
Yeh step kyun? log b a , b → 1 hote hi blow up karta hai; poora comparison framework ek constant-factor shrink assume karta hai, jo yahan nahi hai. Yeh woh jagah bhi hai jahan page ke top se floor/ceiling rescue fail hota hai — input additive 1 se drop hota hai, multiplicative factor se nahi.
Haath se unroll karo instead:
T ( n ) = Θ ( n ) + Θ ( n − 1 ) + ⋯ + Θ ( 1 ) = Θ ( ∑ k = 1 n k ) .
Yeh step kyun? Jab shortcut void ho, definition par wapas jao: ek recurrence bas apne aap ko apne aap mein substitute karne ki instruction hai. T ( n ) = T ( n − 1 ) + Θ ( n ) ko repeatedly expand karna wahi substitution hai, aur yeh har level par ek Θ ( n ) , Θ ( n − 1 ) , … term expose karta hai — ek sum jo hum directly evaluate kar sakte hain.
Arithmetic series sum karo: ∑ k = 1 n k = 2 n ( n + 1 ) = Θ ( n 2 ) .
Yeh step kyun? Substitutions ki chain ne ek plain arithmetic series produce ki; Gauss ka closed form 2 n ( n + 1 ) use ek clean Θ -class mein badalta hai.
Conclude karo T ( n ) = Θ ( n 2 ) .
Verify karo: n = 4 ke liye: 4 + 3 + 2 + 1 = 10 = 2 4 ⋅ 5 . ✓ Worst-case Quicksort sach mein quadratic hai — yeh cell isliye hai ki pivot choice matter karti hai.
Worked example Ex 6 — Case 2 aur Case 3 ke beech ki recurrence
T ( n ) = 2 T ( n /2 ) + Θ ( n log n ) solve karo.
Forecast: n log n n se barely upar hai. Kaunsa case? (Trick question.)
a , b aur watershed read off karo: a = 2 , b = 2 , c crit = log 2 2 = 1 , leaf cost n 1 ; aur f ( n ) = Θ ( n log n ) .
Yeh step kyun? Hamesha wahi opening move — bina a , b , aur derived c crit ke koi case choose nahi ho sakta, toh pehle pin karo aur note karo ki yahan f plain n se extra log n carry karta hai.
Compare karo: f ( n ) = n log n vs n 1 . Kya f polynomially bada hai, i.e. n log n ≥ n 1 + ε for some fixed ε > 0 ? Nahi — log n kisi bhi power n ε se slow grow karta hai. Toh f sirf ek log factor se bada hai, polynomial factor se nahi.
Yeh step kyun? Basic teen-case Master Theorem Cases 1 aur 3 ke liye polynomial gap demand karta hai. Log-sized gap ek aise crack mein fall karta hai jo basic version cover nahi kar sakta.
Sahi tool lo. Do clean options hain jo exactly is crack ko handle karte hain:
Extended Master Theorem f ( n ) = Θ ( n c crit log k n ) for integer k ≥ 0 ko cover karta hai, deta hai T ( n ) = Θ ( n c crit log k + 1 n ) . Yahan k = 1 , toh T ( n ) = Θ ( n log 2 n ) turant.
Ya recursion tree par fall back karo first-principles derivation ke liye. Level i cost:
2 i ⋅ f ( 2 i n ) = 2 i ⋅ 2 i n log 2 i n = n log 2 i n = n ( log n − i ) .
Yeh step kyun? Tree method kabhi fail nahi hoti — yeh har level ka work raw recurrence se koi case analysis ke bina compute karta hai. Hum ise (ya extended rule ko) precisely isliye reach karte hain kyunki basic teen-case version ne fire karne se mana kar diya.
Tree ko i = 0 se log 2 n tak sum karo:
∑ i = 0 l o g 2 n n ( log n − i ) = n ∑ j = 0 l o g 2 n j = n ⋅ Θ ( log 2 n ) = Θ ( n log 2 n ) .
Yeh step kyun? Inner sum 0 + 1 + ⋯ + log n ek arithmetic series Θ ( log 2 n ) hai — aur yeh extended-rule answer se agree karta hai, dono ko confirm karta hai.
Conclude karo T ( n ) = Θ ( n log 2 n ) .
Verify karo: n = 8 par (toh log 2 n = 3 ): levels cost n ( 3 − 0 ) , n ( 3 − 1 ) , n ( 3 − 2 ) , n ( 3 − 3 ) = 24 , 16 , 8 , 0 , sum = 48 = 8 ⋅ 6 = n ⋅ 2 3 ⋅ 4 , n ⋅ Θ ( log 2 n ) se match karta hai. ✓
Definition Messy splits ke liye tool — Akra–Bazzi
Jab splits unequal hain (T ( n ) = ∑ i a i T ( n / b i ) + f ( n ) ) ya f ek aise crack mein hai jo extended rule bhi miss kar deta hai, Akra–Bazzi theorem use karo. Unique exponent p dhundho jo ∑ i a i b i − p = 1 solve kare; phir
T ( n ) = Θ ( n p ( 1 + ∫ 1 n u p + 1 f ( u ) d u ) ) .
Ek clean single split a T ( n / b ) + f ( n ) ke liye yeh p , log b a ke barabar hota hai aur Master Theorem reproduce karta hai — lekin yeh is exact example ke log-factor gap ko bhi handle karta hai, phir se Θ ( n log 2 n ) deta hai. Ise Master Theorem ka zyada powerful sibling samjho.
Worked example Ex 7 — kyun regularity check skip nahi kar sakte
Is cell mein do recurrences contrast hain jo dono root-heavy lagte hain. Case (i) regularity pass karta hai aur cleanly solve hota hai; case (ii) fail karta hai aur dikhata hai ki check kyun matter karta hai.
Forecast: dono ka f , n 1 se bahut upar hai. Zarur dono Case 3 hain?
Case (i): T ( n ) = 2 T ( n /2 ) + log n n 2 — fully solve karo.
Watershed: c crit = log 2 2 = 1 , leaf cost n 1 .
Yeh step kyun? Hamesha wahi yardstick; n 2 / log n judge karne ke liye n 1 jaanna zaruri hai.
Polynomial-gap test: kya l o g n n 2 ≥ n 1 + ε fixed ε > 0 ke liye? ε = 2 1 lo: chahiye l o g n n 2 ≥ n 1.5 , i.e. n 0.5 ≥ log n — sab large n ke liye sach. Toh haan, f watershed se polynomially upar hai → candidate Case 3 .
Yeh step kyun? Case 3 pehle genuine power-of-n gap demand karta hai; denominator mein log harmless hai kyunki n 0.5 eventually use dwarf kar deta hai.
Regularity check 2 f ( n /2 ) ≤ k f ( n ) :
2 ⋅ l o g ( n /2 ) ( n /2 ) 2 = l o g n − 1 n 2 /2 ≤ k ⋅ l o g n n 2 .
Large n ke liye, 2 ( l o g n − 1 ) l o g n → 2 1 < 1 , toh valid k < 1 exist karta hai. ✓ Regularity hold karta hai.
Yeh step kyun? Regularity guarantee karta hai ki per-level work geometrically decay karta hai, jo exactly root ko dominate karne deta hai.
Conclude (i): Case 3 fire karta hai, T ( n ) = Θ ( log n n 2 ) .
Case (ii): T ( n ) = 2 T ( n /2 ) + f ( n ) with f ( n ) = n 2 cos 2 n — the trap.
Same size test: f ( n ) peaks par n 2 tak jaata hai, jo peaks par Ω ( n 1.5 ) hai — yeh root-heavy lagta hai.
Regularity fail karta hai. Kyunki cos 2 n infinitely often 0 tak dip karta hai, koi single k < 1 nahi hai jisse 2 f ( n /2 ) ≤ k f ( n ) sab n ke liye ho: ek aise n par jahan f ( n ) ≈ 0 lekin f ( n /2 ) apne peak ke paas hai, inequality outright violate ho jaati hai.
Yeh step kyun? Regularity wada hai "work tree se neeche jaate hue decay karta hai." Oscillating f us waade ko tod deta hai, toh "root dominates" simply galat hai, aur Case 3 koi conclusion nahi deta.
Conclude (ii): Master Theorem yahan kuch nahi kehta; tum tree ya Akra–Bazzi par fall back karoge (Ex 6 ka box).
Verify karo (numeric, case (i) at n = 16 ): check karo 2 f ( n /2 ) ≤ f ( n ) , i.e. k ratio < 1 :
2 ⋅ l o g 2 ( 16/2 ) ( 16/2 ) 2 = 3 128 ≈ 42.67 , f ( 16 ) = 4 256 = 64 , ratio ≈ 0.667 < 1. ✓ Regularity n = 16 par hold karta hai — lekin sirf isliye kyunki humne check kiya.
Worked example Ex 8 — Tournament: champion dhundhna
n = 1 , 024 players. Ek match do players ko 1 unit of time mein compare karta hai; winner aage badhta hai. Tum ek knockout bracket organize karte ho: field ko half mein split karo, har half ka champion recursively dhundho, phir ek final match khelo. Champion crown karne mein kitna time?
Forecast: 1024 players ka knockout — 10 matches deep ke kareeb ya 1000 matches total?
Recurrence ki tarah model karo. Do halves size n /2 ke (a = 2 , b = 2 ), combine = woh single final match, cost Θ ( 1 ) :
T ( n ) = 2 T ( n /2 ) + Θ ( 1 ) .
Yeh step kyun? "Split, har half par recurse karo, ek merge match" divide-and-conquer template verbatim hai — story ko a , b , f mein turn karna hi ek tarika hai machinery reuse karne ka.
Watershed: c crit = log 2 2 = 1 , leaf cost n 1 .
Yeh step kyun? Hume n 1 chahiye taaki dekh sakein ki cheap Θ ( 1 ) combine usse neeche hai.
Compare karo: f ( n ) = Θ ( 1 ) = Θ ( n 0 ) , jo n 1 se polynomially neeche hai (ε = 1 ) → Case 1 .
Yeh step kyun? Yahan combine cheap hai lekin branching rich hai — leaves (n first-round players) dominate karte hain.
Case 1 apply karo: T ( n ) = Θ ( n 1 ) = Θ ( n ) . Concretely, n players ke knockout ko exactly n − 1 matches chahiye (har match ek player ko eliminate karta hai, aur n − 1 ko eliminate karna hai).
Verify karo: n = 1024 ⇒ n − 1 = 1023 matches total. Bracket depth log 2 1024 = 10 rounds hai — lekin total work Θ ( n ) = 1023 hai, Case 1 se match karta hai, Θ ( log n ) nahi. ✓
Worked example Ex 9 — change-of-variable trick
T ( n ) = 2 T ( n ) + Θ ( log n ) solve karo.
Forecast: input square root se shrink karta hai, constant factor se nahi. Master Theorem n / b chahta hai — yeh woh shape nahi hai. Ab kya?
Substitute karo m = log 2 n , i.e. n = 2 m . Phir n = 2 m /2 , toh T ( n ) ban jaata hai T ( 2 m /2 ) . S ( m ) = T ( 2 m ) let karo:
S ( m ) = 2 S ( m /2 ) + Θ ( m ) .
Yeh step kyun? n shrink ek constant factor nahi hai, toh koi b exist nahi karta aur Master Theorem stuck ho jaata hai. Lekin n n ke exponent ko half karta hai. Agar hum exponent ko apna naya variable m bana lein, toh ugly square root ek clean division by 2 ban jaata hai — exactly S ( m ) = 2 S ( m /2 ) + … shape restore karta hai jiske liye theorem banaya gaya tha. Change of variable standard move hai jab bhi shrink exponent mein multiplicative ho, n mein nahi.
S ( m ) = 2 S ( m /2 ) + Θ ( m ) solve karo. Yeh exactly Ex 1 (Mergesort ki shape) hai: a = 2 , b = 2 , c crit = 1 , f ( m ) = Θ ( m ) → Case 2 → S ( m ) = Θ ( m log m ) .
Yeh step kyun? Humne deliberately problem ko ek aise mein transform kiya jo hum pehle hi solve kar chuke hain, toh hum simply Ex 1 ko quote karte hain bajaaye tree redo karne ke.
Back substitute karo m = log n :
T ( n ) = S ( log n ) = Θ ( log n ⋅ log log n ) .
Yeh step kyun? Humne S ( m ) = T ( 2 m ) define kiya tha, toh T ( n ) = S ( log 2 n ) ; m = log n ko m log m mein plug karo original variable par wapas aane ke liye.
Verify karo: n = 2 16 lo, toh m = log 2 n = 16 .
Via S : S ( 16 ) = 16 ⋅ log 2 16 = 16 ⋅ 4 = 64 .
Via final formula: log 2 n ⋅ log 2 ( log 2 n ) = 16 ⋅ log 2 16 = 16 ⋅ 4 = 64 .
Dono routes 64 dete hain, toh T ( 2 16 ) = S ( 16 ) aur change of variable consistent hai. ✓ Closed form T ( n ) = Θ ( log n ⋅ log log n ) check out karta hai.
Kisi bhi recurrence ke liye one-line routine
a , b , f padhho → log b a compute karo → compare karo → (agar tie, ×log n ; agar poly gap, badi side lo; agar log gap ya bad split, extended rule ya tree use karo). Har "compare" ke neeche Θ/ O /Ω notation ke liye dekho Big-O Notation .
Recall Self-test
T ( n ) = 4 T ( n /2 ) + n 2 solves to? ::: c crit = log 2 4 = 2 , f = n 2 tie karta hai → Case 2 → Θ ( n 2 log n )
T ( n ) = T ( n − 1 ) + 1 solves to? ::: Master-able nahi (b → 1 ); unroll karo → Θ ( n )
Tournament Θ ( n ) kyun deta hai Θ ( log n ) nahi? ::: depth log n hai, lekin total work (leaves) dominate karta hai → n − 1 matches
Related paradigms is same recurrence machinery par build karte hain: Strassen Matrix Multiplication (Karatsuba jaisi Case-1 win), Mathematical Induction (correctness engine), aur Dynamic Programming (jab subproblems overlap karte hain independent hone ki jagah, tab ise use karo).