最常见的一些算法复杂度

这里总结一些最常见计算的计算复杂度(常见意义上的)

矩阵相乘:

 

§       最原始的方法:2*n^3+n^2=O(N^3)

§       Strassen算法:O(N^(Log2^7))

§       Winograd&Coppersmith:O(N^2.37)


矩阵向量相乘:

 

§       原始方法:O(N^2)

矩阵方程求解:

 

§       高斯消去:O(N^3) [正向迭代:O(N^3),反向迭代:O(N^2)]

§       完全矩阵LU分解:O(N^2) [正向迭代:O(N^2),反向迭代:O(N^2)]

§       带状矩阵LU分解:O(M*N) (M为带宽)

§       三对角阵LU分解:O(N)

矩阵求逆:

 

§       与矩阵相乘类似(三种结果)

有限元法:

 

§       二维有限元LU分解:O(N^(3/2))

§       三维有限元LU分解:O(N^2)

§       二、三维有限元迭代算法(CG/BCG)O(N)

时域有限差分:

 

§       二维FDTD(确定时间T)O(N^(3/2))

§       三维FDTD(确定时间T)O(N^(4/3))

排序:

 

§       quicksortO(N*Log(N))

§       bucketsort:O(N) (最好的情况)


FFT
O(N*Log(N))
快速多极子FMM O(N*Log(N))

大多基于二叉树的算法都可以优化到O(N*Log(N))

[有待补充]

参考文献:
GH Golub/van Loan "Matrix Computations", 1989
PC Hansen "Rank-Deficient and Discreate Ill-Posed Problems", 1998
WC Chew "Waves and Fields in inhomogeneous Media", 1990

多谢kimbtsing@yahoo.com.cn的建议,发现在computational cpxFMM的计算复杂度是错误的,应该是O(N^1.5),而MLFMA(多层快速多极子)才是O(NLog(N))
文献参见原文的跟贴.

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值