30-2 Toeplitz matrices
A Toeplitz matrix is an $n \times n$ matrix $A = (a_{ij})$ such that $a_{ij} = a_{i - 1, j - 1}$ for $i = 2, 3, \dots, n$ and $j = 2, 3, \dots, n$.
a. Is the sum of two Toeplitz matrices necessarily Toeplitz? What about the product?
b. Describe how to represent a Toeplitz matrix so that you can add two $n \times n$ Toeplitz matrices in $O(n)$ time.
c. Give an $O(n\lg n)$-time algorithm for multiplying an $n \times n$ Toeplitz matrix by a vector of length $n$. Use your representation from part (b).
d. Give an efficient algorithm for multiplying two $n \times n$ Toeplitz matrices. Analyze its running time.
(Omit!)