3.7.13 · D5 · HinglishAlgorithm Paradigms
Question bank — DP problems — matrix chain multiplication
3.7.13 · D5· Coding › Algorithm Paradigms › DP problems — matrix chain multiplication
True or false — justify
Matrix multiplication associative hona iska matlab cost bhi har parenthesization ke liye same hogi.
False. Associativity sirf same result matrix guarantee karta hai, lekin scalar multiplications ki count drastically change hoti hai (e.g. 7500 vs 75000) — isliye hi MCM exist karta hai.
Matrices ke andar jo actual numbers hain woh optimal parenthesization ko affect karte hain.
False. Cost sirf dimensions pe depend karta hai, isliye sirf dimension array matter karta hai, entries kabhi nahi.
matrices ke liye input dimension array ki length hoti hai.
False. Iska length hota hai: matrix ka size hai, isliye matrices ke liye boundaries chahiye.
ek arbitrary definition hai jo hum impose karte hain.
False. Ye problem se hi aata hai: ek single matrix ke liye zero multiplications chahiye kyunki usse multiply karne ke liye kuch hai hi nahi.
DP table ko row by row fill karna (increasing ) same answer deta hai, bas alag order mein.
False. chhoti chains aur pe depend karta hai; row-major fill mein kuch cells jo abhi compute nahi hue unhe read kiya ja sakta hai. Tumhe increasing chain length ke order mein fill karna padega.
MCM ki recurrence mein optimal substructure isliye hai kyunki left aur right sub-chains ko ek baar split fix hone ke baad independently optimize kiya ja sakta hai.
True. Last multiply ko pe fix karne se dono blocks independent problems ban jaate hain, isliye unki optimal costs combine karna valid hai — yahi precisely optimal substructure hai.
Top-down memoized version aur bottom-up table alag time complexities dete hain.
False. Dono hain: states hain aur har ek work karta hai. Memoization vs Tabulation dekho — order alag hota hai, asymptotics nahi.
Split point ki range hoti hai.
False. Range hoti hai. Left block hai aur right ; agar ho toh right block empty ho jaayega.
Spot the error
" ko pe split karne ka combine cost hai."
Wrong index. Left block hai aur right , isliye cost hai — left dimension hai, nahi.
" aur matrix multiply karne ki cost operations hai."
Galat. Har output entry ke liye multiplications lagte hain, isliye total hota hai. Hum multiplications count karte hain, dimensions ka sum nahi.
"Hum additions aur multiplications dono count karte hain, isliye cost hai."
Standard MCM cost sirf scalar multiplications () count karta hai; additions ko convention ke according ignore kiya jaata hai, isliye extra term use nahi hota.
"Greedy: hamesha sabse chhoti dimension pe split karo, yahi sabse sasta join hai."
Locally sasta combine forced expensive sub-chains bana sakta hai, jisse total worse ho jaata hai. Greedy provably fail karta hai (7500-vs-75000 case), isliye har split try karna padta hai — isliye ye DP hai, greedy nahi.
" loop for i in 1..n: for j in i..n se milta hai."
Ye states ko wrong dependency order mein visit karta hai. Sahi outer loop chain length ke upar 2 se tak hona chahiye; tabhi saari chhoti sub-chains ready hoti hain.
"Answer reconstruct karne ke liye hum query time pe pe min dobara run karte hain."
Unnecessary aur error-prone hai. Hum fill ke dauran argmin mein store karte hain, phir usi table se aur pe recurse karte hain.
"Space hai kyunki teen nested loops hain."
Loops time dete hain. Stored tables aur ke upar 2D hain, isliye space hai. Time Complexity Analysis dekho.
Why questions
Hum last multiplication ke baare mein kyun sochte hain, first ke baare mein kyun nahi?
Har full parenthesization mein exactly ek outermost (final) multiply hota hai jo poori chain ko do independent blocks mein split karta hai. Last cut fix karne se problem cleanly separate hoti hai; first multiply baki structure ko same tarah partition nahi karta.
Plain recursion kyun blow up hoti hai jabki DP polynomial hai?
Same sub-chains (jaise ) bahut saari parenthesizations mein baar baar aate hain — overlapping subproblems. Plain recursion unhe exponentially baar re-solve karta hai; DP har ek baar store karta hai.
Parenthesizations ki count Catalan number ki tarah kyun grow karti hai?
Har parenthesization leaves (matrices) ke ek distinct binary tree ke corresponding hota hai; aisi trees ki count hoti hai. Catalan Numbers dekho.
MCM ko interval DP kyun kehte hain?
State chain ka ek contiguous interval describe karta hai, aur transitions us interval ko ek inner point pe split karte hain. Yahi shape Optimal Binary Search Tree aur Burst Balloons mein bhi aata hai.
Hum sirf ek single index ki jagah pair pe memoize kyun nahi kar sakte?
Ek subproblem ek contiguous sub-chain hai, jiske liye dono endpoints chahiye. Ek index aur mein distinguish nahi kar sakta.
Burst Balloons last balloon burst fix kyun karta hai jabki MCM last multiplication fix karta hai?
Dono cases mein fixed element dono remaining sides ko independent banata hai. MCM mein split point left/right chains ko cleanly separate karta hai; Burst Balloons mein sirf last-burst balloon independent sub-intervals chodta hai.
Edge cases
Single matrix (, ) ke liye MCM kya return karta hai?
Zero. Sirf hai; length loop
for L in 2..n kabhi run nahi hota, isliye koi kaam nahi hota.Do matrices () ke liye kitne splits try kiye jaate hain aur cost kya hai?
Exactly ek split (), jo cost deta hai. Koi choice nahi hai, isliye "optimization" trivial hai.
Agar chain mein do matrices square aur equal-sized hain, toh kya parenthesization phir bhi matter karta hai?
Poori chain ke liye phir bhi matter kar sakta hai, lekin identical matrices ke ek run mein har pairwise combine cost hoti hai, isliye unke beech mein order neutral hota hai — differences sirf neighbouring non-equal dimensions ke through aate hain.
Agar kisi dimension ka size ho (row/column vector, e.g. ), toh kya kuch alag hoga?
Ye fully valid hai; ye simply us boundary ke through combines ko sasta banata hai (), jo aksar optimal split ko us ki taraf le jaata hai. Koi special-casing nahi chahiye.
Kya kabhi negative ho sakta hai ya empty chain se benefit ho sakta hai?
Nahi. Saari dimensions positive hain, isliye har combine cost positive hai; costs sirf badhti hain. Empty-chain case nahi hai kyunki split enforce karta hai.
Kya optimal split point hamesha unique hota hai?
Nahi. Ties ho sakti hain jahan do splits same minimum cost dein. Koi bhi ek optimal hai; sirf wahi record karta hai jo tumhari comparison ne rakh liya.
Recall One-line self-test
Sab kuch cover karo: (1) Combine cost formula kya hai? (2) Table fill karne ka order kya hai? (3) Greedy kyun nahi? Combine cost ::: . Fill order ::: increasing chain length . Not greedy ::: locally sasta split costly sub-chains force kar sakta hai; sirf saare splits try karna safe hai.
Connections
- Matrix Chain Multiplication (MCM) — parent derivation
- Dynamic Programming — optimal substructure + overlapping subproblems
- Catalan Numbers — parenthesization count
- Optimal Binary Search Tree · Burst Balloons — same interval-DP shape
- Memoization vs Tabulation · Time Complexity Analysis