簡體   English   中英

使用Strassen算法將2個數字與n位相乘的算法

[英]Algorithm to multiply 2 numbers with n bits using Strassen's algorithm

設計並分析一種算法,將2個數字A和B相乘,每個n位長,但使用Strassen算法將它們分別划分為3個相等大小的片段。 您可以獲得的最佳運行時間是多少?

我有兩個長度為n的數字,並將它們分為三個相等的部分。 例如,將123分為1、2和3。根據我的理解,我必須使用矩陣。 但是,斯特拉森的算法對我來說沒有任何意義。

我已經看過視頻並閱讀了講座,但是仍然不知道如何進行。 任何幫助,將不勝感激,謝謝!

由於這是家庭作業,因此我首先會給出一個提示:

將兩個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為底的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)方法要快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM