我知道以下推理有问题,但我不确定它是什么。FFT中的说明
的FFT:
给出两个多项式
A = a_0 + a_1 x + a_2 x^2 + ... + a_n x^n
和
B = b_0 + b_1 x + b_2 x^2 + ... + b_n x^n
就可以计算产品的系数
AB = \sum _k = 0^2n (\sum _ j = 0^k (a_j b_{k-j}))x^k
在
O(n log n)
时间。所以给出两个向量
(a_0, ..., a_n)
和(b_0, ..., b_n)
我们可以O(n log n)
时间计算 矢量v_i = \sum j = 0^k (a_j b_{k-j})
(由零嵌入载体。)鉴于上述情况,我们应该能够计算的点积
A =(a_0, ..., a_n)
和B =(b_0, ..., b_n)
这是A.B = \sum_j=0^n a_j b_j
在O(n log n)
时间通过预处理其中一个向量说B
为B' = (b_n, b_{n-1}, ..., b_1, b_0)
然后计算卷积如在O(n log n)
时间在2。
如果上述推理是正确的,那么这意味着我们可以通过在O(n log n)
时间O(n)
倍计算点积在O(n^2 log n)
时间实现两个nxn
矩阵的矩阵乘法。
但是,我们知道矩阵乘法的最佳运行时间大约是O(n^2.4)
,所以这似乎不太可能是真实的,这可能意味着步骤1,2或3的不正确。
步骤(3)从B转换到B'的运行时间是多少? – 2009-11-12 19:20:23