Bài toán nhân đa thức: Cho 2 đa thức và
, tính đa thức
. Nghĩa là tìm các hệ số
của đa thức
(Do
có bậc
nên
có bậc lớn nhất là
).
Công thức của các hệ số là
trong đó nếu ta đặt
. Như vậy, để tính tất cả các hệ số của đa thức
bằng công thức trên ta cần
phép tính. Tuy nhiên, ta có thể tính các hệ số của đa thức
chỉ với độ phức tạp
bằng phép biến đổi Fourier nhanh (Fast Fourier Transform – FFT).
Một số ý tưởng dẫn đến thuật toán FFT:
- Một đa thức bậc nhỏ hơn
hoàn toàn xác định nếu ta biết giá trị của đa thức tại
điểm phân biệt. Tức là nếu biết
thì sẽ tính được
và ngược lại.
- Như vậy, nếu ta tính được giá trị của đa thức
tại các điểm
thì do ta dễ dàng tính được
, nên đa thức
và các hệ số của nó hoàn toàn xác định được.
- Giả sử
chẵn và đa thức
, xét 2 đa thức sau
sử dụng các hệ số bậc chẵn của
sử dụng các hệ số bậc lẻ của
ta thấy
. Do đó nếu ta chọn tập các điểm
sao cho
thì việc tính giá trị của đa thức
tại
điểm
được quy về tính giá trị 2 đa thức
(có bậc nhỏ hơn
) tại
điểm
.
- Nếu tại
điểm mới ta vẫn có tính chất một nửa số điểm trái dấu với nửa số điểm còn lại thì ta có thể tiếp tục đệ quy. Như vậy, độ phức tạp để tính toán giá trị đa thức tại
điểm có công thức
trong đó
là độ phức tạp của 2 bài toán con, còn
là độ phức tạp khi ta sử dụng công thức
để kết hợp kết quả của 2 bài toán con. Theo định lý tổng quát, ta có
giống trường hợp thuật toán sắp xếp trộn (Merge Sort).
- Tuy nhiên, để trong
điểm
có một nửa số điểm trái dấu với nửa số điểm còn lại, các điểm
không thể là số thực vì
. Như vậy, ta phải sử dụng số phức.
- Để ý rằng, ở trường hợp cơ sở,
, nếu ta luôn chọn
để tính giá trị đa thức thì:Ở bước đệ quy trước đó, ta có các điểm
Ở bước đệ quy trước đó, ta có các điểm
……
Ở bước đệ quy với đa thức bậc nhỏ hơnta có các điểm là căn phức bậc
của 1 (n-th complex roots of unity).
Căn phức bậc của 1:
Từ công thức nổi tiếng của Euler , ta có
Nghĩa là là
căn phức bậc
của
.
Hình sau cho thấy vị trí các căn phức của trên đường tròn đơn vị.

Căn phức bậc 4, 5, 6 của 1
Bây giờ ta xem xét các tính chất của căn phức bậc của 1.
Tính chất 1: Nếu chẵn thì
, nghĩa là tập các căn phức bậc
của
chia thành 2 tập trái dấu nhau.
Chứng minh:
.
Tính chất 2: Nếu chẵn thì
.
Chứng minh:
Tính chất 3: Nếu là căn phức bậc
của 1 thì
Chứng minh:
hoặc
Với ta có
.
Nhận xét: Với các tính chất 1 và 2 ở trên, nếu là lũy thừa của
, và nếu ta chọn tập điểm để tính giá trị của đa thức
tại căn phức bậc
thì ta có thể cài đặt thuật toán đệ quy như mô tả ở phần trên. Thuật toán này được gọi là phép biến đổi Fourier nhanh (FFT hay dFFT – chữ d là discrete – rời rạc).
Vậy để tính giá trị đa thức bậc tại các căn phức bậc
của 1 (giả sử
là lũy thừa của 2) ta có thuật toán FFT như sau:
procedure
Input: là các hệ số của
, trong đó
là lũy thừa của 2 (nếu
chưa phải là lũy thừa của 2, ta chỉ cần thêm các số
vào cho đủ)
Output: giá trị của đa thức tại các căn phức bậc
của
:
- If
, return
- Else Tạo 2 đa thức
- Call
,
để tính giá trị của
tại
- For
Với thuật toán FFT trong tay, ta có thuật toán nhân đa thức sau:
procedure
Input: là các hệ số của
,
là các hệ số của
. Ta cũng giả sử
là lũy thừa của 2.
Output: là các hệ số của
- Call
,
để tính giá trị đa thức
tại
- For
:
- Lập đa thức
với các hệ số
- Call
- For
:
trong đó
Để thấy thuật toán trên cho ta hệ số đúng, ta có định lý sau
Định lý: Với mọi , ta có đẳng thức
công thức này còn gọi là phép biến đổi Fourier ngược (inverse FFT).
Chứng minh: Thật vậy, khai triển ta được:
Theo tính chất 3 ở trên, ta có
Vậy , điều phải chứng minh.
Nhận xét:
- Định lý cho thấy quan hệ của các hệ số
và giá trị của đa thức tại căn phức của 1:
qua phép biến đổi Fourier (xuôi và ngược).
- Phép biến đổi Fourier nhanh với độ phức tạp
là công cụ tính toán quan trọng trong ngành xử lý tín hiệu số (Digital Signal Processing), hầu hết các phần mềm xử lý hình ảnh, âm thanh đều có cài đặt thuật toán FFT.
- Thuật toán FFT được đưa ra bởi Cooley và Tukey năm 1965, nhưng thật ra, thuật toán này đã được Gauss nghĩ ra từ năm 1805, tuy vào thời điểm đó, ông không quan tâm đến độ phức tạp thuật toán.



