Nopea kertolasku, Karatsuban algoritmi

Samankaltaiset tiedostot
Algoritmit 1. Luento 2 Ke Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0

Algoritmit 1. Luento 11 Ti Timo Männikkö

811120P Diskreetit rakenteet

LAUSEKKEET JA NIIDEN MUUNTAMINEN

58131 Tietorakenteet ja algoritmit (syksy 2015)

11. Jaollisuudesta. Lemma Oletetaan, että a, b R.

Kompleksiluvut., 15. kesäkuuta /57

Lineaarialgebra ja matriisilaskenta II. LM2, Kesä /141

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Numeeriset menetelmät

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1.

Johdatus matematiikkaan

Numeeriset menetelmät

Algoritmit 1. Demot Timo Männikkö

1.4 Funktioiden kertaluokat

Funktioiden approksimointi ja interpolointi

TOOLS. Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO TOOLS 1 / 28

Lineaarinen yhtälöryhmä

Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista).

Mitään muita operaatioita symbolille ei ole määritelty! < a kaikilla kokonaisluvuilla a, + a = kaikilla kokonaisluvuilla a.

Tietorakenteet, laskuharjoitus 1,

Algoritmit 2. Luento 14 Ke Timo Männikkö

PERUSASIOITA ALGEBRASTA

Algoritmit 1. Luento 13 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

Koodausteoria, Kesä 2014

7 Vapaus. 7.1 Vapauden määritelmä

802328A LUKUTEORIAN PERUSTEET Merkintöjä ja Algebrallisia rakenteita

1. Esitä rekursiivinen määritelmä lukujonolle

MAA2.3 Koontitehtävät 2/2, ratkaisut

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Matematiikan tukikurssi

4 Tehokkuus ja algoritmien suunnittelu

Tehtävä 2. Osoita, että seuraavat luvut ovat algebrallisia etsimällä jokin kokonaislukukertoiminen yhtälö jonka ne toteuttavat.

a b 1 c b n c n

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Matriisilaskenta. Harjoitusten 3 ratkaisut (Kevät 2019) 1. Olkoot AB = ja 2. Osoitetaan, että matriisi B on matriisin A käänteismatriisi.

MAT Algebra I (s) periodilla IV 2012 Esko Turunen

a) Mitkä seuraavista ovat samassa ekvivalenssiluokassa kuin (3, 8), eli kuuluvat joukkoon

3. Reaalifunktioiden määräämätön integraali

Tietorakenteet, laskuharjoitus 2,

Tämän luvun tarkoituksena on antaa perustaidot kompleksiluvuilla laskemiseen sekä niiden geometriseen tulkintaan. { (a, b) a, b œ R }

Päättelyn voisi aloittaa myös edellisen loppupuolelta ja näyttää kuten alkupuolella, että välttämättä dim W < R 1 R 1

1 Algebralliset perusteet

1 Rajoittamaton optimointi

Kuvaus. Määritelmä. LM2, Kesä /160

Algoritmit 1. Luento 13 Ma Timo Männikkö

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

802320A LINEAARIALGEBRA OSA I

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Numeeriset menetelmät

Tutkimusmenetelmät-kurssi, s-2004

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

102 Käyrä. Piste ( 3,0 ) on käyrällä, jos ja vain jos sen koordinaatit. Siis piste ( 1, 2) Siis piste ( 3,0 ) ei ole käyrällä.

Algoritmit 1. Luento 3 Ti Timo Männikkö

Koodausteoria, Kesä 2014

Todistus. Eliminoidaan Euleideen algoritmissa jakojäännökset alhaaltaylöspäin.

PERUSKOULUSTA PITKÄLLE

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

