142 votes

Temps polynomial et temps exponentiel

Quelqu'un pourrait-il expliquer la différence entre les algorithmes à temps polynomial, à temps non polynomial et à temps exponentiel ?

Par exemple, si un algorithme prend un temps O(n^2), dans quelle catégorie se trouve-t-il ?

113voto

hvgotcodes Points 55375

Vérifiez este dehors.

L'exponentiel est pire que le polynomial.

O(n^2) tombe dans la catégorie quadratique, qui est un type de polynôme (le cas particulier de l'exposant étant égal à 2) et mieux que l'exponentiel.

L'exponentiel est beaucoup pire que polynomial. Regardez comment les fonctions croissent

n    = 10    |     100   |      1000

n^2  = 100   |   10000   |   1000000 

k^n  = k^10  |   k^100   |    k^1000

k^1000 est exceptionnellement énorme à moins que k soit plus petit que quelque chose comme 1,1. Par exemple, chaque particule de l'univers devrait effectuer 100 milliards de milliards de milliards d'opérations par seconde pendant des trillions de milliards de milliards d'années pour y parvenir.

Je ne l'ai pas calculé, mais il est si grand.

42 votes

J'ai apprécié tous vos illions.

10 votes

K^1000 est exceptionnellement énorme si k est sensiblement plus grand que 1. Si k=1, c'est moins impressionnant, et si k=1.00069387..., c'est 2.

3 votes

Que diriez-vous de n ! vs k^n. Je sais que pour 2^n (le plus courant), n ! sera plus cher, mais je crois que pour un k^n général où k>2, n ! sera moins cher.

52voto

Josephine Points 871

O(n^2) est un temps polynomial. Le polynôme est f(n) = n^2. D'autre part, O(2^n) est un temps exponentiel, où la fonction exponentielle impliquée est f(n) = 2^n. La différence est de savoir si la fonction de n place n dans la base d'une exponentiation, ou dans l'exposant lui-même.

Toute fonction de croissance exponentielle croîtra significativement plus vite (à long terme) que toute fonction polynomiale. La distinction est donc pertinente pour l'efficacité d'un algorithme, en particulier pour les grandes valeurs de n.

0 votes

Cette réponse a un (bon) air d'autorité, mais elle diffère de la réponse de @dheeran, je crois, pour ce qui est de savoir si la base dans le cas de l'exponentielle est nécessairement 2. Ou probablement que je comprends mal et que j'ai juste besoin de dépoussiérer mon algèbre.

22voto

CFP Points 1059

Temps polynomial.

Un polynôme est une somme de termes qui ressemblent à Constant * x^k Exponentiel signifie quelque chose comme Constant * k^x

(dans les deux cas, k est une constante et x est une variable).

Le temps d'exécution des algorithmes exponentiels croît beaucoup plus rapidement que celui des algorithmes polynomiaux.

20voto

Mr Q.C. Points 385

Exponentiel (Vous avez une fonction exponentielle si MINIMAL UNE EXPONENCE dépend d'un paramètre) :

  • Par exemple, f(x) = constante ^ x

Polynôme (Vous avez une fonction polynomiale si NO EXPONENT dépend de certains paramètres de la fonction) :

  • Par exemple : f(x) = x ^ constant

7 votes

Je n'aime pas qu'il ne reste rien de ma réponse originale après qu'elle ait été modifiée par un utilisateur. S'agit-il d'une sorte de "pêche au like" ?

2 votes

Je suis d'accord. Les changements sont ridicules.

0voto

nasir Points 1

O(n sequre) est une complexité en temps polynimale alors que o(2^n) est une complexité en temps exponentielle si p=np dans le meilleur des cas, dans le pire des cas p=np n'est pas égal parce que lorsque la taille de l'entrée n augmente tellement ou que le dimensionnement de l'entrée augmente tellement que cela va vers le pire des cas et la manipulation donc le taux de croissance de la complexité augmente et dépend de la taille de l'entrée n lorsque l'entrée est petite elle est polynimale lorsque la taille de l'entrée est grande et grande donc p=np n'est pas égal cela signifie que le taux de croissance dépend de la taille de l'entrée "N". optimisation, sat, clique, et ensemble indépendant se rencontrent aussi en exponentiel à polynimal.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X