Algorithm 对数方程的下界时间复杂度
下面是方程式: 上限: 如果没有日志,我知道上界是O(n^2),但是有日志,上界是O(n^2)吗?还是日志被否定了 下限:Algorithm 对数方程的下界时间复杂度,algorithm,time-complexity,polynomial-math,Algorithm,Time Complexity,Polynomial Math,下面是方程式: 上限: 如果没有日志,我知道上界是O(n^2),但是有日志,上界是O(n^2)吗?还是日志被否定了 下限: 如果我们假设它只运行一次,那么它的下限不应该是O(1)?log(n^2)=2*log(n)。这意味着O(logn^2)=O(logn)首先,下限被标记为Ω而不是O 此外,Ω(1)是一个下限,但它不是一个严格的下限,因为对于n>=3: 2log(3n+n^2)>log(n)=Ω(log(n)) 对于上限: 2log(3n+n^2)log(n)和2log(3n+n^2)2.3
如果我们假设它只运行一次,那么它的下限不应该是O(1)?
log(n^2)=2*log(n)
。这意味着O(logn^2)=O(logn)
首先,下限被标记为Ω而不是O
此外,Ω(1)
是一个下限,但它不是一个严格的下限,因为对于n>=3
:
2log(3n+n^2)>log(n)=Ω(log(n))
对于上限:
2log(3n+n^2)<2*log(n^3)=6log(n)=O(log(n))
由于F(n)=O(log(n))
和F(n)=Ω(log(n))
这意味着它是一个紧密的绑定,并且它被标记为:
Θ(log(n))
您所说的“假设只运行一次”是什么意思?你说的“下限”是什么意思g(x)=1
是f(x)=2*log(3n+n^2)
的下限,但我看不出这有什么帮助。抱歉,这两个都是错误的:2log(3n+n^2)>log(n)
和2log(3n+n^2)<2*log(n^3)
@Nelfeal这不是错误的。。。对于n>2.31
:3n+n^2
=>2log(3n+n^2)log(n)
。然后指定n>2.31
(或者更确切地说n>=3
,因为它应该是一个整数)。否则它是错误的,甚至是2log(3n+n^2)>log(n)
:例如n=0.1
。@Nelfeal不管它来自n>=3
还是n>=100000000
,只要当n接近无穷大时它是真的,复杂性描述函数的极限行为。也没有人说n必须是整数。和2log(3n+n^2)>log(n)
对于每一个正数(包括0.1),我不理解你的观点。我知道什么是复杂的。然而,除非您指定n
的下限,或在“for a large value ofn
”行中指定某些内容,否则您的陈述仍然是错误的。至于n
是一个整数,当谈到一个算法的复杂性时,常常是这样;你当然知道我的意思。最后,2*log2(3*n+n^2)>log2(n)
。