算法复杂度渐近图

时间:2016-04-22 00:49:09

标签: c++ algorithm time-complexity curve asymptotic-complexity

我正在准备一个C ++项目,我必须计算许多算法复杂度大O并将其与图上的理论值进行比较。我创建了一个计算算法执行时间的时间函数,但我没有找到一种方法来计算复杂度并使用时间T和输入N绘制曲线。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

简而言之:如果您定义了理论复杂度T(n),您所要做的就是对给定范围的n:n1,...,nx执行测试x次并测量每次测试的时间。然后从你的n1,...,nx和计算系数c的集合中选择中值nm,定义为:c = t(nm)/ T(nm)。 t(nm)是n(nm)的中值的测量时间,T(nm)是nm的理论复杂度。 接下来,对于你的每个n,计算系数q,即算法的理论和实验复杂度的一致性系数:

Coefficient of consistency of theoretical and experimental complexity

最后你可以绘制渐近图的q(n)图,并且它应该渐近收敛到1.如果你的图渐近地低于1理论复杂度被高估了,如果高于1复杂性被低估了。