Sei sulla pagina 1di 16

MEDICIN DE TIEMPO EN ALGORITMOS DE PROGRAMACIN

JULIN CRUZ
ANDRS GIOVANNI LARA COLLAZOS

CORPORACIN UNIVERSITARIA AUTNOMA DEL CAUCA


FACULTAD DE INGENIERA
INGENIERA DE SISTEMAS
POPAYN
MARZO
2013

MEDICIN DE TIEMPO EN ALGORITMOS DE PROGRAMACIN

INFORME DE LABORATORIO

JULIN CRUZ
ANDRS GIOVANNI LARA COLLAZOS

PRESENTADO A: DANIEL RODRIGO ORTEGA ALEGRA

CORPORACIN UNIVERSITARIA AUTNOMA DEL CAUCA


FACULTAD DE INGENIERA
INGENIERA DE SISTEMAS
POPAYN
MARZO
2013

ndice de contenido
1. Introduccin........................................................................................................................4
2. Lenguaje de programacin..................................................................................................5
3. Requisitos del sistema.........................................................................................................6
4. Mtodo para medicin de tiempo........................................................................................6
5. Serie Fibonacci....................................................................................................................7
5.1 Cdigo..........................................................................................................................7
5.2 Medicin de tiempo......................................................................................................7
5.3 Peores tiempos..............................................................................................................7
5.4 Mejores tiempos...........................................................................................................8
5.5 Media y Desviacin Estndar.......................................................................................8
5.6 Eficiencia del algoritmo...............................................................................................8
6. Factores primos...................................................................................................................9
6.1 Cdigo..........................................................................................................................9
6.2 Medicin de tiempo......................................................................................................9
6.3 Peores tiempos............................................................................................................10
6.4 Mejores tiempos.........................................................................................................10
6.5 Media y Desviacin Estndar.....................................................................................10
6.6 Eficiencia del algoritmo.............................................................................................10
7. Derivada............................................................................................................................11
7.1 Cdigo........................................................................................................................11
7.2 Medicin de tiempo....................................................................................................12
7.3 Peores tiempos............................................................................................................12
7.4 Mejores tiempos.........................................................................................................13
7.5 Media y Desviacin Estndar.....................................................................................13
7.6 Eficiencia del algoritmo.............................................................................................13
8. Serie 1................................................................................................................................14
8.1 Cdigo........................................................................................................................14
8.2 Medicin de tiempo....................................................................................................14
8.3 Eficiencia del algoritmo.............................................................................................15
9. Serie...................................................................................................................................16
9.1 Cdigo........................................................................................................................16
9.2 Medicin de tiempo....................................................................................................16
9.3 Eficiencia del algoritmo.............................................................................................16

1. Introduccin
El Anlisis de algoritmos computacionales, es muy importante para nuestro
entorno de sistemas, dado que es una parte importante para entender el
cmo funcionan las cosas en los programas avanzados.
Con este trabajo, queremos profundizar en cuestin de anlisis de algunos
algoritmos matemticos bsicos y usando como herramienta la recursividad y
el lenguaje PHP.

2. Lenguaje de programacin
En este caso usaremos como lenguaje de programacin PHP, dado que es
sencillo de usar y fcil de portar.

3. Requisitos del sistema

4. Mtodo para medicin de tiempo


