Está en la página 1de 9

INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de

SAN MARTÍN TEXMELUCAN Educación Pública


Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

INSTITUTO TECNOLÓGICO SUPERIOR DE SAN MARTÍN


TEXMELUCAN

TEORIA DE LA COMPUTACION
PRACTICA 1

NOMBRE DE LOS ALUMNO:


JUAN CARLOS CUAPIO TEYSSIER
ANTONIO MORALES RAMIREZ

DOCENTE: YESENIA PEREZ REYES

INGENIERIA EN SISTEMAS COMPUTACIONALES

6° SEMESTRE

Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32


San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com
INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de
SAN MARTÍN TEXMELUCAN Educación Pública
Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

1.-OBJETIVO

Analizar la complejidad de algoritmos y realizar modificaciones que mejoren su


desempeño.

2.- MARCO TEÓRICO

Cuando solucionamos un problema mediante la construcción de un algoritmo,


normalmente podemos atacar el problema desde distintos puntos de vista, aplicando
distintas estrategias, y por tanto, llegando a soluciones algorítmicas distintas.

Desde el punto de vista computacional, es necesario disponer de alguna forma de


comparar una solución algorítmica con otra, para conocer cómo se comportarán cuando
las implementemos, especialmente al atacar problemas “grandes”.

La complejidad algorítmica es una métrica teórica que se aplica a los algoritmos en este
sentido. Es un concepto fundamental para todos los programadores, pero sin embargo, a
menudo se desconoce por completo. En muchos cursos y libros se elude tema porque a
menudo se considera farragoso.

Pero eso no es necesariamente cierto. La complejidad de un algoritmo es un concepto


complicado pero sólo desde un punto de vista estrictamente formal. La obtención y el
estudio de la complejidad de un algoritmo requiere ciertamente de unas cuantas destrezas
matemáticas que no todos tenemos y la aplicación de una serie de técnicas bastante
particulares. Sin embargo, no es un concepto difícil de entender.

En éste artículo (algo más largo algoritmo de la habitual) intentamos ver que es la
complejidad de un algoritmo y cuáles son las situaciones más comunes.

4.- PROCEDIMIENTO

1.- Desarrolle un programa de computadora que maneje 4 tipos de funciones recursivas y


que son mostradas en la sección de actividades, datos y resultados.

2.- Genera para cada una de estas funciones una sucesión de continuos de al menos 10
números naturales.

3.- mande a imprimir en la pantalla los resultados generados al sustituir esta sucesión de
números naturales.
Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32
San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com
INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de
SAN MARTÍN TEXMELUCAN Educación Pública
Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

5.- APARATOS E INSTRUMENTOS

Una PC
Un Lenguaje de alto nivel
Sistema Operativo Windows o Linux

6. ACTIVIDADES, DATOS Y RESULTADOS

Dadas las siguientes expresiones:


1) F(n)=[ 0 Si n=0
F (n−1)+1 Si n>0] Sumatoria

2) F (n)=[ 1Si n=0 F(n−1)∗ n


Si n>0] Factorial

3) F (n)=[ 0Si n=0


1 Si n=1 F(n−1)+F (n−2) −Si n>1] Fibonacci

4) F (n)=[ 1Si n=0


1
Si n=1 1+F (n−1)∗ F (n−2)Si n>1] “Factoracci (una serie inventada)”

Se pide:

Implemente en el lenguaje de su elección un algoritmo para cada una de las expresiones


anteriores, calcule la complejidad del algoritmo implementado, y realice varias corridas
para verificar empíricamente la complejidad algorítmica previamente calculada.

Con los resultados de las corridas realice un gráfico que muestre la tasa de crecimiento
de cada algoritmo.

Optimice cada uno de los algoritmos anteriores. Calcule la eficiencia de la optimización y


compare con el gráfico de la versión no optimizada.

Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32


San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com
INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de
SAN MARTÍN TEXMELUCAN Educación Pública
Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

CODIGO FUENTE DEL PROGRAMA