2. kl:n DY:t. Lause. Yleisesti yhtälöllä ẍ = f(ẋ, x, t) on (sopivin oletuksin) aina olemassa 1-käs. ratkaisu. (ẋ dx/dt, ẍ d 2 x/dt 2.

Yleiset lineaarimuunnokset

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Ensimmäisen ja toisen asteen yhtälöt

1 Lineaariavaruus eli Vektoriavaruus

Matematiikan tukikurssi, kurssikerta 3

k=0 saanto jokaisen kolmannen asteen polynomin. Tukipisteet on talloin valittu

9 Matriisit. 9.1 Matriisien laskutoimituksia

Vaihtoehtoinen tapa määritellä funktioita f : N R on

2. Polynomien jakamisesta tekijöihin

7. Olemassaolo ja yksikäsitteisyys Galois n kunta GF(q) = F q, jossa on q alkiota, määriteltiin jäännösluokkarenkaaksi

Tietorakenteet ja algoritmit - syksy

4. Algoritmien tehokkuus

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

4 Yleinen potenssifunktio ja polynomifunktio

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

3 Yleinen toisen asteen yhtälö ja epäyhtälö

Renkaat ja modulit. Tässä osassa käsiteltävät renkaat ovat vaihdannaisia, ellei toisin mainita. 6. Ideaalit

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Analyysi III. Jari Taskinen. 28. syyskuuta Luku 1

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

Muuttujan vaihto. Viikon aiheet. Muuttujan vaihto. Muuttujan vaihto. ) pitää muistaa lausua t:n avulla. Integroimisen työkalut: Kun integraali

renkaissa. 0 R x + x =(0 R +1 R )x =1 R x = x

Johdatus tekoälyn taustalla olevaan matematiikkaan

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III

Malliratkaisut Demot

Malliratkaisut Demot

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

Matematiikan tukikurssi, kurssikerta 4

Vektorialgebra 1/5 Sisältö ESITIEDOT: vektori

Harjoitustehtävät, syyskuu Helpommat

Teemu Ojansivu Polynomien resultanteista

Transkriptio:

Nopea kertolasku, Karatsuban algoritmi Mikko Männikkö 16.8.2004 Lähde: ((Gathen and Gerhard 1999) luku II.8)

Esityksen kulku Algoritmien analysointia (1), (2), (3), (4) Klassinen kertolasku Parempi tapa (1), (2), (3) Karatsuban algoritmi polynomien kertolaskulle Karatsuban aikavaativuus Aikavaativuuden todistus (1), (2), (3) Linkkejä

Algoritmien analysointia (1) Algoritmien tehokkuuden kuvaamiseen käytetään niin sanottuja kasvunopeusluokkia. (puhutaan yleisesti isosta O:sta) Kasvunopeusluokka O(f(n)) tarkoittaa karkeasti seuraavaa: Algoritmi A saa syötteen, jonka pituus on n. Algoritmi A suoritetaan ajassa f(n). Algoritmi A kuuluu kasvunopeusluokkaan O(f(n)). Koska algoritmien suoritusaika voi riippua syötteen pituuden lisäksi myös esim. syötteen yksinkertaisuudesta, lasketaan algoritmien aikavaativuus pahimman mahdollisen tapauksen (worst case scenario) mukaan. (Esim. 10 ja 99 ovat molemmat yhtä pitkiä syötteitä, mutta jälkimmäisellä laskeminen ei ole kivaa.) Kasvunopeusluokka määräytyy vallitsevan termin mukaan. esim. n 2 O(n 2 ), 99n 2 O(n 2 ), n 2 + n 1.9 O(n 2 ), jne.

Algoritmien analysointia (2) 1 1 1 1 1 1 1 1 * 1 1 1 1 + 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 3 2 1 Peruskoulun yhteenlasku kuuluu kasvunopeusluokkaan O(n) ja on siis lineaarinen. Peruskoulun kertolasku kuuluu kasvunopeusluokkaan O(n 2 ) ja on siis neliöinen.

Algoritmien analysointia (3) Tässä esityksessä syötteellä n tarkoitetaan enintään astetta n - 1 olevien polynomien termien maksimi määrää. Esim. f = ax 3 + bx 2 + cx + d, f:ssä on neljä termiä ja deg f < 4. Koko esityksen ajan käsitellään aikavaativuudeltaan pahinta mahdollista tapausta. Eli kun käsitellään funktiota f, jolle deg f < 4 niin käsitellään aina tapausta deg f = 3. Algoritmin aikavaativuudella f(n) tarkoitetaan algoritmin suorittamien yhteenlaskujen ja kertolaskujen määrää.

