Karatsuba algoritm

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 17 oktober 2021; kontroller kräver 13 redigeringar .

Karatsuba multiplikation  är en snabb multiplikationsmetod som låter dig multiplicera två n -siffriga tal med bitberäkningskomplexitet :

.

Uppfanns av Anatoly Karatsuba 1960 . Det är historiskt sett den första multiplikationsalgoritmen som överträffar den triviala i asymptotisk komplexitet [1] [2] [3] [4] .

Historik

1960 höll Andrey Kolmogorov ett seminarium om kybernetikens matematiska problem. En av uppgifterna som behandlades vid seminariet var multiplikationen av två -bitars heltal. Den främsta kända metoden för multiplikation vid den tiden var multiplikation "i en kolumn", som, när den implementerades algoritmiskt, krävde elementära operationer (additioner eller multiplikationer av ensiffriga tal). Kolmogorov antog att multiplikation "i en kolumn" är den optimala algoritmen för att multiplicera två tal i den meningen att körtiden för en multiplikationsmetod är åtminstone en storleksordning. Sannolikheten för "hypotesen " indikerades av det faktum att multiplikationsmetoden "i en kolumn" har varit känd i minst fyra årtusenden, och om det fanns en snabbare multiplikationsmetod, så skulle den förmodligen redan ha hittats. Men en vecka senare föreslog 23-åriga Anatoly Karatsuba [5] [6] [7] [8] en ny metod för att multiplicera tvåsiffriga tal med en uppskattning av löptiden och motbevisade därmed "hypotesen ".

Karatsuba-metoden tillhör " dela och erövra "-algoritmerna, tillsammans med sådana algoritmer som binär sökning , snabbsortering , etc. De rekursiva reduktionsformler som användes i Karatsuba-metoden var kända för Charles Babbage , som dock inte uppmärksammade möjligheten att använda endast tre rekursiva multiplikationer istället för fyra [9] .

Beskrivning av metoden

Två -bitars nummer kan representeras som , , där ; .

Multiplikation med ( bitförskjutning ) och addition görs i konstant tid . Därför reduceras problemet med multiplikation till beräkningen av polynomets koefficienter . Använda identiteten

detta polynom kan representeras som

Det sista uttrycket involverar tre produkter av -siffriga tal. Om vi ​​beräknar var och en av dem enligt samma schema får vi en algoritm med en rekursiv uppskattning av körtiden

Som jämförelse skulle en liknande algoritm som separat utför alla fyra multiplikationerna , , , , kräva den vanliga tiden

Exempel

För att underlätta presentationen kommer vi att använda decimalsystemet, det vill säga argumenten för formens polynom istället för . Siffrornas färgmarkering är inte relaterad till föregående avsnitt, utan anger endast från vilket nummer en eller annan del är utpekad.

Låt oss räkna ut :

Anteckningar

  1. I praktiken blir algoritmen effektivare än konventionell multiplikation när man multiplicerar tal med en längd av storleksordningen hundratals binära (tiotals decimaler) siffror; på tal med mindre längd ger algoritmen ingen betydande fördel på grund av större antal nödvändiga tillägg, subtraktioner och skiftningar än i den naiva algoritmen.
  2. S. A. Gritsenko, E. A. Karatsuba, M. A. Korolev, I. S. Rezvyakova, D. I. Tolev, M. E. Changa. Vetenskapliga prestationer av Anatoly Alekseevich Karatsuba  // Matematik och informatik, 1, På 75-årsdagen av födelsen av Anatoly Alekseevich Karatsuba, Sovrem. prob. Mat., 16, MIAN, M., 2012, 7–30.
  3. Karatsuba E. A. Fast Algorithms and the BEE Method Arkiverad 4 november 2012 på Wayback Machine , 2008.
  4. Alekseev V. B. Från Karatsuba-metoden för snabb multiplikation av tal till snabba algoritmer för diskreta funktioner  // Tr. MIAN. - 1997. - T. 218 . — S. 20–27 .
  5. Karatsuba A., Ofman Yu. Multiplikation av siffror med flera värden på automater // Rapporter från USSR:s vetenskapsakademi. - 1962. - T. 145 , nr 2 .
  6. Karacuba A. Berechnungen und die Kompliziertheit von Beziehungen  (tyska)  // Elektronische Informationsverarbeitung und Kybernetik. - 1975. - Bd. 11 .
  7. Karatsuba A. A. Beräkningskomplexitet  // Tr. MIAN. - 1995. - T. 211 . — S. 186–202 .
  8. Knut D. Konsten att programmera. - 3:e uppl. - M. : Williams , 2007. - V. 2. Erhållna algoritmer. — 832 sid. — ISBN 0-201-89684-2 .
  9. A. Shen . Gauss multiplikationstrick?  // Matematisk upplysning . - 2019. - T. 24 .

Länkar