Laboratorio 2. Prueba empírica de la Complejidad de Algoritmos

publicado a la‎(s)‎ 24 abr. 2012 16:38 por Hernan Nina Hanco   [ actualizado el 16 may. 2012 8:04 ]
I) OBJETIVOS
  • Experimentar la prueba empírica de la complejidad de algoritmos.
II) MARCO CONCEPTUAL
Revisar los temas de Complejidad de algoritmos y orden de la complejidad de algoritmos

III) PRÁCTICAS DE LABORATORIO
1) Cálculo del tiempo transcurrido en milisegundos de la ejecución de un algoritmo.


   class Program
   {
       static void Main(string[] args)
       {
           // Obtener el tiempo inicial
           DateTime t1 = DateTime.Now;
           // Ejecutar el algoritmo para un valor n = 100
           int suma = sumaN(100);
           Console.WriteLine("Valor de la Suma: {0}",suma);
           // Obtener el tiempo final de la ejecución
           DateTime t2 = DateTime.Now;
           //Determinar el tiempo en milisegundos
           long tiempo = ((t2.Hour + t2.Minute + t2.Second) * 1000

+ t2.Millisecond) -

               ((t1.Hour + t1.Minute + t1.Second) * 1000 + t1.Millisecond);
           // Mostrar el tiempo
           Console.WriteLine("El tiempo transcurrido es: {0}",tiempo);
           Console.ReadKey();
       }

       static int sumaN(int n)
       {
           int s = 0;
           for (int i = 1; i <= n; i++)
           {
               s = s + i;
           }
           return s;
       }
   }



2) Cálculo del tiempo transcurrido en milisegundos utilizando la clase Stopwatch.


  
 static void Main(string[] args)
       {
           // Obtener el tiempo inicial
           Stopwatch reloj = new Stopwatch();
           reloj.Start();
           // Ejecutar el algoritmo para un valor n = 100
           int suma = sumaN(100000);
           Console.WriteLine("Valor de la Suma: {0}", suma);
           // Obtener el tiempo final de la ejecución
           reloj.Stop();
           //Determinar el tiempo en milisegundos
           long tiempo = reloj.ElapsedMilliseconds;
           // Mostrar el tiempo
           Console.WriteLine("El tiempo transcurrido es: {0}", tiempo);
           Console.ReadKey();
       }


IV) TAREA:
1) Aplicando los programas de la practica determine gráficamente la complejidad de un algoritmo, lineal, cuadratico, cubico, exponencial.
2) Aplicando los programas de la práctica determine gráficamente la complejidad de un algoritmo de Potencia, Factorial y Fibonaci. Considere los casos de soluciones iterativa y recursivas.
3) Implemente un programa para medir el tiempo de ejecución en nanosegundos.

V) REFERENCIAS BIBLIOGRAFICAS
Comments