mat*_*y-d 177 algorithm complexity-theory big-o time-complexity
我发现时间复杂度的资源还不清楚何时可以忽略时间复杂度方程中的项,特别是非多项式的例子.
我很清楚,给定n 2 + n + 1 形式的东西,最后两个术语是无关紧要的.
具体来说,给定两个分类,2 n和n*(2 n),是第二个与第一个相同的顺序?额外的n乘法是否重要?通常资源只是说x n处于指数状态并且增长得更快......然后继续前进.
我可以理解为什么它不会因为2 n将大大超过n,但因为它们没有被加在一起,所以在比较两个方程时它会很重要,实际上它们之间的差异总是n的因子,这似乎至少可以说是重要的.
izo*_*ica 229
你必须转到大O(O)的正式定义才能回答这个问题.
定义f(x)属于O(g(x))if且仅当限制存在时,即不是无穷大.简而言之,这意味着存在一个常数,使得值永远不会大于.limsupx ? ? (f(x)/g(x))Mf(x)/g(x)M
如果你的问题让我们放手.然后是这将仍增长无限.因此不属于.f(n) = n ? 2ng(n) = 2nf(n)/g(n)nf(n)O(g(n))
che*_*ner 85
快速查看n?2?更大的方法是更改变量.我们m = 2?.然后n?2? = ( log?m )?m(在m = 2?给出的两侧取基数为2的对数n = log?m),你可以很容易地显示出m log?m增长得快m.
zpr*_*zpr 10
我同意n?2?不存在O(2?),但我认为它应该更明确,因为限制优越使用并不总是成立.
通过大O的正式定义:f(n)是O(g(n))的,如果存在常数c > 0,并n? ? 0使得对所有n ? n?我们有f(n) ? c?g(n).可以容易地证明,对于不存在这样的常量f(n) = n?2?和g(n) = 2?.但是,它可以显示g(n)在O(f(n)).
换句话说,n?2?更低的界限2?.这很直观.虽然它们都是指数级的,因此在大多数实际情况下同样不太可能使用,但我们不能说它们的顺序相同,因为它们2?必然会慢于n?2?.
我不反对其他说n?2?增长速度比2?. 但n?2?增长仍然只是指数级的。
当我们谈论算法时,我们经常说时间复杂度呈指数增长。因此,我们认为2?, 3?, e?, 2.000001?, 或我们n?2?是具有指数增长的同一组复杂性。
为了给它一点数学意义,我们考虑一个函数f(x),如果存在这样的常数c > 1,那么它就会呈指数增长(不快于)。f(x) = O(cx)
因为n?2?常数c可以是任何大于 的数2,让我们取3。然后:
n?2? / 3? = n ? (2/3)?这比1任何n.
所以2?长得比n?2?,最后依次长得比2.000001?。但它们三个都呈指数级增长。