Algorithm 表达式的渐近运行时复杂性
我可以说: 对数n+对数(n-1)+对数(n-2)+对数(n-k)=θ(k*logn) 上述内容的正式书写方式: 西格玛(i从0到k)对数(n-i)=θ(k*logn) 如果上述陈述是正确的,我如何证明 如果它是错误的,我如何将它(当然是方程的左侧)表示为n和k的渐近运行时函数 谢谢。表示:Algorithm 表达式的渐近运行时复杂性,algorithm,math,mathematical-optimization,polynomial-math,asymptotic-complexity,Algorithm,Math,Mathematical Optimization,Polynomial Math,Asymptotic Complexity,我可以说: 对数n+对数(n-1)+对数(n-2)+对数(n-k)=θ(k*logn) 上述内容的正式书写方式: 西格玛(i从0到k)对数(n-i)=θ(k*logn) 如果上述陈述是正确的,我如何证明 如果它是错误的,我如何将它(当然是方程的左侧)表示为n和k的渐近运行时函数 谢谢。表示: LHS=log(n)+log(n-1)+…+日志(n-k) RHS=k*log n 请注意: LHS=log(n*(n-1)*…*(n-k))=log(k+1阶多项式) 因此,这等于: (k+1)*日志(n
LHS=log(n)+log(n-1)+…+日志(n-k)
RHS=k*log n
请注意:
LHS=log(n*(n-1)*…*(n-k))=log(k+1阶多项式)
因此,这等于:
(k+1)*日志(n(1+限制为0的术语))
如果我们考虑除法:
(k+1)*log(n(1+限制为0的术语))/RHS
我们进入极限:
(k+1)/k=1+1/k
因此,如果k
是一个常数,则这两个项的增长速度相同。所以LHS=theta(RHS)
当n
为常数时,以前在限制中0
的术语不会消失,而是得到:
(k+1)*一些常量/k*(一些其他常量)
所以它是:
(1+1/k)*(另一个常量)
。因此也LHS=theta(RHS)
表示:
LHS=log(n)+log(n-1)+…+日志(n-k)
RHS=k*log n
请注意:
LHS=log(n*(n-1)*…*(n-k))=log(k+1阶多项式)
因此,这等于:
(k+1)*日志(n(1+限制为0的术语))
如果我们考虑除法:
(k+1)*log(n(1+限制为0的术语))/RHS
我们进入极限:
(k+1)/k=1+1/k
因此,如果k
是一个常数,则这两个项的增长速度相同。所以LHS=theta(RHS)
当n
为常数时,以前在限制中0
的术语不会消失,而是得到:
(k+1)*一些常量/k*(一些其他常量)
所以它是:
(1+1/k)*(另一个常量)
。因此,同样LHS=theta(RHS)
当证明Θ
时,你要证明O
和Ω
上限很容易证明:log(n(n-1)…(n-k))≤ log(n^k)=k log n=O(k log n)
对于下限,如果k≥ n/2
,
然后在产品中有n/2
项大于n/2
:log(n(n-1)…(n-k))≥ (n/2)对数(n/2)=Ω(n对数n)≥ Ω(k对数n)
如果k≤ n/2
,所有术语均大于n/2
:log(n(n-1)…(n-k))≥ log((n/2)^k)=k log(n/2)=Ω(k log n)
当证明时,您要证明O
和Ω
上限很容易证明:
log(n(n-1)…(n-k))≤ log(n^k)=k log n=O(k log n)
对于下限,如果k≥ n/2
,
然后在产品中有n/2
项大于n/2
:
log(n(n-1)…(n-k))≥ (n/2)对数(n/2)=Ω(n对数n)≥ Ω(k对数n)
如果k≤ n/2
,所有术语均大于n/2
:
log(n(n-1)…(n-k))≥ log((n/2)^k)=k log(n/2)=Ω(k log n)
你以前是如何证明θ界的?@DennisMeng-有一点,但我特别需要这个。我说的是“How have”不是“have”。@DennisMeng哦,作为“θ界求解者”,我没有很好的经验。在我现在学习的课程中,没有强调θ的界限,尽管我们需要一点,只是想知道。我见过的通常方法是证明大O和大Omega边界,但如果你还只是刚刚弄湿你的脚,那么我可以理解你对证明方法不熟悉。你以前是如何证明θ边界的?@DennisMeng-有一点,但我特别需要这个。我说“怎么有”没有。“怎么有”。@DennisMeng哦,作为一名“θ边界解算器”,我没有很好的经验。在我现在学习的课程中,没有强调θ的界限,尽管我们需要一点,只是想知道。我见过的通常方法是证明大O和大Omega边界,但是如果你仍然只是刚刚开始,那么我可以理解不熟悉证明方法。我需要一个明确的θ表达式,你是说这是θ(lg(n^(k+1))?非常感谢!我能说一般来说log(k阶多项式)=Teta吗(k*logn)?@我现在看到的程序员-是的。但是我会非常小心,极限可能会非常反直觉;)但是很容易用WolframAlpha进行实验。非常感谢:)我所学的课程是关于算法的,所以数学层不那么重要。在你的回答中,你是说log(k+1阶多项式)=θ(klog n),在你的评论中,你说log(多项式k阶)=θ(klog n)-这有意义吗?我需要一个明确的θ表达式,你是说这是θ(lg(n^(k+1))?非常感谢!我能说一般来说log(k阶多项式)=teta(k*logn)?我现在看到的程序员-是的。但是我会非常小心,极限可能会非常违反直觉;)但是用WolframAlpha进行实验很容易。非常感谢:)我所学的课程是关于算法的,所以数学层并不那么重要。在你的回答中,你说log(k+1阶多项式)=θ(klog n),在你的评论中,你说log(多项式k阶)=θ(klog n)-这有意义吗?为什么log(n*(n-1)*…*(n-k)你是对的,它应该是log(n^(k+1))
,但这不是问题,因为这仍然适用于O(k logn)
。最后一行中的相同内容应该是log((n/2)^(k+1))
,但也没有真正改变