Tentukan polinomial, di mana deg(A) = q
dan deg(B) = p
. The deg(C) = q + p
.
Dalam hal ini deg(C) = 1 + 2 = 3
,.
A=3+xB=2x2+2C=A∗B=?
Kita dapat dengan mudah menemukan C dalam waktu dengan perkalian koefisien-koefisien kasar. Dengan menerapkan FFT (dan FFT terbalik), kita dapat mencapai ini dalam waktu . Secara eksplisit:O(n2)O(nlog(n))
- Ubah representasi koefisien A dan B menjadi representasi nilainya. Proses ini disebut evaluasi . Melakukan Divide-and-Conquer (D&C) untuk ini akan membutuhkan waktu .O(nlog(n))
- Lipat gandakan komponen-polinomial dalam representasi nilainya Ini mengembalikan representasi nilai C = A * B. Ini membutuhkan waktu .O(n)
- Balikkan C menggunakan FFT terbalik untuk mendapatkan C dalam representasi koefisiennya. Proses ini disebut interpolasi dan juga membutuhkan waktu .O(nlog(n))
Melanjutkan bersama, kami mewakili setiap polinomial sebagai vektor yang nilainya adalah koefisiennya. Kami mengisi vektor dengan 0 hingga kekuatan terkecil dari dua, . Jadi . Memilih kekuatan dua memberi kita cara untuk menerapkan algoritme divide-and-menaklukkan kami secara rekursif.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]
Biarkan menjadi representasi nilai dari A dan B, masing-masing. Perhatikan bahwa FFT (Fast Fourier Transform ) adalah transformasi linear ( peta linear ) dan dapat direpresentasikan sebagai matriks, . DemikianA′,B′ MM
A′=Ma→B′=Mb→
Kami mendefinisikan mana adalah akar kompleks akar kompleks persatuan. Perhatikan , dalam contoh ini. Perhatikan juga bahwa entri pada baris dan kolom adalah . Lihat lebih lanjut tentang matriks DFT di siniM=Mn(ω)ωnt h j t h k t h ω j k nn = 4
jt hkt hωjkn
M4( w ) =⎡⎣⎢⎢⎢⎢⎢⎢111. . .11ω1ω2. . .ωn - 11ω2ω4. . .ω2 ( n - 1 ). . .. . .. . .ωj k. . .1ωn - 1. . .. . .ω( n - 1 ) ( n - 1 )⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢11111ωω2ω31ω2ω4ω61ω3ω6ω9⎤⎦⎥⎥⎥⎥
Karena akar persatuan , kami memiliki persamaan kesetaraan yang diurutkan:ω4= 4t h
{ ω0, ω1, ω2, ω3, ω4, ω5,...}={1,i,−1,−i,1,i,...}
Ini dapat divisualisasikan sebagai pengulangan melalui akar dari lingkaran unit dalam arah berlawanan arah jarum jam .
Perhatikan juga mod n
sifatnya, yaitu danω6=ω6modn=ω2=−1−i=ω3=ω3+n
Untuk menyelesaikan langkah 1 ( evaluasi ) kami menemukan dengan melakukanA′,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⎤⎦⎥⎥⎥
Langkah ini dapat dicapai dengan menggunakan algoritma D&C (di luar cakupan jawaban ini).
Multiply komponen (langkah 2)SEBUAH′∗ B′
SEBUAH′∗ B′= ⎡⎣⎢⎢⎢43 + i23 - i⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢4040⎤⎦⎥⎥⎥= ⎡⎣⎢⎢⎢16080⎤⎦⎥⎥⎥= C′
Akhirnya, langkah terakhir adalah merepresentasikan C 'menjadi koefisien. Melihat
C′= Mc⃗ ⇒ M.- 1C′= M- 1M.c⃗ ⇒ c⃗ = M- 1C′
Perhatikan 1 dan .M.- 1n= 1nM.n( ω- 1)ωj=-ωn/2+jωj= - ωn / 2 + j
M.- 1n= 14⎡⎣⎢⎢⎢⎢11111ω- 1ω- 2ω- 31ω- 2ω- 4ω- 61ω- 3ω- 6ω- 9⎤⎦⎥⎥⎥⎥= 14⎡⎣⎢⎢⎢11111- saya- 1saya1- 11- 11saya- 1- saya⎤⎦⎥⎥⎥
ω- j dapat divisualisasikan sebagai iterasi dari akar lingkaran unit ke arah searah jarum jam .
{ ω0, ω- 1, ω- 2, ω- 3, ω- 4, ω- 5, . . . } = { 1 , - i , - 1 , i , 1 , - i , . . . }
Juga, benar bahwa, mengingat akar persatuan , persamaan berlaku. (Apakah kamu mengerti mengapa?)nt hω- j= ωn - j
Kemudian,
c⃗ = M- 1C′= 1nM.n( b- 1) = 14⎡⎣⎢⎢⎢11111- saya- 1saya1- 11- 11saya- 1- saya⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢16080⎤⎦⎥⎥⎥= ⎡⎣⎢⎢⎢⎢( 16 + 8 ) / 4( 16 - 8 ) / 4( 16 + 8 ) / 4( 16 - 8 ) / 4⎤⎦⎥⎥⎥⎥= ⎡⎣⎢⎢⎢6262⎤⎦⎥⎥⎥
Jadi, kita mendapatkan polinomial 1 : Formula Pembalikan pg 73, Algoritma oleh Dasgupta et. Al. (C) 2006C= A ∗ B = 6 + 2 x + 6 x2+ 2 x3