3.7.4 · D1 · HinglishAlgorithm Paradigms

FoundationsGreedy problems — activity selection, fractional knapsack, Huffman coding (full algorithm)

3,443 words16 min read↑ Read in English

3.7.4 · D1 · Coding › Algorithm Paradigms › Greedy problems — activity selection, fractional knapsack, H

Pehle se, "finish times" ya "value-per-weight" ya "sibling leaves at maximum depth" ke baare mein koi proof padhne se pehle, tumhe jaanna hoga ki ye har piece kya hai aur kaisa dikhta hai. Hum inhe order mein banate hain, taaki koi bhi symbol use hone se pehle draw kiya ja sake.


0. Yahan "problem" kya hai, aur "optimal" kya hota hai?

Poora khel yeh hai: feasible solutions ke us bade cloud mein se, ek optimal par land karo bina sab check kiye. Greedy isko ek seedhi sweep mein karne ki koshish karta hai.


1. Number line, intervals, aur "overlap"

Activity selection poori tarah ek number line par hoti hai — ek seedhi horizontal axis jahan har point time ka ek moment hota hai.

Figure s01 (neeche): ek labelled time axis par do horizontal bars. Kali bar activity hai jo se tak chalti hai; laal bar activity hai jo se tak chalti hai. Unke beech ka gap ( se tak) visual proof hai ki woh kabhi ek moment share nahi karte — woh compatible hain.

Figure — Greedy problems — activity selection, fractional knapsack, Huffman coding (full algorithm)

Figure dekho. Do bars overlap karte hain agar woh line ke kisi bhi point ko ek saath share karte hain. Do bars compatible (non-overlapping) hain agar ek doosre ke shuru hone se pehle ya theek usi waqt khatam ho jaaye — laal bar kaali ke khatam hone ke baad shuru hoti hai, toh dono schedule ki ja sakti hain.

Parent note ki line "woh next activity chuno jiska start last picked finish ho" kuch nahi hai, bas yahi ek inequality hai, baar baar apply ki gayi.


2. Symbols , , aur inequalities (knapsack ki language)

Ab parent ki cryptic line plain English mein padhti hai: "Items ke fractions chuno taaki paisa jitna ho sake utna ho, lekin packed weight bag se kabhi zyada na ho."

Ab , , aur sab ka matlab clear hai, hum ek bhara hua bag padh sakte hain.

Figure — Greedy problems — activity selection, fractional knapsack, Huffman coding (full algorithm)

Figure s02 (upar): tall rectangle capacity ka knapsack hai. Isme neeche se teen slabs bhari hain jinki heights actually packed weights hain ():

  • item poora liya, : weight , value ;
  • item poora liya, : weight , value ;
  • item fraction mein liya (laal slab): weight used , value .

Teen packed weights hain , toh bag bilkul full hai — laal slab "last slot" idea hai, final gap ko agle item ke fraction se bharta hai. Annotation total value note karta hai .


3. Trees, nodes, leaves, aur depth (Huffman ki duniya)

Huffman coding ek binary tree ke roop mein draw ki jaati hai. Algorithm samajhne se pehle tree pictures mein fluent hona zaroori hai.

Figure — Greedy problems — activity selection, fractional knapsack, Huffman coding (full algorithm)

Figure s03 (upar): ek chhota binary tree. Sabse upar wala dot root hai (depth ). Har edge ko 0 (left) ya 1 (right) label kiya gaya hai. Same parent se latke do kaale leaves ko siblings mark kiya gaya hai. Ek leaf depth par laal mein draw ki gayi hai; uske tak neeche jaate do edge-labels padhne par uska codeword 01 milta hai. Yahi woh picture hai jo "depth" ko "number of bits" mein badal deti hai.


4. Min-heap / priority queue

Huffman ko baar baar chahiye "abhi do sabse chhoti frequencies do abhi". Yeh kaam fast karne ke liye ek data structure chahiye.

Har round mein re-sort kyun nahi karte? Kyunki har merge ke baad tum ek nayi combined frequency insert karte ho; heap use time mein absorb karta hai, scratch se re-sort karne ki jagah. Isliye Huffman ka core loop heap par tikta hai, sort par nahi.


5. Sorting aur symbol


6. Proof tool: exchange argument

Parent note mein har correctness proof same trick hai, toh ise ek baar seekh lo.

Tum usi swap ke teen flavours miloge:

Activities. Pehle ek indexing convention fix karo: sab activities ko finish time se sort karo aur unhe rename karo taaki ho. Is convention ke under, woh activity denote karta hai jiska finish time overall sabse pehla hai (sorting ke baad index ). Swap: kisi bhi optimal schedule mein, uske earliest finisher ko se replace karo. Kyunki utni hi ya pehle khatam hoti hai, jo kuch purani choice ke baad fit hua woh abhi bhi fit hoga — feasible, same count.

