首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Strassen算法乘n位2位数的算法

用Strassen算法乘n位2位数的算法
EN

Stack Overflow用户
提问于 2016-02-17 20:35:24
回答 1查看 989关注 0票数 0

设计和分析了一种算法,使A和B相乘,每个n位长,但将它们分割成3个大小相等的块,并使用Strassen算法。你能得到的最佳跑步时间是多少?

我有两个n长的数字,把它们分成三个相等的部分。例如,123分为1、2和3。据我理解,我必须使用矩阵。然而,Strassen的算法对我来说没有任何意义。

我看过视频,也读过讲座,但仍然不知道该怎么做。任何帮助都将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-18 07:32:25

既然这是家庭作业,我一开始只给你一个提示:

将两个n位数字分成三个块意味着将它们表示为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中的一个四次多项式.

这个多项式的系数可以从以下六个乘积中加减计算:

代码语言:javascript
复制
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)方法更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35467187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档