Here, we describe a remarkable algorithm for matrix multiplication discovered by Strassen, [82]. Let $A=\left(\begin{array}{ll}A_1 & A_2 \\ A_3 & A_4\end{array}\right), B=\left(\begin{array}{ll}B_1 & B_2 \\ B_3 & B_4\end{array}\right)$, and $C=\left(\begin{array}{ll}C_1 & C_2 \\ C_3 & C_4\end{array}\right)=A B$ be block matrices of size $n=2 m$, where all blocks are of size $m \times m$. (a) Let $D_1=$ $\left(A_1+A_4\right)\left(B_1+B_4\right), D_2=\left(A_1-A_3\right)\left(B_1+B_2\right), D_3=\left(A_2-A_4\right)\left(B_3+B_4\right)$, $D_4=\left(A_1+A_2\right) B_4, D_5=\left(A_3+A_4\right) B_1, D_6=A_4\left(B_1-B_3\right), D_7=A_1\left(B_2-B_4\right)$. Show that $C_1=D_1+D_3-D_4-D_6, C_2=D_4+D_7, C_3=D_5-D_6, C_4=D_1-D_2-D_5+D_7$.
(b) How many arithmetic operations are required when $A$ and $B$ are $2 \times 2$ matrices? How does this compare with the usual method of multiplying $2 \times 2$ matrices?
(c) In the general case, suppose we use standard matrix multiplication for the matrix products in $D_1, \ldots, D_7$. Prove that Strassen's Method is faster than the direct algorithm for computing $A B$ by a factor of $\approx \frac{7}{8}$. (d) When $A$ and $B$ have size $n \times n$ with $n=2^r$, we can recursively apply Strassen's Method to multiply the $2^{r-1} \times 2^{r-1}$ blocks $A_i, B_i$. Prove that the resulting algorithm requires a total of $7^r=n^{\log _2 7}=n^{2.80735}$ multiplications