Bổ sung đa thức, nếu Ax và B x là đa thức của mức độ ràng buộc n, tổng của chúng là một đa thức Cx, còn mức độ ràng buộc n, như vậy Cx = Ax + Bx với mọi x trong trường cơ bản.. Cácphương
Trang 1Nhóm 3
Môn học: Thuật toán nâng cao
Đề tài 4: Đa thức và FFT (Polynomials and the FFT)
đa thức tới (nlgn)
Việc sử dụng phổ biến nhất cho biến đổi Fourier, và do đó FFT, là trong tín hiệu xử lý
Một tín hiệu được đưa ra trong miền thời gian: như một chức năng bản đồ thời gian để
độ lớn Phân tích Fourier cho phép chúng ta thể hiện tín hiệu như một tổng trọng số củagiai đoạn chuyển sang tần số khác nhau Trọng lượng và giai đoạn kết hợp với tần số đặc
trưng của tín hiệu trong miền tần số Trong số các ứng dụng hàng ngày của FFT của
những kỹ thuật nén được sử dụng để mã hóa thông tin âm thanh và video kỹ thuật số,bao gồm cả các tập tin MP3 Một số cuốn sách tốt đi sâu vào các khu vực giàu xử lý tínhiệu; chương này lưu ý tham khảo một vài trong số họ
Đa thức
Một đa thức theo biến x trên lĩnh vực đại số F đại diện một hàm A(x) như là một dạng
tổng quát
Chúng ta gọi các giá trị a0; a1; …; an-1 là các hệ số của các đa thức Các hệ số được rút ra
từ một lĩnh vực F, thường là C tập hợp các số phức tạp Một đa thức A (x) có độ k nếu hệ
số khác không cao nhất là ak Chúng ta viết rằng mức độ (A) = k Bất kỳ số nguyên đúng
lớn hơn mức độ của một đa thức là một mức độ bị ràng buộc của đa thức đó Vì vậy,
mức độ của một đa thức bậc n ràng buộc có thể là bất kỳ số nguyên nào giữa 0 và n -1,Bao gồm
Chúng ta có thể xác định một loạt các hoạt động trên đa thức Bổ sung đa thức, nếu A(x)
và B (x) là đa thức của mức độ ràng buộc n, tổng của chúng là một đa thức C(x), còn
mức độ ràng buộc n, như vậy
C(x) = A(x) + B(x) với mọi x trong trường cơ bản Nghĩa là, nếu:
Trang 2Khi cj = aj + bj, j= 0, 1, …, n-1 Ví dụ, nếu chúng ta có các đa thức A (x) = 6x3 + 7x2 –
10x + 9 và B (x) = -2x3 + 4x – 5 sau đó C(x) = 4x3 + 7x2 – 6x + 4
Cho phép nhân đa thức, nếu A(x) và B(x) là đa thức của mức độ giới hạn n, sản phẩm
của nó C(x) là một đa thức mức độ 2n-1 như vậy mà C(x) = A(x)B(x) với mọi x tronglĩnh vực cơ bản Bạn có thể có nhân đa thức trước, bằng cách nhân mỗi phần tử trongA(x) với mỗi phần tử trong B(x) sau đó kết hợp lại Ví dụ chúng ta có thể nhân A(x) =6x3 + 7x2 – 10x + 9 và B(x) = -2x3 + 4x – 5 như sau:
Một cách khác để thể hiện sản phẩm C(x) là:
Chú ý thằng bậc(C) = bậc(A) + bậc(B), ngụ ý rằng nếu A là một đa thức bậc ràng buộc na
và B là một đa thức bậc ràng buộc nb, khi đó C là một đa thức bậc ràng buộc na + nb – 1
Kể từ khi một đa thức bậc k bị ràng buộc cũng là một đa thức bậc ràng buộc k + 1 chúng
ta thường sẽ nói rằng các sản phẩm đa thức C là một đa thức bậc ràng buộc na + nb
Phác thảo chương
Trang 3Đoạn 30.1 trình bày hai cách để diễn tả đa thức: Biểu diễn hệ số và điểm giá trị Cácphương pháp đơn giản cho việc nhân đa thức - phương trình (30.1) và (30.2) – mất (n2)thời gian khi là đa thức trình bày dưới dạng hệ số, nhưng chỉ (n) thời gian khi chúng tađại diện cho nó trong dạng điểm giá trị Chúng ta có thể, tuy nhiên, nhân đa thức bằng
cách sử dụng hệ số đại diện trong chỉ (nlgn) thời gian bằng cách chuyển đổi giữa hai
đại diện Để xem lý do tại sao phương pháp này hoạt động, đầu tiên chúng ta phải học rấtphức tạp của sự đồng nhất, mà chúng tôi làm tại mục 30.2 Sau đó, chúng tôi sử dụngFFT và nghịch đảo của nó, cũng được mô tả trong mục 30.2, thực hiện chuyển đổi Phần30.3 cho thấy cách thực hiện FFT nhanh chóng trong cả hai mô hình nối tiếp và songsong Chương này sử dụng số phức rộng rãi, và trong chương này chúng tôi sử dụng ký
tự i dành riêng để biểu thị
30.1 Đại diện cho đa thức
Hệ số và điểm có giá trị đại diện của các đa thức đang ở trong một ý nghĩa tương đương;
đó là, một đa thức trong dạng giá trị điểm có một đối tác trong dạng hợp tác hiệu quả.Trong phần này, chúng tôi giới thiệu hai đại diện và hiển thị như thế nào để kết hợpchúng để chúng tôi có thể nhân hai mức độ ràng buộc n đa thức trong (n lg n) lần
Đại diện hệ số
Một đại diện hệ số của một đa thức A(x) = ajxj của mức độ ràng buộc là một vectorcủa các hệ số a = (a0, a1, … , an-1 ) Trong phương trình ma trận trong chương này; chúng
ta thường coi vector như là vector cột
Đại diện hệ số thuận tiện cho các hoạt động nhất định trên đa thức Ví dụ, các hoạt độngđánh giá các đa thức A(x) tại một điểm nhất định x0 bao gồm tính toán các giá trị củaA(x0) Chúng ta có thể đánh giá một đa thức trong (n) lần sử dụng luật của Horner:
A(x0) = a0 + x0 (a1+ x0 (a2 + … + x0 (an-2 + x0 (an-1)) …))
Tương tự như vậy, thêm hai đa thức đại diện bởi các vector hệ số a = (a0, a1, …, an-1) và b
= (b0, b1, …, bn-1) mất lần: Chúng tôi chỉ sản xuất các vector hệ số c = (c0, c1, …, cn-1), nơi
cj = aj + bj cho j = 0, 1, …, n-1
Bây giờ, hay xem xét nhân hai mức độ ràng buộc n đa thức A(x) và B(x) thể hiện ở dạng
hệ số Nếu chúng ta sử dụng phương pháp mô tả bởi các phương trình (30.1) và (30.2),multiplying polynomials takes time (n2), kể từ khi chúng ta phải nhân mỗi hệ số trong
vector a bởi mỗi hệ số trong vector b Hoạt động nhân đa thức trong dạng hệ số dường
như khó khăn hơn so với đánh giá một đa thức hoặc thêm hai đa thức Kết quả hệ số
vector c, được đưa ra bởi phương trình (30.2), cũng được gọi là chập của vector đầu vào
a và b, ký hiệu c = a b Từ nhân đa thức và tính toán cuộn là vấn đề tính toán cơ bản cótầm quan trọng trên thực tế đáng kể, chương này tập trung vào các thuật toán của chúng
Đại điện giá trị điểm
Một đại điện giá trị điểm của một đa thức A(x) mức độ ràng buộc n là một tập hợp cáccặp điểm có giá trị n
Trang 4Tính toán đại diện một giá trị điểm cho cho một đa thức được đưa ra trong dạng hệ sốnguyên tắc đơn giản, vì tất cả chúng ta phải làm là chọn n điểm riêng x0, x1, … , nn-1 vàsau đó đánh giá A(xk) cho k = 0, 1, … , n-1 Với phương pháp Horner, đánh giá một đathức tại n điểm cần thời gian (n2) Chúng ta sẽ thấy sau này nếu chúng tôi chọn điểm xk
khéo léo, chúng ta có thể tăng tốc tính toán này để chạy trong thời gian (n lgn)
Nghịch đảo của đánh giá – xác định dạng hệ số của một đa thức từ một đại diện giá trị
điểm – là phép nội suy Định lý sau đây cho thấy phép nội suy được xác định rõ khi quá
trình nội suy đa thức phải có một đối tượng bị ràng buộc bằng với số lượng nhất định củacác cặp điểm giá trị
Định lý 30.1 (duy nhất của một đa thức nội suy)
Đối với bất kỳ bộ {(x0, y0), (x1, y1), … , (xn-1, yn-1) } của n cặp điểm giá trị như vậy mà tất
cả các giá trị xk là khác biệt, có một đa thức duy nhất A(x) của mức độ ràng buộc n saocho yk = A(xk) cho k = 0, 1, … , n-1
Chứng minh: Các chứng minh dựa trên sự tồn tại của nghịch đảo của một ma trận nhất
định
Phương trình (30.3) tương đương với phương trình ma trận
Ma trận bên trái được ký hiệu là V (x0, x1, … , nn-1) và được biết đến như một ma trậnVandermonde Bởi bài toán D-1, ma trận này có yếu tố quyết định
Π (xk – xj)
0≤j<k≤n-1
Và do đó, bởi theo lý thuyết D.5, nó khả ngịch (có nghĩa là, nonsingular) nếu xk là khácbiệt Do đó chúng ta có thể giải quyết cho các hệ số aj cho duy nhất một đại diện giá trịđiểm:
Một thuật toán nhanh hơn cho n điểm nội suy dựa trên công thức Lagrange:
Bạn có thể muốn xác minh rằng phía bên phải của phương trình (30.5) là một đa thức bậcràng buộc n thỏa mãn A (xk) = yk cho tất cả k Bài tập 30.1-5 hỏi bạn cách tính toán hệ sốcủa một công thức sử dụng của Lagrange trong thời gian (n2)
Trang 5Vì vậy, đánh giá n-điểm là được xác định rõ hoạt động ngược là biến đổi hệ số đại diệncủa đa thức và đại diện điểm giá trị Các thuật toán mô tả ở trên về những bài toán mấtthời gian (n2)
Các điểm đại diện giá trị là khá thuận tiện cho nhiều hoạt động trên đa thức Bổ sung,nếu C(x) = A(x) + B(x), thì C(xk) = A(xk) + Bxk) cho bất kỳ điểm xk, Chính xác hơn, nếuchúng ta có một điểm đại diện cho giá trị A,
30.1 Đại diện cho đa thức
Cho đa thức A {(x0,y0), (x1,y1),…, (xn-1,yn-1)}
và đa thức B {(x0,y’0), (x1,y’1),…, (xn-1,y’n-1)}
A và B cùng có bậc n, thì điểm-giá trị đại diện của C là:
{(x0,y0+y’0), (x1,y1+y’1),…, (xn-1,yn-1+y’n-1)}
Do đó thời gian để cộng hai đa thức bậc n với hình thức điểm-giá trị là O(n)
Tương tự như vậy, các điểm giá trị đại diện thuận lợi cho nhân đa thức
Nếu C(x) =A(x)B(x) thì C(xk)=A(xk)B(xk) với mọi điểm xk , và chúng ta có thể nhân một điểm-giá trị đại diện cho A với một điểm-giá trị đại diện cho B để có được một điểm-giá trị của C Khi đó
degree(C) = degree(A) + degree(B) nên bậc của C la 2n Một điểm-giá trị đại diện cho A
và B bao gồm n cặp điểm-giá trị cho mỗi đa thức Khi nhân chúng với nhau , ta có n cặp điểm-giá trị, nhưng ta cần 2n cặp để nội suy đa thức C Do đó ta phải mở rộng các điểm-giá trị đại diện cho A và B bao gồm 2n cặp điểm-giá trị
Một điểm-giá trị mở rộng đại diện cho A: {(x0,y0), (x1,y1),…, (x2n-1,y2n-1)}
tương ứng với một điểm-giá trị mở rộng cho B: {(x0,y’0), (x1,y’1),…, (x2n-1,y’2n-1)}
khi đó một điểm-giá trị mở rộng cho C là: {(x0,y0y’0), (x1,y1 y’1),…, (x2n-1,y2n-1 y’2n-1)}
Cho hai đa thức đầu vào với các điểm-giá trị mở rộng , ta thấy thời gian để nhân chúng
để có được điểm-giá trị kết quả là O(n) ít hơn nhiều thời gian nhân dưới dạng hệ số.Cuối cùng, ta xem xét làm thế nào đánh giá một đa thức đưa ra với hình thức điểm-giá trịtại một điểm mới Đối với vấn đề này, phương pháp đơn giản nhất là chuyển đổi đa thức
về dạng hệ số trước, và sau đó đánh giá nó ỏ điểm mới
Nhân nhanh các đa thức dạng hệ số
Trang 6Ta có thể sử dụng phương pháp nhân tuyến tính-thời gian của đa thức dạng điểm-giá trị cho đa thức dạng hệ số? Câu trả lời là liệu chúng ta có thể chuyển đổi nhanh chóng một
đa thức dạng hệ số sang dạng điểm-giá trị và ngược lại
Ta có thể bất cứ điểm nào làm điểm đánh giá, nhưng nếu chọn tốt ta có thể chuyển đổi đathức với thời gian là O(nlgn)) Trong phần 30.2 ở dưới, nếu chọn căn phức bậc n của 1 là điểm đánh giá , ta có thể tạo ra điểm-giá trị đại diện bằng cách lấy biển đổi DFT của mộtvector hệ số Ta có thể thực hiện nghịch đảo, nội suy bằng cách lấy nghịch đảo DFT của các cặp điểm-giá trị, cho ra một vector hệ số Phần 30.2 sẽ chỉ ra cách FFT hoàn thành DFT và đảo ngược DFT trong O(nlgn) thời gian
HÌnh 30.1 thể hiện chiến lược này Kết quả của 2 đa thức bậc n là một đa thức bậc 2n , trước khi đánh giá đầu vào của A va B ta phải đưa về bậc 2n bằng cách thêm vào n hệ số
Vì vector có 2n phần tử nên ta sử dụng căn phức bâc 2n của 1 được ký hiệu là w2n ở hình30.1
1 Gấp đôi bậc: thêm n hệ số cho mỗi đa thức
2.Đánh giá: Tính điểm-giá trị đại diện của A và B (độ dài 2n) bằng cách sử dung FFT
trên mỗi đa thức Các đại diện chứa giá trị của hai đa thức tại căn phức bâc 2n của 1
3.Nhân: nhân một điểm-giá trị đại diện cho đa thức C(x)=A(x)B(x) bằng cách nhân các
giá trị với nhau Đại diện này chứa đựng giá trị của C(x) tại mỗi (2n)th roots ò unity
4.Nội suy: Tạo ra các đại diện hệ số của đa thức C(x) bằng cách sử dụng FFT trên 2n cặp
điểm –giá trị để tình DFT đảo ngược
Bước 1 và 3 mất O(n ) thời gian, bước 2 và 4 mất O(nlgn) thời gian
Trang 7Complex roots of unity
Một căn phức bậc n của 1 là 1 số complex w : wn = 1
Có tất cả n căn phức bậc n của 1 e2pik/n với k =0,1 ,n-1
DFT (Phép biến đổi Fourier rời rạc)
Nhớ lại ta muốn tính giá trị của đa thức
Với bậc ràng buộc n tại ωn0, ωn1, …, ωnn-1 (tại n căn phức bậc n của 1) Với A được đưa
ra dưới dạng hệ số: a = (a0, a1, …, an-1) Chúng ta định nghĩa kết quả Yk với k=0,1,…,n-1như sau:
Vector y = (y0, y1, …, yn-1) gọi là biến đổi Fourier rời rạc (DFT) của vector hệ số a = (a0,
j
jxaA(x)
kj n j
k n
y
Trang 8FFT (Phép biến đổi Fourier rời rạc nhanh)
Sử dụng 1 phương pháp gọi là phép biến đổi Fourier rời rạc nhanh (FFT)- phép biến đổilợi dụng các tính chất đặc biệt của căn phức của 1 – ta có thể tính DFTn(a) với độ phứctạp thời gian là Θ(n lg n) trong khi nếu tính toán theo cách đõn giản thì độ phức tạp thờigian là Θ(n2) Từ trước đến giờ n vẫn được cho là số lũy thừa của 2 Mặc dù vẫn cóchiến thuật để giải quyết với n không phải là số lũy thừa của 2 nhưng nó không nằmtrong phạm vi của cuốn sách này
Phương pháp FFT sử dụng chiến thuật chia để trị bằng cách chia tách riêng các hệ số chỉ
số chẵn và hệ số có chỉ số lẻ của A(x) thành 2 đa thức A[0](x) và A[1](x) với cùng bậc ràngbuộc n/2 :
A[0](x) = a0 + a2x + a4x2 + … + an-2xn/2-1
A[1](x) = a1 + a3x + a5x2 + … + an-1xn/2-1
Để ý rằng A[0](x) gồm tất cả các hệ số chỉ số chẵn của A (biểu diễn nhị phân của chỉ số
đó có kết thúc là 0) và A[1](x) gồm tất cả các các hệ số chỉ số lẻ (biểu diễn nhị phân củachỉ số đó kết thúc bằng số 1) Từ đó ta có:
A(x) = A[0](x2) + x⋅A[1](x2) (30.9)
Và như vậy việc tính giá trị của A(x) tại ωn, ωn, …, ωnn-1 sẽ giảm xuống thành:
1 Tính giá trị của các đa thức có bậc ràng buộc n/2 là A[0](x) và A[1](x) tại (ωn)2, (ωn)2,
…, (ωnn-1)2 (30.10) Sau đó
2 Hợp 2 kết quả lại theo phương trình (30.9)
Theo bổ đề chia đôi, chuỗi (30.10) không gồm n giá trị phân biệt mà chỉ gồm n/2 cănphức bậc n/2 của 1 với mỗi căn phức xuất hiện đúng 2 lần Vì vậy, ta tính một cách đệquy các đa thức A[0](x) và A[1](x) có bậc ràng buộc n/2 tại n/2 căn phức bậc n/2 của 1.Các bài toán con này là đồng dạng (tương tự) với bài toán ban đầu nhưng kích cỡ chỉ cònmột nửa so với ban đầu Giờ ta đã thành công chia việc tính DFTn với n phần tử thànhchỉ còn tính DFTn/2 với n/2 phần tử Việc chia tách này là vấn đề cơ bản của thuật toán đệquy FFT sau đây để tính DFT của 1 vector có n phần tử a = (a0, a1, …, an-1) trong đó n là
số lũy thừa của 2
Trang 9Thủ tục RECURSIVE – FFT thực hiện như sau:
Dòng 2-3 thực hiện khởi đầu của đệ quy; DFT có 1 phần tử sẽ chính là phần tử đó Vì vậy trong trường hợp này:
y0 = a0ω10 = a0⋅ 1 = a0
Vậy: y = (y0) = (a0) = a
Dòng 6-7 định nghĩa vector hệ số của A[0] và A[1]
Dòng 4,5,13 đảm bảo ω được cập nhật đúng đắn sao cho mỗi khi dòng 11-12 được thực hiện thì ta có ω= ωn
Dòng 8 - 9 thực hiện tính DFTn/2 đệ quy với k = 0, …, n/2 – 1:
Trang 10Với y0, y1, …, yn/2-1 dòng 11 cho ra
yk = yk[0] + ωn yk[1]
= A[0](ωn2k) + ωn A[1](ωn2k) = A(ωn)
Với yn/2, yn/2+1, …, yn-1và k=0,1 …,n/2-1 dòng 12 cho ra:
yk+(n/2) = yk[0] – ωn yk[1]
= yk[0] + ωnk+(n/2) yk[1]
=A[0](ωn2k) + ωnk+(n/2) A[1](ωn2k) = A[0](ωn2k+n) + ωnk+(n/2) A[1](ωn2k+n) = A(ωnk+(n/2))
Vậy vector y trả về bởi Recursive-FFT thực sự là DFT của vector đầu vào a
Dòng 11 và 12 nhân mỗi giá trị yk[1] với ωn khi k = 0, 1, …, n/2-1 Vì ωn được sử dụng
ở cả 2 dạng dấu dương và dấu âm tương ứng ở các dòng 11, 12 nên ωn còn gọi là yếu
tố quay vòng
Để xác định thời gian chạy của thủ tục RECURSIVE-FFT, ta chú ý ngoài các lời gọi đệquy thì mỗi 1 yêu cầu cần thời gian Θ(n), n là độ dài của vector đầu vào Do đó thời gianchạy là:
Trang 11Đối với các hoạt động nghịch đảo, mà chúng tôi viết như α = (y) , chúng tôi tiếnhành phép nhân y bởi ma trận , nghịch đảo của Vn .
Định lý 30.7
Cho j,k = 0,1 ,…., n-1 , Các (j,k) đầu vào của là /n
Bằng chứng , Chúng ta thấy rằng Vn=ln, là dạng ma trân n x n xem xét các (j ,j,)đầu vào của Vn:
Định Lý 30.8 (Định ly phép nhân chập)
Đối với bất kỳ hai vectors a và b có độ dài n , n là lũy thừa của 2 ,
Trang 12nơi các vectors a và b được đệm bằng số 0 đến chiều dài 2n , và có nghĩa tích số theotừng thành phần của 2 vectors 2n phần tử
Mô tả tổng quát của các thủ tục FFT để các trường hợp trong đó n là một lũy thừa
của 3 Cho một sự hồi quy trong thời gian chạy, và giải quyết hồi quy
30.2-6
Giả sử rằng thay vì thực hiện một phần tử n FFT trên lĩnh vực phức tạp
số (ngay cả n bằng nhau) , chúng tôi sử dụng vòng tròn Zm các số nguyên modul m , m =
2tn/2 + 1 và t là một số nguyên dương tùy ý Sử dụng ω = 2t thay vì ωn như một gốc thứ nchính của phần tử đơn vị , theo modul m Chứng minh rằng DFT và DFT ngược đượcxác định rõ trong hệ thống này
30.2-7
Cho một Danh sách các giá trị Z0 , Z1 , … , ZN-1 (có thể với sự lặp lại) , chỉ ra làm thế nào
để tìm các hệ số của một đa thức P (x) của mức độ ràng buộc n + 1 chỉ có số không với
Z0 , Z1 , … , ZN-1 (có thể với sự lặp lại) Thủ tục của bạn nên chạy trong thời gian O(n lg 2
n) (Gợi ý: Các đa thức P(x) có một số không ở Zj khi và chỉ khi P(x) là bội số của
(x-Zj) )
30.2-8
Tiếng kêu biến đổi của một vector α = (α0 , α1 , …., αn-1) là vector у = (y0 , y1 , …, yn-1) ,khi yk = jzkj và z là số phức bất kỳ Do đó DFT là một trường hợp đặc biệt của lờikêu biến đổi , thu được bằng cách Z = ωn chỉ ra làm thế nào để đánh giá sự kêu biến đổi
thời gian O(n lg 2 n) cho bất kỳ số phức "(Gợi ý: Sử dụng phương trình