cse 202 - algorithms

11
6/5/03 CSE 202 - FFT,etc CSE 202 - Algorithms Polynomial Representations, Fourier Transfer, and other goodies. (Chapters 28-30)

Upload: lluvia

Post on 15-Jan-2016

24 views

Category:

Documents


0 download

DESCRIPTION

Polynomial Representations, Fourier Transfer, and other goodies. (Chapters 28-30). CSE 202 - Algorithms. Adjacency matrix M[i,j] = 1 iff (i,j) is an edge. Requires (V 2 ) just to find some edges (if you’re unlucky and graph is sparse). Adjacency lists - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CSE 202 - Algorithms

6/5/03 CSE 202 - FFT,etc

CSE 202 - Algorithms

Polynomial Representations,

Fourier Transfer,

and other goodies.

(Chapters 28-30)

Page 2: CSE 202 - Algorithms

CSE 202 - FFT,etc2

Representation mattersExample: simple graph algorithms

Adjacency matrix

M[i,j] = 1 iff (i,j) is an edge.

Requires (V2) just to find some edges (if you’re unlucky and graph is sparse)

Adjacency lists

M[i] is list of nodes attached to node i by edge

O(E) algorithm for connected components,

O(E lg E) for MST

...

Page 3: CSE 202 - Algorithms

CSE 202 - FFT,etc3

Representation mattersExample: long integer operations

Roman numerals

multiplication isn’t hard, but if “size” of instance is number characters, can be O(N2) (why??)

Arabic notation

O(N lg 3), or even better.

Page 4: CSE 202 - Algorithms

CSE 202 - FFT,etc4

Another long integer representation

Let q1, q2,..., qk be relatively prime integers.

Assume each is short, (e.g. < 231 )

For 0 < i < q1 q2 qk , represent i as vector:

< i (mod q1), i (mod q2),..., i (mod qk) >

Converting to this representation takes perhaps O(k2)

k divides of k-long number by a short one.

Converting back requires k Chinese Remainder operations.

Why bother?

+ or x on two such number takes O(k) time.but comparisons are very time-consuming.

If you have many x’s per convert, you can save time!

Page 5: CSE 202 - Algorithms

CSE 202 - FFT,etc5

Representing (N-1)th degree polynomials

Use N coefficients

a0 + a1 x + a2 x2 + ... + aN-1

xN-1

Addition: point wise

Multiplication: convolution

ci = ak bi-k

Use N points

b0=f(0), ..., bN-1=f(N-1).

Addition: point wise

Multiplication: point wise

To convert:Evaluate at N points

O(N2)

Add N basis functionsO(N2)

Page 6: CSE 202 - Algorithms

CSE 202 - FFT,etc6

So what?Slow convolutions can be changed to faster point wise

ops.

E.g., in signal processing, you often want to form dot product of a set of weights w0, w1, ..., wN-1 with all N cyclic shifts of data a0, a1, ..., aN-1. This is a convolution.

Takes N2 time done naively.

– Pretend data and weights are coefficients of polynomials.

– Convert each set to point value representations Might take O(N2) time.

– Now do one point wise multiplications O(N) time.

– And finally convert each back to original formMight take O(N2) time.

Ooops ... we haven’t saved any time.

Page 7: CSE 202 - Algorithms

CSE 202 - FFT,etc7

Fast Fourier Transform (FFT)It turns out, we can switch back and forth between

two representations (often called “time domain” and “frequency domain”) in O(N lg N) time.

Basic idea: rather than evaluating polynomial at 0, ..., N-1, do so at the N “roots of unity”

These are the complex numbers that solve XN = 1.

Now use fancy algebraic identities to reduce work.

Bottom line – to form convolution, it only takes O(N lg N) to convert to frequency domain

O(N) to form convolution (point wise multiplication)

O(N lg N) to convert back.

O(N lg N) instead of O(N2).

Page 8: CSE 202 - Algorithms

CSE 202 - FFT,etc8

The FFT computation“Butterfly network”

b0b1b2b3b4

b15

a0a1a2a3a4

a15

xy x-i y

x+i y

Each box computes ...

where i is some root of unity.Takes 10 floating-point ops

(these are complex numbers).

lg N stages“Bit reversal”permutation

inputs

Factoid: In 1990, 40% of all Cray Supercomputer cycles

were devoted to FFT’s

Page 9: CSE 202 - Algorithms

CSE 202 - FFT,etc9

Fast Matrix Multiplication(chapter 28)

Naïve matrix multiplication is O(N3)

for multiplying two NxN matrices.

Strassen’s Algorithm uses 7 multiplies of N/2 x N/2 matrixes (rather than 8).

T(N) = 7T(N/2) + c N2. Thus, T(N) is O( ?? ) = O(N2.81...).

It’s faster than naïve method for N > 45-ish.

Gives slightly different answer, due to different rounding.It can be argued that Strassen is more accurate.

Current champion: O(N 2.376) [Coppersmith & Winograd]

Page 10: CSE 202 - Algorithms

CSE 202 - FFT,etc10

Linear Programming (chapter 29)

Given n variables x1, x2, ... xn,

– maximize “objective function” c1x1+ c2x2+...+cnxn,

– subject to the m linear constraints:

a11x1+ a12x2+...+c1nxn b1

...am1x1+ am2x2+...+cmnxn bm

Simplex method: Exponential worst case, but very fast in practice.

Ellipsoid method is polynomial time. There exists some good implementations (e.g. in IBM’s OSL library).

NOTE: Integer linear programming (where answer must be integers) is NP-hard (i.e., probably not polynomial time).

Page 11: CSE 202 - Algorithms

CSE 202 - FFT,etc11

Glossary (in case symbols are weird)

subset element of infinity empty set

for all there exists intersection union

big theta big omega summation

>= <= about equal

not equal natural numbers(N)

reals(R) rationals(Q) integers(Z)