EECS 658 THE FIRST LECTURE Fall 1999

Introduction to the course:
1. Went over Introductory Handout.
2. Went over Course Announcement.
3. ASSUME: You know DFTs and convolutions are useful.

What can we do with Fast Algorithms?
1. Combine smaller algorithms into larger algorithms
OR: Split up large problem into smaller ones: Divide
2. Use very efficient small algorithms: Conquer
3. Develop new ways of solving problems: Applications

Examples: (Numbers correspond to those above)
1. Combine smaller into larger:
2. Cooley-Tukey FFT: 2D DFT to 1D DFT (twiddle mults)
3. Good-Thomas FFT: 2D DFT to 1D DFT (no twiddle mults)
4. Winograd Convs: Chinese Remainder thm. for polynomials
5. Block matrix multiplication: large to smaller.
6. POINT: When nesting small algorithms into large ones,
reducing #mults is much more important than reducing #adds,
although mults and adds take same time. Will see why later.

1. Efficient small algorithms:
2. Direct computation of small DFTs (ugh).
EXAMPLE: 5-point DFT using 16 complex mults.
3. Prime Factor FFT: (p)point DFT to (p-1)point cyclic conv.
EXAMPLE: 5-point DFT to 4-point cyclic convolution.
POINT: 4 complex mults, instead of 16 complex mults.
4. Cook-Toom fast small convolutions (trivial example below)
(also useful for Mallat's fast wavelet algorithm).
5. Strassen's fast 2× 2 matrix multiplication.

1. Applications:
2. 2D bandwidth extrapolation of finite-support image (see below).
3. Phase retrieval and blind deconvolution.
4. Inverse scattering (reconstruction from reflections).