如何计算不同符号的“n”Big O,Omega,Litle o,Litle omega和Theta表示法

时间:2015-05-14 06:10:12

标签: algorithm

我正在研究算法,但找到时间复杂度的计算对我来说并不容易,很难记住何时使用log n,n log n,n ^ 2,n ^ 3,2n等,我怀疑的是如何在计算复杂性的同时考虑这些输入函数,是他们用于计算复杂性的任何特定方式,比如使用for循环,总是这么复杂......等等....

2 个答案:

答案 0 :(得分:0)

关于如何粗略计算Big O及其兄弟的复杂性,有许多链接,但没有真正的公式。

但是,有一些指导方针可以帮助您计算复杂性,如下所示。我建议您查看尽可能多的不同程序和数据结构,以帮助您熟悉模式,只需学习,研究,学习直到您获得它!有一种模式,你会越多地研究它。

来源:http://www.dreamincode.net/forums/topic/125427-determining-big-o-notation/

  1. 嵌套循环相乘。
  2. 添加了顺序循环。
  3. 只保留最大的术语,其他所有术语都被删除。
  4. 常数被删除。
  5. 条件检查是不变的(即1)。

答案 1 :(得分:0)

Log(n):当您使用递归并生成树时,使用 log(n)。 当你将问题深入到 2-halfs 时,我的意思是划分征服实际上你正在生成递归树

它的复杂性是 Log(n),为什么?因为它本质上是二叉树,对于二叉树,我们使用 Log(Base2)(n)

试试自己:假设n = 4(元素)所以log(base2)(4)= 2,你把它分成相等的一半。

nLog(n):记住Log(n)它是分区直到单个元素。之后,您开始合并排序元素班轮时间

换句话说,元素的合并具有复杂性" n" 所以总复杂度将是 n(合并)+ Log(n)(划分)最终变成 nLog(n)。

<强> N ^ 2 : 当您看到问题在两个嵌套循环中得到解决时,复杂性为 n ^ 2 。 即它们在2个循环中计算的矩阵/ 2-D数组。外环内有一个循环。

n ^ 3 :哦三维数组,这是针对3个嵌套循环。在循环里面循环循环。

2n :谢谢你没有忘记写&#34; 2&#34;用这个&#34; n&#34;否则我忘了解释这个。

所以&#34; 2&#34; 在这里&#34; n&#34; 是常量只是忽略它。为什么?因为如果你乘AIR去其他城市。你只计算飞行时间,而不是到达AIR港口所消耗的时间。我的意思是这是次要的我们删除常数。

&#34; n&#34; 只需记住这个词&#34;线性&#34; Big-O(n)< / strong>是线性复杂性。遗憾的是,我发现没有算法可以在线性时间内对元素进行排序。即只在一个循环中。(单阵列遍历)。

要记住的事情:

标称时间:线性时间,复杂度Big-O(n)

多项式时间:非线性时间,复杂度Big-O [log(n),nlog(n),n ^ 2,n ^ 3,n ^ 4,n ^ 5)。< / p>

指数时间: 2 ^ n,n ^ n,即这个问题将在指数时间内解决,即N ^幂(n)(这些是坏的坏坏,不称为算法)