You are on page 1of 21

Tema 2

Analiza en un Algoritmo.
Análisis Empírico
Análisis Analítico

ANÁLISIS DE ALGORITMOS
© Carrera de Computación Upec
Tema 2: Análisis Empírico Análisis Analítico

Objetivos

 Formular y desarrollar algoritmos simples


utilizando para ello pseudocódigo declarativo
o diagramas de flujo haciendo uso de
herramientas computacionales gráficas.

2 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

Contenidos

1. Que se Analiza en un Algoritmo


2. Que casos Analizar
3. Análisis Empírico
4. Análisis Analítico
5. Midiendo los Tiempos
6. Problema
7. Tarea

3 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

Que vamos Analizar en un Algoritmo

Correctitud
Modularidad –Escalabilidad - Simplicidad
4 Docente: Ing. Samuel Lascano MSc.
Tema 2: Análisis Empírico Análisis Analítico

Que casos Analizar

5 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

6 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

Empíricamente

7 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

Analíticamente

8 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

9 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

10 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

11 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

12 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

13 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

14 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

Reloj en Java
import java.util.Random;
public class Reloj {

public static void main(String[] args) {

long inicio = System.nanoTime();

for (int i = 0; i < 1000; i++) {


for (int j = 0; j < 1000; j++) {
new Random().nextDouble();
}
}

long fin = System.nanoTime();

double dif = (double) (fin - inicio) * 1.0e-9;

System.out.println("El programa dura " + dif + " s");

}
15 }
Docente: Ing. Samuel Lascano MSc.
Tema 2: Análisis Empírico Análisis Analítico

PROBLEMA

 imaginemos que tenemos 4 elementos (1,2,3,4), las


combinaciones posibles entre ellos sin repetición
alguna nos quedaría: ,
1,2,3,4,12,13,14,23,24,34,123,124,134,234,1234
15 Combinaciones en total, y si nos percatamos un
poquito nos daremos cuenta que están separadas
en 4 combinaciones de un solo elemento, 6
combinaciones con 2 elementos, 4 combinaciones
con 3 elementos y 1 combinación con los 4
elementos (combinaciones y agrupaciones).

16 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

Problema

 Antes de pasar al código la formula para


sacar el número de combinaciones posibles
por cada grupo es con la formula:
 n!/(n-m)!*m!
 podemos interpretar que será:
factorial de n(número de elementos) sobre el
factorial de n por el factorial de la resta del
número de elementos totales(n) menos el
número de elementos por grupo.
17 Docente: Ing. Samuel Lascano MSc.
Tema 2: Análisis Empírico Análisis Analítico

Programa Posible Solución

double a[]=new double[tam]; //declaramos nuestro arreglo y tamaño o


//tam en este caso será 4.
for(int m=1;m<=tam;m++){// por lo tanto haremos 4 veces
double n=1;
double r=1;
double aux1=1;
for(int i=1;i<=tam;n*=i,i++);//factorial de n que será el número de elementos.
int aux=(tam-m);//restamos el tamaño menos el numero de elementos en el
grupo
for(int i=1;i&lt;=aux;aux1*=i,i++);//factorial de aux1, que es la resta anterior
for(int i=1;i&lt;=m;r*=i,i++);//factorial del número de elementos por grupo
a[m-1]=n/(aux1*r);//formula para obtener número de combinaciones posibles y lo
guardamos en un arreglo.
}
18 Docente: Ing. Samuel Lascano MSc.
Tema 2: Análisis Empírico Análisis Analítico

Tarea 1

Instrucciones:
Escriba una aplicación en Java para:
I. simular la tirada de un dado de seis caras 500 veces, contar
y mostrar la frecuencia de cada uno de los seis posibles
resultados.
Algoritmo:
Entrada: Tirar un dado 500 veces.
Propósito: Determinar la frecuencia de cada posible resultado.
Salida: La frecuencia de cada resultado

19 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

Tarea 2

aproxime cuánto será la suma de todos los sueldos recibidos por una persona
antes de retirarse a los 65 años. El programa debe solicitar el nombre de la
persona, edad y salario inicia l. Suponga que el trabajador recibe 5% de aumento
por año. ( Ejemplo: Si el usuario entra el nombre Juan, la edad 25 y sueldo
inicial 20000, entonces un mensaje de salida mostrara :
Juan ganará cerca de 2435995.

Algoritmo:
Entrada: Nombre, edad y salario inicial de la persona.
Propósito: Aproximar cuánto será la suma de todos los sueldos recibidos por
la persona antes de retirar se a los 65 años.
Salida: La suma de todos los sueldos.

20 Docente: Ing. Samuel Lascano MSc.


Tema 2: Análisis Empírico Análisis Analítico

Bibliografía

 Joyanes Aguilar, L. “Fundamentos de


programación. Algoritmos y Estructura de
Datos”, McGrawHill. Capítulo 2.
 Introducción a la programación con Java 4
2014

21 Docente: Ing. Samuel Lascano MSc.

You might also like