TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül Második nekifutás Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2015. október 2.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül POLINOMOK KONVOLÚVIÓJA Definíció Legyen f (x) = n 1 j=0 f jx j és g(x) = n 1 j=0 g jx j két R[x]-beli polinom. A két polinom konvolúviója a n 1 h = f n g = h k x k R[x] k=1 polinom, ahol h k = n 1 f i g j = f j g k j minden 0 k < n esetén. i+j mod n j=0)
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül MEGJEGYZÉSEK Ha érthető n helyett -ot írunk;
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül MEGJEGYZÉSEK Ha érthető n helyett -ot írunk; Ha R n -beli vektoroknak tekintjük a polinomokat, akkor az f, g vektorok ciklikus konvolúciójáról beszélünk;
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül MEGJEGYZÉSEK Ha érthető n helyett -ot írunk; Ha R n -beli vektoroknak tekintjük a polinomokat, akkor az f, g vektorok ciklikus konvolúciójáról beszélünk; A konvolúció nem más, mint a polinomok R[x]/< x n 1 > gyűrűbeli szorzata, azaz f n g = fg mod (x n 1).
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül A KONVOLÚCIÓ ÉS A DFT Legyen f, g R[x] két, legfeljebb n 1-edfokú polinom.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül A KONVOLÚCIÓ ÉS A DFT Legyen f, g R[x] két, legfeljebb n 1-edfokú polinom. Állítás DFT ω (f g) = DFT ω (f ) DFT ω (g), ahol a koordinátánkénti szorzás.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül A KONVOLÚCIÓ ÉS A DFT Legyen f, g R[x] két, legfeljebb n 1-edfokú polinom. Állítás DFT ω (f g) = DFT ω (f ) DFT ω (g), ahol a koordinátánkénti szorzás. Bizonyítás Mivel f g = fg + q(x n 1) valamilyen q R[x]-re, ezért (f g)(ω j ) = f (ω j )g(ω j ) + q(ω j )((ω j ) n 1) = f (ω j )g(ω j ).
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül EGY DIAGRAM Az R[x] R n -be képező, f -hez a ω hatványain felvett helyettesítési értékei vektorát rendelő leképezés homomorfizmus, ( R[x] ) 2 DFT ω DFT ω / <x n 1> R n R n konvolúció R[x] / <x n 1> DFT ω R n belső szorzat
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül BEVEZETŐ PÉLDA Q[x] fölötti polinomok szorzása mod (x n u). f := x 3 + 1: g := 2 x 3 + 3 x 2 + x + 1 m := x 4 u: expand(f*g) 2x 6 + 3x 5 + x 4 + 3x 3 + 3x 2 + x + 1 quo(f g, m, x, r ) 2x 2 + 3x + 1 collect(expand(r), u) (2 x 2 + 3 x + 1) u + 3 x 3 + 3 x 2 + x + 1 Látszik, hogy ilyen speciális alakú modulus esetén a maradék úgy épül fel, hogy a magasabb fokú tagok együtthatói az eredeti polinom magasabb fokú együtthatói, az alacsonyabb fokszámúak pedig szintén ugyanezek az eredeti polinomból.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül A PÉLDA ÁLTALÁNOSÍTÁSA Legyen f R[x] egy legfeljebb n 1-ed fokú polinom, ahol n 2 páros egész, 1, ω,..., ω n 1 pedig az ω n-edik primitív egységgyöknek megfelelő Fourier-pontok.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül A PÉLDA ÁLTALÁNOSÍTÁSA Legyen f R[x] egy legfeljebb n 1-ed fokú polinom, ahol n 2 páros egész, 1, ω,..., ω n 1 pedig az ω n-edik primitív egységgyöknek megfelelő Fourier-pontok. Osszuk el f -et maradékosan x n / 2 1-el és x n / 2 + 1-el. f = q 0 (x n / 2 1) + r 0 = q 1 (x n / 2 + 1) + r 1, (1) ahol az q 0, q 1, r 0, r 1 R[x] polinomok n -nél kisebb fokszámúak. 2
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül A PÉLDA ÁLTALÁNOSÍTÁSA Legyen f R[x] egy legfeljebb n 1-ed fokú polinom, ahol n 2 páros egész, 1, ω,..., ω n 1 pedig az ω n-edik primitív egységgyöknek megfelelő Fourier-pontok. Osszuk el f -et maradékosan x n / 2 1-el és x n / 2 + 1-el. f = q 0 (x n / 2 1) + r 0 = q 1 (x n / 2 + 1) + r 1, (1) ahol az q 0, q 1, r 0, r 1 R[x] polinomok n -nél kisebb fokszámúak. Ugyanakkor 2 f = F 1 x n / 2 + F 0 alakban írható, ahol az F 0, F1 R[x] polinomok fokszáma szintén kisebb n -nél. 2
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül A PÉLDA ÁLTALÁNOSÍTÁSA Legyen f R[x] egy legfeljebb n 1-ed fokú polinom, ahol n 2 páros egész, 1, ω,..., ω n 1 pedig az ω n-edik primitív egységgyöknek megfelelő Fourier-pontok. Osszuk el f -et maradékosan x n / 2 1-el és x n / 2 + 1-el. f = q 0 (x n / 2 1) + r 0 = q 1 (x n / 2 + 1) + r 1, (1) ahol az q 0, q 1, r 0, r 1 R[x] polinomok n -nél kisebb fokszámúak. Ugyanakkor 2 f = F 1 x n / 2 + F 0 alakban írható, ahol az F 0, F1 R[x] polinomok fokszáma szintén kisebb n -nél.ebből F 2 1(x n / 2 1) = f F 0 F 1, ezért (x n / 2 1) f F 0 F 1, a maradékos osztás egyértelműsége miatt r 0 = F 0 + F 1.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül A PÉLDA ÁLTALÁNOSÍTÁSA Legyen f R[x] egy legfeljebb n 1-ed fokú polinom, ahol n 2 páros egész, 1, ω,..., ω n 1 pedig az ω n-edik primitív egységgyöknek megfelelő Fourier-pontok. Osszuk el f -et maradékosan x n / 2 1-el és x n / 2 + 1-el. f = q 0 (x n / 2 1) + r 0 = q 1 (x n / 2 + 1) + r 1, (1) ahol az q 0, q 1, r 0, r 1 R[x] polinomok n -nél kisebb fokszámúak. Ugyanakkor 2 f = F 1 x n / 2 + F 0 alakban írható, ahol az F 0, F1 R[x] polinomok fokszáma szintén kisebb n -nél.ebből F 2 1(x n / 2 1) = f F 0 F 1, ezért (x n / 2 1) f F 0 F 1, a maradékos osztás egyértelműsége miatt r 0 = F 0 + F 1. Hasonlóan belátható, hogy r 1 = F 0 F1. Tehát a maradék együtthatói az eredeti polinom együtthatóiból állnak, mint a fenti példában is.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül KIÉRTÉKELÉS A FOURIER-PONTOKBAN Ha az (1)-be ω hatványait helyettesítjük: f (ω 2k ) = q 0 (ω 2k (ω nk 1) + r 0 (ω 2k ) = r 0 (ω 2k ), f (ω 2k+1 ) = q 1 (ω 2k+1 (ω nk ω n / 2 + 1) + r 1 (ω 2k+1 ) = r 1 (ω 2k+1 ), ahol 0 k < n / 2.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül KIÉRTÉKELÉS A FOURIER-PONTOKBAN Ha az (1)-be ω hatványait helyettesítjük: f (ω 2k ) = q 0 (ω 2k (ω nk 1) + r 0 (ω 2k ) = r 0 (ω 2k ), f (ω 2k+1 ) = q 1 (ω 2k+1 (ω nk ω n / 2 + 1) + r 1 (ω 2k+1 ) = r 1 (ω 2k+1 ), ahol 0 k < n / 2. Itt egyrészt azt használtuk ki, hogy ω nk = 1, másrészt a 0 = (ω n 1) = (ω n / 2 1) (ω n / 2 + 1) összefüggésben (ω n / 2 1) nem lehet zérusosztó, így ω n / 2 = 1.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül KIÉRTÉKELÉS A FOURIER-PONTOKBAN Ha az (1)-be ω hatványait helyettesítjük: f (ω 2k ) = q 0 (ω 2k (ω nk 1) + r 0 (ω 2k ) = r 0 (ω 2k ), f (ω 2k+1 ) = q 1 (ω 2k+1 (ω nk ω n / 2 + 1) + r 1 (ω 2k+1 ) = r 1 (ω 2k+1 ), ahol 0 k < n / 2. Itt egyrészt azt használtuk ki, hogy ω nk = 1, másrészt a 0 = (ω n 1) = (ω n / 2 1) (ω n / 2 + 1) összefüggésben (ω n / 2 1) nem lehet zérusosztó, így ω n / 2 = 1. Vagyis az r 0 -t kell kiértékelni az ω páros hatványainál, r 1 -et pedig a párosaknál. Legyen r 1 (x) = r 1 (ωx). Felhasználva, hogy ω 2 n / 2 -edik egységgyök, az algoritmus egy átfogalmazását kaptuk.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül AZ ALGORITMUS Algorithm 1: (N, ω, a(x)) Data: Adott N, kettőhatvány Data: ω primitív N-edik primitív egységgyök Data: f (x) legfeljebb N 1-ed fokú polinom Result: A polinom Fourier transzformáltja begin if N = 1 then A 0 f 0 ; else r 0 N 2 1 i=0 (f i + f i+ N / 2 ) x i ; r 1 N 2 1 i=0 (f i f i+ N / 2 ) ω i x i ; Az algoritmus hívása rekurzive ω 2 -el; return (r 0 (1), r 1 (1), r 0 (ω 2 ), r 1 (ω 2 ),..., r 0 (ω N 2 )), r 1 (ω N 2 ) ;
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül AZ ALGORITMUS HELYESSÉGE Tétel Legyen ω n-edik primitív egységgyök az R gyűrűben, n kettőhatvány. Ekkor az előző algoritmus helyesen számolja kia DFT ω -t, ehhez n log n gyűrűbeli összeadásra és n / 2 log n szorzásra van szükség.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül AZ ALGORITMUS Algorithm 2: FastConvolution(N, ω, a(x)) Data: Adott N, kettőhatvány Data: ω primitív N-edik primitív egységgyök Data: f, g legfeljebb N 1-ed fokú polinom Result: f g begin ω 2,... ω N 1 kiszámítása ; α DFT ω (f ); β DFT ω (g) ; γ α β ; return DFT 1 ω (γ) ; // pontonkénti szorzás
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül BONYOLULTSÁG Definíció Azt mondjuk, hogy egy R kommutatív gyűrű támogatja az -t, ha R-ben minden k N esetén van 2 k -adik primitív egységgyök.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Motiváció osztás Az Gyűrűk algoritmus támogatás A gyors konvolúció nélkül BONYOLULTSÁG Definíció Azt mondjuk, hogy egy R kommutatív gyűrű támogatja az -t, ha R-ben minden k N esetén van 2 k -adik primitív egységgyök. Tétel Legyen R olyan kommutatív, mely támogatja az -t, n = 2 k valamilyen k N-el. Legyen továbbá f, g R[x] két polinom, melyekre deg (fg) < n. Ekkor az R[x]/< x n 1 >-beli konvolúcióhoz 3n log n R-beli összeadás, 3 2n log n + n 2 ω-hatvánnyal való szorzás, n R-beli szorzás és n db osztás szükséges, összesen 9 2n log n + O(n) művelet. Emiatt a polinomszorzás bonyolultsága 18n log n + O(n) művelet.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET I Legyen R olyan kommutatív gyűrű, melyben a 2 egység, n = 2 k, k N, valamint D = R[x]/ x n + 1. Állítás D-ben ω = x 2n-edik primitív egységgyök. Bizonyítás
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET I Legyen R olyan kommutatív gyűrű, melyben a 2 egység, n = 2 k, k N, valamint D = R[x]/ x n + 1. Állítás D-ben ω = x 2n-edik primitív egységgyök. Bizonyítás Az, hogy ω = x 2n-edik egységgyök, következik az x n 1 mod (x n + 1) és x 2n = (x n ) 2 1 mod (x n + 1) kongruenciákból.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET I Legyen R olyan kommutatív gyűrű, melyben a 2 egység, n = 2 k, k N, valamint D = R[x]/ x n + 1. Állítás D-ben ω = x 2n-edik primitív egységgyök. Bizonyítás Az, hogy ω = x 2n-edik egységgyök, következik az x n 1 mod (x n + 1) és x 2n = (x n ) 2 1 mod (x n + 1) kongruenciákból. Legyen p n prím; ekkor a (c 1) m 1 j=1 cj = c m 1 összefüggést m = p, c = ω n p -re alkalmazva: ami egység. ω n p 1 p 1 = (ω n p ) j = (ω n p ) p 1 = ω n 1 = 2 j=1
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET II Ha f, g R[x] olyanok, hogy deg (fg) < n = 2 k, akkor elegendő fg-t kiszámítani mod (x n + 1). (Ez a negative wrapped convolution).!m = 2 n 2 és t = n m = 2 n 2. Ekkor:
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET II Ha f, g R[x] olyanok, hogy deg (fg) < n = 2 k, akkor elegendő fg-t kiszámítani mod (x n + 1). (Ez a negative wrapped convolution).!m = 2 n 2 és t = n m = 2 n 2. Ekkor: f = 0 j<t ˆf j x mj és g = 0 j<t ĝjx mj, ahol ˆf j, ĝ j R[x] és fokszámuk kisebb, mint m;
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET II Ha f, g R[x] olyanok, hogy deg (fg) < n = 2 k, akkor elegendő fg-t kiszámítani mod (x n + 1). (Ez a negative wrapped convolution).!m = 2 n 2 és t = n m = 2 n 2. Ekkor: f = 0 j<t ˆf j x mj és g = 0 j<t ĝjx mj, ahol ˆf j, ĝ j R[x] és fokszámuk kisebb, mint m; Legyen f = 0 j<t ˆf j y j, g = 0 j<t ĝjy j R[x, y]. Ekkor f (x) = f (x, x m ), g(x) = g (x, x m ).
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET II Ha f, g R[x] olyanok, hogy deg (fg) < n = 2 k, akkor elegendő fg-t kiszámítani mod (x n + 1). (Ez a negative wrapped convolution).!m = 2 n 2 és t = n m = 2 n 2. Ekkor: f = 0 j<t ˆf j x mj és g = 0 j<t ĝjx mj, ahol ˆf j, ĝ j R[x] és fokszámuk kisebb, mint m; Legyen f = 0 j<t ˆf j y j, g = 0 j<t ĝjy j R[x, y]. Ekkor f (x) = f (x, x m ), g(x) = g (x, x m ). f g = h + q (y t + 1), ezért fg h (x, x m ) mod (x n + 1), így elegendő f g mod (y t + 1)-et kiszámolni;
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET II Ha f, g R[x] olyanok, hogy deg (fg) < n = 2 k, akkor elegendő fg-t kiszámítani mod (x n + 1). (Ez a negative wrapped convolution).!m = 2 n 2 és t = n m = 2 n 2. Ekkor: f = 0 j<t ˆf j x mj és g = 0 j<t ĝjx mj, ahol ˆf j, ĝ j R[x] és fokszámuk kisebb, mint m; Legyen f = 0 j<t ˆf j y j, g = 0 j<t ĝjy j R[x, y]. Ekkor f (x) = f (x, x m ), g(x) = g (x, x m ). f g = h + q (y t + 1), ezért fg h (x, x m ) mod (x n + 1), így elegendő f g mod (y t + 1)-et kiszámolni; deg y h < t esetén h egyértelmű, továbbá deg x h < 2m.
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET III Legyen ξ = x mod x 2m + 1 D = R[x]/ x 2m + 1. ξ negyedik primitív gyök;
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET III Legyen ξ = x mod x 2m + 1 D = R[x]/ x 2m + 1. ξ negyedik primitív gyök; Ha most f = f mod (x 2m +) és hasonlóan g, h, akkor D[y]-ban f g h mod (y t + 1) ;
TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos Negative osztás wrapped Gyűrűk convolution támogatás nélkül AZ ÖTLET III Legyen ξ = x mod x 2m + 1 D = R[x]/ x 2m + 1. ξ negyedik primitív gyök; Ha most f = f mod (x 2m +) és hasonlóan g, h, akkor D[y]-ban f g h mod (y t + 1) ; Mivel mindhárom polinom fokszáma kisebb, mint 2m, a mod (x 2m + 1) redukció csak algebrai nézőpont -váltást jelent, a struktúraváltással alkalmazható az.