3.7.2 · D2 · HinglishAlgorithm Paradigms

Visual walkthroughDivide and conquer — template, correctness, recurrence

2,535 words12 min read↑ Read in English

3.7.2 · D2 · Coding › Algorithm Paradigms › Divide and conquer — template, correctness, recurrence

Hum sab kuch zero se build karte hain. Agar aapne pehle kabhi recursion tree, logarithm, ya symbol nahi dekha, tab bhi Step 1 se shuru karo — har cheez use hone se pehle earn ki jaati hai.


Step 1 — Ek recurrence asal mein kya kehti hai

KYA. Hum ek line se shuru karte hain, divide-and-conquer template ka wada:

Seedhe shabdon mein padho: size- job ki cost barabar hai copies ki cost size- job ki, plus — woh divide+combine kaam jo aap khud recursive calls se pehle/baad karte ho.

  • = size- problem mein kitne basic steps lagte hain. ek function hai: size do, time milega.
  • = har call mein kitne subproblems bante hain (mergesort: 2, binary search: 1, Karatsuba: 3).
  • = shrink factor — size ka input, size ban jaata hai.
  • = woh kaam jo aap bina recurse kiye karte ho: array split karna, results merge karna.

RECURRENCE KYUN? Kyunki khud apne aap ke terms mein define hai. Hum seedha answer nahi padh sakte; hume self-reference ko unfold karna hoga jab tak woh ruk na jaaye. Woh unfolding hi ek tree hai.

PICTURE. Ek box jo chhote boxes ko call karta hai, har ek apne size aur local work ke saath label hua.

Figure — Divide and conquer — template, correctness, recurrence

Step 2 — Ek level unfold karo: tree badata hai

KYA. Har ko uski apni definition se replace karo. Recurrence ko size par apply karne par milta hai: Isse mein substitute karo aur ko bracket ke andar distribute karo:

Level 1 par term by term:

  • children hain ⟶ factor ,
  • har ek local work karta hai (uski size hai),
  • to poora level 1 cost karta hai;
  • aur subproblems size ke abhi bhi wait kar rahe hain (level 2).

UNFOLD KYUN KAREIN? Self-reference abhi bhi wahan hai (). Hum tab tak expand karte rahenge jab tak kisi aisi size par na pahunche jiska jawab hume free mein pata ho (base case). Har expansion ek honest, recursion-free level of work ko peel off karta hai — aur unhe hum add kar sakte hain.

PICTURE. Abhi do poore levels draw hain; level-1 boxes apne total ke saath lit up hain.

Figure — Divide and conquer — template, correctness, recurrence

Step 3 — Depth par pattern

KYA. Chalte raho. Depth par (root depth hai): To level par total kaam hai:

Box padho:

  • — har level node count ko se multiply karta hai, to levels baad nodes hain.
  • — har level size ko se divide karta hai, to levels baad har node hold karta hai.
  • — woh size local-work function mein plug karo.

YEH DO RACING QUANTITIES KYUN? Node count upar jaata hai, size niche jaati hai. Divide-and-conquer running time ki puri theory inhi donon ke beech ek tug-of-war hai. Jo jeete woh answer decide karta hai.

PICTURE. Teen levels stacked, generic level par / / pattern annotate kiya hua.

Figure — Divide and conquer — template, correctness, recurrence

Step 4 — Tree kahan rukti hai: levels ginana

KYA. Recursion tab rukti hai jab kisi node ki size ho jaaye (base case). Set karo:

  • — humne se total baar divide kiya aur size pahunche, to ko baar multiply karne par banana chahiye.
  • — yeh logarithm ki definition hi hai: "kitni baar multiply karun taaki pahunch sakun?" Woh count tree ki height hai.

LEVELS KYUN GINEN? Total cost = saare levels ka sum. Sum karne ke liye, hume pata hona chahiye ki kitne levels hain — aur aakhri (leaf) level special hai, isliye hum use mark karte hain.

PICTURE. Poora tree root se leaves tak, height labelled, bottom row of leaves highlighted.

Figure — Divide and conquer — template, correctness, recurrence

Step 5 — Leaves: bottom row ginana

KYA. Bottom level hai. Leaves ki sankhya:

Har leaf ek base case hai jo cost karti hai, to poori leaf row cost karti hai.

kyun? Yeh ek log identity hai, koi trick nahi:

  • humne likha (yeh sirf ki definition hai),
  • exponents multiply kiye,
  • regroup karke expose kiya.

YEH EXPONENT KYUN NAME KAREIN? Isse kaho. Yeh akele leaves ka contribution hai. Yeh humara yardstick ban jaata hai: hum per-level work ko se compare karte hain yeh dekhne ke liye ki tug-of-war mein kaun jeeta.

PICTURE. Leaf row ka zoom: leaves, har ek ek chhota box.

Figure — Divide and conquer — template, correctness, recurrence

Step 6 — Har level add karo: master sum

KYA. Total time = leaves + saare internal levels ka sum:

  • — leaf row (Step 5),
  • — root () se leaves ke theek upar tak har internal level add karo,
  • — Step 3 se level- cost.

SUM KYUN, AUR WOH COLLAPSE KYUN HOTA HAI? Sum ke terms usually ek geometric series banaate hain — har term previous ka ek fixed ratio times hoti hai. ko genuinely ek constant banane ke liye, hume par mild conditions chahiye:

