Kisi problem mein greedy ke provably optimal hone ke liye kya property honi chahiye?
Ek greedy-choice property (ek locally optimal choice kisi globally optimal solution ka hissa hoti hai) plus optimal substructure, ek exchange argument se provable.
Greedy fractional knapsack solve karta hai lekin 0/1 nahi — kyun?
Fractional slivers allow karta hai, toh aap bag exactly fill kar sakte ho aur exchange argument hold karta hai; 0/1 ki integrality ka matlab hai ki ek whole item capacity waste kar sakta hai aur ek better combo block kar sakta hai.
0/1 knapsack greedy counter-example state karo.
W=50; A(10,60), B(20,100), C(30,120). Greedy by density A+B = 160 leta hai; optimum B+C = 220 hai.
Value-density greedy heuristic kya hai?
Items ko vi/wi descending se sort karo, har ek lo agar remaining capacity mein fit ho.
0/1 knapsack DP recurrence likho.
K(i,c)=max(K(i−1,c),vi+K(i−1,c−wi)) agar wi≤c, warna K(i−1,c); base K(0,c)=0.
DP solution ka runtime?
O(nW) (pseudo-polynomial — W ki numeric value par depend karta hai).
0/1 knapsack ke liye sasti approximation guarantee kya milti hai?
½-approximation: max(density-greedy value, best single item that fits) lo.
Sirf value se sort karna kyun fail karta hai?
Ek high-value heavy item saari capacity monopolize kar sakta hai aur lighter items ka ek higher-total-value subset block kar sakta hai.
Greedy-optimality proof ke liye exchange argument kyun zaruri hai?
Kyunki yeh dikhata hai ki locally optimal choice ko globally optimal solution mein shamil kiya ja sakta hai bina value lose kiye — agar yeh argument fail ho toh greedy ki correctness guarantee nahi hoti.
Recall Feynman: 12-saal ke bacche ko samjhao
Socho ek chhota backpack aur teen khilone hain. "Sabse zyada bang-for-its-size wala khilona pehle lo" trick tab kaam karti hai jab aap khilone ke tukde kar sako — aap har khaali kona fill kar lete. Lekin asli khilone kate nahi ja sakte! Toh kabhi kabhi "best per size" wala khilona pehle lene se ek awkward khaali jagah reh jaati hai, aur aap do aur khilonaon se chook jaate ho jo saath mein perfectly fit ho jaate aur zyada kaam ke hote. Sach mein best haul dhundne ke liye, har khilone ke liye dono choices try karni padti hain — "lo" ya "chhoddo" — aur har possible bacha hua space ke liye best result yaad rakhna padta hai. Woh careful try-both method dynamic programming hai.