大O:O(log(n))与实时之间的关系是什么

时间:2015-06-02 09:15:04

标签: data-structures big-o time-complexity

我计算了算法的实际时间(以毫秒为单位)。 我绘制了一张图表,比较了我的算法在Milli-Seconds(y轴)到' n'(x轴)所用的实际时间,其中n是树I中节点的数量#39;正在努力。

如果我的算法理想情况下应该具有O(log(n))复杂度,那么如何将此图与O(log(n))相关联。

2 个答案:

答案 0 :(得分:3)

假设您的算法在O(log n)中,图表应该进行比较。但是,不要为log n绘制k * log n + ckc需要k

常量c描述算法的单个步骤的持续时间,而n汇总所有常量(初始化)成本。

根据您想要实现的目标和算法/实现,您可能会看到处理器缓存未命中,垃圾收集或类似内容增加 INSERT INTO A(desc, date) VALUES ( SELECT B.desc, B.date FROM B,C WHERE B.task=C.keyid AND C.type='1' ) 等效果。

答案 1 :(得分:1)

如果您可以保存n,log(n),runtime(n)

enter image description here

您可以使用3种可视化方法(我使用Excel,因为它简单快捷):

  1. 在log(n)和运行时间之间绘制QQ-plotenter image description here
  2. 这张图显示了'理论'运行时功能和“经验”。运行时功能。直线(或接近)意味着它们很接近。

    1. 在同一图表上绘制两个图:水平轴为n,两个函数为log(n)和每个n获得的运行时间:
    2. enter image description here

      1. 第三个分析是统计方法:绘制水平轴为n的图形,垂直轴为运行时间(n)。现在,添加一个对数趋势线和Rsquare
      2. enter image description here

        趋势线可以为您提供最好的ab runtime(n)=a*log(n)+b。随着Rsquare变高,运行时和log(n)之间的相关性更好。