最常见的一些算法复杂度

转载 2004年06月29日 16:39:00

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

矩阵相乘:

 

§       最原始的方法: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))
文献参见原文的跟贴.

一些比较常见的算法复杂度

一些比较常见的算法复杂度 2010-11-17 19:15:07 分类: C/C++ 若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的节...
  • baixiaoshi
  • baixiaoshi
  • 2015年06月24日 08:00
  • 340

史上最全最常用的正则表达式-(基本够用值得收藏)

最常用的正则表达式很全面- 一、校验数字的表达式 二、校验字符的表达式 三、特殊需求表达式 。。。。。...
  • d1020965026
  • d1020965026
  • 2014年05月12日 14:11
  • 1632

列出一些你常见的运行时异常(非检查异常)?

-ArithmeticException(算术异常)  - ClassCastException (类转换异常)  - IllegalArgumentException (非法参数异常)  - ...
  • u014136713
  • u014136713
  • 2016年05月13日 18:06
  • 1040

常用的一些脚本语言

说起脚本语言,搞过游戏开发的,基本都不陌生,平时接触到的脚本也比较多。   比如: Python: 我参加工作之后研究的第一个脚本语言。这个脚本的功能很多模块很全,技术非常成熟...
  • amandalm
  • amandalm
  • 2014年09月26日 20:02
  • 5067

10个经典汇编改错题

 ⑴ MOV [AX],BX  答案:寄存器间接寻址方式不能用AX寄存器⑵ MOV AL,1280答案:源操作数超出目标范围⑶ MOV [BX],9 答案:目标操作数类型未知⑷ MOV DS,1000...
  • woxueliuyun
  • woxueliuyun
  • 2008年01月15日 17:13
  • 1303

一些常见又好用的代码

部分一:关于改变label Returns a rectangle that is smaller or larger than the source rectangle, with the sam...
  • gnicky
  • gnicky
  • 2012年04月08日 13:08
  • 514

常见的基本算法总结(持续更新。。。)

1.冒泡,相邻数交换 public static void bubbleSort(int[] arr) { int temp; // 外层循环一次冒一个泡, 要冒length-1次泡,注意...
  • onepiece2345
  • onepiece2345
  • 2012年11月09日 17:56
  • 605

MessageBox.Show();报最匹配的重载方法具有一些无效参数解决方法

我是一个刚刚学习Ado.net的新手,今天在连接数据库的过程中出现了MessageBox.Show();报最匹配的重载方法具有一些无效参数。因为我是抄传智播客老师的代码,老师的不报错误,而我的确偏偏报...
  • fu77884100
  • fu77884100
  • 2015年08月22日 08:48
  • 1012

stl的一些事

写c++代码,stl用起来开发效率非常高,但是有些事项不注意的话,很可能会我们写出的代码,执行效率非常低。下面就一些常见的“坑”做一个记录。这里只是对顺序容器做一个简单的归纳。 1 ...
  • u011408355
  • u011408355
  • 2015年07月25日 22:39
  • 517

MyEclipse常用的一些设置大全

1.注册MyEclipse   菜单栏/MyEclipse/Subscription Information     2.配置tomcat   菜单栏/Window/Preferences/M...
  • kalision
  • kalision
  • 2012年04月05日 11:04
  • 1514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最常见的一些算法复杂度
举报原因:
原因补充:

(最多只允许输入30个字)