Вы находитесь на странице: 1из 3

Gracos de Crecimiento de Funciones

Castillo Christian February 23, 2014

Abstract

Las funciones pueden crecer tomando en cuneta varios parametros, en el presente documento se evidenciara el crecimiento de funciones tomando en cuneta el numero de instrucciones y el tiempo que se toma en ejecutar dicha instruccion.

I. INTRODUCCION
Los algoritmos pueden ser tratados como funciones matematicas las mismas que dependeran de las veces que realicen sus instrucciones y el tiempo que tome efectuarlas.

II. M ETODOLOG IA
Se va a correr dos programas, estos tendr an algoritmos de diferentes complejidades. El primer programa mostrara un arbol de ANSI, a mas del arbol se debera visualizar el nivel impreso, teniendo como referencia que cada asterisco da origen a dos asteriscos en el siguiente nivel. Un segundo programa recorrera un arreglo de 80 posiciones comparando cada posici on con un valor y creara una tabla en donde se mostrara el numero de comparaciones y el tiempo en segundos de cada comparaci on, para medir los tiempos se colocara un codigo para cronometrar las acciones efectudas por los programas.
1) Implementaci on de los programas:

#include<stdio.h> #include<time.h> #include<sys/time.h> /*#define TIME_THIS(X) { \ struct timespec ts1,ts2; \ clock_gettime(CLOCK_REALTIME,&ts1); \ X; \ clock_gettime(CLOCK_REALTIME,&ts2); \ printf( #X " demora: %f\n", (float)(1.0*(1.0*ts2.tv_nsec-ts1.tv_nsec*1.0)*1e-9 +1.0*ts2.tv_sec-1.0*ts1.tv_sec)); }*/ /*retorna "a-b" en segundos*/ double timeval_diff(struct timeval*a,struct timeval* { return (double)(a->tv_sec+(double)a->tv_usec/1000000)(double)(b->tv_sec+(double)b->tv_usec/1000000); } int main(int argc, char *argv[]) { struct timeval t_ini,t_fin; double secs; {

Primer Programa: 1

int i,niveles,contast,j,k,espacios,l; printf("ingrese el numero de niveles:\n"); scanf("%d",&niveles); contast=1; espacios=1; for(l=0;l<(niveles-1);l++) espacios=espacios*2; Figure 2: Crecimiento Funcion 1 for(i=1;i<=niveles;i++){ gettimeofday(&t_ini,NULL); printf("\n"); printf("%d",contast);

Segundo Programa: #include<stdio.h> #include<time.h> for(k=(espacios-(contast/2)); #include<sys/time.h> k>0;k--) /*#define TIME_THIS(X) printf(" "); { \ for(j=1;j<=contast;j++) struct timespec ts1,ts2; \ printf("*"); clock_gettime(CLOCK_REALTIME,&ts1); \ X; \ for(k=(espacios-(contast/2));k>0;k--) clock_gettime(CLOCK_REALTIME,&ts2); \ printf(" "); printf( #X " demora: %f\n", (float)(1.0*(1.0*ts2.tv_nsec-ts1.tv_nsec*1.0)*1e-9 contast=contast*2; +1.0*ts2.tv_sec-1.0*ts1.tv_sec)); }*/ gettimeofday(&t_fin,NULL); /*retorna "a-b" en segundos*/ secs=timeval_diff(&t_fin,&t_ini); double timeval_diff(struct timeval*a,struct timeval* printf("%.16g milliseconds",secs*1000.0); { } return //return 0; (double)(a->tv_sec+(double)a->tv_usec/1000000)} (double)(b->tv_sec+(double)b->tv_usec/1000000); } printf("\n"); int resultado; return 0; int T[80]; /* Tabla dada*/ } int N=80; /*Dimkension*/ int I; /*Indice actual*/ int B; /*Indice Para buscar*/ int Num=1; int x; main(int argc, char *argv[]) { struct timeval t_ini,t_fin; double secs; Figure 1: Arbol ANSI printf("Numero de conparaciones \t\t Tiempo en Segundos\n"); while(Num<80) { for(I=0;I<N;I++) 2

{ T[I]= Num; Num ++; } } for(B=0;B<80;B++) { if(T[B]=80) { x = 1; } else{x=-1;} gettimeofday(&t_fin,NULL); secs=timeval_diff(&t_fin,&t_ini); printf("%d %.16g \n",B,secs*1000); } return 0; }

III. RESULTADO Y DISCUSION


Concluci on: Existe un intervalo en donde las funciones tienen un comportamieto no constante y depues de cierto punto se puede evdenciar que las funciones crecen o decresen describiendo una curva constante. El primer ejercicio no muestra un crecimiento mas bien llega a un punto en el cual el crecimiento de la funcion se mantiene linealmente. No obstante el segundo programa crece de manera lineal con una pendiente positiva.

Referencias

References
[1] laboratorio numero dos, Gracos de Crecimiento de Funciones ,19,abril 2014

Figure 3: Numero de busquedas

Figure 4: Crecimiento Funcion 2

Вам также может понравиться