矩阵链乘法
两个矩阵的乘积:
已知\(A\)为\(p \times r\)的矩阵,\(B\)为\(r\times q\)的矩阵,则\(A\)与\(B\)的乘积是一个\(p \times q\)的矩阵,记为\(C\):
其中\(c_{ij} = \sum_{1\leq k \leq r} a_{ik}b_{kj} , \forall 1 \leq i \leq p , 1\leq j \leq q\)
每个\(c_{ij}\)的计算需要\(r\)次乘法(另有\(r-1\)次加法,这里仅考虑元素的标量乘法),则计算\(C\)共需要\(pqr\)次标量乘法运算。
\(n\)个要连续相乘的矩阵构成一个矩阵链\(<A_1,A_2,…,A_n>\),要计算这\(n\)个矩阵的连乘乘积:\(A_1A_2...A_n\),称为矩阵链乘问题。
-
矩阵链乘满足结合律,不满足交换律。
-
矩阵链乘过程相当于在矩阵之间加适当的括号,从而根据组合关系定义出矩阵链乘的计算模式。
如,已知四个矩阵\(A_1,A_2,A_3,A_4\),乘积\(A_1 A_2 A_3 A_4\)可用五种不同的加括号方式完成:
给定\(n\)个矩阵的链,记为\(<A_1,A_2,…,A_n>\),其中\(i=1,2,…,n\),矩阵\(A_i\)的维数为\(p_{i - 1} \times p_i\)。求一个完全“括号化方案”,使得计算乘积\(A_1A_2…A_n\)所需的标量乘法次数最小。
-
最优化方案的结构特征——寻找最优子结构
用记号\(A_{i , j}\)表示子问题\(A_iA_{i+1}…A_j\)通过加括号后得到的一个最优计算模式,且该计算模式下的最大区间恰好在\(A_k\)与\(A_{k+1}\)之间分开,则有:
\[(\overline{A_iA_{i + 1}...A_k} )(\overline{A_{k + 1}...A_j}) \]则必须有:\((\overline{A_iA_{i + 1}...A_k} )\)必是“前缀”子链\(A_iA_{i+1}…A_k\)的一个最优的括号化子方案,记为\(A_{i , k}\);同理\((\overline{A_{k + 1}...A_j})\) 也必是“后缀”子链\(A_{k+1}A_{k+2}…A_j\)的一个最优的括号化子方案,记为\(A_{k+ 1 , j}\)。
证明:反证法
如若不然,设\(A_{i , k}^{'}\)是\(<A_i,A_{i+1},…A_k>\)一个代价更小的计算模式,则由\(A_{i, k}^{'}\)和\(A_{k + 1 , j}\)构造计算过程\(A_{i , j}^{'}\),代价将比\(A_{i , j}\)小,这与\(A_{i , j}\)是最优链乘模式相矛盾。对\(A_{k + 1 , j}\)亦然。——这一性质称为(该问题的)最优子结构性。
-
递归求解方案
令\(m[i , j]\)为计算矩阵链\(A_{i , j}\)所需的标量乘法运算次数的最小值,则递推关系式为:
\[m[i , j] = \begin{cases} 0 & i = j\\ min_{i \leq k < j} \{m[i , k] + m[k + 1 , j] + p_{i - 1}p_kp_j\} & i < j \end{cases} \]含义:
-
对任意的\(i\leq k<j\)分开的子乘积,\(A_{i , k}\)是一个\(p_{i-1}\times p_k\)的矩阵,\(A_{k+1,j}\)是一个\(p_k\times p_j\)的矩阵 。结果矩阵\(A_{i,j}\)是\(A_{i,k}\)和\(A_{k+1,j}\)最终相乘的结果。
-
对\(m[i,j]\)和任意\(k\)所分开的矩阵链乘\(<A_i,A_{i+1},…, A_j>\),\(m[i,j]\)等于计算子乘积\(A_{i,k}\)最小代价$m[i,k] + $ 计算子乘积\(A_{k+1,j}\)的最小代价\(m[k+1,j]+\)这两个子矩阵最后相乘的代价\(p_{i-1}p_kp_j\),而这样的\(k\)有\(j-i\)种可能性,取其中最小者。
-
\(m[1,n]\)是计算\(A_{1,2,...,n}\)的最小代价。
再设\(s[i , j]\),记录使\(m[i,j]\)取得最小值的\(k\),则可以依靠\(s\)求出最优链乘模式
伪代码:
-
时间复杂度分析:算法的主体是由一个三层循环构成。外循环执行\(n - 1\)次,内层循环至多执行\(n -1\)次,所以矩阵链乘法的算法复杂度是\(\Omega(n^3)\) ,空间复杂度为\(\Theta(n^2)\)
作者:cherish.
出处:https://home.cnblogs.com/u/cherish-/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。