3.7.1 · D2 · HinglishAlgorithm Paradigms

Visual walkthroughBrute force — exhaustive search, when acceptable

2,187 words10 min read↑ Read in English

3.7.1 · D2 · Coding › Algorithm Paradigms › Brute force — exhaustive search, when acceptable

Yeh parent topic ka visual backbone hai. Agar tum Hindi walkthrough chahte ho, toh Hinglish version dekho.


Step 1 — Har cheez ka atom: ek choice, do boxes

KYA HAI. Kisi bhi formula se pehle, sabse chhota possible decision: tumhare paas ek item hai, aur woh do boxes mein se kisi ek mein ja sakta hai — inhe "IN" aur "OUT" kaho. Bas itna. Ek item, do possibilities.

YE YAHAN SE KYU SHURU KARTE HAIN? Kyunki har brute-force count secretly sirf yahi atom baar baar repeat hota hai. Agar tum "1 item → 2 outcomes" samajh gaye, toh tum samajh gaye, aur ek chhoti si twist ke saath, baaki sab bhi. Hum likhne se mana karte hain jab tak tum dekh na lo ki kahaan se aa raha hai.

PICTURE. Red item ya toh left box mein jaata hai ya right box mein — do arrows, do futures.

Figure — Brute force — exhaustive search, when acceptable

Step 2 — Do items: choices multiply hoti hain, add nahi

KYA HAI. Ek doosra item add karo. Item A ke paas abhi bhi uske 2 options hain (IN/OUT). Un mein se har ek ke liye, item B independently bhi 2 options rakhta hai. Toh hame nahi milta; hame branches milti hain, har ek phir mein split hoti hai → complete outcomes.

MULTIPLY KYU KARTE HAIN AUR ADD NAHI? Yeh page ka sabse important idea hai, toh isko earn karte hain. "Add" sahi hota agar choices alternatives hote (A ya B karo). Lekin yahan choices stack hoti hain — tum A decide karte ho aur phir B decide karte ho. Har A-branch neeche B-choice ki ek poori copy carry karti hai. Copies-of-copies multiplication hai. Tree dekho: level 1 mein 2 nodes hain, level 2 mein per node children hain .

PICTURE. Ek branching tree. Red path chaar leaves mein se ek complete outcome trace karta hai (A=OUT, B=IN).

Figure — Brute force — exhaustive search, when acceptable

Step 3 — items mein se har ek ke 2 options → subset count

KYA HAI. Ab items karo, har ek ek independent IN/OUT switch. Multiplication rule mein plug in karo jahan har hai:

YEH "SUBSETS KI NUMBER" KE BARABAR KYU HAI? Ek subset exactly un elements ki choice hai jo IN hain. Toh "IN/OUT switches ki list" aur "subset" alag alag kapde pehne ek hi object hain. Switch-settings count karna hi subsets count karna hai — isliye subsets, parent note se exactly match karta hai.

PICTURE. Ek doubling staircase: 1 item → 2, 2 items → 4, 3 → 8, 4 → 16. Red curve flat black budget line ke upar uthti hai — jis moment woh cross karti hai woh moment hai jab brute force time out hone lagta hai.

Figure — Brute force — exhaustive search, when acceptable

Step 4 — Options-per-choice badlo: alphabet , length

KYA HAI. Multiplication rule rakho lekin har choice ke kitne options hain yeh badlo. digits par length ka ek PIN: slots mein se har ek ke options hain.

YEH KE SAME FORMULA KYU HAI? Kyunki bas tha jisme , tha. Subsets 2-letter alphabet ("IN","OUT") par PINs hain. Ek rule, do costumes. 4-digit PIN ke liye, — chhota, isliye parent ka crack loop instantly khatam ho jaata hai. Isliye chhote PINs weak hote hain.

PICTURE. slots ki ek row, har ek ek red dial hai jisme ticks hain; caption unhe multiply karke dikhata hai.

Figure — Brute force — exhaustive search, when acceptable

Step 5 — Jab choices shrink karti hain: permutations se milta hai

KYA HAI. Ab twist. distinct items ko ordered slots mein arrange karo. Slot 1: items mein se koi bhi. Lekin ek rakh diya, woh use ho gaya — slot 2 mein sirf bache hain, slot 3 mein hain, … last slot mein hai. Options har step mein ek kam hote jaate hain:

SHRINKING KYU? Kyunki reuse forbidden hai — tum same item do baar nahi rakh sakte. Step 4 se compare karo, jahan ek digit repeat ho sakta tha (same har slot). Repetition allowed → constant options → . Repetition forbidden → dwindling options → . Exponential aur factorial ke beech sirf yahi fark hai ki pool refill hota hai ya nahi.

