Algorithm 如何在没有代码的情况下计算时间复杂度
我必须证明(Algorithm 如何在没有代码的情况下计算时间复杂度,algorithm,time-complexity,Algorithm,Time Complexity,我必须证明(^正在崛起): n^2=O(2^n) n^2=Θ(2^n) 8^n=O(4^n) 8^n=Ω(4^n) 是否有一种理论方法总是能够知道它是真的还是假的,并给出证明?这些是极限计算问题: f(n) = O(g(n)) if and only if lim (f(n)/g(n)) = 0 n -> +inf f(n) = Θ(g(n)) if and only if lim
^
正在崛起):
n^2=O(2^n)
n^2=Θ(2^n)
8^n=O(4^n)
8^n=Ω(4^n)
f(n) = O(g(n)) if and only if lim (f(n)/g(n)) = 0
n -> +inf
f(n) = Θ(g(n)) if and only if lim (f(n)/g(n)) = some positive finite number
n -> +inf
f(n) = Ω(g(n)) if and only if lim (f(n)/g(n)) = +inifinity
n -> +inf
或者,把它倒过来
Let x = lim(f(n)/g(n))
n -> +inf
x = 0 ? then f(n) = O(g(n))
x = some postive finite number ? then f(n) = Θ(g(n))
x = +infinity ? then f(n) = Ω(g(n))
因此,我们必须计算极限,例如,在第一种情况下:
lim(n^2/2^n) = 0 (apply l'Hospital's rule twice)
n -> +inf
这就是为什么n^2=O(2^n)
等等:
n^2 = O(2^n) - true
n^2 = Θ(2^n) - false, in fact O(2^n)
8^n = O(4^n) - false, in fact Ω(2^n)
8^n = Ω(4^n) - true
你需要看看他们,并从他们那里学习
让我们看一个。我们需要k和n0,以便 |n2|≤ n>n0时的k·2n 例如,在这种情况下,k=1和n0=3起作用。对于n=4,我们将有16个≤ 16,这很好。现在我们可以归纳推理了。假设它对n有效,看看它对n+1是否有效。我们会的 |(n+1)2|≤ k·2(n+1) 我们知道一切都是正的,所以我们可以去掉绝对值,我们可以这样操作: n2+2·n+1≤ k·2(n+1)→ n2/2+n+1/2≤ k·2n 现在我们知道了k·2n≥ n2(诱导假说),因此它足以证明 n2/2+n+1/2≤ 氮气→ 1/2+1/n+1/(2·n2)≤ 一, 再进行一些操作,您将达到: n2-2·n-1≥ 0→ (n-1)2-2≥ 0 对于n>n0=3,这一点非常正确
现在让我们以3为例。这个是假的,8n≠ O(4n)。假设这个存在有效的k和n0值。那我等下,你应该 |8n0+i|≤ k·4n0+i 所以 k·4n0+i/| 8n0+i |≥ 一, 由于n0和i是肯定的,您可以重写为: k·(4/8)n0+i≥ 一, 但很明显,对于i,不等式左侧的极限→ ∞ 为0,因此k和n0不能是有效值
你应该能够对其余的进行类似的推理。对于2,θ涉及两个不等式,你要么证明两个不等式,要么反驳一个不等式;在这种情况下为假,2n不是n2的下限。对于4.,应沿着1的线。(这一点是正确的),但扭转了不平等的迹象