简化n个多选k的复杂度


11

我有一个递归算法,其时间复杂度相当于从n中重复选择k个元素,我想知道是否可以得到一个更简化的big-O表达式。在我的情况下,可能大于并且它们独立增长。kn

具体来说,我期望一些显式的指数表达式。到目前为止,我能找到的最好的结果是基于Stirling的近似值,所以我可以使用它,但是我想知道是否可以得到更好的东西。O(n!)O((n/2)n)

O((n+k1k))=O(?)


这不是很有帮助,但非常有趣,
拉马努詹

谢谢,n!π(ne)n8n3+4n2+n+1306外观就像一个很酷的近似,但实际上似乎并没有帮助简化它。
yoniLavi

Answers:


6

编辑:这个答案是ķ<ñ。不限制ķñ表示表达式是无界的。

如果则表达式变为 。请注意,根据斯特林公式,对于任何 其中是二进制熵。特别是。因此我们有O 2 n 1 ķ=ñ-1个0<α<1mØ2ñ-1个ñ-1个0<α<1个 ħq=-q日志q- 1-q日志1-qħ1/2=1ķ=n1O 2n1

α=Θ-1个/22Hα
Hq=-q日志q-1个-q日志1个-qH1个/2=1个ķ=ñ-1个
Ø2ñ-1个ñ-1个=Θ2ñ-2-1个/222ñ-2=Θ4ññ

由于上限是最坏的情况(我将其作为练习来证明这一点),因此您的表达式为。O 4 nķ=ñ-1个Ø4ññ


谢谢,正是我想要的!这是激励我学习信息论的另一件事。
yoniLavi

@ Falcor84:我在上次转换中输入的打字错误较小。平方根部分不必转到分母。因此,界限比Paresh提出的界限稍好。(实际上,边界是渐近严格的。)
A.Schulz

我也应该注意到那个小减号,再次感谢。
yoniLavi

您的是最坏情况的“作为练习的左手”陈述是错误的。如果,则表达式为。这并不总是小于。n = 3 k + 2ķ=ñ-1个ñ=3 4(k+2k)=(k+22)=(k+1)(k+2)2(42)=6
彼得·索尔

1
由于,因此问题在和是对称的(在我的情况下,这个问题可能会增长而与之无关) )。因此,我想,更准确的答案是将答案的最后一部分中的n替换为nkx=maxnk(n+k1k)=(n+k1n1)nkx:=max(n,k)
yoniLavi 2013年

2

Wolfram说Sondow(2005)[1]以及Sondow和Zudilin(2006)[2]指出了不平等: 对于是一个正整数,是一个实数。- [R1

1个4[R[[R+1个[R+1个[R[R]<[R+1个<[[R+1个[R+1个[R[R]
[R1个

然后,我们可以使用 其中和。 r=n

ñ+ķ-1个ķ<ñ+ķķ=[R+1个
m=k[R=ñķ=ķ

然后我们有

ñ+ķ-1个ķ<[[R+1个[R+1个[R[R]=ñ+ķķñ+ķ

现在,二项式表达式在Pascal三角形的中间值最高。因此,在我们的情况下,或。ñ+ķ=2ķķ=ñ

用上面的不等式代替,得到: 。

ñ+ķ-1个ķ<22ñ=4ñ

因此,更严格的界限是。

ñ+ķ-1个ķ=Ø4ñ

您还可以看到最大值的下限是

ñ+ķ-1个ķ=Ω4ññ

参考文献:
[1] Sondow,J.,“问题11132”。阿米尔。数学。每月
112,180,2005 。[2] Sondow,J.和Zudilin,W.“拉曼努安和戈斯珀的欧拉常数,q对数和公式”,拉曼努安J. 12,12,225-244,2006。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.