现在的位置: 首页 > 算法 > 正文

进行算法复杂度分析

2020年01月01日 算法 ⁄ 共 775字 ⁄ 字号 评论关闭

如何衡量算法复杂度?

  内存(Memory)

  时间(Time)

  指令的数量(NumberofSteps)

  特定操作的数量

  磁盘访问数量

  网络包数量

  渐进复杂度(AsymptoticComplexity)

为什么要进行算法分析?

  预测算法所需的资源

  计算时间(CPU消耗)

  内存空间(RAM消耗)

  通信时间(带宽消耗)

  预测算法的运行时间

  在给定输入规模时,所执行的基本操作数量。

  或者称为算法复杂度(AlgorithmComplexity)

算法的运行时间与什么相关?

  取决于输入的数据。(例如:如果数据已经是排好序的,时间消耗可能会减少。)

  取决于输入数据的规模。(例如:6和6*109)

  取决于运行时间的上限。(因为运行时间的上限是对使用者的承诺。)

算法分析的种类:

  最坏情况(WorstCase):任意输入规模的最大运行时间。(Usually)

  平均情况(AverageCase):任意输入规模的期待运行时间。(Sometimes)

  最佳情况(BestCase):通常最佳情况不会出现。(Bogus)

  例如,在一个长度为n的列表中顺序搜索指定的值,则

  最坏情况:n次比较

  平均情况:n/2次比较

  最佳情况:1次比较

  而实际中,我们一般仅考量算法在最坏情况下的运行情况,也就是对于规模为n的任何输入,算法的最长运行时间。这样做的理由是:

  一个算法的最坏情况运行时间是在任何输入下运行时间的一个上界(UpperBound)。

  对于某些算法,最坏情况出现的较为频繁。

  大体上看,平均情况通常与最坏情况一样差。

  算法分析要保持大局观(BigIdea),其基本思路:

  忽略掉那些依赖于机器的常量。

  关注运行时间的增长趋势。

  结束语:以上就是关于进行算法复杂度分析的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.