Simplifiez la complexité de n multichoose k


11

J'ai un algorithme récursif avec une complexité temporelle équivalente à choisir k éléments parmi n avec répétition, et je me demandais si je pouvais obtenir une expression big-O plus simplifiée. Dans mon cas, peut être supérieur à et croît indépendamment.kn

Plus précisément, je m'attendrais à une expression exponentielle explicite. Le mieux que j'ai pu trouver jusqu'à présent est basé sur l'approximation de Stirling , donc je peux l'utiliser, mais je me demandais si je pouvais obtenir quelque chose de plus agréable.O(n!)O((n/2)n)

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


Ce n'est pas exactement très utile mais très intéressant l'approximation factorielle de Ramanujan
Pratik Deoghare

Merci, n!π(ne)n8n3+4n2+n+1306 looks comme une approximation cool, mais en effet, cela ne semble pas aider à simplifier cela.
yoniLavi

Réponses:


6

Edit: Cette réponse est pour k<n . Sans borne k en termes de n l'expression est illimitée.

Si alors votre expression devient . Notez que par la formule de Stirling pour tout où est l'entropie binaire. En particulier . Nous avons donc pourk=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).

Puisque la borne supérieure est le pire des cas (je le laisse comme un exercice pour le montrer), votre expression est .k=n1O(4nn)


Merci, exactement ce que je cherchais! et c'est encore une autre chose qui me motive à étudier la théorie de l'information.
yoniLavi

@ Falcor84: J'ai eu une petite faute de frappe lors de la dernière transition. La partie racine carrée doit aller au dénominateur. La borne est donc légèrement meilleure que celle présentée par Paresh. (En fait, la limite est asymptotiquement serrée.)
A.Schulz

Moi aussi, j'aurais dû remarquer ce petit signe moins, merci encore.
yoniLavi

Votre affirmation «à gauche comme exercice» selon laquelle est le pire des cas est fausse. Si , l'expression est . Ce n'est pas toujours inférieur à . k=n1n=3(k+2k)=(k+22)=(k+1)(k+2)2(42)=6
Peter Shor

1
Puisque , le problème est symétrique en et (qui peut grandir sans relation dans mon cas ). Par conséquent, je suppose que la réponse la plus précise serait de remplacer n dans la dernière partie de la réponse par(n+k1k)=(n+k1n1)nkx:=max(n,k)
yoniLavi

2

Wolfram dit que Sondow (2005) [1] et Sondow et Zudilin (2006) [2] ont noté l'inégalité: pour un entier positif et un nombre réel.

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

On peut alors utiliser avec et .

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

Ensuite, nous avons

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

Maintenant, l'expression binomiale a la valeur la plus élevée au milieu du triangle de Pascal. Donc, dans notre cas, ou à .n+k=2kk=n

En substituant que dans l'inégalité ci-dessus, nous obtenons: .

(n+k1k)<22n=4n

Par conséquent, une limite plus étroite est .

(n+k1k)=O(4n)

Vous pouvez également voir que la limite inférieure de la valeur maximale est

(n+k1k)=Ω(4nn)

Références:
[1] Sondow, J. "Problème 11132." Amer. Math. Mensuel 112, 180, 2005.
[2] Sondow, J. et Zudilin, W. "Constante d'Euler, q-logarithmes et formules de Ramanujan et Gosper" Ramanujan J. 12, 225-244, 2006.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.