holas gente quisiera que me ayuden con este problema es sobre el tiempo de ejecucion de este ejercicio :
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........
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 ::)
#include <time.h>
//...
int main()
{
clock_t inicio,fin;
inicio = clock();
/* Aqui va el codigo cuyo tiempo de ejecucion quieres medir */
fin = clock();
// obtenemos y escribimos el tiempo en segundos
printf("Tiempo empleado: %f\n",(fin - inicio)/CLK_TCK);
return 0;
}
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
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.
- Complejidad: clase P.
- Orden de eficiencia: O(n).
- Tiempo de procesador: clock().
Saludos.
y como lo puedo hallar a mano porque eso es lo que me piden .............
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.
a ver pasame alguno de tus ejemplares porfavor necesito aprenderlo yaaaaaaa!!!
Puedes usar interrupciones, creo.
Cita de: mapers en 26 Junio 2010, 06:31 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.
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.
Citara 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.