12.07.2015 Views

A Practical Introduction to Data Structures and Algorithm Analysis

A Practical Introduction to Data Structures and Algorithm Analysis

A Practical Introduction to Data Structures and Algorithm Analysis

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

552 Chap. 16 Patterns of <strong>Algorithm</strong>sPolynomial AB: 2x 4 − x 3 + 3x 2 − x + 1.Now, we see what happens when we multiply the evaluations of A <strong>and</strong>B at points 0, 1, <strong>and</strong> -1.AB(−1) = (2)(4) = 8AB(0) = (1)(1) = 1AB(1) = (2)(2) = 4These results are the same as when we evaluate polynomial AB at thesepoints.Note that evaluating any polynomial at 0 is easy. If we evaluate at 1 <strong>and</strong> -1, wecan share a lot of the work between the two evaluations. But we need five points<strong>to</strong> nail down polynomial AB. Fortunately, we can speed processing for any pairof values x <strong>and</strong> −x. This seems <strong>to</strong> indicate some promising ways <strong>to</strong> speed up theprocess of evaluating polynomials. But, evaluating two points in roughly the sametime as evaluating one point only speeds the process by a constant fac<strong>to</strong>r. Is theresome way <strong>to</strong> generalized these observations <strong>to</strong> speed things up further? And even ifwe do find a way <strong>to</strong> evaluate many points quickly, we will also need <strong>to</strong> interpolatethe five values <strong>to</strong> get the coefficients of AB back.So we see that we could multiply two polynomials in less than Θ(n 2 ) operationsif a fast way could be found <strong>to</strong> do evaluation/interpolation of 2n − 1 points. Beforeconsidering further how this might be done, first observe again the relationshipbetween evaluating a polynomial at values x <strong>and</strong> −x. In general, we can writeP a (x) = E a (x) + O a (x) where E a is the even powers <strong>and</strong> O a is the odd powers.So,P a (x) =n/2−1∑i=0n/2−1∑a 2i x 2i +i=0a 2i+1 x 2i+1The significance is that when evaluating the pair of values x <strong>and</strong> −x, we getE a (x) + O a (x) = E a (x) − O a (−x)O a (x) = −O a (−x)Thus, we only need <strong>to</strong> compute the Es <strong>and</strong> Os once instead of twice <strong>to</strong> get bothevaluations.The key <strong>to</strong> fast polynomial multiplication is finding the right points <strong>to</strong> use forevaluation/interpolation <strong>to</strong> make the process efficient. In particular, we want <strong>to</strong> take

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!