Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mapers en 25 Junio 2010, 20:35 pm



Título: tiempo de ejecucion
Publicado por: mapers en 25 Junio 2010, 20:35 pm
holas gente quisiera que me ayuden con este problema es sobre el tiempo de ejecucion de este ejercicio :
Código:

FACTORIAL(n)
1 if n = 0
2 then return 1;
3 else return (n * Factorial(n-1));


quisiera saber como determinar el tiempo de ejecucion......... me podrian dar una pista porfavor gracias de antemano........


Título: Re: tiempo de ejecucion
Publicado por: MIG80 en 25 Junio 2010, 21:01 pm
Puedes usar la función estandar clock(). Esta función devuelve la cantidad de marcas de reloj que pasaron desde que el programa empezo a  ejecutarse.
Ahora solo faltaria determinar cuanto dura una marca de reloj... :-\
Bueno ese valor se calcula usando la constante CLK_TCK , definida también en time.h ( Turbo C++), la cual nos da el numero de marcas de reloj por segundo ::)

Código
  1. #include <time.h>
  2.  
  3. //...
  4.  
  5. int main()
  6. {
  7.    clock_t inicio,fin;
  8.  
  9.    inicio = clock();
  10.  
  11.    /* Aqui va el codigo cuyo tiempo de ejecucion quieres medir */
  12.  
  13.    fin = clock();
  14.  
  15.    // obtenemos y escribimos el tiempo en segundos
  16.    printf("Tiempo empleado: %f\n",(fin - inicio)/CLK_TCK);
  17.  
  18.    return 0;
  19. }
  20.  


Título: Re: tiempo de ejecucion
Publicado por: Mr.Blue en 25 Junio 2010, 22:07 pm
http://foro.elhacker.net/programacion_cc/generador_de_ips_aleatorias_y_algoritmo_basico_brute_force_codigos_fuente_en_c-t41605.0.html

Aca hay un programa por Rojodos

En donde aplica esto.

S2


Título: Re: tiempo de ejecucion
Publicado por: Nork en 25 Junio 2010, 23:46 pm
Si te refieres al tiempo algorítmico del código es de orden de complejidad n!. Si te refieres al tiempo de una ejecución si estas en linux puedes utilizar el comando time y te pondrá lo que ha tardado.


Título: Re: tiempo de ejecucion
Publicado por: plof en 26 Junio 2010, 00:19 am
- Complejidad: clase P.
- Orden de eficiencia: O(n).
- Tiempo de procesador: clock().

Saludos.


Título: Re: tiempo de ejecucion
Publicado por: mapers en 26 Junio 2010, 04:52 am
y como lo puedo hallar a mano  porque eso es lo que me piden .............


Título: Re: tiempo de ejecucion
Publicado por: cbug en 26 Junio 2010, 05:21 am
Si es a mano seguramente es el cálculo de complejidad. Leete un libro de algorítmica, aunque es más análisis matemático(cálculo) que otra cosa.


Título: Re: tiempo de ejecucion
Publicado por: mapers en 26 Junio 2010, 06:31 am
a ver pasame alguno de tus ejemplares porfavor necesito aprenderlo yaaaaaaa!!!


Título: Re: tiempo de ejecucion
Publicado por: @synthesize en 26 Junio 2010, 06:31 am
Puedes usar interrupciones, creo.


Título: Re: tiempo de ejecucion
Publicado por: leogtz en 26 Junio 2010, 06:33 am
a ver pasame alguno de tus ejemplares porfavor necesito aprenderlo yaaaaaaa!!!


Consulta a Brassard o a Knuth, es de lo mejor que hay, aunque de lo más complejo.


Título: Re: tiempo de ejecucion
Publicado por: plof en 26 Junio 2010, 09:15 am
Lo que buscas es una función T(n) o polinomio de grado 1 ( de ahí que el orden de eficiencia sea O(n) ) cuyos términos independientes equivalen a los tiempos de ejecución de las operaciones elementales de la función recursiva.

...seguro que ahora lo tienes más claro :P.
Como aquí no se resuelven las tareas de clase te recomiendo el mismo autor que comenta Leo:
Fundamentos de algoritmia (G Brassard & P Bratley).
.. y presta atención al capítulo 4, sobre todo a la resolución de recurrencias.

Saludos.


Título: Re: tiempo de ejecucion
Publicado por: cbug en 26 Junio 2010, 15:37 pm
Citar
a ver pasame alguno de tus ejemplares porfavor necesito aprenderlo yaaaaaaa!!!

Sinceramente me das pena por tus expresiones y formas de comportarte.

Primero aprende matemática y luego sigue con lo demás.