Alapvető polinomalgoritmusok Maradékos osztás Euklideszi algoritmus Bővített euklideszi algoritmus Alkalmazás: Véges testek konstrukciója Irodalom: Iványi Antal: Informatikai algoritmusok II, 18. fejezet.
Maradékos osztás Számítsuk ki a (2x 4 + 3x 2 1)/(x 2 + x + 1) hányadost: 2x 4 + 3x 2 1 = (2x 2 2x + 3)(x 2 + x + 1) + ( x 4). Hányados: 2x 2 2x + 3 Maradék: x 4
Maradékos osztás Számítsuk ki a (2x 4 + 3x 2 1)/(x 2 + x + 1) hányadost: 2x 4 + 3x 2 1 = (2x 2 2x + 3)(x 2 + x + 1) + ( x 4). Hányados: 2x 2 2x + 3 Maradék: x 4
Maradékos osztás polinomokkal A továbbiakban F egy test. Theorem (Maradékos osztás tétele) Legyenek f, g F[x] legfeljebb n-edfokú polinomok és legyen g 0. Ekkor egyértelműen léteznek q, r F[x] melyekre: (i) f = qg + r és (ii) r = 0 vagy deg r < deg g. A fenti q és r polinomok O(n 2 ) aritmetikai művelet segítségével kiszámíthatók. Bizonyítás. Létezés: deg f szerinti indukció. Ha f = 0 akkor q = r = 0 megfelelő. Ha deg f < deg g akkor q = 0 és r = f megfelelő.
Maradékos osztás polinomokkal A továbbiakban F egy test. Theorem (Maradékos osztás tétele) Legyenek f, g F[x] legfeljebb n-edfokú polinomok és legyen g 0. Ekkor egyértelműen léteznek q, r F[x] melyekre: (i) f = qg + r és (ii) r = 0 vagy deg r < deg g. A fenti q és r polinomok O(n 2 ) aritmetikai művelet segítségével kiszámíthatók. Bizonyítás. Létezés: deg f szerinti indukció. Ha f = 0 akkor q = r = 0 megfelelő. Ha deg f < deg g akkor q = 0 és r = f megfelelő.
Bizonyítás (folytatás). Legyen Maradékos osztás polinomokkal f = α 0 + α 1 x + + α k x k és g = β 0 + β 1 x + + β m x m ahol α k, β m 0 és k m. Legyen q = (α k /β m )x k m és legyen f 1 = f q g. Ekkor deg f 1 < deg f és alkalmazható az indukciós feltevés: Kapjuk, hogy f 1 = q 1 g + r 1 ahol r 1 = 0 vagy deg r 1 < deg g. q 1 g + r 1 = f 1 = f q g f = (q + q 1 )g + r 1. A fenti felbontás jó.
Maradékos osztás polinomokkal Bizonyítás (folytatás). Egyértelműség: Legyen két megfelelő felbontás. Ekkor f = q 1 g + r 1 = q 2 g + r 2 (q 1 q 2 )g = r 2 r 1 A jobboldali polinom foka legfeljebb deg g 1. Ha q 1 q 2 akkor a baloldali polinom foka legalább deg g. Ezért q 1 = q 2 és r 1 = r 2. Költség: egy lépés költsége O(n) aritmetikai művelet. Legfeljebb n lépést kell végrehajtani, így a költség O(n 2 ) aritmetikai művelet.
Maradékos osztás polinomokkal Bizonyítás (folytatás). Egyértelműség: Legyen két megfelelő felbontás. Ekkor f = q 1 g + r 1 = q 2 g + r 2 (q 1 q 2 )g = r 2 r 1 A jobboldali polinom foka legfeljebb deg g 1. Ha q 1 q 2 akkor a baloldali polinom foka legalább deg g. Ezért q 1 = q 2 és r 1 = r 2. Költség: egy lépés költsége O(n) aritmetikai művelet. Legfeljebb n lépést kell végrehajtani, így a költség O(n 2 ) aritmetikai művelet.
Euklideszi algoritmus polinomokra Legyenek f, g F[x] \ {0}. Legyen f 0 = f, f 1 = g, és képezzük a q i is f i polinomokat maradékos osztással: f 0 = q 1 f 1 + f 2 f 1 = q 2 f 2 + f 3. f k 2 = q k 1 f k 1 + f k f k 1 = q k f k + f k+1, ahol f k+1 = 0. Mivel deg f i < deg f i+1 az eljárás véges sok lépésben véget ér. Könnyű látni: f k = gcd(f, g).
Euklideszi algoritmus: Példa Legyen f = f 0 = 2x 4 + 3x 2 1, g = f 1 = x 2 + x + 1 Q[x]. Euklideszi algoritmus: } 2x 4 + {{ 3x 2 1 } = (2x 2 2x + 3) (x 2 + x + 1) + ( x 4) }{{}}{{}}{{} f 0 q 1 f 1 } x 2 + {{ x + 1 } = ( x + 3) ( x 4) + }{{}}{{}}{{} 13 f 1 q 2 f f 2 3 x }{{ 4 } = (( 1/13)x 4/13) }{{}}{{} 13 + }{{} 0 f 2 q 3 f 3 f 4 Tehát f k = f 3 = gcd(f, g) = 13 1 (asszociáltak!). f 2
Bővített euklideszi algoritmus Ha f, g F[x], deg f, deg g n akkor léteznek F, G F[x] melyekre deg F, deg G n és Ff + Gg = gcd(f, g). Valóban, az euklideszi algoritmus szerint, f 2 = f 0 q 1 f 1 = f q 1 g f 3 = f 1 q 2 f 2 = f 1 q 2 (f 0 q 1 f 1 ) = (1 + q 1 q 2 )g q 2 f. Tehát minden i {2,..., k} esetén létezik F i, G i F[x] melyre teljesül. F i f + G i g = f i
Bővített euklideszi algoritmus Legyen F i = q i g + Fi és G i = s i f + Gi deg Gi < deg f. Mivel F i f + G i g = f i,, ahol deg F i < deg g és F i f + G i g = (F i q i g)f + (G i s i f )g = = F i f q i fg + G i g s i fg F i f + G i g = f i mod fg. Mivel a kongruencia mindkét oldalán a polinomok foka kisebb mint deg f + deg g, F i f + G i g = f i. Speciálisan: F k f + G k g = f k = gcd(f, g).
Bővített euklideszi algoritmus Theorem Legyenek f, g F[x] legfeljebb n-edfokú polinomok. Ekkor léteznek F, G F[x] legfeljebb n-edfokú polinomok, melyekkel Ff + Gg = gcd(f, g). Továbbá gcd(f, g), F és G meghatározhatók legfeljebb O(n 3 ) aritmetikai művelettel. Bizonyítás. Az f i, Fi és Gi polinomok O(n 2 ) aritmetikai művelettel kiszámíthatók (ellenőrizzük). Mivel legfeljebb n lépést kell végezni, a gcd(f, g), F, G polinomok O(n 3 ) művelettel meghatározhatók.
Bővített euklideszi algoritmus Theorem Legyenek f, g F[x] legfeljebb n-edfokú polinomok. Ekkor léteznek F, G F[x] legfeljebb n-edfokú polinomok, melyekkel Ff + Gg = gcd(f, g). Továbbá gcd(f, g), F és G meghatározhatók legfeljebb O(n 3 ) aritmetikai művelettel. Bizonyítás. Az f i, Fi és Gi polinomok O(n 2 ) aritmetikai művelettel kiszámíthatók (ellenőrizzük). Mivel legfeljebb n lépést kell végezni, a gcd(f, g), F, G polinomok O(n 3 ) művelettel meghatározhatók.
Bővített euklideszi algoritmus: Példa Legyen f = f 0 = 2x 4 + 3x 2 1 és g = f 1 = x 2 + x + 1. Euklideszi algoritmus: } x {{ 4 } = }{{} 1 f 2 F 2 =F 2 (2x 4 + 3x 2 1) (2x 2 2x + 3) (x 2 + x + 1) }{{}}{{}}{{} f G 2 =G2 g 13 = (x 2 + x + 1) ( x + 3)( x 4) = = (x 2 + x + 1) ( x + 3)((2x 4 + 3x 2 1) (2x 2 2x + 3)(x 2 + x + 1)) = = ( x + 3) (2x 4 + 3x 2 1) + ( 2x 3 + 8x 2 9x + 10) (x 2 + x + 1) }{{}}{{}}{{}}{{} F 3 =F3 f G 3 =G3 g
Tehát 13 = ( x +3)(2x 4 +3x 2 1)+( 2x 3 +8x 2 9x +10)(x 2 +x +1) és 1 = (( 1/13)x + 3/13)(2x 4 + 3x 2 1)+ + (( 2/13)x 3 + (8/13)x 2 (9/13)x + 10/13)(x 2 + x + 1)
Polinomműveletek költsége (i) Összeadás: O(n) (ii) Szorzás: O(n 2 ) (Schönhage-Strassen: O(n log n log log n)) (iii) Maradékos osztás: O(n 2 ) (iv) gcd, F és G melyekkel Ff + Gg = gcd(f, g): O(n 3 ) A fenti műveletek költsége n-ben polinomiális, tehát a fenti műveletek hatékonynak tekinthetők.
Alkalmazás: Véges testek Egy kommutatív egységelemes gyűrűben az invertálható elemeket egységeknek nevezzük. F[x]-ben a skalárok (nulladfokú polinomok) az egységek. f F[x] esetén mik az egységek F[x]/(f )-ben?
Invertálás F[x]/(f )-ben 1 = (( 1/13)x + 3/13)(2x 4 + 3x 2 1)+ + (( 2/13)x 3 + (8/13)x 2 (9/13)x + 10/13)(x 2 + x + 1) Moduló 5 átírva, F 5 [x]-ben kapjuk: 1 = (2x + 4)(2x 4 + 3x 2 + 4) + (x 3 + x 2 + 2x)(x 2 + x + 1) Tehát F 5 [x]-ben (x 3 + x 2 + 2x)(x 2 + x + 1) 1 mod 2x 4 + 3x 2 + 4. Azaz x 3 + x 2 + 2x + (2x 4 + 3x 2 + 4) inverze x 2 + x + 1 + (2x 4 + 3x 2 + 4).
Invertálható elemek faktorgyűrűkben Lemma Legyenek f, g F[x]. Ekkor f + (g) F[x]/(g) egység, akkor és csakis akkor, ha gcd(f, g) = 1. Ha F, G F[x] melyekkel Ff + Gg = 1, akkor (f + (g)) 1 = F + (g). Tehát az f + (g) elem inverze a bővített euklideszi algoritmussal meghatározható. Bizonyítás. f invertálható moduló g létezik s F[x] mellyel fs 1 (mod g) létezik s, t F[x] mellyel sf + tg = 1 gcd(f, g) = 1. Ha gcd(f, g) = 1, akkor léteznek F, G F[x] melyekre Ff + Gg = 1. Ekkor 1 = Ff + Gg Ff (mod g).
Invertálható elemek faktorgyűrűkben Lemma Legyenek f, g F[x]. Ekkor f + (g) F[x]/(g) egység, akkor és csakis akkor, ha gcd(f, g) = 1. Ha F, G F[x] melyekkel Ff + Gg = 1, akkor (f + (g)) 1 = F + (g). Tehát az f + (g) elem inverze a bővített euklideszi algoritmussal meghatározható. Bizonyítás. f invertálható moduló g létezik s F[x] mellyel fs 1 (mod g) létezik s, t F[x] mellyel sf + tg = 1 gcd(f, g) = 1. Ha gcd(f, g) = 1, akkor léteznek F, G F[x] melyekre Ff + Gg = 1. Ekkor 1 = Ff + Gg Ff (mod g).
Véges testek konstrukciója Corollary Ha f F[x] irreducibilis polinom, akkor F[x]/(f ) egy test. Speciálisan, ha f F p [x] irreducibilis és deg f = n, akkor F p [x]/(f ) = F p n. Example 2x 4 + 3x 2 + 4 F 5 [x] irreducibilis, ezért F 5 [x]/(2x 4 + 3x 2 + 4) = F 625. Corollary Legyen f F[x], deg f = n. Ekkor az F[x]/(f ) testben az összeadás költsége O(n), egy szorzás költsége O(n 2 ), egy invertálás költsége pedig O(n 3 ) művelet F-ben.