Karatsuba algoritmus

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. október 17-én felülvizsgált verziótól ; az ellenőrzések 13 szerkesztést igényelnek .

A Karatsuba szorzás  egy gyors szorzási módszer, amely lehetővé teszi két n - jegyű szám szorzását bit számítási bonyolultsággal :

.

Anatolij Karatsuba találta fel 1960- ban . Történelmileg ez az első olyan szorzási algoritmus, amely aszimptotikus összetettségében felülmúlja a triviálist [1] [2] [3] [4] .

Történelem

1960-ban Andrej Kolmogorov szemináriumot tartott a kibernetika matematikai problémáiról. A szemináriumon az egyik feladat a kétbites egész számok szorzása volt . A fő ismert szorzási módszer akkoriban az „oszlopban” szorzás volt, amely algoritmikusan végrehajtva elemi műveleteket (egyjegyű számok összeadását vagy szorzását) igényelte. Kolmogorov feltételezte, hogy az "oszlopban" szorzás az optimális algoritmus két szám szorzására abban az értelemben, hogy bármely szorzási módszer futási ideje legalább egy nagyságrend. A „hipotézis ” valószerűségét jelezte, hogy az „oszlopos” szorzás módszere legalább négy évezrede ismert, és ha lenne gyorsabb szorzási mód, akkor valószínűleg már megtalálták volna. Egy héttel később azonban a 23 éves Anatolij Karatsuba [5] [6] [7] [8] egy új módszert javasolt a kétjegyű számok és a futási idő becsült szorzására, és ezzel megcáfolta a „hipotézist ”.

A Karatsuba módszer az „ oszd meg és uralkodj ” algoritmusokhoz tartozik, olyan algoritmusok mellett, mint a bináris keresés , gyors rendezés stb. A Karatsuba módszerben használt rekurzív redukciós képleteket Charles Babbage ismerte , aki azonban nem figyelt négy helyett csak három rekurzív szorzás használatának lehetősége [9] .

A módszer leírása

A kétbites számok , , ahol ; .

A szorzás ( biteltolás ) és az összeadás állandó időben történik . Ezért a szorzás problémája a polinom együtthatóinak kiszámítására redukálódik . Az identitás használata

ezt a polinomot úgy ábrázolhatjuk

Az utolsó kifejezés a -jegyű számok három szorzatát tartalmazza. Ha mindegyiket ugyanazon séma szerint számítjuk ki, akkor egy algoritmust kapunk a futási idő rekurzív becslésével

Összehasonlításképpen, egy hasonló algoritmus, amely külön-külön végrehajtja mind a négy szorzást , a , , , a szokásos időt igényelné

Példák

A bemutatás megkönnyítése érdekében a decimális rendszert, vagyis az alak polinomjának argumentumait használjuk a helyett . A számok színjelölése nem kapcsolódik az előző részhez, csak azt jelzi, hogy melyik számból van kiemelve egy vagy másik rész.

Számoljunk :

Jegyzetek

  1. A gyakorlatban több száz bináris (tizedesjegyű) nagyságrendű számok szorzásakor az algoritmus hatékonyabb a hagyományos szorzásnál, kisebb hosszúságú számoknál az algoritmus nem nyújt jelentős előnyt, mivel több szükséges összeadás, kivonás és eltolás, mint a naiv algoritmusban.
  2. S. A. Gritsenko, E. A. Karatsuba, M. A. Koroljev, I. S. Rezvyakova, D. I. Tolev, M. E. Changa. Anatolij Alekszejevics Karatsuba tudományos eredményei  // Matematika és informatika, 1, Anatolij Alekszejevics Karatsuba születésének 75. évfordulóján, Szovrem. prob. Mat., 16, MIAN, M., 2012, 7–30.
  3. Karatsuba E. A. Fast Algorithms and the BEE Method Archiválva : 2012. november 4., a Wayback Machine , 2008.
  4. Alekseev V. B. A Karatsuba módszertől a számok gyors szorzásához a diszkrét függvények gyors algoritmusaiig  // Tr. MIAN. - 1997. - T. 218 . – S. 20–27 .
  5. Karatsuba A., Ofman Yu. Többértékű számok szorzása automatákon // A Szovjetunió Tudományos Akadémiájának jelentései. - 1962. - T. 145 , 2. sz .
  6. Karacuba A. Berechnungen und die Kompliziertheit von Beziehungen  (német)  // Elektronische Informationsverarbeitung und Kybernetik. - 1975. - Bd. 11 .
  7. Karatsuba A. A. Számítási komplexitás  // Tr. MIAN. - 1995. - T. 211 . – S. 186–202 .
  8. Knut D. A programozás művészete. - 3. kiadás - M .: Williams , 2007. - V. 2. Megszerzett algoritmusok. — 832 p. — ISBN 0-201-89684-2 .
  9. A. Shen . Gauss szorzási trükk?  // Matematikai felvilágosodás . - 2019. - T. 24 .

Linkek