Foundations — Brute force — exhaustive search, when acceptable
3.7.1 · D1· Coding › Algorithm Paradigms › Brute force — exhaustive search, when acceptable
Yeh page assume karta hai ki tumne pehle kuch nahi dekha. Neeche har symbol use hone se pehle earn kiya gaya hai. Yeh parent topic ke liye prerequisite floor hai, jo Algorithm Paradigms ke andar baithta hai.
0. Absolute-zero starting point: "candidate" kya hota hai?
Kisi bhi symbol se pehle, ek word: candidate. Candidate ek single possible answer hai jo tum hand in kar sakte ho — ek guess. Brute force woh act hai jisme tum tamam guesses ki complete list likhte ho aur har ek ko tick karte ho.

Figure dekho: har amber dot ek candidate hai; un sabko encircle karta cyan box search space hai. Brute force = har dot ko visit karo. Is page ka baaki sab kuch sirf yeh count karna hai ki common shapes ke problems mein kitne dots hote hain — kyunki woh count hi running time hai.
1. Symbol — "input kitna bada hai?"
ko ek row mein boxes ki number ki tarah picture karo:
box 1 box 2 box 3 ... box n
[ ] [ ] [ ] ... [ ]
Topic ko iske kyon zarurat hai: parent mein har cost formula ke terms mein likhi hai. Agar hum "input ka size" ko naam nahi de sakte, to hum yeh nahi keh sakte ki kaam kaise grow karta hai. woh dial hai jise hum ghumake poochte hain "agar input bada ho jaye to?"
2. Symbol — "at most"
Ek number line picture karo: ka matlab hai ya to par baitha hai ya uske left mein kahin bhi.
<----|---------|---------|--------->
x y
x is here or anywhere left of y
Topic ko iske kyon zarurat hai: constraints hamesha "" (input size ki upper bound) ke roop mein phrase hote hain aur feasibility checks "weight " (cap exceed nahi karna chahiye) ke roop mein. "Brute force kab acceptable hai?" ki poori table bounds ki list hai.
3. Multiplication as independent choices — counting engine
Brute force mein jo kuch bhi explosive hai woh EK idea se aata hai: jab tum ek ke baad ek kai choices karte ho aur har choice dusre se free ho, to options ki count multiply karte ho.

Topic ko iske kyon zarurat hai: , , aur (baad mein) sab isi rule ko baar baar apply karna hai. Yeh ek picture master karo aur scary formulas obvious ho jaayengi. Ab hum har ek derive karte hain.
4. — subsets ki number
Pehle, do sub-symbols.
Ab derivation, WHAT/WHY/PICTURE:
- WHAT karte hain: items ko ek ek karke walk karo, har baar in ya out choose karo.
- WHY multiply karte hain: choices independent hain (item 1 chunna item 2 ko restrict nahi karta), to rule of product se multiply karte hain. items hain, har ek ke paas options hain: .
- WHAT IT LOOKS LIKE: ek branching tree jo har level par double hota hai.

Figure mein neeche leaves gino: items ke liye leaves hain — woh subsets hain, empty selection se lekar full tak.
5. — orderings (permutations) ki number
- WHAT karte hain: ordered slots left to right fill karo.
- WHY numbers shrink karte hain: slot 1 mein items mein se koi bhi ja sakta hai. Place hone ke baad, slot 2 ke liye sirf items bachte hain, phir , aur aise hi. Choices phir bhi multiply sense mein independent hain (koi bhi first choice kisi bhi valid second choice ke saath pair ho sakti hai), to multiply karte hain: .
- WHAT IT LOOKS LIKE: wahi branching tree, lekin har level mein pichle se ek branch kam hoti hai.
6. — unordered pairs ki number
- WHAT karte hain: pehla item pick karo ( ways) aur doosra, different item ( ways): yeh ordered pairs deta hai.
- WHY 2 se divide karte hain: har unordered pair do baar count hua (ek baar ke roop mein, ek baar ke roop mein). Double-count undo karo se divide karke:
- WHAT IT LOOKS LIKE: tamam cells ki ek grid; diagonal (self-pairs ) throw out, aur dono triangles mirror images hain — sirf ek rakhte hain.

