Matrix Multiplication: Strassen Algorithm
2020-1νκΈ°, λνμμ βμκ³ λ¦¬μ¦β μμ μ λ£κ³ 곡λΆν λ°λ₯Ό μ 리ν κΈμ λλ€. μ§μ μ μΈμ λ νμμ λλ€ :)
$n \times n$ νλ ¬ $X$μ νλ ¬ $Y$λ₯Ό κ³±νλ μ°μ°μ κ·Έλ₯ κ³μ°νλ€λ©΄, $O(n^3)$μ λΉμ©μ΄ λ λ€. κ·Έλ°λ° λΆν μ 볡μ κΈ°λ²μ μ μ ν νμ©νλ€λ©΄ νλ ¬ κ³±μ μ μ’λ μΌ λΉμ©μΌλ‘ κ³μ°ν μ μλ€!! μ΄κ²μ <μνΈλΌμΌ(Strassen) μκ³ λ¦¬μ¦>μ΄λΌκ³ νλ€.
λ¨Όμ νλ ¬ $X$λ 4λ±λΆ νμ¬ $A$, $B$, $C$, $D$λ‘ μ΄λ¦μ λΆμΈλ€. λ§μ°¬κ°μ§λ‘ νλ ¬ $Y$λ 4λ±λΆ νμ¬ $E$, $F$, $G$, $H$λ‘ μ΄λ¦ λΆμΈλ€.
\[X = \begin{bmatrix} A & B \\ C & D \end{bmatrix} \qquad Y = \begin{bmatrix} E & F \\ G & H \end{bmatrix}\]κ·Έ νμ $XY$ κ³±μ μ μ§ννλ©΄ μλμ κ°μ κ²μ΄λ€.
\[XY = \begin{bmatrix} AE + BG & AF + BH \\ CE + DG & CF + DH \end{bmatrix}\]μ¬μ€ $n/2 \times n/2$ ν¬κΈ°μ λ νλ ¬μ κ³±μ μ 8λ² νκΈ° λλ¬Έμ μ¬μ ν μκ° λ³΅μ‘λλ $O(n^3)$μ΄λ€. κ·Έλ¬λ μ¬κΈ°μμ μ½κ°μ νΈλ¦μ μ°λ©΄, 1/4 νλ ¬ κ³±μ μ 7λ²λ§ μνν΄μ νλ ¬ κ³±μ μ μνν μ μλ€!! π
μλμ κ°μ΄ $P_1, β¦, P_7$ 7κ°μ 1/4 νλ ¬ κ³±μ μ μ μνλ€. $P_i$ μ μ μ체λ₯Ό μ΄ν΄ν νμλ μμΌλ μ μν μ¬μ© λ³΄κ³ λμ΄κ°λ©΄ λλ€.
\[\begin{aligned} P_1 = A(F - H) &\qquad P_5 = (A + D)(E + H)\\ P_2 = (A + B)H &\qquad P_6 = (B - D)(G + H)\\ P_3 = (C + D)E &\qquad P_7 = (A - C)(E + F)\\ P_4 = D(G - E) \end{aligned}\]μ°λ¦¬λ $P_i$λ₯Ό μ‘°ν©ν΄ $XY$λ₯Ό μλμ κ°μ΄ μ λν μ μλ€.
\[XY = \begin{bmatrix} P_5 + P_4 - P_2 + P_6 & P_1 + P_2 \\ P_3 + P_4 & P_1 + P_5 - P_3 - P_7 \end{bmatrix}\]μμ°! μ΄λ κ² νλ©΄ μ΄ 7λ²μ κ³±μ κ³Ό 8λ²μ $O(n^2)$μ λ§μ λ§μΌλ‘ νλ ¬ κ³±μ μ μνν μ μλ€! μ΄κ²μ <μνΈλΌμΌ μκ³ λ¦¬μ¦>μ΄λΌκ³ νλ€ π
μ νμμ κΈ°μ νλ©΄ μλμ κ°μλ°
\[T(n) \le 7 \cdot T(n/2) + O(n^2)\]<Master Theorem>μ μ¬μ©ν΄μ $T(n)$μ μ λνλ©΄
\[T(n) = O(n^{\log_2 7}) \approx O(n^{2.81})\]λ‘ μλμ $O(n^3)$λ³΄λ€ κ°μ λ μ±λ₯μ μ»μ μ μλ€!! π μ΄λ»κ² 보면 λΆν μ 볡 ννΈμ μ΄λ°μ λ€λ€λ βλ μ μμ κ³±μ μκ³ λ¦¬μ¦βκ³Όλ λΉμ·ν λ§₯λ½μ΄μλ€.
νλ ¬κ³±μ μ λν μνΈλΌμΌ μκ³ λ¦¬μ¦μ 1969λ μ μ λμλλ°, κ·Έ μ΄νμ λ κ°μ λ μκ³ λ¦¬μ¦λ€μ΄ μ μλμλ€κ³ νλ€. λ μμΈν λ΄μ©μ Wikipediaμ ν΄λΉ μν°ν΄μ μ½μ΄λ³΄μ. π
π Wikipedia - Strassen Algorithm
νλ ¬ κ³±μ κ³Ό κ΄λ ¨ν΄μλ λͺκ°μ§ λ¬Έμ λ€μ΄ λ μλ€. νλ ¬ $A^m$μ κ°μ λΉ λ₯΄κ² μ°ΎκΈ° μν λ¬Έμ λ μκ³ (λ°±μ€ 10830λ² - νλ ¬ μ κ³±), νλ ¬ κ³±μ $A_1 \times A_2 \times \cdots \times A_n$μμμ μ΅μ μ°μ° μλ₯Ό κ°λ νλ ¬ κ³±μ μμλ₯Ό μ°Ύλ Chain Matrix Multiplication λ¬Έμ λ μλ€.