Karatsuba algoritme

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 17. oktober 2021; checks kræver 13 redigeringer .

Karatsuba multiplikation  er en hurtig multiplikationsmetode, der giver dig mulighed for at multiplicere to n - cifrede tal med bitberegningskompleksitet :

.

Opfundet af Anatoly Karatsuba i 1960 . Det er historisk set den første multiplikationsalgoritme, der overgår den trivielle i asymptotisk kompleksitet [1] [2] [3] [4] .

Historie

I 1960 afholdt Andrey Kolmogorov et seminar om kybernetiks matematiske problemer. En af de opgaver, der blev behandlet på seminaret, var multiplikation af to -bit heltal. Den vigtigste kendte multiplikationsmetode på det tidspunkt var multiplikation "i en kolonne", som, når den blev implementeret algoritmisk, krævede elementære operationer (additioner eller multiplikationer af enkeltcifrede tal). Kolmogorov antog, at multiplikation "i en kolonne" er den optimale algoritme til at multiplicere to tal i den forstand, at køretiden for enhver multiplikationsmetode er mindst en størrelsesorden. Plausibiliteten af ​​"hypotesen " blev indikeret af, at metoden til multiplikation "i en kolonne" har været kendt i mindst fire årtusinder, og hvis der var en hurtigere multiplikationsmetode, så ville den sandsynligvis allerede være fundet. Men en uge senere foreslog 23-årige Anatoly Karatsuba [5] [6] [7] [8] en ny metode til at multiplicere to -cifrede tal med et estimat af køretiden og afviste derved "hypotesen ".

Karatsuba-metoden hører til " del og hersk "-algoritmerne sammen med algoritmer som binær søgning , hurtig sortering osv. De rekursive reduktionsformler, der blev brugt i Karatsuba-metoden, var kendt af Charles Babbage , som dog ikke var opmærksom på muligheden for kun at bruge tre rekursive multiplikationer i stedet for fire [9] .

Beskrivelse af metoden

To -bit tal kan repræsenteres som , , hvor ; .

Multiplikation med ( bitforskydning ) og addition sker i konstant tid . Derfor er problemet med multiplikation reduceret til beregningen af ​​polynomiets koefficienter . Brug af identiteten

dette polynomium kan repræsenteres som

Det sidste udtryk involverer tre produkter af -cifrede tal. Hvis vi beregner hver af dem efter samme skema, får vi en algoritme med et rekursivt estimat af køretiden

Til sammenligning ville en lignende algoritme, der hver for sig udfører alle fire multiplikationer , , , , kræve den sædvanlige tid

Eksempler

For nemheds skyld vil vi bruge decimalsystemet, det vil sige argumenterne for formens polynomium i stedet for . Numrenes farvemarkering er ikke relateret til det foregående afsnit, men angiver kun fra hvilket nummer den ene eller anden del er udskilt.

Lad os beregne :

Noter

  1. I praksis bliver algoritmen mere effektiv end konventionel multiplikation, når man multiplicerer tal med en længde af størrelsesordenen hundredvis af binære (tiere decimaler) cifre; på tal med en mindre længde giver algoritmen ikke en væsentlig fordel pga. større antal nødvendige additioner, subtraktioner og forskydninger end i den naive algoritme.
  2. S. A. Gritsenko, E. A. Karatsuba, M. A. Korolev, I. S. Rezvyakova, D. I. Tolev, M. E. Changa. Anatoly Alekseevich Karatsubas videnskabelige resultater  // Matematik og informatik, 1, På 75-årsdagen for Anatoly Alekseevich Karatsubas fødsel, Sovrem. sandsynlighed Mat., 16, MIAN, M., 2012, 7-30.
  3. Karatsuba E. A. Fast Algorithms and the BEE Method Arkiveret 4. november 2012 på Wayback Machine , 2008.
  4. Alekseev V. B. Fra Karatsuba-metoden til hurtig multiplikation af tal til hurtige algoritmer for diskrete funktioner  // Tr. MIAN. - 1997. - T. 218 . — S. 20–27 .
  5. Karatsuba A., Ofman Yu. Multiplikation af tal med flere værdier på automater // Rapporter fra USSRs Videnskabsakademi. - 1962. - T. 145 , nr. 2 .
  6. Karacuba A. Berechnungen und die Kompliziertheit von Beziehungen  (tysk)  // Elektronische Informationsverarbeitung und Kybernetik. - 1975. - Bd. 11 .
  7. Karatsuba A. A. Beregningsmæssig kompleksitet  // Tr. MIAN. - 1995. - T. 211 . — S. 186–202 .
  8. Knut D. Kunsten at programmere. - 3. udg. - M. : Williams , 2007. - V. 2. Opnåede algoritmer. — 832 s. — ISBN 0-201-89684-2 .
  9. A. Shen . Gauss multiplikationstrick?  // Matematisk oplysning . - 2019. - T. 24 .

Links