Множення Карацуби — метод швидкого множення, який дозволяє перемножувати два n-значних числа зі складністю обчислення:
Цей підхід відкрив новий напрямок в обчислювальній математиці.
Історія
Проблема оцінки кількості бітових операцій, необхідних для обчислення добутку двох n-значних чисел, або проблема функції складності множення при була нетривіальною проблемою теорії швидких обчислень[].
Множення двох n-значних цілих чисел звичайним (шкільним) методом «у стовпчик» зводиться, по суті, до додавання n n-значних чисел. Тому для складності цього «шкільного» або «наївного» методу є оцінка зверху:
У 1956 р. А. М. Колмогоров сформулював гіпотезу, що нижня оцінка для при будь-якому методі множення є також величина порядку (так звана «гіпотеза » Колмогорова). На правдоподібність гіпотези вказував той факт, що метод множення «в стовпчик» відомий не менше чотирьох тисячоліть (наприклад, цим методом користувалися шумери), і якби існував швидший метод, то його, імовірно, уже б знайшли. Однак, 1960 року Анатолій Карацуба знайшов новий метод множення двох n-значних чисел з оцінкою складності
і тим самим спростував «гіпотезу ».
Згодом метод Карацуби узагальнили до парадигми «розділяй і володарюй», іншими важливими прикладами якої є метод двійкового розбиття, двійковий пошук, метод бісекції тощо.
Нижче подано два варіанти множення Карацуби.
Опис методу
Перший варіант
Цей варіант заснований на формулі
Оскільки , то множення двох чисел і еквівалентне за складністю піднесенню до квадрата.
Нехай є -значним числом, тобто
де .
Будемо вважати для простоти, що . Представляючи у вигляді
де
і
знаходимо:
Числа і є -значними. Число може мати знаків. У цьому випадку представимо його у вигляді , де є -значне число, — однозначне число. Тоді
Позначимо - кількість операцій, достатня для піднесення -значного числа в квадрат за формулою (1). З (1) випливає, що для справедлива нерівність:
де є абсолютна константа. Справді, права частина (1) містить суму трьох квадратів -значних чисел, , які для свого обчислення потребують операцій. Усі інші обчислення в правій частині (1) (а саме: множення на , п'ять додавань і одне віднімання) не більше ніж -значних чисел вимагають по порядку не більше операцій. Звідси випливає (2). Застосовуючи (2) послідовно до
і беручи до уваги, що
отримуємо
Таким чином для кількості операцій, достатнього для зведення -значного числа в квадрат за формулою (1) виконується оцінка:
Якщо ж не є ступенем двох, то визначаючи ціле число нерівностями , представимо як -значне число, тобто вважаємо останні знаків рівними нулю:
Усі інші міркування залишаються в силі і для виходить така ж верхня оцінка за порядком величини .
Другий варіант
Це безпосереднє множення двох -значних чисел, засноване на формулі
Нехай, як і раніше , , і - два -значних числа. Представляючи і у вигляді
де — -значні числа, знаходимо:
Таким чином, у цьому випадку формула (1) замінюється формулою (3). Якщо тепер позначити символом кількість операцій, достатню для множення двох -значних чисел за формулою (3), то для виконується нерівність (2), і, отже, справедливою є нерівність:
Приклад
Множимо 648*356. Візьмемо B=100.
- Перший множник подамо як 6*100 + 48.
Другий множник подамо як 3*100 + 56.
За формулою Карацуби:
x*y = (x1*B + x0)*(y1*B + y0) = x1*y1*B2 + Z1*B + x0*y0, - де Z1 = (x1 + x0)*(y1 + y0) − x1*y1 − x0*y0,
а добутки x1*y1 та x0*y0 обчислюють лише один раз.
Маємо: 648*356=(6*100+48)*(3*100+56)=6*3*1002 + Z1*100 + 48*56.
Обчислюємо 6*3 =18; 48*56 = 2688;
Z1 = (6+48)*(3+56) − 6*3 − 48*56 = 54*59 − 18 − 2688 = 480.
У цілому:
18*1002 + Z1*100 + 2688 = 18 00 00 + 480 00 + 2688 = 23 06 88.
- Для множення пар чисел 54*59 та 48*56, можна застосувати формулу Карацуби рекурсивно, поклавши B=10.
- Оскільки ЕОМ оперують двійковими числами, то для машинних розрахунків варто обрати B=2k.
Зауваження
Представлений вище перший спосіб множення можна трактувати як алгоритм обчислення з точністю до знаків функції в деякій точці .
Якщо розбивати не на два, а на більшу кількість доданків, то можна отримати асимптотично кращі оцінки складності обчислення добутку (піднесення до квадрату). Зокрема, такий шлях застосовано в [en].
Метод множення Шьонхаге — Штрассена має меншу асимптотичну складність, ніж алгоритм Карацуби, однак на практиці він має перевагу лише для великих значень n.
Примітки
- Карацуба Є. А. Швидкі алгоритми і метод БВЕ [ 4 листопада 2012 у Wayback Machine.], 2008.
- Алексєєв В. Б. Від методу Карацуба для швидкого множення чисел до швидких алгоритмах для дискретних функцій // Тр. МІАН. — 1997. — С. 20-27.
- Карацуба А., Офман Ю. Множення багатоцифрових чисел на автоматах // Доповіді Академії Наук СРСР. — 1962. — № 2.
- Karacuba A. Berechnungen und die Kompliziertheit von Beziehungen // Elektronische Informationsverarbeitung und Kybernetik. — 1975.
- Карацуба А. А. Складність обчислень // Тр. МІАН. — 1995. — С. 186-202.
- Кнут Д. Мистецтво програмування. — 3-е изд. — М. : Вильямс, 2007. — 832 с. — .
Посилання
- Http://212.cmc-msu.ru/files/kniga.html [ 3 січня 2022 у Wayback Machine.]
- Http://numbers.computation.free.fr/Constants/Algorithms/representation.html [ 3 січня 2022 у Wayback Machine.]
- Http://www-2.cs.cmu.edu/ [ 4 лютого 2013 у Wayback Machine.] ~ cburch/251/karat /
- Http://www.cs.pitt.edu/ [ 5 березня 2022 у Wayback Machine.] ~ kirk/cs1501/animations /
- Http://www.ccas.ru/personal/karatsuba/divcru.htm [ 13 вересня 2019 у Wayback Machine.]
- Http://www.ccas.ru/personal/karatsuba/alg.htm [ 4 листопада 2012 у Wayback Machine.]
- Http://habrahabr.ru/blogs/algorithm/124258/ [ 28 грудня 2011 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Mnozhennya Karacubi metod shvidkogo mnozhennya yakij dozvolyaye peremnozhuvati dva n znachnih chisla zi skladnistyu obchislennya M n O nlog2 3 log2 3 1 5849 displaystyle M n O n log 2 3 quad log 2 3 approx 1 5849 ldots Cej pidhid vidkriv novij napryamok v obchislyuvalnij matematici IstoriyaProblema ocinki kilkosti bitovih operacij neobhidnih dlya obchislennya dobutku dvoh n znachnih chisel abo problema funkciyi skladnosti mnozhennya M n displaystyle M n pri n displaystyle n to infty bula netrivialnoyu problemoyu teoriyi shvidkih obchislen dzherelo Mnozhennya dvoh n znachnih cilih chisel zvichajnim shkilnim metodom u stovpchik zvoditsya po suti do dodavannya n n znachnih chisel Tomu dlya skladnosti cogo shkilnogo abo nayivnogo metodu ye ocinka zverhu M n O n2 displaystyle M n O n 2 U 1956 r A M Kolmogorov sformulyuvav gipotezu sho nizhnya ocinka dlya M n displaystyle M n pri bud yakomu metodi mnozhennya ye takozh velichina poryadku n2 displaystyle n 2 tak zvana gipoteza n2 displaystyle n 2 Kolmogorova Na pravdopodibnist gipotezi n2 displaystyle n 2 vkazuvav toj fakt sho metod mnozhennya v stovpchik vidomij ne menshe chotiroh tisyacholit napriklad cim metodom koristuvalisya shumeri i yakbi isnuvav shvidshij metod to jogo imovirno uzhe b znajshli Odnak 1960 roku Anatolij Karacuba znajshov novij metod mnozhennya dvoh n znachnih chisel z ocinkoyu skladnosti M n O nlog2 3 displaystyle M n O n log 2 3 i tim samim sprostuvav gipotezu n2 displaystyle n 2 Zgodom metod Karacubi uzagalnili do paradigmi rozdilyaj i volodaryuj inshimi vazhlivimi prikladami yakoyi ye metod dvijkovogo rozbittya dvijkovij poshuk metod bisekciyi tosho Nizhche podano dva varianti mnozhennya Karacubi Opis metoduPershij variant Cej variant zasnovanij na formuli a bx 2 a2 a b 2 a2 b2 x b2x2 displaystyle a bx 2 a 2 a b 2 a 2 b 2 x b 2 x 2 Oskilki 4ab a b 2 a b 2 displaystyle 4ab a b 2 a b 2 to mnozhennya dvoh chisel a displaystyle a i b displaystyle b ekvivalentne za skladnistyu pidnesennyu do kvadrata Nehaj X displaystyle X ye n displaystyle n znachnim chislom tobto X e0 2e1 2n 1en 1 displaystyle X e 0 2e 1 ldots 2 n 1 e n 1 de ej 0 1 j 0 1 n 1 displaystyle e j in 0 1 j 0 1 ldots n 1 Budemo vvazhati dlya prostoti sho n 2m m 1 n 2k displaystyle n 2 m m geqslant 1 n 2k Predstavlyayuchi X displaystyle X u viglyadi X X1 2kX2 displaystyle X X 1 2 k X 2 de X1 e0 2e1 2k 1ek 1 displaystyle X 1 e 0 2e 1 ldots 2 k 1 e k 1 i X2 ek 2ek 1 2k 1en 1 displaystyle X 2 e k 2e k 1 ldots 2 k 1 e n 1 znahodimo X2 X1 2kX2 2 X12 X1 X2 2 X12 X22 2k X222n 1 displaystyle X 2 X 1 2 k X 2 2 X 1 2 X 1 X 2 2 X 1 2 X 2 2 2 k X 2 2 2 n qquad 1 Chisla X1 displaystyle X 1 iX2 displaystyle X 2 ye k displaystyle k znachnimi Chislo X1 X2 displaystyle X 1 X 2 mozhe mati k 1 displaystyle k 1 znakiv U comu vipadku predstavimo jogo u viglyadi 2X3 X4 displaystyle 2X 3 X 4 de X3 displaystyle X 3 ye k displaystyle k znachne chislo X4 displaystyle X 4 odnoznachne chislo Todi X1 X2 2 4X32 4X3X4 X42 displaystyle X 1 X 2 2 4X 3 2 4X 3 X 4 X 4 2 Poznachimo f n displaystyle varphi n kilkist operacij dostatnya dlya pidnesennya n displaystyle n znachnogo chisla v kvadrat za formuloyu 1 Z 1 viplivaye sho dlya f n displaystyle varphi n spravedliva nerivnist f n 3f n2 1 cn 2 displaystyle varphi n leqslant 3 varphi n2 1 cn qquad 2 de c gt 0 displaystyle c gt 0 ye absolyutna konstanta Spravdi prava chastina 1 mistit sumu troh kvadrativ k displaystyle k znachnih chisel k n2 1 displaystyle k n2 1 yaki dlya svogo obchislennya potrebuyut 3f m 3f n2 1 displaystyle 3 varphi m 3 varphi n2 1 operacij Usi inshi obchislennya v pravij chastini 1 a same mnozhennya na 4 2k 2n displaystyle 4 2 k 2 n p yat dodavan i odne vidnimannya ne bilshe nizh 2n displaystyle 2n znachnih chisel vimagayut po poryadku ne bilshe n displaystyle n operacij Zvidsi viplivaye 2 Zastosovuyuchi 2 poslidovno do f n2 1 f n2 2 f n2 m 1 displaystyle varphi n2 1 varphi n2 2 ldots varphi n2 m 1 i beruchi do uvagi sho f n2 m f 1 1 displaystyle varphi n2 m varphi 1 1 otrimuyemo f n 3 3f n2 2 cn2 1 cn 32f n2 2 3c n2 1 cn displaystyle varphi n leqslant 3 3 varphi n2 2 cn2 1 cn 3 2 varphi n2 2 3c n2 1 cn leqslant ldots leqslant 3mf n2 m 3m 1c n2 m 1 3m 2c n2 m 2 3c n2 1 cn displaystyle leqslant 3 m varphi n2 m 3 m 1 c n2 m 1 3 m 2 c n2 m 2 ldots 3c n2 1 cn 3m cn 32 m 1 32 m 2 32 1 displaystyle 3 m cn left left frac 3 2 right m 1 left frac 3 2 right m 2 ldots left frac 3 2 right 1 right 3m 2cn 32 m 1 lt 3m 2c 1 2c 1 nlog2 3 displaystyle 3 m 2cn left left frac 3 2 right m 1 right lt 3 m 2c 1 2c 1 n log 2 3 dd Takim chinom dlya kilkosti f n displaystyle varphi n operacij dostatnogo dlya zvedennya n displaystyle n znachnogo chisla v kvadrat za formuloyu 1 vikonuyetsya ocinka f n lt 2c 1 nlog2 3 log2 3 1 5849 displaystyle varphi n lt 2c 1 n log 2 3 quad log 2 3 1 5849 ldots Yaksho zh n displaystyle n ne ye stupenem dvoh to viznachayuchi cile chislo m displaystyle m nerivnostyami 2m 1 lt n 2m displaystyle 2 m 1 lt n leqslant 2 m predstavimo X displaystyle X yak 2m displaystyle 2 m znachne chislo tobto vvazhayemo ostanni 2mn displaystyle 2 m n znakiv rivnimi nulyu En e2m 1 0 displaystyle E n ldots e 2 m 1 0 Usi inshi mirkuvannya zalishayutsya v sili i dlya f n displaystyle varphi n vihodit taka zh verhnya ocinka za poryadkom velichini n displaystyle n Drugij variant Ce bezposerednye mnozhennya dvoh n displaystyle n znachnih chisel zasnovane na formuli a bx c dx ac a b c d ac bd x bdx2 displaystyle a bx c dx ac a b c d ac bd x bdx 2 Nehaj yak i ranishe n 2m displaystyle n 2 m n 2k displaystyle n 2k A displaystyle A i B displaystyle B dva n displaystyle n znachnih chisla Predstavlyayuchi A displaystyle A i B displaystyle B u viglyadi A A1 2kA2 B B1 2kB2 displaystyle A A 1 2 k A 2 quad B B 1 2 k B 2 de A1 A2 B1 B2 displaystyle A 1 A 2 B 1 B 2 k displaystyle k znachni chisla znahodimo AB A1B1 2k A1 A2 B1 B2 A1B1 A2B2 2nA2B2 3 displaystyle AB A 1 B 1 2 k A 1 A 2 B 1 B 2 A 1 B 1 A 2 B 2 2 n A 2 B 2 quad 3 Takim chinom u comu vipadku formula 1 zaminyuyetsya formuloyu 3 Yaksho teper poznachiti simvolom f n displaystyle varphi n kilkist operacij dostatnyu dlya mnozhennya dvoh n displaystyle n znachnih chisel za formuloyu 3 to dlya f n displaystyle varphi n vikonuyetsya nerivnist 2 i otzhe spravedlivoyu ye nerivnist f n lt 2c 1 nlog2 3 log2 3 1 5849 displaystyle varphi n lt 2c 1 n log 2 3 quad log 2 3 1 5849 ldots Priklad Mnozhimo 648 356 Vizmemo B 100 Pershij mnozhnik podamo yak 6 100 48 Drugij mnozhnik podamo yak 3 100 56 Za formuloyu Karacubi x y x1 B x0 y1 B y0 x1 y1 B2 Z1 B x0 y0 de Z1 x1 x0 y1 y0 x1 y1 x0 y0 a dobutki x1 y1 ta x0 y0 obchislyuyut lishe odin raz Mayemo 648 356 6 100 48 3 100 56 6 3 1002 Z1 100 48 56 Obchislyuyemo 6 3 18 48 56 2688 Z1 6 48 3 56 6 3 48 56 54 59 18 2688 480 U cilomu 18 1002 Z1 100 2688 18 00 00 480 00 2688 23 06 88 Dlya mnozhennya par chisel 54 59 ta 48 56 mozhna zastosuvati formulu Karacubi rekursivno poklavshi B 10 Oskilki EOM operuyut dvijkovimi chislami to dlya mashinnih rozrahunkiv varto obrati B 2k Zauvazhennya Predstavlenij vishe pershij sposib mnozhennya mozhna traktuvati yak algoritm obchislennya z tochnistyu do n displaystyle n znakiv funkciyi y x2 displaystyle y x 2 v deyakij tochci x x1 displaystyle x x 1 Yaksho rozbivati X displaystyle X ne na dva a na bilshu kilkist dodankiv to mozhna otrimati asimptotichno krashi ocinki skladnosti obchislennya dobutku pidnesennya do kvadratu Zokrema takij shlyah zastosovano v en Metod mnozhennya Shonhage Shtrassena maye menshu asimptotichnu skladnist nizh algoritm Karacubi odnak na praktici vin maye perevagu lishe dlya velikih znachen n PrimitkiKaracuba Ye A Shvidki algoritmi i metod BVE 4 listopada 2012 u Wayback Machine 2008 Aleksyeyev V B Vid metodu Karacuba dlya shvidkogo mnozhennya chisel do shvidkih algoritmah dlya diskretnih funkcij Tr MIAN 1997 S 20 27 Karacuba A Ofman Yu Mnozhennya bagatocifrovih chisel na avtomatah Dopovidi Akademiyi Nauk SRSR 1962 2 Karacuba A Berechnungen und die Kompliziertheit von Beziehungen Elektronische Informationsverarbeitung und Kybernetik 1975 Karacuba A A Skladnist obchislen Tr MIAN 1995 S 186 202 Knut D Mistectvo programuvannya 3 e izd M Vilyams 2007 832 s ISBN 0 201 89684 2 PosilannyaHttp 212 cmc msu ru files kniga html 3 sichnya 2022 u Wayback Machine Http numbers computation free fr Constants Algorithms representation html 3 sichnya 2022 u Wayback Machine Http www 2 cs cmu edu 4 lyutogo 2013 u Wayback Machine cburch 251 karat Http www cs pitt edu 5 bereznya 2022 u Wayback Machine kirk cs1501 animations Http www ccas ru personal karatsuba divcru htm 13 veresnya 2019 u Wayback Machine Http www ccas ru personal karatsuba alg htm 4 listopada 2012 u Wayback Machine Http habrahabr ru blogs algorithm 124258 28 grudnya 2011 u Wayback Machine