如何找出时间复杂度是指数级的?

时间:2016-05-18 03:16:16

标签: algorithm time time-complexity

我运行一个实现的算法。我根据每个输入数据捕获了运行时间。例如,在下面的图像中,第一列是输入大小,第二列是基于输入大小的运行时间。反正有没有发现这个算法的时间复杂度是基于输入和运行时间的指数?

enter image description here

由于

2 个答案:

答案 0 :(得分:3)

首先,你应该依靠算法分析。

第二个数据范围太短,无法可靠地确定曲线行为。

一般情况下,您可以计算第二列值的对数。对于指数,Log(F(x))x的关系曲线应大致为线性,因为(公式已编辑)

Log(A * B^(C * x)) = Log(A) + x * (C / Log(B))

答案 1 :(得分:2)

您要解决的问题是什么? 你想知道它是否是这个特定实例的指数,或者你是否试图找出这样做的通用方法?

如果是第一个, 使用: http://www.shodor.org/interactivate/activities/SimplePlot/

把你的观点放进去。

1,53
2,97
3,155
4,259
5,452
6,920

点击剧情。 从图形的形状来看,它看起来像指数。

如果您尝试以通用方式解决此问题,请观看: https://www.khanacademy.org/math/algebra/introduction-to-exponential-functions/exponential-growth-and-decay/v/constructing-linear-and-exponential-functions-from-data 如果您猜测它是指数的,您可以尝试查看给定形式的函数的参数是什么。您还应该考虑错误(即,您可能会针对不同的点获得稍微不同的功能)