其他分享
首页 > 其他分享> > 分治法简单应用

分治法简单应用

作者:互联网

大整数乘法分治

缅怀Gauss
欲求\(X*Y=?\),令\(X,Y均为n位,X=A*10^{n/2}+B,Y=C*10^{n/2}+D\)
\(XY=AC*10^{n}+BD+(AD+BC)*10^{n/2}\) →复杂度\(O(n^2)\)
\(XY=AC*10^{n}+BD+((A-B)(D-C)+AC+BD)*10^{n/2}\)
\(XY=AC*10^{n}+BD+((A+B)(C+D)-AC-BD)*10^{n/2}\)
改进后六次加法+3次乘法,\(T(n)=3T(n/2)+O(n)→T(n)=O(n^{lg3})=O(n^1.59)\)
再优化后就是fft和ntt

strassen矩阵乘法

假设n为2的指数(不足则将矩阵添零补到n阶矩阵)


用上述大整数乘法类似的处理方法,P负责乘法,可证明这种方式至少需要7次乘法

\(T(n)=7T(n/2)+O(n)→T(n)=O(n^{log7})=O(n^{2.81})\)

快排和归并性能分析

实践证明当对数组进行排序的时候,快速排序的速度优于归并排序。对于链表,是归并排序的速度优于快速排序。
一般数组中,快排在排序的过程中是访问连续的一个列表;而归并(两个归到一个)是在不停的访问两个列表。
但,当快排访问的不是连续的列表时,而是访问列表等时,就和归并相比就没有优势了。

标签:BD,10,AC,分治,归并,应用,简单,排序,乘法
来源: https://www.cnblogs.com/xyc1719/p/16418749.html