Key insight:Ai⋯Aj ki kisi bhi full parenthesization mein ek aakhri multiplication hoti hai. Woh aakhri multiply chain ko kisi point k par split karti hai:
(Ai⋯Ak)(Ak+1⋯Aj)
Left block ek pi−1×pk matrix produce karta hai.
Right block ek pk×pj matrix produce karta hai.
Unhe combine karne ki cost pi−1pkpj hai.
Yeh decomposition KYO kaam karta hai: har parenthesization mein exactly ek outermost split hota hai. Agar hum best split k jaante, toh subproblems "left ka best cost" aur "right ka best cost" independent hain — yahi optimal substructure hai.
Maano m[i][j] = Ai⋯Aj multiply karne ki minimum cost.
MCM(p[0..n]):
n = len(p) - 1 # number of matrices
m = 2D array, m[i][i] = 0
s = 2D array # to reconstruct the splits
for L in 2..n: # chain length
for i in 1..n-L+1:
j = i + L - 1
m[i][j] = +infinity
for k in i..j-1:
cost = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j]
if cost < m[i][j]:
m[i][j] = cost
s[i][j] = k
return m[1][n], s
Socho tumhe LEGO sheets ki ek row ko do-do karke jodhna hai. Do sheets jodhne mein mehnat lagti hai jo unke size par depend karti hai. Final badi sheet same rahegi chahe kisi bhi order mein jodo, lekin kuch orders mein kaam bahut kam lagta hai. MCM bas ek smart plan hai: har woh jagah try karo jahan aakhri glue laga sakte ho, har piece banane ka sabse sasta tarika yaad rakho, aur koi bhi piece dobara solve mat karo.
MCM convention mein matrix Ai ki dimension kya hoti hai?
pi−1×pi, dimension array p[0..n] use karke.
Ek a×b ko b×c matrix se multiply karne ki cost kya hai?
a⋅b⋅c scalar multiplications.
MCM recurrence batao.
m[i][j]=mini≤k<j(m[i][k]+m[k+1][j]+pi−1pkpj), with m[i][i]=0.
Saare split points k kyun try karte hain?
Hum nahi jaante optimal last multiplication kahan hai; greedy fail hoti hai, isliye sab try karo aur min lo (optimal substructure + overlapping subproblems).
DP table kis order mein fill karte hain?
Increasing chain length L=j−i+1 ke hisaab se (length 2 se n tak), row by row nahi.
MCM DP ki time aur space complexity?
Time O(n3) (L, i, k ke loops), space O(n2).
A1(10×100),A2(100×5),A3(5×50) ki cost (A1A2)A3 vs A1(A2A3) mein kya hai?
7500 vs 75000 — same result, 10 guna fark.
Actual parenthesization kaise recover karte hain?
Split point s[i][j]=k store karo, phir [i,k] aur [k+1,j] par recurse karo.
Parenthesization result matrix kyun nahi badalta?
Matrix multiplication associative hoti hai.
Base case kya hai aur kyun?
m[i][i]=0 kyunki ek akeli matrix ko multiply karne ki zarurat nahi hoti.