Karatsuba-algoritmi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 17. lokakuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 13 muokkausta .

Karatsuba kertolasku  on nopea kertolaskumenetelmä, jonka avulla voit kertoa kaksi n - numeroista lukua bitin laskennallisen monimutkaisuuden avulla :

.

Sen keksi Anatoli Karatsuba vuonna 1960 . Se on historiallisesti ensimmäinen kertoalgoritmi, joka ylittää triviaalin asymptoottisessa kompleksisuudessa [1] [2] [3] [4] .

Historia

Vuonna 1960 Andrei Kolmogorov piti seminaarin kybernetiikan matemaattisista ongelmista. Yksi seminaarissa käsitellyistä tehtävistä oli kahden bitin kokonaislukujen kertominen . Tärkein tunnettu kertolaskutapa tuolloin oli kertominen ”sarakkeessa”, joka algoritmisesti toteutettuna vaati alkeisoperaatioita (yksinumeroisten lukujen yhteen- tai kertolaskuja). Kolmogorov oletti, että kertominen "sarakkeessa" on optimaalinen algoritmi kahden luvun kertomiselle siinä mielessä, että minkä tahansa kertolaskumenetelmän ajoaika on vähintään suuruusluokkaa. "Hypoteesin " uskottavuutta osoitti se, että "sarakkeessa" kertomismenetelmä on ollut tunnettu ainakin neljä vuosituhatta, ja jos olisi ollut nopeampi kertolaskumenetelmä, niin se olisi luultavasti jo löydetty. Kuitenkin viikkoa myöhemmin 23-vuotias Anatoli Karatsuba [5] [6] [7] [8] ehdotti uutta menetelmää kaksinumeroisten lukujen kertomiseksi käyntiajan arviolla ja kumosi näin "hypoteesin ".

Karatsuba-menetelmä kuuluu " jakaa ja hallitse " -algoritmeihin, samoin kuin algoritmit, kuten binäärihaku , pikalajittelu jne. Karatsuba-menetelmässä käytetyt rekursiiviset pelkistyskaavat tunsivat Charles Babbage , joka ei kuitenkaan kiinnittänyt huomiota mahdollisuus käyttää vain kolmea rekursiivista kertolaskua neljän sijasta [9] .

Menetelmän kuvaus

Kaksibittiset luvut voidaan esittää muodossa , , missä ; .

Kertominen ( bittisiirto ) ja yhteenlasku tehdään vakioajassa . Siksi kertolaskuongelma rajoittuu polynomin kertoimien laskemiseen . Identiteettiä käyttämällä

tämä polynomi voidaan esittää muodossa

Viimeinen lauseke sisältää kolme -numeroisten lukujen tuotetta. Jos laskemme kukin niistä saman kaavion mukaan, saamme algoritmin, jossa on rekursiivinen arvio ajoajasta

Vertailun vuoksi samanlainen algoritmi, joka suorittaa erikseen kaikki neljä kertolaskua , , , vaatisi tavanomaisen ajan

Esimerkkejä

Esityksen helpottamiseksi käytämme desimaalijärjestelmää, eli muodon polynomin argumentteja . Numeroiden värimerkintä ei liity edelliseen osaan, vaan osoittaa vain, mistä numerosta yksi tai toinen osa on erotettu.

Lasketaan :

Muistiinpanot

  1. Käytännössä algoritmista tulee perinteistä kertolaskua tehokkaampi kerrottaessa lukuja, joiden pituus on luokkaa satoja binäärilukuja (kymmeniä desimaalilukuja); pienemmillä luvuilla algoritmi ei tarjoa merkittävää etua, koska enemmän tarvittavia yhteen-, vähennys- ja siirtoja kuin naiivissa algoritmissa.
  2. S. A. Gritsenko, E. A. Karatsuba, M. A. Korolev, I. S. Rezvyakova, D. I. Tolev, M. E. Changa. Anatoli Aleksejevitš Karatsuban tieteelliset saavutukset  // Matematiikka ja informatiikka, 1, Anatoli Aleksejevitš Karatsuban syntymän 75-vuotispäivänä, Sovrem. prob. Mat., 16, MIAN, M., 2012, 7–30.
  3. Karatsuba E. A. Fast Algorithms and the BEE Method Arkistoitu 4. marraskuuta 2012 Wayback Machinessa , 2008.
  4. Alekseev V. B. Karatsuba-menetelmästä lukujen nopeaan kertomiseen nopeisiin algoritmeihin diskreeteille funktioille  // Tr. MIAN. - 1997. - T. 218 . - S. 20-27 .
  5. Karatsuba A., Ofman Yu. Moniarvoisten lukujen kertominen automaateilla // Neuvostoliiton tiedeakatemian raportit. - 1962. - T. 145 , nro 2 .
  6. Karacuba A. Berechnungen und die Kompliziertheit von Beziehungen  (saksa)  // Elektronische Informationsverarbeitung und Kybernetik. - 1975. - Bd. 11 .
  7. Karatsuba A. A. Laskennallinen monimutkaisuus  // Tr. MIAN. - 1995. - T. 211 . — S. 186–202 .
  8. Knut D. Ohjelmoinnin taito. - 3. painos - M .: Williams , 2007. - V. 2. Saadut algoritmit. — 832 s. — ISBN 0-201-89684-2 .
  9. A. Shen . Gaussin kertolaskutemppu?  // Matemaattinen valaistuminen . - 2019. - T. 24 .

Linkit