有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。
设cost[i][j]表示计算第i个矩阵Ai与第j个矩阵Aj所需的代价,矩阵Ai=a(i-1)*ai,矩阵Aj=a(j-1)*aj
我们可以得到cost方程:
当i==j时,cost[i][j]=0;
当i<j时,cost[i][j]=min{cost[i][k]+cost[k+1][j]+a[i-1]*a[k]*a[j]},其中i<=k<j.
可以在Ai与Aj之间的任意第k个位置切一刀,有j-i中切法,比较这些切法,求出最小值,即最小代价