Figure mein diagonal ke upar cyan cells woh pairs hain jo hum rakhte hain; greyed-out diagonal self-pairs hai, aur lower triangle woh duplicate hai jise divide away karte hain. Exactly isi liye parent ke Worked Example 1 mein inner loop i+1 se start hoti hai.
7. — symbols par length- strings ki number
Parent ka Example 3 ek PIN crack karta hai aur "" quote karta hai. aur ko zero se earn karte hain.
- WHAT karte hain: ordered slots fill karo; har slot independently symbols mein se koi bhi hold kar sakta hai.
- WHY hai: slot 1 mein options, slot 2 mein options, …, kul slots. Repeated independent choices → rule of product → . (Permutations ke unlike, symbols repeat ho sakte hain, isliye count tak nahi shrink karta — har slot phir bhi sare options dekhta hai.)
- WHAT IT LOOKS LIKE: subsets jaisi wahi branching tree, lekin ab har level ki jagah branches mein split hoti hai.
8. Big- aur Big- — "count kitni tezi se grow karti hai?"
Kyon constants throw away karte hain: hum care karte hain kaam kaise scale karta hai jab input badhta hai, exact tick-count nahi, jo tumhari machine par depend karta hai. double karne par algorithm kaam karta hai — woh ratio useful truth hai.
Topic ko iske kyon zarurat hai: parent ki poori acceptability table (, , …) is language mein likhi hai. / ke bina hum " at " ko " at " se compare nahi kar sakte.
9. Bits, AND operator, aur bit-masks — subset ko number mein turn karna
Parent ke Example 2 mein for mask in range(1 << n) loop hai aur mask & (1 << i) test hai. Ab decode karte hain.
Test mask & (1 << i) number build karta hai (slot mein ek single ) aur use mask ke saath AND karta hai. Result non-zero tabhi hoga jab mask ka bit ek ho — yani yeh poochh raha hai "kya item is subset mein hai?". & us ek bit ko isolate karta hai aur baakon sab ignore karta hai. Yeh machinery Bitmasking mein fully explore ki gayi hai.
Prerequisite map
Sab kuch parent mein funnel ho jaata hai: counts search-space size batate hain, Big-/Big- batata hai kitni tezi se grow karta hai, aur constraints batate hain ki time budget mein fit hota hai ya nahi.
Yeh foundations aage kahaan le jaate hain
Ek baar search space count karne aate hain, to tum decide kar sakte ho ki brute force accept karo ya zyada smart paradigm reach karo — Dynamic Programming (overlapping sub-answers reuse karo), Greedy Algorithms (locally-best moves par commit karo), ya Backtracking (dead branches jaldi prune karo). Un problems ke liye jahan koi shortcut known nahi — NP-Hard Problems — pruning ke saath brute force aksar wahi sab hota hai jo hum kar sakte hain.
Equipment checklist
Self-test: right side cover karo, answer do, phir reveal karo.
kya represent karta hai?
plain words mein padhte hain.
Multiplication (product) rule state karo.
-element set mein subsets kyon hote hain?
kya hai aur kyon?
Permutations ki jagah kyon dete hain?
kya hai aur kyon?
kyun hai, divide-by-2 ke saath?
aur kya mean karte hain, aur length- strings kitni hoti hain?
aur mein kya fark hai?
mask & (1 << i) kya test karta hai, aur & kya karta hai?
& do numbers ko bit by bit AND karta hai; test non-zero tabhi hota hai jab bit set ho — yani item subset mein hai.kiske equal hai?
Recall Quick numeric readiness
- ::: lagbhag (ek million).
- ::: lagbhag .
- ::: .
- (ek 4-digit PIN space) ::: .