【发布时间】:2015-05-01 08:05:09
【问题描述】:
我了解大部分情况下如何计算函数的复杂度。确定数学函数的增长顺序也是如此。 [我可能不像我想的那样理解它,这就是为什么我可能会问这个。]例如:
an^3 + bn^2 + cn + d 可以用 big-o 表示法写成 O(n^3),因为对于足够大的 n,与 an^3 相比,术语 bn^2 + cn + d 的值是微不足道的(常数系数 a , b, c 和 d 也被排除在外,因为它们对价值的贡献也变得微不足道)。
我不明白的是,当主导词涉及某种划分时,这是如何工作的?例如:
a/n^3 + bn^2 或n^3/a + bn^2
对于前一个公式,让 n=100, a=1000 和 b=10,那么我们有
n^3/a = 100^3/1000 = 1000 和 bn^2 = 10*100^2 = 100,000
对于后者来说甚至更引人注目 - 在这种情况下,领先的术语不仅像上面一样缓慢增长,而且还在缩小,不是吗?:
a/n^3 = 1000/100^3 = 0.001 和 bn^2 = 100,000 同上。
在这两种情况下,第二项的贡献要大得多,那么实际上确定增长顺序的不是n^2吗?
当前导词后面跟着一个减法 (a/n^3 - bn^2) 或当第二个词也是除法时 (n^3/a + n^2/b) 或当两者都是除法但混合时,它会变得更加复杂(至少对我而言)订单(a/n^3 + n^2/b)等
这个列表似乎无穷无尽,所以我的一般问题是,如何理解和处理涉及除法(和减法)的公式以确定给定函数的增长顺序?
【问题讨论】:
标签: algorithm big-o complexity-theory division