3.7.2 · D1 · Coding › Algorithm Paradigms › Divide and conquer — template, correctness, recurrence
Size n ki ek badi problem ko kabhi kabhi tod ke kuch chhoti copies of same problem mein solve kiya ja sakta hai, aur phir answers ko saste mein glue karke final answer banaya jaata hai. Divide and conquer bas yahi bet hai — split + glue, brute force se sasta hai — saath mein bookkeeping (ek recurrence) jo exactly batata hai ki yeh bet kitni tezi se pay off karta hai.
Pehle aapko parent note ki ek bhi line padhne se pehle, usme aane wale har symbol ko khud se samajhna hoga. Yeh page har ek ko ground up se build karta hai: seedhe words → ek picture → kyun is topic ko iska zaroorat hai. Kuch bhi assume nahi kiya gaya.
n = input ki size
n ek single whole number hai jo measure karta hai jo cheez aapko process karni hai woh kitni badi hai . Sort karne ke liye ek list mein, n hai kitne items list mein hain. Do numbers multiply karne ke liye, n hai kitne digits har ek mein hain.
Picture: imagine karo ek row of boxes. Unhe gino. Woh count hai n .
Intuition "Size" ki zaroorat kyun hai
Speed ke baare mein har claim — "yeh fast hai", "yeh slow hai" — meaningless hai jab tak hum nahi kehte kis size ke liye fast? 3 items sort karna trivial hai; 3 billion nahi. Poora subject is baare mein hai ki effort kaise badhta hai jab n badhta hai , isliye n ko pehle naam dena zaruri hai.
Jab hum divide karte hain, do alag numbers split ko describe karte hain. Inhe confuse mat karo .
a = kitne pieces banate ho
Split karne ke baad, aapke paas a chhote subproblems hain jinhe aapko actually solve karna hai. Mergesort a = 2 pieces banata hai. Karatsuba a = 3 banata hai.
b = shrink factor (har piece kitna chhota hai)
Har subproblem ki size lagbhag n / b hoti hai. Agar aap ek list ko half mein kaato, to har half ki size n /2 hai, isliye b = 2 . Yahan b woh number hai jisse aap size ko divide karte ho — yeh size ke baare mein hai, count ke nahi.
Common mistake Steel-man: "
a aur b same number hain — aap 2 halves banate ho, toh dono 2 hain."
Kyun sahi lagta hai: mergesort mein aap 2 halves mein kaatte ho aur dono par recurse karte ho, toh a = 2 aur b = 2 happen to match karte hain.
Kyun galat hai: woh alag cheezein measure karte hain. Karatsuba mein aap har number ko 2 halves mein kaatte ho (b = 2 ) lekin sirf 3 multiplications karte ho (a = 3 ). Binary search mein aap half mein kaatte ho (b = 2 ) lekin ek half ko throw away karte ho, sirf 1 piece par recurse karte ho (a = 1 ).
Fix: do alag sawaal pucho — "kitna chhota?" se b milta hai; "main kitne ko rakhta hoon aur solve karta hoon?" se a milta hai.
Definition Recursion = ek procedure jo khud ko call karta hai
Ek recursive procedure ek problem ko solve karta hai asking a smaller copy of itself to solve smaller pieces , phir unhe answers use karke. Picture hai nested boxes ka ek set: har box ka kaam hai chhote boxes chalana aur unke outputs combine karna.
Definition Base case = sabse chhoti problem, seedha answer dena
Base case itni chhoti size hai ki answer ko koi recursion nahi chahiye — length 1 ki list pehle se sorted hai, toh aap use seedha return karte ho. Yeh woh floor hai jo nesting ko rokta hai.
Intuition Base case optional kyun nahi hai
Floor ke bina, boxes forever nest karte hain — program ya toh endlessly chalta hai ya crash karta hai (ek stack overflow , jab paused calls ka dher memory se zyada ho jaata hai). Base case hi woh cheez hai jo guarantee karta hai ki recursion kabhi rukta hai. Parent note ka pehla "steel-man" bilkul isi trap ke baare mein hai.
Poori recursion machinery aapko phir Mathematical Induction mein milegi aur aap dekhoge ki yeh Mergesort , Quicksort , aur Binary Search ko power karta hai.
Definition Combine = sub-answers ko poore answer mein glue karna
Jab a subproblems apne answers return kar dete hain, tab bhi aapko unse final answer banana hota hai. Mergesort mein yeh merge hai: do sorted halves ko walk karke unhe ek sorted list mein interleave karna.
f ( n ) = ek level par non-recursive kaam
f ( n ) un sab cheezein ka cost hai jo recursive call nahi hain : split karne ka kaam (divide) plus glue karne ka kaam (combine), size n ki problem ke liye. Yeh ek bundled number hai taaki recurrence clean rahe.
Intuition Divide aur combine ko bundle kyun karein?
Jab hum baad mein cost add karte hain, sirf do tarah ka kaam hota hai: kaam jo recursive calls ke andar hota hai, aur kaam jo yahan, abhi, is level par hota hai. Doosre tarah ke kaam ko f ( n ) bolne se recurrence clearly padha jaata hai "mera time = mere subcalls ka time + mera apna local kaam."
T ( n ) = size n ke input par worst-case time
T ek function hai: isko size n do, yeh return karta hai "worst case mein kitne basic steps". "Worst case" ka matlab hai hum sab se unlucky possible input assume karte hain, toh answer ek guarantee hai, kabhi underestimate nahi.
Aise equations ko actually solve karna aap Recurrence Relations mein seekhoge.
log b n = kitni baar n ko b se divide karo 1 tak pahunchne ke liye
n se shuru karo. b se divide karo. Phir b se divide karo. Tab tak chalte raho jab tak 1 na mil jaaye. Divisions ki sankhya hai log b n (padha jaata hai "log base b of n ").
Concrete: b = 2 aur n = 8 ke saath: 8 → 4 → 2 → 1 mein 3 steps lagte hain, toh log 2 8 = 3 .
Intuition Log yahan har jagah kyun aata hai
b se baar baar split karna ek tree of levels banata hai. Us tree ki height — nesting kitni gahari jaati hai base case hit hone se pehle — exactly halvings ki sankhya hai, log b n . Toh log koi abstract math import nahi hai; yeh literally hai "recursion kitna tall hai?" Yahi woh tool hai jo hamein chahiye, aur koi simpler tool "kitni baar half kar sakta hoon?" ka answer nahi deta.
a i = a ko i baar khud se multiply karna
Recursion tree mein depth i par, har box ne a children spawn kiye, toh boxes ki sankhya har level par a se multiply hoti hai: level 0 mein 1 , level 1 mein a , level i mein a i .
Intuition Watershed ek sentence mein
Har recurrence leaves (bahut se chhote problems, cost n l o g b a ) aur local work f ( n ) ke beech ek tug-of-war hai. Jo bhi n ke saath tezi se badhta hai woh jeetta hai aur T ( n ) ki speed set karta hai — bas yahi teen Master Theorem cases test kar rahe hain.
Definition Teen growth symbols
Yeh describe karte hain ki ek cost n ke saath kaise badhta hai , constant factors aur small terms ignore karke.
O ( g ) — g se zyada tezi se nahi badhta (upper bound / ceiling).
Ω ( g ) — g se dhheemi se nahi badhta (lower bound / floor).
Θ ( g ) — exactly g jaise badhta hai (dono ek saath — ek tight sandwich).
Intuition Constants kyun ignore karein?
3 n ya 10 n basic operations lene wala step dono n mein ek straight line ki tarah badhte hain; slope alag hai lekin shape — woh cheez jo decide karti hai kaun jeetta hai jab n → ∞ — same hai. Constants strip karne se hum shapes compare kar sakte hain, jo scaling ke baare mein hai. Poori details Big-O Notation mein hain.
log base b of n = tree height
watershed exponent log base b of a
Divide and Conquer analysis
Sab kuch jo upstream hai woh do cheezein feed karta hai jo parent note actually karta hai : correctness prove karna (recursion = Mathematical Induction ke zariye) aur speed dhundhna (recurrence + Master Theorem ke zariye, Mergesort , Binary Search , Karatsuba , Strassen Matrix Multiplication par apply hota hai, aur Dynamic Programming se contrast kiya jaata hai).
Khud ko test karo — right side cover karo aur zyaane se jawab do.
n kya measure karta hai?Input ki size (jaise list mein items ki sankhya).
a kya hai?Unhe subproblems ki sankhya jo aap split karne ke baad actually solve karte ho.
b kya hai?Woh factor jisse input size shrink hota hai; har subproblem ki size n / b hoti hai.
a = b kyun ho sakta hai?Woh alag cheezein count karte hain — b hai har piece kitna chhota hai, a hai kitne pieces par aap recurse karte ho (jaise binary search mein b = 2 , a = 1 ).
Base case kya hai aur kyun zaruri hai? Sabse chhota input, recursion ke bina answer diya jaata hai; yeh woh floor hai jo nesting ko rokta hai taaki program terminate ho.
f ( n ) kya hai?Ek level par non-recursive local kaam: divide cost plus combine cost.
Recurrence T ( n ) = a T ( n / b ) + f ( n ) ko words mein padho. Size n ka time equals a copies of size n / b ka time, plus local divide-and-combine kaam.
log b n pictorially kya equal hai?Kitni baar aap n ko b se divide karte ho 1 tak pahunchne ke liye — recursion tree ki height.
c crit = log b a kya hai?Watershed exponent; n l o g b a leaves (sabse chhote boxes) ki sankhya hai, leaf cost jise aap f ( n ) se compare karte ho.
O , Ω , Θ ka kya matlab hai?Di gayi function se zyada tezi se nahi badhta (ceiling), dhheemi se nahi badhta (floor), aur exactly jaisa badhta hai (tight).
Recall Quick self-quiz
Agar n = 16 aur b = 2 , toh recursion mein kitne levels hain? ::: log 2 16 = 4 .
Agar a = 3 aur log 2 n levels hain, toh kitne leaves hain? ::: 3 l o g 2 n = n l o g 2 3 ≈ n 1.585 .