Se usar el siguiente cdigo para medir el tiempo de ejecucin de cada Script
en PHP
// Codigo a insertar al principio de la web
function getTiempo() {
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$TiempoInicial = getTiempo();

//Cdigo a insertar al final de la web


$TiempoFinal = getTiempo();

$Tiempo = $TiempoFinal - $TiempoInicial;


$Tiempo = round($Tiempo,6);
echo "Esta web ha cargado en $Tiempo segundos.";

5. Serie Fibonacci
Realizar un algoritmo recursivo para el clculo del n-simo numero de la serie
Fibonacci, Variable de entrada: n.simo termino a calcular. Una vez se tengan
generados los trminos, se tendr una variable de entrada, la cual va a solicitar
un trmino cualquiera, de los trminos anteriormente generados.
Variable de entrada: posicin de un trmino cualquiera.

5.1 Cdigo
function fibo($n){
if($n==1) return 1; //0 si n=0
if($n==0) return 0; //1 si n=1
return fibo($n-1) + fibo($n-2);
}

5.2 Medicin de tiempo


Nmero

Tiempo

7.1E-5 segundos.

10

9.1E-5 segundos.

15

0.001017 segundos.

20

0.006712 segundos.

25

0.056871 segundos.

30

0.608906 segundos.

35

0.608906 segundos.

36

10.826393 segundos.

37

17.675453 segundos.

38

28.983141 segundos.

5.3 Peores tiempos


Nmero

Tiempo

36

10.826393 segundos.

37

17.675453 segundos.

38

28.983141 segundos.

Promedio: 19,17 Segundos

5.4 Mejores tiempos


Nmero

Tiempo

7.1E-5 segundos.

10

9.1E-5 segundos.

15

0.001017 segundos.

Promedio: 0,000344333 Segundos

5.5 Media y Desviacin Estndar


Media: 5,877 Segundos.
Desviacin: 10,138 Segundos.

5.6 Eficiencia del algoritmo


if($n==1) return 1; // Lnea 1
if($n==0) return 0; // Lnea 2
return fibo($n-1) + fibo($n-2); Lnea 3

En la lnea 1, hay una operacin de comparacin.


En la lnea 2, hay una operacin de comparacin.
En la lnea 3, hay dos saltos, por llamadas de funcin.
Total: 4 operaciones.
4

6. Factores primos
Hacer un programa que descomponga un nmero en sus factores primos.

6.1 Cdigo
$num = 10; echo 'Los factores primos de ' . $num . ' son: ';
$num_copy = $num;
do{
if(($num_copy%2)==0){
$num_copy = $num_copy / 2;
echo '<h1>' . $num_copy . '</h1>';
}
if(($num_copy%3)==0){
$num_copy = $num_copy / 3;
echo '<h1>' . $num_copy . '</h1>';
}
if(($num_copy%5)==0){
$num_copy = $num_copy / 5;
echo '<h1>' . $num_copy . '</h1>';
}
}while($num_copy!=1);

6.2 Medicin de tiempo


Nmero

Tiempo

4.4E-5 segundos.

10

5.1E-5 segundos.

100

6.0E-5 segundos.

200

7.1E-5 segundos.

900

4.7E-5 segundos.

1200

5.1E-5 segundos.

900000

0.001988 segundos.

9000000

9.3E-5 segundos.

90000000

7.5E-5 segundos.

90000000000

0.000129 segundos.
5

6.3 Peores tiempos


Nmero

Tiempo

90000000000

0.000129 segundos.

900000

0.001988 segundos.

9000000

9.3E-5 segundos.

Promedio: 0,000705667 Segundos

6.4 Mejores tiempos


Nmero

Tiempo

900

4.7E-5 segundos.

4.4E-5 segundos.

10

5.1E-5 segundos.

Promedio: 0,000004733 Segundos

6.5 Media y Desviacin Estndar


Media: 0,0020432 Segundos.
Desviacin: 0,000626729 Segundos.

6.6 Eficiencia del algoritmo


$num = 10; // Lnea 1
echo 'Los factores primos de ' . $num . ' son: '; // Lnea 2
$num_copy = $num; // Lnea 3
do{ // Lnea 4
if(($num_copy%2)==0){ // Lnea 5
$num_copy = $num_copy / 2; // Lnea 6
echo '<h1>' . $num_copy . '</h1>'; // Lnea 7
} // Lnea 8
if(($num_copy%3)==0){ // Lnea 9
$num_copy = $num_copy / 3; // Lnea 10
echo '<h1>' . $num_copy . '</h1>'; // Lnea 11
} // Lnea 12

if(($num_copy%5)==0){ // Lnea 13
$num_copy = $num_copy / 5; // Lnea 14
echo '<h1>' . $num_copy . '</h1>'; // Lnea 15
} // Lnea 16
}while($num_copy!=1); // Lnea 17

En la lnea 1, hay una operacin de asignacin


En la lnea 3, hay una operacin de asignacin.
En la lnea 5, hay una operacin de divisin, luego 2 de comparacin.
En la lnea 6, hay una operacin de asignacin.
En la lnea 9, hay una operacin de divisin, luego 2 de comparacin.
En la lnea 10, hay una operacin de asignacin.
En la lnea 13, hay una operacin de divisin, luego 2 de comparacin.
En la lnea 14, hay una operacin de asignacin.
En la lnea 17, hay una operacin de comparacin.
Total: 15 operaciones.

7. Derivada
Hacer un programa que calcule la derivada de una funcin de la forma:
F(x)= ax n +b x n1 +cx , donde a, b, c son constantes y se pueden ingresar al
programa.

7.1 Cdigo
$a = 5; $b = 5; $x = 5;$n = 5;
$fx=(($a)*($x^$n)) + (($b)*($x^($n-1)));
$dfx=(($a)*($n)*($x^($n-1))) + (($b)*($n-1)*($x^($n-2)));
echo "El valor de la funci&oacute;n en el punto X es: ".$fx ."<br/>";
echo "El valor de la derivada de la funci&oacute;n: ". $dfx;

7.2 Medicin de tiempo


Nmeros

Tiempo

a=5, b=6, c=7, x=34

6.8E-5 segundos.

a=400, b=300, c=200, x=100

5.6E-5 segundos.

a=4000, b=3000, c=2000, x=1000

5.2E-5 segundos.

a=400000, b=300000, c=200000,


x=100000

5.8E-5 segundos.

a=43210, b=3210, c=210, x=1000000

3.3E-5 segundos.

a=11111, b=22222, c=33333, x=44444

6.2E-5 segundos.

a=666, b=777, c=888, x=999

4.5E-5 segundos.

a=767676, b=767676, c=767676,


x=767676

4.3E-5 segundos.

a=69696969696969,
b=69696969696969,
c=69696969696969,
x=69696969696969

4.4E-5 segundos.

a=267487189278,
b=555555555555555,
c=267487189278, x=555555555555

3.7E-5 segundos.

7.3 Peores tiempos


Nmero

Tiempo

a=5, b=6, c=7, x=34

6.8E-5 segundos.

a=11111, b=22222, c=33333, x=44444

6.2E-5 segundos.

a=400000, b=300000, c=200000,


x=100000

5.8E-5 segundos.

Promedio: 0,000006267 Segundos

7.4 Mejores tiempos


Nmero

Tiempo

a=267487189278,
b=555555555555555,
c=267487189278, x=555555555555

3.7E-5 segundos.

a=43210, b=3210, c=210, x=1000000

3.3E-5 segundos.

a=767676, b=767676, c=767676,


x=767676

4.3E-5 segundos.

Promedio: 0,000003767 Segundos

7.5 Media y Desviacin Estndar


Media: 0,0000492 Segundos.
Desviacin: 1,0922Segundos.

7.6 Eficiencia del algoritmo


$a = 267487189278; // Lnea 1
$b = 555555555555555; // Lnea 2
$x = 267487189278; // Lnea 3
$n = 555555555555; // Lnea 4
$fx=(($a)*($x^$n)) + (($b)*($x^($n-1))); // Lnea 5
$dfx=(($a)*($n)*($x^($n-1))) + (($b)*($n-1)*($x^($n-2))); // Lnea 6
echo "El valor de la funci&oacute;n en el punto X es: ". $fx ."<br/>"; // Lnea 7
echo "El valor de la derivada de la funci&oacute;n: ". $dfx; // Lnea 8

En la lnea 1, hay una operacin de asignacin


En la lnea 2, hay una operacin de asignacin.
En la lnea 3, hay una operacin de asignacin.
En la lnea 4, hay una operacin de asignacin.
En la lnea 5, hay dos operacin de multiplicacin, una resta, dos potencias y
una suma
En la lnea 6, hay 4 operaciones de multiplicacin, tres restas, dos potencias y
9

una suma
Total: 20 operaciones.

8. Serie 1
Mostrar los primero 1000 nmeros de la serie

8.1 Cdigo
$n = 1000;
for($i=0;$i<=$n;$i++){
$resultado = ((pow (3,$i))*5);
echo "el resultado para $i es $resultado <br/>";
}

8.2 Medicin de tiempo


El algoritmo funciona bien, sin problemas hasta el nmero 644. En donde PHP
no alcanza ms su memoria y bota un resultado INF como lo muestra la
imagen:

10

Tiempo total del cdigo: 0.004961 segundos (Sin incluir nmeros desde el 644).
Nmeros

Tiempo

635

4.6877749214589E+303 Segundos.

636

1.4063324764377E+304 Segundos.

637

4.218997429313E+304 Segundos.

638

1.2656992287939E+305 Segundos.

639

3.7970976863817E+305 Segundos.

640

1.1391293059145E+306 Segundos.

641

3.4173879177435E+306 Segundos.

642

1.0252163753231E+307 Segundos.

643

3.0756491259692E+307 Segundos.

644

9.2269473779075E+307 Segundos.

645

INF

646

As continua con INF

8.3 Eficiencia del algoritmo


$n = 1000; // Lnea 1
for($i=0;$i<=$n;$i++){ // Lnea 2
$resultado = ((pow (3,$i))*5); // Lnea 3
echo "el resultado para $i es $resultado <br/>"; // Lnea 4
} // Lnea 5

En la lnea 1, hay una operacin de asignacin


En la lnea 2, hay una operacin de asignacin, una operacin de comparacin
y una operacin de incrementacin.
En la lnea 3, hay una operacin de potenciacin, una operacin de
multiplicacin y por ltimo una de asignacin.
Total: 7 operaciones.
11

9. Serie
Mostrar los primero 1000 nmeros de la serie

9.1 Cdigo
$n = 1000;
for($i=0;$i<=$n;$i++){
$resultado = ((pow (3,$i))*5);
echo "el resultado para $i es $resultado <br/>";
}

9.2 Medicin de tiempo


El algoritmo se ejecut sin problemas, demorndose 0.002417 segundos en su
labor.
Tiempo total del cdigo: 0.004961 segundos (Sin incluir nmeros desde el 644).

9.3 Eficiencia del algoritmo


$n = 1000; // Lnea 1
for($i=1;$i<=$n;$i++){ // Lnea 2
$resultado = ((($i-1)*$i)/2); // Lnea 3
echo "el resultado para $i es $resultado <br/>"; // Lnea 4
} // Lnea 5

En la lnea 1, hay una operacin de asignacin


En la lnea 2, hay una operacin de asignacin, una operacin de comparacin
y una operacin de incrementacin.
En la lnea 3, hay una operacin de resta, y una operacin de multiplicacin,
una operacin de divisin y una de asignacin.
Total: 8 operaciones.
12

Realizar las siguientes actividades para cada algoritmo


1. Programe cada algoritmo, introduciendo una rutina para medir sus tiempos de ejecucin.
2. Vari los datos de entrada y obtenga el tiempo de ejecucin de cada algoritmo en cada instancia.
Aqu determine tres situaciones asociadas al mejor, peor y caso promedio, para el caso promedio
genere aleatoriamente los datos 10 datos
3. Para cada instancia realice diez corrimientos del algoritmo, calcule la media y la desviacin
estndar del tiempo de ejecucin.
4. Realice una tabla para cada algoritmo, donde organice la informacin.
5. Haga un estudio de eficiencia de los algoritmos basado en la comparacin entre ellos.

Este trabajo est con licencia Creative Commons, su uso es libre (Copia, modificacin y redistribucin);
siempre y cuando se nombre al autor (Andrs Giovanni Lara Collazos y Julin Cruz). Para ms informacin
visite:
http://co.creativecommons.org/
El conocimiento es libre, comprtelo

13

Potrebbero piacerti anche