Il problema è calcolare il polinomio . Supponiamo che tutti i coefficienti si adattino a una parola macchina, cioè possano essere manipolati in unità di tempo.
È possibile eseguire tempo applicando FFT in modo albero. Puoi fare O ( n log n ) ?
Il problema è calcolare il polinomio . Supponiamo che tutti i coefficienti si adattino a una parola macchina, cioè possano essere manipolati in unità di tempo.
È possibile eseguire tempo applicando FFT in modo albero. Puoi fare O ( n log n ) ?
Risposte:
Warning: This is not yet a complete answer. If plausibility arguments make you uncomfortable, stop reading.
I will consider a variant where we want to multiply (x - a_1) ... (x - a_n) over the complex numbers.
The problem is dual to evaluating a polynomial at n points. We know this can be done cleverly in O(n log n) time when the points happen to be nth roots of unity. This takes essential advantage of the symmetries of regular polygons that underlie the Fast Fourier Transform. That transform comes in two forms, conventionally called decimation-in-time and decimation-in-frequency. In radix two they rely on a dual pair of symmetries of even-sided regular polygons: the interlocking symmetry (a regular hexagon consists of two interlocking equilateral triangles) and the fan unfolding symmetry (cut a regular hexagon in half and unfold the pieces like fans into equilateral triangles).
From this perspective, it seems highly implausible that an O(n log n) algorithm would exist for an arbitrary set of n points without special symmetries. It would imply that there is nothing algorithmically exceptional about regular polygons as compared to random sets of points in the complex plane.