import javax.swing.*;
import java.util.Date;
class practica
{
public static int Sumatoria(int n){
if(n == 0)
return 0;
else
return n + Sumatoria(n-1);
}
public int factorial(int x){
if ( x<= 1 )
{
return 1;
}
else
{
return x*factorial(x-1);
}
}
public static int fibonacci (int j)
{
if(j <=1)
return j;
else
return fibonacci(j-1)+fibonacci(j-2);
}
public static int factoracci (int k)
{
int b=1;
if(k <=1)
return k;
else
return b+factoracci(k-1)*factoracci(k-2);
}
}
public class practica1
{
public static void main(String args[])
Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32
San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com
INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de
SAN MARTÍN TEXMELUCAN Educación Pública
Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

{
practica jc=new practica();
int op=1;
while(op >0 && op<5)
{
op=Integer.parseInt(JOptionPane.showInputDialog(null,"AELECCIONAR
LA TAREA A REALIZAR:\n1.-SUMATORIA\n2.-FACTORIAL\n3.-
FIBONACCI\n4.-FACTORACCI\n5.-SALIR"));
switch(op)
{
case 1:
Date inicio = new Date();
int n=Integer.parseInt(JOptionPane.showInputDialog(null,"INGRESE
VALOR"));
jc.Sumatoria(n);
System.out.println("Sumatoria de "+n+" es: "+jc.Sumatoria(n));
Date fin = new Date();
long duracion = fin.getTime() - inicio.getTime();
System.out.println("Tiempo de ejecucion: "+duracion+"
milisegundos");
break;
case 2:
Date inicio1 = new Date();
int x=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa
valor"));
jc.factorial(x);
System.out.println("Su Factorial de"+x+" es: "+jc.factorial(x));
Date fin1 = new Date();
long duracion1= fin1.getTime() - inicio1.getTime();
System.out.println("Tiempo de ejecucion: "+duracion1+"
milisegundos");
break;
case 3:
Date inicio2 = new Date();
int j=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa
valor"));
jc.fibonacci(j);
System.out.println("Su Fibonacci de"+j+" es: "+jc.fibonacci(j));
Date fin2 = new Date();
long duracion2 = fin2.getTime() - inicio2.getTime();
System.out.println("Tiempo de ejecucion: "+duracion2+"
milisegundos");
Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32
San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com
INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de
SAN MARTÍN TEXMELUCAN Educación Pública
Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

break;
case 4:
Date inicio3 = new Date();
int k=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa
valor"));
jc.factoracci(k);
System.out.println("Su Factoracci de "+k+" es:
"+jc.factoracci(k));
Date fin3 = new Date();
long duracion3 = fin3.getTime() - inicio3.getTime();
System.out.println("Tiempo de ejecucion: "+duracion3+"
milisegundos");
break;
case 5:
System.exit(0);
break;
}
}
}
}

PANTALLAS DEL PROGRAMA A REALIZAR

Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32


San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com
INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de
SAN MARTÍN TEXMELUCAN Educación Pública
Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32


San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com
INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de
SAN MARTÍN TEXMELUCAN Educación Pública
Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

CUESTIONARIO

¿Qué diferencias de crecimiento notaste en cada una de las funciones recursivas?


Durante el proceso de ejecución, de los diferentes métodos con recursividad este va
bajando de tiempo ya que los demás métodos son muy rápidos en resolver.

¿Qué pasa cuando hay pocos datos y cuando hay muchos datos?
Cuando hay valores pequeños este tiende a tener un tiempo de ejecución muy corto,
pero al meterle valores grandes el tiempo tarda incluso segundos y no milésimas de
segundo.

¿Se cumple en todos los casos que en cuanto los datos crecen, la complejidad también
crece? Si se cumple, ya que los diferentes tipos de algoritmos no trabajan igual, incluso su
complejidad también va aumentando.

¿Existe repetición entre los datos, o todos son diferentes para cada una de las sucesiones?
No ya que cada método trabajo con diferente tipo de cálculo.

Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32


San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com
INSTITUTO TECNOLÓGICO SUPERIOR DE Secretaría de
SAN MARTÍN TEXMELUCAN Educación Pública
Organismo Público Descentralizado del Gobierno del Estado del Estado de Puebla

8.-BIBLIOGRAFÍA

Martin, John C.
Introduction to Languages and the Theory of Computation.
Ed. Prentice Hall.
2. Sipser, Michael.
Introduction to the Theory of Computation.
Ed. PWS Publishing Company.
3. Cohen, Daniel I.A.
Introduction to Computer Theory.
Ed. Wie Wiley.
4. Davis, Martín D., Weyuker, Elaine
Computability, Complexity and Languages Fundamentales of Teorical
Computer Science.
Ed. Academic Press.

Camino a la Barranca de Pesos S/N Tel: (01 248) 1 11 11 32


San Lucas Atoyatenco, C. P. 74120 Fax: (01 248) 1 11 11 33
San Martín Texmelucan, Pue. e-mail: itssmt@hotmail.com

También podría gustarte