这是非常困难的一般。
你会实验评估在单变量情况下的运行时间,插入递增,当你的数据结构做了基本的(推定O(1)
)操作,然后拿数据为许多不同的输入大小计数器的常用方法,和剧情它在一个log-log
情节。那就是,log T
与。如果运行时间的形式为n^k
,则应该看到一条直线斜率为k
,或者接近此值。如果运行时间如T(n) = n^{k log n}
或其他什么,那么你应该看到一个抛物线。如果T
在n
处于指数状态,您仍然应该看到指数增长。
你只能希望得到有关最高阶项的信息,当你做到这一点 - 低位条款得到过滤掉,在具有越来越少的影响,因为n
变大的感觉。
在这两个变量的情况下,你可以尝试做一个类似的方法 - 本质上,采取3维数据,做一个log-log-log
情节,并尝试适应飞机。
但是,如果真的只有一个主导词在大多数政权中占主导地位,那么这只会真正起作用。
假设我的实际功能是T(n, m) = n^4 + n^3 * m^3 + m^4
。
当时m = O(1)
,然后T(n) = O(n^4)
。 当时n = O(1)
,然后T(n) = O(m^4)
。 当时n = m
,然后T(n) = O(n^6)
。
在这些方案的每一个中,沿着可能的平面的“切片”值,不同的术语之一是主导术语。
所以没有办法确定功能,只是从固定的m
和固定的n
获得一些点。如果你这样做了,你不会得到n = m
的正确答案 - 你将无法发现像这样的“中等”主要条款。
我建议,最好的办法预测渐近增长,当你有很多的变量/复杂的数据结构,是用铅笔和一张纸,并做传统算法分析。或者可能是一种混合方法。试图打破效率的问题,为不同的部分 - 如果你可以分裂的问题分成几个不同的功能和或产品,也许他们中的一些你可以在抽象的决定,以及一些你可以实验估算。