确定复杂性时间

时间:2015-06-10 18:20:51

标签: algorithm complexity-theory

我正在为大学做一个关于如何确定复杂性的项目,假设所有关于算法的知识都是它们的运行时间取决于数据大小。

我使用的算法类型是多项式(n2,n3,..,n6),对数和指数。

例如,程序的输入可以是:

n 1 2 3 4 5 6 7 8 9 10 11 12(数据大小)

T(n)0,9 / 1,6 / 2,3 / 3,0 / 3,7 / 4,4 / 5,1 / 5,8 / 6,5 / 7,2 / 7,9 / 8,6

所以,我有一个多项式和对数复杂度的算法, 目前,数据最多为20

多项式:

DataContext

我已经与exponencial一个走到了尽头。 有人能给我一个暗示吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

这听起来像一个随机问题,即在给定一组离散点的情况下找到最佳模型拟合。我要做的第一件事是确定类型:logarithmic / polynomial / exponential。为此,您可以在每个点研究离散导数。如果一阶导数的值减小=>对数。要确定它是多项还是指数,你应该研究导数,但这次不仅是第一阶。可以观察到以下情况:指数函数的连续推导也是指数函数,而多项式将得到线性(导数接近0)。因此,如果经过几次推导后,您的值接近于0 =>多项式。

确定了模型的类型后,您现在希望将点数与该模型相匹配。你可以在Eigen库的帮助下用C ++完成,主要是their implementation算法的Levenberg–Marquardt