我正在阅读 算法导论第三版(Cormen和Rivest),在第69页的“暴力解法”中,他们指出n个选择2个= Theta (n ^ 2)。 我认为它应该是Theta (n!)。 为什么n个选择2个与n平方紧密绑定?谢谢!
n个元素中选取2个的组合数为
n(n - 1) / 2
这等同于
n2 / 2 - n/2
我们可以看到当n趋近于无穷大时,通过它们的比值来取极限,有n(n-1)/2 = Θ(n2):
limn → ∞ (n2 / 2 - n / 2) / n2 = 1/2
由于这是一个有限且非零的量,所以我们有n(n-1)/2 = Θ(n2)。
更一般地说:对于任何固定的常数k,n个元素中选择k个的组合数都是Θ(nk),因为它相当于
n! / (k!(n-k)!) = n(n-1)(n-2)...(n-k+1) / k!
这是关于n的k次多项式,且具有非零的首项系数。
希望这有所帮助!
n^2/2 - n^2/2
吗?谢谢。 - Sachin Bahukhandik = n / 2
时成立,在这一点上,组合函数分母中的 k
和 n-k
在约分中交换了优势,复杂度再次开始降低,最终降至 n choose n == 1
。正确的概括是它是一个 theta(min(k, n-k))
阶多项式。 - pjsn
视为在某个点被缩放的参数,它将超过任何固定的k
,在这种情况下,您的陈述保持不变。 - pjs