constant hone par, geometric series ek END se dominated hoti hai:

  • (terms niche shrink karte hain) ⟶ root dominate karta hai ⟶ .
  • (saare terms equal) ⟶ har level same cost karti hai, of them ⟶ .
  • (terms niche grow karte hain) ⟶ leaves dominate karti hain ⟶ .

Yeh teen outcomes exactly Master Theorem ke teen cases hain — lekin ab tum kyun teen cases hain yeh dekh sakte ho: ek geometric series ke sirf teen moods hote hain.

PICTURE. Har level ke liye ek bar (bar height = us level ki cost) teen moods ke liye: shrinking bars, flat bars, growing bars.

Figure — Divide and conquer — template, correctness, recurrence

Step 7 — Chaar real algorithms, side by side dekhe

KYA. Landmark recurrences plug karo aur bars padho. Har mood ka ek representative.

YEH CHAAR KYUN? Flat (), degenerate chain, root-heavy (), aur leaf-heavy () — picture ab har mood ko cover karti hai jo bars le sakte hain.

PICTURE. Chaar mini-trees apne bar-profiles ke saath: mergesort (flat), binary search (thin chain), root-dominated (top-heavy, shrinking), Karatsuba (bottom-heavy, growing).

Figure — Divide and conquer — template, correctness, recurrence

Step 8 — Degenerate & edge cases jo picture mein cover hone chahiye

KYA. Koi bhi scenario undrawn mat chhodna. Chaar corners:

  1. (binary search): "tree" ek single vertical chain hai — koi branching nahi. Sirf height matter karta hai. Yeh koi bug nahi; sum abhi bhi kaam karta hai, bas har level par ek node hai.
  2. (size kabhi nahi shrinkti): tab hamesha ke liye — infinite recursion. Tree ka koi bottom nahi. Yeh no-progress failure hai; recurrence ka koi solution nahi kyunki algorithm kabhi terminate nahi karta. (Parent ke base-case warning se match karta hai.)
  3. at the top: hum already ek leaf hain. , zero recursive calls. Step 6 ka sum empty hai; boxed formula phir bhi return karta hai. ✓
  4. Master-Theorem gap: yahan ek clean power nahi hai, to ratio constant rehne ki bajay level ke saath drift karta hai — ek log-factor upar baithti hai se. Clean geometric nahi ⟶ Master Theorem ka koi case nahi banta. Tree abhi bhi kaam karta hai: levels mein se har ek cost karta hai, sum hoke milta hai. Tree use karo, ya Recurrence Relations / Akra–Bazzi.

YEH KYUN DIKHAYEIN? Cases 1–3 woh hain jahan ek naive reader sochta hai machinery "break" ho gayi; hoti nahi — tree formula unhe absorb kar leta hai. Case 4 woh hai jahan shortcut break hota hai lekin tree survive karta hai — proof ki picture fundamental object hai, Master Theorem sirf uska clean corollary hai.

PICTURE. Chaar small panels: chain (), bottomless tree (), single leaf (), aur near-miss apne slightly-rising bars ke saath.

Figure — Divide and conquer — template, correctness, recurrence

Ek-picture summary

Sab kuch ek canvas par: tree nodes aur sizes per level ke saath, height , leaves, per-level bar profile, aur teen verdicts (root / flat / leaves win) ratio se branching off karte hue.

Figure — Divide and conquer — template, correctness, recurrence
Recall Feynman retelling — seedhe shabdon mein wapas bolo

Ek bada kaam chhote kamon mein split hota hai size ke, aur aap khud pay karte ho split aur glue karne mein. Use tree ki tarah draw karo. Ek level neeche jaane par kamon ki sankhya se multiply hoti hai aur har kaam ki size se divide hoti hai. To level par kaam hain size ke, jo total kaam karte hain. Tree tab khatam hoti hai jab size ho, jo levels leta hai — matlab "kitni halvings se pahunchein." Bottom row mein leaves hain, ek alag term ke roop mein rakhi hain kyunki leaves sirf free base-case kaam karti hain — isliye -sum ek row short rukta hai, par. Ab har level ke kaam ko bars ki tarah stack karo. Agar ek nice power hai jaise , to har level upar wale ka ek fixed multiple hoti hai, to bars ya to shrink karte hain (root jeeta → ), flat rehte hain (sab equal → ), ya grow karte hain (leaves jeetti → ). Yeh teen bar-shapes HI teen Master-Theorem cases hain. shrinks → ; mergesort ke bars flat hain → ; Karatsuba ke grow karte hain → . Aur jab clean power nahi hai (jaise ), to drift karta hai, shortcut kuch nahi karta, lekin tree phir bhi de deti hai. Tree truth hai; theorem bas uski tidy summary hai.

Q: Tree mein depth par kitne nodes aur kya size hoti hai?
nodes, har ek ki size .
Q: Exactly levels kyun hote hain?
Size har level par se shrink hoti hai; deta hai — size tak pahunchne ke liye -fold shrinks ki sankhya.
Q: -sum sirf tak kyun chalta hai?
Leaf row par base-case kaam karti hai, alag ke roop mein count ki jaati hai; ise -sum mein shamil karna double-count hoga.
Q: ratio ko true constant kya banata hai?
ka ek clean power hona, positive aur monotone; tab level-independent hota hai aur geometric-series argument valid rehta hai.
Q: Kitne leaves hote hain, aur woh exponent kyun matter karta hai?
leaves; watershed exponent hai jisse aap compare karte ho.