Algoritmien analysointia (4) Karatsuban algoritmin avulla polynomien kertolasku suoritetaan siten, että se kuuluu kasvunopeusluokkaan O(n log 2 3 ) O(n 1.59 ). Vastaavasti klassinen polynomien kertolasku kuuluu kasvunopeusluokkaan O(n 2 ). Äärettömän suurilla luvuilla Karatsuban algoritmi on äärettömän paljon nopeampi kuin klassinen tapa.

Klassinen kertolasku (ax + b) + (cx + d) = (a + c)x + (b + d) Kahden ensimmäisen asteen polynomin yhteenlasku vaatii kaksi yhteenlaskua (a + c) ja (b + d) Yleisesti: Kahden polynomin, joiden aste on pienempi kuin n, yhteenlasku vaatii enintään n yhteenlaskutoimitusta. (ax + b) (cx + d) = acx 2 + (ad + bc)x + bd Kahden ensimmäisen asteen polynomin kertolasku vaatii neljä kertolaskua ac, ad, bc, bd ja yhden yhteenlaskun ad + bc. Yleisesti: Kahden polynomin, joiden aste on pienempi kuin n, kertolasku vaatii enintään n 2 kertolaskutoimitusta ja (n - 1) 2 yhteenlaskutoimitusta.

Parempi tapa (1) (ax + b) (cx + d) = acx 2 + (ad + bc)x + bd Tiedetään, että (a + b) (c + d) = ac + ad + bc + bd eli ad + bc = (a + b) (c + d) - ac - bd Nyt saadaan acx 2 + (ad + bc)x + bd = acx 2 + ((a + b) (c + d) - ac - bd)x + bd Kahden ensimmäisen asteen polynomin kertolasku vaatii nyt kolme kertolaskua ac, (a + b) (c + d), bd ja neljä yhteenlaskua a + b, c + d, - ac, - bd. (Tässä on koko asia ydin.) Kertolaskujen määrää voidaan siis vähentää yhteenlaskujen kustannuksella.

Parempi tapa (2) Kahden polynomin f ja g kertolaskun parempi tapa yleisesti: Oletetaan n = 2 k jollain k N, ja asetetaan m = n/2. deg f < n ja deg g < n. (eli polynomeissa f ja g on termejä enintään 1 tai 2 tai 4 tai 8 ) Jos deg f < n 1, niin asetetaan tarvittavien ylempien termien kertoimet nolliksi. (esim. f = ax 2 + bx + c = 0x 3 + ax 2 + bx + c) Kirjoitetaan f ja g uudelleen muodossa f = F 1 x m + F 0 jossa F 1 ja F 0 ovat asteeltaan pienempiä kuin m. Samoin g = G 1 x m + G 0. (esim. f = ax 3 + bx 2 + cx + d = (ax + b)x 2 + (cx +dc) = F 1 x 2 + F 0 jossa deg f < 4 ja deg F 1 = deg F 2 < 2) Nyt kirjoitetaan polynomien f ja g kertolasku seuraavasti fg = (F 1 x m + F 0 ) (G 1 x m + G 0 ) = F 1 G 1 x n + (F 0 G 1 + F 1 G 0 )x m + F 0 G 0

Parempi tapa (3) Järjestetään fg uudelleen kuten edellä tapauksessa n = 2 fg = F 1 G 1 x n + (F 0 G 1 + F 1 G 0 )x m + F 0 G 0 = F 1 G 1 x n + ((F 0 + F 1 ) (G 0 + G 1 ) - F 0 G 0 - F 1 G 1 )x m + F 0 G 0 Eli kertolasku fg vaatii vain kolme alle m:n (m = n/2) asteen polynomien kertolaskua ja joitain yhteenlaskuja. Samaa metodia voidaan käyttää rekursiivisesti pienempiin kertolaskuihin. (Kertolasku fg on kahden n - 1 asteisen polynomin kertolasku. Kertolaskut F 1 G 1, (F 0 + F 1 ) (G 0 + G 1 ) ja F 0 G 0 ovat kahden n/2-1 asteisen polynomin kertolaskuja.)

