CS 411 Fall 2025  >  Outline & Supplemental Notes for October 3, 2025


CS 411 Fall 2025
Outline & Supplemental Notes
for October 3, 2025

Outline

The material below was started on October 3, 2025 and finished on October 6, 2025.

Binary Tree Traversals [L 5.3]

Multiplication [L 5.4]

Supplemental Notes

Large Integer Multiplication in Practice

Multiplication of large integers has practical applications, particularly in cryptography. Integers multiplied in such applications can reach sizes where Karatsuba’s Algorithm is preferred to Brute-force integer multiplication.

Large-integer packages will typically include an implementation of Karatsuba’s Algorithm and perhaps other similar algorithms. They may choose the algorithm to be used for a particular multiplication based on the sizes of the numbers to be multiplied.

Matrix Multiplication Algorithms with a Lower Exponent

Strassen’s Algorithm is \(\Theta(n^{2.807})\), approximately. In 1990, a matrix-multiplication with a significantly lower exponent was found [D. Coppersmith & S. Winograd 1990]: about \(2.375477\). Over the years, other algorithms have been found, giving slightly smaller exponents, with minor improvements being offered by very recent research. The lowest exponent that I am currently aware of is that of an algorithm published by Alman et al in 2024.

Researchers Publication
Year
Exponent
(approximate)
D. Coppersmith & S. Winograd 1990 \(2.375477\)
A. J. Stothers 2010 \(2.373\)
V. V. Williams 2011 \(2.3728642\)
F. Le Gall 2014 \(2.3728639\)
J. Alman & V. V. Williams 2020 \(2.37286\)
R. Duan, Wu, & R. Zhou 2022 \(2.371866\)
V. V. Williams, Y. Xu, Z. Xu, & R. Zhou 2023 \(2.371552\)
J. Alman, R. Duan, V. V. Williams, Y. Xu, Z. Xu, & R. Zhou 2024 \(2.371339\)

Unlike Strassen’s Algorithm, the algorithms in the above table are generally considered to be impractical, because their actual running time is only better than Strassen’s Algorithm for extremely large matrices. Algorithms with this property—asymptotically fast, but only advantageous for impractically large problems—are sometimes called galactic algorithms.

And it is not uncommon for Brute-force matrix multiplication to be preferred even over Strassen’s Algorithm. The Brute-force method is typically faster for the sizes of matrices that are actually multiplied—particularly in view of its cache friendliness.

Some researchers think there might be an \(O(n^k)\) algorithm for matrix multiplication for every real number \(k > 2\). However, we seem to be far from figuring out how these might work.