\newpage
\subsection{Matrix Multiplication}
\subsubsection{Strassen's Algorithm}
\begin{definition}[]{Strassen’s Algorithm}
    The \textbf{Strassen’s Algorithm} is an efficient algorithm for matrix multiplication, reducing the asymptotic complexity compared to the standard method.
\end{definition}

\begin{properties}[]{Characteristics of Strassen’s Algorithm}
    \begin{itemize}
        \item \textbf{Standard Multiplication:} Requires \tco{n^3} time for two $n \times n$ matrices.
        \item \textbf{Strassen’s Approach:} Reduces the complexity to \tco{n^{\log_2 7}} (approximately \tco{n^{2.81}}).
        \item \textbf{Idea:} Uses divide-and-conquer to reduce the number of scalar multiplications from $8$ to $7$ in each recursive step.
        \item Useful for applications involving large matrix multiplications.
    \end{itemize}
\end{properties}

\begin{usage}[]{Strassen's Algorithm}
    Strassen's algorithm is used for matrix multiplication, reducing the computational complexity from \(O(n^3)\) to approximately \(O(n^{2.81})\).

    \begin{enumerate}
        \item \textbf{Divide Matrices:}
              \begin{itemize}
                  \item Split the input matrices \(A\) and \(B\) into four submatrices each:
                        \[
                            A = \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix}, \quad
                            B = \begin{bmatrix} B_{11} & B_{12} \\ B_{21} & B_{22} \end{bmatrix}
                        \]
              \end{itemize}

        \item \textbf{Compute 7 Products:}
              \begin{itemize}
                  \item Calculate seven intermediate products using combinations of the submatrices:
                        \begin{align*}
                            M_1 & = (A_{11} + A_{22})(B_{11} + B_{22}) \\
                            M_2 & = (A_{21} + A_{22})B_{11}            \\
                            M_3 & = A_{11}(B_{12} - B_{22})            \\
                            M_4 & = A_{22}(B_{21} - B_{11})            \\
                            M_5 & = (A_{11} + A_{12})B_{22}            \\
                            M_6 & = (A_{21} - A_{11})(B_{11} + B_{12}) \\
                            M_7 & = (A_{12} - A_{22})(B_{21} + B_{22})
                        \end{align*}
              \end{itemize}

        \item \textbf{Combine Results:}
              \begin{itemize}
                  \item Use the intermediate products to compute the submatrices of the result \(C\):
                        \[
                            C_{11} = M_1 + M_4 - M_5 + M_7, \quad
                            C_{12} = M_3 + M_5
                        \]
                        \[
                            C_{21} = M_2 + M_4, \quad
                            C_{22} = M_1 - M_2 + M_3 + M_6
                        \]
              \end{itemize}

        \item \textbf{Repeat Recursively:}
              \begin{itemize}
                  \item If the submatrices are larger than a certain threshold, repeat the process recursively.
              \end{itemize}

        \item \textbf{End:}
              \begin{itemize}
                  \item The resulting matrix \(C\) is the product of \(A\) and \(B\).
              \end{itemize}
    \end{enumerate}
\end{usage}
