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] .
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] .
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
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 :
Talteoretiske algoritmer | |
---|---|
Enkelthedstest | |
At finde primtal | |
Faktorisering |
|
Diskret logaritme | |
Finder GCD | |
Modulo aritmetik | |
Multiplikation og division af tal | |
Beregning af kvadratroden |