Karatsuban algoritmi polynomien kertolaskulle input: f,g R[x], deg f < n, deg g < n missä n on kahden potenssi ja R on rengas. output: fg R[x] 1. if n = 1 then return fg // jos jäljellä vain vakiotermi 2. määritellään f = F 1 x n/2 + F 0 ja g = G 1 x n/2 + G 0, missä F 0, F 1, G 0 ja G 1 ovat asteeltaan pienempiä kuin n/2 3. lasketaan F 0 G 0, F 1 G 1 ja (F 0 + F 1 ) (G 0 + G 1 ) rekursiivisesti 4. return F 1 G 1 x n + ((F 0 + F 1 ) (G 0 + G 1 ) - F 0 G 0 - F 1 G 1 )x m + F 0 G 0

Karatsuban aikavaativuus Väite: Karatsuban algoritmin avulla voidaan kertolasku suorittaa siten, että se kuuluu kasvunopeusluokkaan O(n 1.59 ). Todistetaan, että Karatsuban algoritmin aikavaativuus on 9n log 2 3-8n eli se kuuluu kasvunopeusluokkaan O(n 1.59 ). Huom. log 2 3 1.584962501 1.59 3 log 2 n = n log 2 3

Aikavaativuuden todistus (1) F 1 G 1 x n + ((F 0 + F 1 ) (G 0 + G 1 ) - F 0 G 0 - F 1 G 1 )x m + F 0 G 0 Kertolaskujen määrä: Algoritmin kohdassa 3, kahden polynomin välinen kertolasku fg, jossa f:n ja g:n aste on n - 1, voidaan kirjoittaa uudelleen kolmena kertolaskuna, joiden tekijöiden aste on n/2-1. Rekursiivisesti saadaan, että kertolaskujen määrä on 3 log 2 n = n log 2 3. esim. n = 1 n log 2 3 = 1, n = 2 n log 2 3 = 3, n = 4 n log 2 3 = 9, n = 8 n log 2 3 = 27

Aikavaativuuden todistus (2) F 1 G 1 x n + ((F 0 + F 1 ) (G 0 + G 1 ) - F 0 G 0 - F 1 G 1 )x m + F 0 G 0 Yhteenlaskujen määrä: Algoritmin kohdassa 3 tarvitaan n laskua laskettaessa yhteen F 0 + F 1 ja G 0 + G 1. Algoritmin kohdassa 4 tarvitaan 2n! laskua laskettaessa yhteen ((F 0 + F 1 ) (G 0 + G 1 ) - F 0 G 0 - F 1 G 1 )x m, ja lisäksi n!! laskua laskettaessa yhteen saatu tulos ja F 1 G 1 x n + F 0 G 0. Ensimmäisellä rekursio kierroksella lasketaan 4n yhteenlaskua, toisella 3*4n/2, kolmannella 9*4n/4 jne. Yhteenlaskujen määrä muodostaa geometrisen summan 0 i<log2 n 4n*(3/2) i = 4n 0 i<log2 n (3/2) i = 4n((3/2) log 2 n 1)/(3/2 1) = 4n((3 log 2 n /n) 1)2 = 8(3 log 2 n n) = 8(n log 2 3 n)! tämän pitäisi olla 2n -2 ja!! tämän n - 2, mutta kun kirjassa väittävät muuta niin olkoon.

Aikavaativuuden todistus (3) Suoritettavien kertolaskujen määrä algoritmissa on n log 2 3. Yhteenlaskujen määrä on 8(n log 2 3 n). Karatsuban aikavaativuus = kertolaskujen määrä + yhteenlaskujen määrä = 9n log 2 3 8n O(n log 2 3 ) O(n 1.59 ) Huom. Klassisen kertolaskun aikavaativuus = n 2 + (n - 1) 2 n = 32 9n log 2 3 8n = 1931, n 2 + (n - 1) 2 = 1985 Karatsuban algoritmissa on suhteessa enemmän yhteenlaskuja kuin Klassisessa kertolaskussa. Yhteenlasku on kuulemma nopeampaa suorittaa, mikä myös pienentää Karatsuban algoritmin aikavaativuutta suhteessa klassiseen kertolaskuun. mm. Maple käyttää hyödykseen Karatsuban algoritmia.

Linkkejä http://www-2.cs.cmu.edu/~cburch/251/karat/ http://www.cs.pitt.edu/~kirk/cs1501/animations/karatsuba.html