最优化方法(学习笔记)-第九章复杂度计算

矩阵结构和算法复杂度

  • 定义Flop Count

    • 浮点运算(浮点运算):两个浮点数的一个加法、减法、乘法或除法。
    • 估计算法的复杂性:将flop数表示为问题维数的(多项式)函数,并通过只保留前导项
    • 不是计算时间的准确预测器,支持读写,并行计算
    • 是近似估计
  • 举例

    • x , y ∈ R n , x T y = ∑ i x i y i    ⟹    n + ( n − 1 ) = 2 n − 1    ⟺    O ( n ) x,y\isin R^n,x^Ty=\sum_i{x_iy_i}\implies n+(n-1)=2n-1\iff O(n) x,yRnxTy=ixiyin+(n1)=2n1O(n)
    • A ∈ R m × n , x ∈ R n , A x    ⟹    m ( 2 n − 1 )    ⟺    O ( m n ) = m = n O ( n 2 ) A\isin R^{m\times n},x\isin R^n,Ax\implies m(2n-1) \iff O(mn)\xlongequal{m=n} O(n^2) ARm×nxRnAxm(2n1)O(mn)m=n O(n2)
    • A ∈ R m × n , B ∈ R n × p , A B    ⟹    m p ( 2 n − 1 )    ⟺    O ( m n p ) = m = n = p O ( n 3 ) A\isin R^{m\times n},B\isin R^{n\times p},AB\implies mp(2n-1) \iff O(mnp)\xlongequal{m=n=p} O(n^3) ARm×nBRn×pABmp(2n1)O(mnp)m=n=p O(n3)

    当A是稀疏,Banded,Toeplitz等状态下可以被分解,简化复杂度。

  • 特例:线性等式【Ax=b】

    • A是对角阵, O ( n ) O(n) O(n)
      在这里插入图片描述

    • A是下三角阵, O ( n 2 ) O(n^2) O(n2)
      在这里插入图片描述

    • A是正交矩阵orthogonal matrices, O ( n 2 ) O(n^2) O(n2)
      在这里插入图片描述

    • A是置换(全错排)矩阵permutation matrices, O ( 0 ) O(0) O(0)
      在这里插入图片描述

用分解矩阵求解线性方程Ax=b

  • 矩阵A可以由一些简单的矩阵组合得到, A = A 1 A 2 . . . A k , A i A=A_1A_2...A_k,A_i A=A1A2...AkAi可能是对角矩阵,上三角矩阵等
  • 求解x可以通过传递求解k个简单的等式
    在这里插入图片描述
  • 整个x向量有m个未知数待求
    在这里插入图片描述

简化Ax=b求解的复杂度

LU分解–A是非奇异矩阵

  • 简单得说就是先用矩阵L做消元,然后再左乘 L − 1 L^{-1} L1
    比如
    在这里插入图片描述

  • 于是L矩阵就是 [ 1 0 − 3 1 ] , A = L − 1 L A = L ′ U ′ \begin{bmatrix} 1 & 0 \\ -3 & 1 \end{bmatrix},A=L^{-1}LA=L'U' [1301]A=L1LA=LU

注 : L ′ = L − 1 , U ′ = L A = [ 1 2 0 − 2 ] 注:L'=L^{-1},U'=LA=\begin{bmatrix} 1 & 2 \\ 0 & -2 \end{bmatrix} L=L1,U=LA=[1022]

  • 对于需要多步消元的矩阵A,可以转化为 A = L 1 − 1 . . . L n − 1 − 1 ⏟ 下三角矩阵 L n − 1 . . . L 1 A ⏟ 上三角矩阵 = L ′ U ′ A=\underbrace{L_1^{-1}...L_{n-1}^{-1}}_{\text{下三角矩阵}}\underbrace{L_{n-1}...L_{1}A}_{\text{上三角矩阵}}=L'U' A=下三角矩阵 L11...Ln11上三角矩阵 Ln1...L1A=LU

  • 计算复杂度:每一k行都需要相乘和相加,于是第k行的flop=2(n-k+1)(n-k)
    在这里插入图片描述

F l o p C o u n t = ∑ k = 1 n − 1 2 ( n − k + 1 ) ( n − k ) Flop Count=\sum_{k=1}^{n-1}2(n-k+1)(n-k) FlopCount=k=1n12(nk+1)(nk)

= 2 ∑ k = 1 n − 1 ( n − k ) 2 + ∑ ( n − k ) ⏟ 可忽略 =2\sum_{k=1}^{n-1}(n-k)^2+\underbrace{\sum(n-k)}_{\text{可忽略}} =2k=1n1(nk)2+可忽略 (nk)

= 2 ( n − 1 ) ( 2 n − 1 ) n 6 ∼ O ( 2 3 n 3 ) =2\frac{(n-1)(2n-1)n}{6}\sim O(\frac23n^3) =26(n1)(2n1)nO(32n3)

  • 假若A是稀疏矩阵,且无法实现标准的消元,可以先将矩阵A的行/列进行置换
    在这里插入图片描述

Cholesky分解–A是对称正定矩阵

可以将A分解为 A = L L T A=LL^T A=LLT,本质还是LU分解,但是复杂度是 O ( n 3 3 ) O(\frac{n^3}{3}) O(3n3)

块求解和矩阵反转引理

分块矩阵方程求解

