Хочу знати, який алгоритм найшвидший для множення двох n-значних чисел? Космічну складність тут можна розслабити!
Хочу знати, який алгоритм найшвидший для множення двох n-значних чисел? Космічну складність тут можна розслабити!
Відповіді:
На сьогодні алгоритм Фюрера Мартіна Фюрера має складність у часі який використовує перетворення Фур'є на складні числа. Його алгоритм фактично заснований на алгоритмі Шенгаге та Страссена, який має часову складність Θ ( n log ( n ) log ( log ( n ) ) )
Інші алгоритми, швидші за алгоритм множення школи класу, - це множення Карацуби, яке має складність у часі на ≈ O ( n 1.585 ) та алгоритм Toom 3, що має складність у часі Θ ( n 1.465 )
Зауважте, що це швидкі алгоритми. Пошук найшвидшого алгоритму множення є відкритою проблемою в інформатиці.
Список літератури:
Зауважте, що алгоритми FFT, перелічені avi, додають велику константу, що робить їх непрактичним для чисел, менших ніж тисячі + біт.
Окрім цього списку, є ще деякі цікаві алгоритми та відкриті запитання: