将Big-O表示法向上舍入以使其看起来更好是常见的吗?

时间:2014-08-26 07:22:47

标签: algorithm big-o file-recovery

为了方便或简单的外观,使用更高的Big-O表示法值是否常见?

例如:我正在研究这种算法" bifragment gap carving"简要解释here(第66页)。如果我理解正确,算法将采用任何间隙大小n,最大值为sum from 1 to n,但在同一文档中它表示:

  

该技术不适用于存在大间隙碎片的文件。如果n是bh和bz之间的簇数,那么在最坏的情况下,可能需要n ^ 2个对象验证   在成功恢复之前。

所以我的问题是:我是否理解算法错误或最差情况运行时向上舍入到n^2看起来比总和更好?

3 个答案:

答案 0 :(得分:2)

'总和从1到n'实际上等于(n + 1)* n / 2,或(n ^ 2/2 + n / 2)

因此,在这种情况下,数量级为n^2。没有简化(当n很大时,你可以明显地删除乘法常数,如1/2和n << n^2

答案 1 :(得分:1)

回答实际问题:是的,它不仅是常见的,而且非常普遍。 O(N * N)表示对于某些未指定的c,度量(通常是运行时间)上升的速度不会快于c * N * N.当N上升时,N * N + N显然小于2 * N * N,因此O(N * N + N)只是O(N * N)。

答案 2 :(得分:1)

O(f)中给出的函数f是算法复杂度的上限。这意味着对于所有大小为n的输入(大于特定大小n0),您的算法不会使用比const * f(n)更多的时间(或空间)。

如果你的算法总和(i,i = 0 ... n)步(等于n *(n-1)/ 2并且是二次函数),则表示const * n * n是有效的所有n的上限> n0 - >复杂度为O(n ^ 2)

另一个解释看这里: big o notation in plain english