gpt4 book ai didi

使用 Strassen 算法将 2 个数与 n 位相乘的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:19:41 24 4
gpt4 key购买 nike

Design and analyze an algorithm to multiply 2 numbers A and B, each n bits longs, but partitioning them into 3 equal sized pieces each and using the Strassen's algorithm. What is the best running time you can get?

我有两个长度为 n 的数字,并将它们分成三等份。例如,123 分为 1、2 和 3。根据我的理解,我必须使用矩阵。但是,Strassen 的算法对我来说没有任何意义。

我看过视频和阅读讲座,但仍然不知道如何进行。任何帮助将不胜感激,谢谢!

最佳答案

由于这是作业,所以我首先给出一个提示:

将两个 n 位数字分成三个 block 意味着将它们表示为 X = x_0 + x_1 b + x_2 b^2Y = y_0 + y_1 b + y_2 b^2 其中 b 是基数,例如 b = 2^(n/3)。计算它们的乘积 XY。它将是基数为 b 的 4 次多项式。

这个多项式的系数可以通过这 6 个乘积的加法和减法来计算:

x_0 y_0
x_1 y_1
x_2 y_2
(x_0 + x_1)(y_0 + y_1)
(x_0 + x_2)(y_0 + y_2)
(x_1 + x_2)(y_1 + y_2)

这样计算 XY 的乘积的工作量从计算 n/3 位数的 9 次乘积减少到只有 6 次,比学校教的 O(n^2) 方法更快。

关于使用 Strassen 算法将 2 个数与 n 位相乘的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35467187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com