Knapsack. (Greek "epsilon") ko ek bahut chhota positive amount of weight hone do — itna chhota ki dono items involved abhi bhi dene aur lene ki room rakhen. kilograms kisi low-density item se nikalao aur high-density item mein daalo (jahan ). Value lost ; value gained ; net change . Toh swap strictly value improve karta hai, matlab jo solution densest item pehle nahi liya usse optimal nahi ho sakta.

Huffman. Yahan hume do alag symbols use karne honge taaki kuch overloaded na ho:

(Dhyaan do humne depth likha, na ki : symbol §2 mein knapsack density par already use ho chuka tha, aur finished code length hai — teen alag ideas, teen alag names.)


Prerequisite map — ise dependency chain ki tarah padho

Neeche har arrow ka matlab hai "right wali cheez samajhne ke liye left wali chahiye". Raw ideas se upar se teeno greedy problems mein neeche padho, jo sab parent topic mein merge hote hain.

  • Number line + intervals → tumhe compatibility test deta hai → jo Activity Selection ko power karta hai.
  • Summation aur density → dono Fractional Knapsack mein feed hote hain.
  • Sorting + Big-O → activity selection aur knapsack ke sort-first steps ko feed karte hain.
  • Min-heap → woh hai jo Huffman ke core loop mein actually use hota hai (do sabse chhoti frequencies kheeencho), na ki sort.
  • Binary tree (depth, leaves, siblings) + prefix-free codeHuffman Coding mein feed hote hain.
  • Exchange argument → teeno problems mein shared correctness proof hai.
  • Activity Selection + Fractional Knapsack + Huffman Coding → milkar parent greedy topic hain.

Yahi chain ek diagram ki tarah (har box ek foundation hai, arrows batate hain kya unlock hoga):

Number line and intervals

Compatibility f_i le s_j

Activity Selection

Summation sign sum

Fractional Knapsack

Density v over w

Sorting and Big-O

Binary tree depth leaves

Huffman Coding

Prefix free code

Min heap priority queue

Exchange argument

Greedy paradigm 3.7.4

Yeh poora map the parent greedy topic ko feed karta hai. Do aur jagah ye pieces reuse hote hain: Minimum Spanning Tree (Kruskal/Prim) (greedy + exchange phir se) aur Dynamic Programming (jab greedy fail ho toh kya karte hain, jaise 0/1 knapsack mein).


Equipment checklist

Page band karo aur har cheez answer karo; agar atak jao toh apna section dobara padho.

ka kya matlab hai, aur yeh kin do activities ke baare mein bata sakta hai?
Activity activity ke shuru hone se pehle ya theek usi waqt khatam hoti hai, toh woh compatible hain (non-overlapping) — yeh label karne ke baad.
ke baare mein kya true hona chahiye, aur knapsack item ki density words mein kya hai?
Value divided by weight, — money per kilogram; chahiye taaki division defined ho.
, , aur har ek ka kya matlab hai?
Item skip karo, poora lo, aadha lo.
Huffman objective jo hum minimize karte hain, formula mein kya hai?
Total cost bits, sab symbols ke upar.
ka kya matlab hai?
Root se node tak neeche edges ki sankhya (root ka hai).
Code tree mein leaf ki depth uski codeword length ke barabar kyun hoti hai?
Root se leaf tak har edge ek bit (0 ya 1) add karta hai, toh depth = bits ki sankhya = .
Code ko prefix-free kya banata hai, aur leaves ise kyun guarantee karte hain?
Koi codeword doosre ki shuruwat nahi hoti; symbols sirf leaves par hote hain, toh koi path doosre ka prefix nahi ho sakta.
Jab do leaves ek parent share karte hain toh unhe kya kehte hain?
Siblings.
Ek min-heap tumhe kaunsa ek operation sasta deta hai, aur us par kya cost hai?
Sabse chhota element pop karo (aur naya daalo), dono kaafi time mein.
Huffman apne core loop ke liye sort ki jagah min-heap kyun use karta hai?
Har merge ek nayi combined frequency insert karta hai; heap use time mein re-insert karta hai, scratch se re-sort karne ki jagah.
Activity-selection exchange argument mein kya denote karta hai?
sort karne ke baad, woh activity hai jiska finish time overall sabse pehla hai.
Huffman swap mein kyun hai?
(rarer symbol) times (deeper leaf) non-positive hota hai.
Knapsack exchange argument mein kya hai?
Weight ki ek bahut chhoti positive amount, itni chhoti ki dono items abhi bhi de aur le sakein.
formally kya matlab hai?
kisi constant aur sab bade ke liye — growth par upper bound, constants ignore karte hue.
Is topic mein letter ke do alag meanings kya hain?
Activity selection mein finish time ; Huffman coding mein symbol frequency .