假如矩阵A的性质不太统一,可以将A分块,分出具有特殊性质的子矩阵.
在这里插入图片描述

  • 复杂度: A 11 因 为 是 对 角 矩 阵 , 所 以 A 11 − 1 ∼ O ( n 1 ) A_{11}因为是对角矩阵,所以A_{11}^{-1}\sim O(n_1) A11,A111O(n1)
    在这里插入图片描述
    自己画图领会一下
    • x 1 ∼ A 11 − 1 A 12 x 2 ∼ O ( n 1 n 2 ) x_1\sim A_{11}^{-1}A_{12}x_2\sim O(n_1n_2) x1A111A12x2O(n1n2)
    • x 2 的 算 式 中 ( A 21 A 11 − 1 A 12 ) ⏟ O ( n 1 n 2 2 ) , A 21 A 11 − 1 b 1 ⏟ O ( n 2 n 1 ) ∼ O ( n 1 n 2 2 ) x_2的算式中\underbrace{(A_{21}A_{11}^{-1}A_{12})}_{O(n_1n_2^2)},\underbrace{A_{21}A_{11}^{-1}b_1}_{O(n_2n_1)}\sim O(n_1n_2^2) x2O(n1n22) (A21A111A12),O(n2n1) A21A111b1O(n1n22)
    • 最终的矩阵等式 : [ n 2 × n 2 ] x 2 = [ n 2 × 1 ] , :[n_2\times n_2]x_2=[n_2\times1], :[n2×n2]x2=[n2×1],根据矩阵分解的复杂度计算[LU分解的结论] , A n 2 x 2 = b n 2 ∼ O ( n 2 3 ) ,A_{n_2}x_2=b_{n_2}\sim O(n_2^3) ,An2x2=bn2O(n23)

分块后计算的复杂度( O ( n 1 n 2 + n 1 n 2 2 + n 2 3 ) ) < < O ( ( n 1 + n 2 ) 3 ) O(n_1n_2+n_1n_2^2+n_2^3))<<O((n_1+n_2)^3) O(n1n2+n1n22+n23))<<O((n1+n2)3)

注意: A 21 ∗ A 11 − 1 b ⏟ 先算 比 A 21 A 11 − 1 ⏟ 先算 b A_{21}*\underbrace{A_{11}^{-1}b}_{\text{先算}}比\underbrace{A_{21}A_{11}^{-1}}_{\text{先算}}b A21先算 A111b先算 A21A111b的复杂度降低

结构化矩阵加上低秩项

在这里插入图片描述

  • 将等式转化为矩阵等式
    在这里插入图片描述

  • 然后求解 ( I + C A − 1 B ) y = C A − 1 b , A x = b − B y (I+CA^{-1}B)y=CA^{-1}b,Ax=b-By (I+CA1B)y=CA1b,Ax=bBy
    y = ( I + C A − 1 B ) − 1 C A − 1 b y=(I+CA^{-1}B)^{-1}CA^{-1}b y=(I+CA1B)1CA1b
    假设A是对角矩阵(可逆)
    x = A − 1 ( I − B ( I + C A − 1 B ) − 1 C A − 1 ) b x=A^{-1}(I-B(I+CA^{-1}B)^{-1}CA^{-1})b x=A1(IB(I+CA1B)1CA1)b

  • 推导出矩阵求逆公式matrix inversion lemma
    在这里插入图片描述
       ⟹    ( A + B C ) − 1 = A − 1 ( I − B ( I + C A − 1 B ) − 1 C A − 1 ) \implies (A+BC)^{-1}=A^{-1}(I-B(I+CA^{-1}B)^{-1}CA^{-1}) (A+BC)1=A1(IB(I+CA1B)1CA1)

  • 计算复杂度的两种方法
    在这里插入图片描述
    在这里插入图片描述

总结

  • 矩阵结构和算法复杂度
    • x , y ∈ R n , x T y ∼ O ( n ) x,y\isin R^n,x^Ty\sim O(n) x,yRnxTyO(n)
    • A ∈ R m × n , x ∈ R n , A x ∼ O ( n 2 ) A\isin R^{m\times n},x\isin R^n,Ax\sim O(n^2) ARm×nxRnAxO(n2)
    • A ∈ R m × n , B ∈ R n × p , A B ∼ O ( n 3 ) A\isin R^{m\times n},B\isin R^{n\times p},AB\sim O(n^3) ARm×nBRn×pABO(n3)
    • A是对角阵 ∼ O ( n ) \sim O(n) O(n)
    • A是下三角阵 ∼ O ( n 2 ) \sim O(n^2) O(n2)
    • A是正交矩阵 ∼ O ( n 2 ) \sim O(n^2) O(n2)
    • A是置换矩阵 ∼ O ( 0 ) \sim O(0) O(0)
  • 用分解矩阵求解线性方程Ax=b
    A = A 1 A 2 . . . A k , A i A=A_1A_2...A_k,A_i A=A1A2...AkAi可能是对角矩阵,上三角矩阵等
  • 简化Ax=b求解的复杂度(LU, Cholesky分解)
    • LU分解–A是非奇异矩阵
      A = L − 1 L A = L ′ U ′ , A x = b ∼ O ( 2 3 n 3 ) A=L^{-1}LA=L'U',Ax=b\sim O(\frac23n^3) A=L1LA=LU,Ax=bO(32n3)
    • Cholesky分解–A是对称正定矩阵
      A = L L T , A x = b ∼ O ( n 3 3 ) A=LL^T,Ax=b\sim O(\frac{n^3}{3}) A=LLT,Ax=bO(3n3)
  • 块求解和矩阵反转引理
    • 分块矩阵方程求解
      思想: 将A分块,分出具有特殊性质的子矩阵
    • 结构化矩阵加上低秩项
      矩阵求逆公式 ( A + B C ) − 1 = A − 1 ( I − B ( I + C A − 1 B ) − 1 C A − 1 ) (A+BC)^{-1}=A^{-1}(I-B(I+CA^{-1}B)^{-1}CA^{-1}) (A+BC)1=A1(IB(I+CA1B)1CA1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值