Académique Documents
Professionnel Documents
Culture Documents
TEORIA DE LA COMPUTACION
PRACTICA 1
6° SEMESTRE
1.-OBJETIVO
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.
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
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
Una PC
Un Lenguaje de alto nivel
Sistema Operativo Windows o Linux
Se pide:
Con los resultados de las corridas realice un gráfico que muestre la tasa de crecimiento
de cada algoritmo.
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;
}
}
}
}
CUESTIONARIO
¿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.
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.