Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nolasco281 en 4 Mayo 2014, 23:48 pm



Título: Tiempo de ejecucion
Publicado por: nolasco281 en 4 Mayo 2014, 23:48 pm
Hola como estan.

Tengo una duda con respecto al tiempo de ejecucion de acuardo a instrucciones.

Tal vez alquien me pueda explicar por que esto es asi.

Por ejemplo:

(http://4.bp.blogspot.com/-jNfyne18IP0/U2axJAyI10I/AAAAAAAAAtc/VxWmKY9ezuQ/s1600/misterio.png)

Vi esto pero no exiplica por que es asi o por que en el segundo bucle cambia hablando algebraicamente.

Recuardo haber visto sumatorias pero, para encontrar areas en integrales.

(http://2.bp.blogspot.com/-fnUzeNHeL-k/U2azXtun2wI/AAAAAAAAAts/k46IYDv0pxU/s1600/Sumatorias.png)

entiendo que:
Código
  1. for (int i = 0; i < n; i++) //El tiempo de este bucle seria de O(n)


Título: Re: Tiempo de ejecicion
Publicado por: eferion en 5 Mayo 2014, 10:02 am
Las sumatorias te permiten calcular el número de veces que se va a ejecutar el bucle... no el tiempo de ejecución.

Código
  1. for( i=1; i<n; i++ )
Este bucle se ejecuta n veces.

Código
  1. for( j=i+1, j<=n; j++ )
Este bucle se va a ejecutar desde i+1 hasta n... n veces, teniendo en cuenta que i va a ir variando en cada una de esas n veces. Es decir, se va a ejecutar n+(n-1)+(n-2)+(n-3)+...+1. Para expresar esta ecuación de forma genérica necesitas un sumatorio.

Código
  1. for( k=1; k<=j; k++ )
El número de veces que se ejecuta este bucle depende de j, por lo que también depende de i. En este caso necesitas un sumatorio doble porque dependes de dos variables que van variando en cada iteración.


Título: Re: Tiempo de ejecicion
Publicado por: nolasco281 en 5 Mayo 2014, 17:56 pm
Hola gracias  ;-)

Entendi muy bien la explicacion te lo agardesco esta un poco con fundido en cuanto a como trabajaba

una ultima pregunta segundo, el tiempo de ejecucion de estos bucles seria O(n^3) no?

segun lo que entendi.

Gracias y saludos de nuevo.


Título: Re: Tiempo de ejecicion
Publicado por: eferion en 5 Mayo 2014, 19:01 pm
El tiempo de ejecución de un bucle anidado es algo más complicado porque tienes que tener en cuenta el número total de repeticiones del bucle... Ahí es donde entra en juego las ecuaciones de los sumatorios.

Por ejemplo. El tiempo de ejecución de una iteración del primer bucle será igual O(numero de veces que se ejecuta el código del tercer bucle * numero de instrucciones en el tercer bucle )


Título: Re: Tiempo de ejecicion
Publicado por: nolasco281 en 5 Mayo 2014, 20:35 pm
Muchisimas gracias cosas que no explican los libros y si lo hace, lo hacen de forma muy confusa
Ya entendi y me quedo claro las explicaciones. ahora a practicar y sequir leyendo.

Gracias de nuevo y saludos.