2016-02-02 3 views
-1

J'ai du mal à déterminer le temps d'exécution de chaque étape d'un algorithme. Je ne peux pas comprendre la logique. Nous connaissons tous avant de déterminer le Big O ou Thêta dans un algorithme, nous devons calculer le temps d'exécution de chaque étape, puis nous calculons l'ordre en fonction du temps d'exécution.Impossible de comprendre le temps d'exécution dans un algorithme

Je trouve plus facile de calculer la commande que le Big O ou le Theta, mais mon problème est de calculer le temps d'exécution.

Exemple:

for i=0 to **n** 

dothisStep 

Le temps d'exécution de la présente est la suivante: (n + 1) qui en fait un ordre de O (N) - ce qui est facile et je compris pourquoi-- mon problème est avec les "plus durs". Parfois, je suis censé obtenir n (n + 1)/2, parfois n (n + 1), mais je ne peux pas comprendre comment ou pourquoi! Quelles sont les règles?

+3

Cette question/réponses peut vous aider: http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it/4852666#4852666 – Pierre

+1

Cela signifie la même chose: " Grand O de N "==" ordre de N "==" O (N) ". Lorsque nous disons «de l'ordre de X» dans ce contexte, nous entendons par là que «X est le facteur dominant qui détermine la complexité de l'exécution: pour les grandes entrées, nous pouvons ignorer les autres facteurs». Vous pouvez voir cela signifie O (X). –

Répondre

1

Je pense que quelque chose qui vous aidera ici lorsque vous faites ces problèmes est de penser à ce qui se passe comme n approche l'infini. Dans l'exemple de n + 1, ce + 1 devient très insignifiant par rapport à n.

Votre autre exemple: n(n+1) - Encore une fois, l'ajout de 1 lorsque n approche l'infini est très insignifiant, donc nous laissons tomber le + 1. Cela laisse n(n) qui est n^2.

+1

Merci! ça m'a vraiment aidé à comprendre la logique – napi15