We use the dynamic programming algorithm for Matrix Chain Multiplication.
Given dimensions array d=[d0,d1,d2,d3,d4]=[10,100,20,5,80]:
M1:10×100
M2:100×20
M3:20×5
M4:5×80
Chain Length 2:
m[1,2]=d0d1d2=10×100×20=20000
m[2,3]=d1d2d3=100×20×5=10000
m[3,4]=d2d3d4=20×5×80=8000
Chain Length 3:
For m[1,3]:
k=1: m[1,1]+m[2,3]+d0d1d3=0+10000+10×100×5=15000
k=2: m[1,2]+m[3,3]+d0d2d3=20000+0+10×20×5=21000
⟹m[1,3]=15000
For m[2,4]:
k=2: m[2,2]+m[3,4]+d1d2d4=0+8000+100×20×80=168000
k=3: m[2,3]+m[4,4]+d1d3d4=10000+0+100×5×80=50000
⟹m[2,4]=50000
Chain Length 4 (m[1,4]):
k=1: m[1,1]+m[2,4]+d0d1d4=0+50000+10×100×80=130000
k=2: m[1,2]+m[3,4]+d0d2d4=20000+8000+10×20×80=44000
k=3: m[1,3]+m[4,4]+d0d3d4=15000+0+10×5×80=19000
Thus, the minimum number of scalar multiplications is 19000, achieved by the parenthesization ((M1×(M2×M3))×M4).
Hence, the correct option is (C).