GtDzx
2016-04-21 18:11:25 +08:00
大概就是让你算 x=SN*y ,其中 x,y 是(N-1)维的向量, SN 是 N-1xN-1 的矩阵。暴力去乘就是 O(N^2)的。
让后他介绍了一种递归分治的 O(NlogN)算法。大概思路就是把 x 分成两组, x2,x4,x6,x8... 这一组可以直接用 S_{N/2}*a , x1,x3,x5,x7...这一组可以用 T_{N/2}*s 求出来(其中 T,a,s 都在文中有定义)。
这样我们就把 x=SN*y 分解为 2 个一半规模的小问题 x=S_{N/2}*y 和 x=T_{N/2}*y 。比较郁闷的是 x=TN*y 是一个新问题。幸好这个问题也有递归分治的解法。 x=TN*y 可以被分解为 x=T_{N/2}*y 和 x=U_{N/2}*y 两个规模一般的小问题。但是这里又引入了一个新问题 x=UN*y 。不过这个问题也是能分解的,可以分解为 x=T_{N/2}*y 和 x=T_{N/2}*y 两个子问题。到这里终于没有再引入新问题了。于是整个问题可以在 O(NlogN)解决。