Xác định các đa thức, ở đâu deg(A) = q
và deg(B) = p
. Các deg(C) = q + p
.
Trong trường hợp này , deg(C) = 1 + 2 = 3
.
A=3+xB=2x2+2C=A∗B=?
Chúng ta có thể dễ dàng tìm thấy C trong thời gian bằng cách nhân hệ số vũ phu. Bằng cách áp dụng FFT (và FFT nghịch đảo), chúng ta có thể đạt được điều này trong thời gian . Rõ ràng:O(n2)O(nlog(n))
- Chuyển đổi biểu diễn hệ số của A và B thành biểu diễn giá trị của nó. Quá trình này được gọi là đánh giá . Việc thực hiện Phân chia và chinh phục (D & C) cho việc này sẽ mất thời gian .O(nlog(n))
- Nhân thành phần-khôn ngoan các đa thức trong biểu diễn giá trị của chúng. Điều này trả về đại diện giá trị của C = A * B. Điều này mất thời gian .O(n)
- Đảo ngược C bằng cách sử dụng FFT nghịch đảo để có C trong biểu diễn hệ số của nó. Quá trình này được gọi là nội suy và nó cũng mất thời gian .O(nlog(n))
Tiếp tục, chúng tôi biểu diễn mỗi đa thức dưới dạng một vectơ có giá trị là các hệ số của nó. Chúng ta đệm vectơ với 0 đến công suất nhỏ nhất bằng hai, . Do đó . Chọn một sức mạnh của hai cung cấp cho chúng ta một cách để áp dụng đệ quy thuật toán phân chia và chinh phục của chúng ta.n=2k,n≥deg(C)n=4
A=3+x+0x2+0x3⇒B=2+0x+2x+0x3⇒a⃗ =[3,1,0,0]b⃗ =[2,0,2,0]
Đặt là giá trị đại diện của A và B. Chú ý rằng FFT (Fast Fourier Transform ) là một biến đổi tuyến tính ( biến đổi tuyến tính ) và có thể được biểu diễn dưới dạng một ma trận, . Như vậyA′,B′M
A′=Ma→B′=Mb→
Chúng tôi xác định trong đó là gốc phức tạp rễ phức tạp của sự thống nhất. Lưu ý , trong ví dụ này. Cũng lưu ý rằng mục nhập trong hàng và cột là . Xem thêm về ma trận DFT tại đâyM=Mn(ω)ωnthn = 4
jthkthωjkn
M4(w)=⎡⎣⎢⎢⎢⎢⎢⎢111...11ω1ω2...ωn−11ω2ω4...ω2(n−1).........ωjk...1ωn−1......ω(n−1)(n−1)⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢11111ωω2ω31ω2ω4ω61ω3ω6ω9⎤⎦⎥⎥⎥⎥
Với các gốc của sự thống nhất, chúng ta có tập đẳng thức được đặt hàng:ω4=4th
{ω0,ω1,ω2,ω3,ω4,ω5,...}={1,i,−1,−i,1,i,...}
Điều này có thể được hình dung như lặp lại các gốc thông qua của vòng tròn đơn vị theo hướng ngược chiều kim đồng hồ .
Ngoài ra, hãy chú ý đến mod n
bản chất, tức là vàω6=ω6modn=ω2=−1−i=ω3=ω3+n
Để hoàn thành bước 1 ( đánh giá ), chúng tôi tìm bằng cách thực hiệnA′,B′
A′=M∗a⃗ =⎡⎣⎢⎢⎢⎢11111ωω2ω31ω2ω4ω61ω3ω6ω9⎤⎦⎥⎥⎥⎥⎡⎣⎢⎢⎢3100⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢3+13+1ω3+ω23+ω3⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢43+i23−i⎤⎦⎥⎥⎥B′=M∗b⃗ =⎡⎣⎢⎢⎢⎢11111ωω2ω31ω2ω4ω61ω3ω6ω9⎤⎦⎥⎥⎥⎥⎡⎣⎢⎢⎢2020⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢2+22+2ω22+2ω42+2ω6⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢4040⎤⎦⎥⎥⎥
Bước này có thể đạt được bằng cách sử dụng thuật toán D & C (vượt quá phạm vi của câu trả lời này).
Nhân thành phần khôn ngoan (bước 2)A′∗B′
A′∗B′=⎡⎣⎢⎢⎢43+i23−i⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢4040⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢16080⎤⎦⎥⎥⎥=C′
Cuối cùng, bước cuối cùng là biểu diễn C 'thành các hệ số. Để ý
C′=Mc⃗ ⇒M−1C′=M−1Mc⃗ ⇒c⃗ =M−1C′
Lưu ý 1 và .M−1n=1nMn(ω−1)ωj=−ωn/2+j
M−1n=14⎡⎣⎢⎢⎢⎢11111ω−1ω−2ω−31ω−2ω−4ω−61ω−3ω−6ω−9⎤⎦⎥⎥⎥⎥=14⎡⎣⎢⎢⎢11111−i−1i1−11−11i−1−i⎤⎦⎥⎥⎥
ω−j có thể được hình dung như lặp lại các gốc thông qua của vòng tròn đơn vị theo chiều kim đồng hồ .
{ω0,ω−1,ω−2,ω−3,ω−4,ω−5,...}={1,−i,−1,i,1,−i,...}
Ngoài ra, sự thật là, với gốc của sự thống nhất, sự bình đẳng giữ. (Bạn có thấy tại sao không?)nthω−j=ωn−j
Sau đó,
c⃗ =M−1C′=1nMn(w−1)=14⎡⎣⎢⎢⎢11111−i−1i1−11−11i−1−i⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢16080⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢(16+8)/4(16−8)/4(16+8)/4(16−8)/4⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢6262⎤⎦⎥⎥⎥
Do đó, chúng ta nhận được đa thức 1 : Công thức đảo ngược pg 73, Thuật toán của Dasgupta et. al. (C) 2006C=A∗B=6+2x+6x2+2x3