Parenthesization of two subchains
*A*_{1} .. *A*_{k} and
*A*_{k+1} .. *A*_{n}must each be optimal for
*A*_{1} .. *A*_{n} to be optimal.

Why? A lower cost solution to a subchain reduces the cost of
*A*_{1} .. *A*_{n}. The total cost is calculated as cost(
*A*_{1} .. *A*_{k}) +
cost(
*A*_{k+1} .. *A*_{n}) + cost of multiplying two resultant matrices together.
The last term is constant no matter what the subproblem solutions are.

We can show that if our subproblem solution is not optimal, a
better subproblem solution cost yields a better total cost.

Thus, as is the case with ALL Dynamic Programming solutions, an optimal solution to the problem consists of optimal solutions to subproblems.

This is called optimal substructure.