Simplifica la complejidad de n multichoose k

11

Tengo un algoritmo recursivo con una complejidad temporal equivalente a elegir k elementos de n con repetición, y me preguntaba si podría obtener una expresión big-O más simplificada. En mi caso, puede ser mayor que crecen independientemente.kn

Específicamente, esperaría alguna expresión exponencial explícita. Lo mejor que pude encontrar hasta ahora es que, según la aproximación de Stirling , puedo usar eso, pero me preguntaba si podría obtener algo mejor.O(n!)O((n/2)n)

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

yoniLavi
fuente
Esto no es exactamente muy útil, pero es muy interesante la aproximación factorial de Ramanujan
Pratik Deoghare
Gracias n!π(ne)n8n3+4n2+n+1306 miradas como una aproximación genial, pero de hecho no parece ayudar a simplificar esto.
yoniLavi

Respuestas:

6

Editar: Esta respuesta es para k<n . Sin limitar k en términos de n la expresión no tiene límites.

Si entonces su expresión se convierte en . Observe que según la fórmula de Stirling para cualquier donde es la entropía binaria. En particular . Por lo tanto, tenemos parak=n1O((2(n1)n1))0<α<1

(mαm)=Θ(m1/22H(α)m),
H(q)=qlogq(1q)log(1q)H(1/2)=1k=n1
O((2(n1)n1))=Θ((2n2)1/222n2)=Θ(4nn).

Dado que el límite superior es el peor de los casos (lo dejo como un ejercicio para mostrar esto), su expresión es .k=n1O(4nn)

A.Schulz
fuente
Gracias, exactamente lo que estaba buscando! Y es otra cosa que me motiva a estudiar teoría de la información.
yoniLavi
@ Falcor84: tuve un error tipográfico más pequeño en la última transición. La parte de la raíz cuadrada tiene que ir al denominador. Por lo tanto, el límite es ligeramente mejor que el presentado por Paresh. (En realidad, el límite es asintóticamente apretado.)
A.Schulz
Yo también debería haber notado ese pequeño signo menos, gracias de nuevo.
yoniLavi
Su afirmación de "izquierda como ejercicio" de que es el peor de los casos está mal Si , la expresión es . Esto no siempre es menor que . k=n1n=3(k+2k)=(k+22)=(k+1)(k+2)2(42)=6
Peter Shor
1
Desde , el problema es simétrico en y (que puede crecer sin relación en mi caso ) Por lo tanto, supongo, la respuesta más precisa sería reemplazar n en la parte final de la respuesta con(n+k1k)=(n+k1n1)nkx:=max(n,k)
yoniLavi
2

Wolfram dice que Sondow (2005) [1] y Sondow y Zudilin (2006) [2] notaron la desigualdad: para un número entero positivo y un número real.

14rm[(r+1)r+1rr]m<((r+1)mm)<[(r+1)r+1rr]m
mr1

Entonces podemos usar con y .

(n+k1k)<(n+kk)=((r+1)mm)
r=nkm=k

Luego tenemos

(n+k1k)<[(r+1)r+1rr]m=(n+kk)n+k

Ahora, la expresión binomial tiene el valor más alto en el medio del triángulo de Pascal. Entonces, en nuestro caso, o en .n+k=2kk=n

Sustituyendo eso en la desigualdad anterior, obtenemos: .

(n+k1k)<22n=4n

Por lo tanto, un límite más estricto es .

(n+k1k)=O(4n)

También puede ver que el límite inferior para el valor máximo es

(n+k1k)=Ω(4nn)

Referencias:
[1] Sondow, J. "Problema 11132." Amer Matemáticas. Mensual 112, 180, 2005.
[2] Sondow, J. y Zudilin, W. "Euler constante, q-logaritmos y fórmulas de Ramanujan y Gosper" Ramanujan J. 12, 225-244, 2006.

Paresh
fuente