PICTURE. Slots ka ek funnel: pehle slot ko saare red tokens feed karte hain, baad ke har slot ko visibly chhota pool feed karta hai.

Figure — Brute force — exhaustive search, when acceptable

Step 6 — Unordered pairs: , phir half karo →

KYA HAI. 2 items choose karo jahan order matter nahi karta. Do sub-steps. Pehle, ordered pairs: slot 1 = options, slot 2 = (no reuse) → . Lekin aur same unordered pair hain, toh humne har cheez do baar count ki hai. 2 se divide karo:

EXACTLY 2 SE KYU DIVIDE KARTE HAIN? Kyunki 2 cheezein ke pair ko orders mein likha ja sakta hai, aur har unordered pair ordered count mein apne saare orderings mein dikhta hai. Do orderings ek mein collapse hoti hain → 2 se divide karo. Yahi exactly wajah hai ki parent ka Two-Sum loop for j in range(i+1, n) likhta hai — i+1 se start karna har unordered pair ko ek baar visit karta hai, yeh built-in halving hai.

PICTURE. cells ka ek grid. Black diagonal (self-pairs , forbidden) crossed out hai; do triangles mirror images hain; sirf red upper triangle rakha jaata hai.

Figure — Brute force — exhaustive search, when acceptable

Step 7 — Degenerate aur edge cases (koi gap mat chhodo)

KYA HAI. Formulas weird inputs par survive karne chahiye. Har ek walk karo:

Input Formula kya kehta hai Meaning — kya yeh sane hai?
subsets Haan: empty set kuch nahi ka ek subset hai.
permutations Haan: kuch nahi arrange karne ka exactly ek tarika hai (empty arrangement).
pairs Haan: tum 1 item se 2 distinct items nahi pick kar sakte.
PIN Haan: empty string ek length-0 PIN hai.
alphabet Haan: ek symbol ke saath, sirf ek string exist karti hai.

YEH CHECK KYU KARTE HAIN? Ek brute-force loop boundary par crash ya miss nahi karna chahiye. range(1 << 0) hai range(1) — yeh ek baar run karta hai, correctly empty subset enumerate karta hai. Agar tumhara formula wahaan deta, tumhara loop ek real candidate skip kar deta. Math aur loop edges par agree karte hain — yahi safety proof hai.

PICTURE. ki ek number line jisme har count apni true value par land karta hai, aur cases (jo logon ko surprise karte hain) red mein circled hain.

Figure — Brute force — exhaustive search, when acceptable
Recall

kyun hai aur kyun nahi? Items ke empty set ka ek arrangement ::: exactly ek hai — woh arrangement jo kuch nahi rakhti. Zero ways to fail ek valid (empty) outcome chhod deta hai. Yeh ko par consistent bhi rakhta hai: .


Ek-picture summary

Upar sab kuch ek hi rule hai — har step par options multiply karo — chaar tarike se moda gaya:

  • options 2 par constant (subsets)
  • options par constant (tuples/PINs)
  • options draining (permutations)
  • 2 steps ke liye options drain, phir halve (pairs)
Figure — Brute force — exhaustive search, when acceptable

Red curves (, ) almost immediately black budget line ke paar rocket kar jaati hain; black curves (, ) crawl karti hain. Yahi gap poori wajah hai ki Dynamic Programming, Greedy Algorithms, aur NP-Hard Problems ke liye pruning exist karti hai.

Recall Feynman: plain words mein poora walkthrough

Brute force ko kitni cheezein try karni hain yeh count karna hamesha ek hi game hai: har step par, poochho "yeh step kitne ways mein ja sakta hai?" aur unhe multiply karo. Agar har step ek yes/no switch hai, tum 2's ka bunch multiply karte ho aur milta hai — woh har subset hai. Agar har step ek digit hai, tum 10's multiply karte ho aur milta hai — woh har PIN hai. Agar tum logon ko line up kar rahe ho aur kisi ko reuse nahi kar sakte, toh choices ki number har step mein shrink hoti hai — , phir , phir — aur unhe multiply karne par milta hai. Agar tum sirf ek pair chahte ho aur order ki parwah nahi, unhe ordered count karo ( times ) aur phir half kar do kyunki tumne har pair dono taraf se count ki. Scary part formulas nahi hain — yeh hai ki aur itni fast shoot up karti hain ki ya kuch ke baad, "sab kuch try karo" universe ki umar se zyada time leta. Yahi ek fact wajah hai ki hum kabhii zyada clever algorithms invent karne ki zyada koshish karte hain.