web-dev-qa-db-fra.com

Quelle fonction grandit plus rapidement, exponentielle ou factorielle?

Quelle fonction grandit plus rapidement, exponentielle (comme 2 ^ n, n ^ n, e ^ n, etc.) ou factorielle (n!)? Ps: je viens de lire quelque part, n! pousse plus vite que 2 ^ n.

54
devsathish

n! croît finalement plus vite qu’une exponentielle à base constante (2 ^ n et e ^ n), mais n ^ n croît plus vite que n! puisque la base grandit à mesure que n augmente.

94
Glen Hughes

n! = n * (n-1) * (n-2) * ...

n^n = n * n * n * ...

Chaque terme après le premier de n^n est plus grand, donc n ^ n grandira plus vite.

46
AlexQueue

Les algorithmes de temps factoriels fonctionnent asymptotiquement plus lentement que les algorithmes de temps exponentiels, mais le début de la différence n'est pas clair. Par exemple, pour n=5 et k=10, 5!=120 est toujours plus rapide que 10^5=10000. Pour savoir quand les algorithmes à temps exponentiel commencent à être plus performants, nous devons faire une analyse mathématique rapide.

Nous pouvons utiliser la formule de Stirling:

log_k^(n!) ~ nlog_k^n - nlog_k^e

k^n = n!
log_k^{k^n} = log_k^{n!}
n = log_k^{n!}

n ~ nlog_k^n - nlog_k^e
1 ~ log_k^n - log_k^e
log_k^n - log_k^e - 1 ~ 0
log_k^n - log_k^e - log_k^k ~ 0
log_k^{n/(ek)} ~ 0

n/(ek) ~ 1
n ~ ek

Ainsi, une fois que n aura presque trois fois la taille de k, les algorithmes factoriels commenceront à s'exécuter plus lentement que les algorithmes exponentiels. Pour la plupart des scénarios réels, nous utiliserons de grandes valeurs de n et de petites valeurs de k. En pratique, nous pouvons donc supposer que les algorithmes factoriels sont strictement pires que les exponentiels. algorithmes.

1
inavda