PDF de programación - Analisis de algoritmos

Imágen de pdf Analisis de algoritmos

Analisis de algoritmosgráfica de visualizaciones

Publicado el 14 de Enero del 2017
682 visualizaciones desde el 14 de Enero del 2017
1.023,3 KB
71 paginas
Creado hace 11a (27/11/2012)
Analisis de algoritmos
Analisis de algoritmos

Eficiencia
Eficiencia

Es la capacidad de disponer de un
 Es la capacidad de disponer de un
recurso.
recurso.
En el caso de los algoritmos, la
 En el caso de los algoritmos, la
eficiencia se logra haciendo el mejor uso
eficiencia se logra haciendo el mejor uso
posible de los recursos del sistema.
posible de los recursos del sistema.

Recursos
Recursos

¿Qué recursos?
 ¿Qué recursos?
• Tiempo
Tiempo
• Memoria
Memoria
• Medios de almacenamiento secundario
Medios de almacenamiento secundario
• RedRed

Análisis de eficiencia de
Análisis de eficiencia de
algoritmos
algoritmos
Se puede plantear una función
 Se puede plantear una función

Tiempo_de_ejecución(Tamaño_del_problema)
Tiempo_de_ejecución(Tamaño_del_problema)

Uso_de_Recurso_R(Tamaño_del_Problema)
Uso_de_Recurso_R(Tamaño_del_Problema)

que relacione cuanto de un recurso
que relacione cuanto de un recurso
determinado se utiliza con el tamaño del
determinado se utiliza con el tamaño del
problema al cual se aplica.
problema al cual se aplica.
En este caso tomaremos como recurso de
 En este caso tomaremos como recurso de
estudio el tiempo, con lo cual la función
estudio el tiempo, con lo cual la función
sería
sería

Magnitudes: Tamaño del
Magnitudes: Tamaño del
problema
problema
Llamamos n n a la medida del tamaño
a la medida del tamaño
 Llamamos
del problema o de los datos a procesar.
del problema o de los datos a procesar.
Qué es lo que mide nn depende de cada
depende de cada
problema en particular.
problema en particular.
– Ordenamiento:

– Determinante de una matriz:

Ordenamiento: nn es la cantidad de elementos a ordenar.
es la cantidad de elementos a ordenar.
Factorial: nn coincide con el operando.
coincide con el operando.
Factorial:
Determinante de una matriz: n n es el orden de la matriz.
es el orden de la matriz.

 Qué es lo que mide

Magnitudes: Tiempo de
Magnitudes: Tiempo de
ejecución
ejecución
o el tiempo de ejecución de un
 T(n)T(n) o el tiempo de ejecución de un

programa en función de su nn se podría:
se podría:
programa en función de su
– Medir físicamente, ejecutando el programa
Medir físicamente, ejecutando el programa
y tomando el tiempo
y tomando el tiempo
– Contando las instrucciones a ejecutar y
Contando las instrucciones a ejecutar y
multiplicando por el tiempo requerido por
multiplicando por el tiempo requerido por
cada instrucción
cada instrucción

pero…pero…

Magnitudes: Tiempo de
Magnitudes: Tiempo de
ejecución
ejecución
 … … los métodos anteriores dependen
los métodos anteriores dependen
del modelo de recursos disponibles y
del modelo de recursos disponibles y
esto imposibilita la comparación con
esto imposibilita la comparación con
otros algoritmos.
otros algoritmos.

Entonces…
Entonces…

Magnitudes: Tiempo de
Magnitudes: Tiempo de
ejecución
ejecución
Se toman como unidad las
 Se toman como unidad las
operaciones elementales: asignación
operaciones elementales: asignación
y comparación.
y comparación.
Luego se puede multiplicar el
 Luego se puede multiplicar el
resultado por el tiempo que llevan
resultado por el tiempo que llevan
estas unidades.
estas unidades.

Ejemplo: mínimo de tres
Ejemplo: mínimo de tres
valores.
valores.
Método 1:
Método 1:

m:= a;
m:= a;
If b<m then m:= b;
If b<m then m:= b;
If c<m then m:= c;
If c<m then m:= c;

Método 2:
Método 2:

If a <= b then
If a <= b then
if a <= c then m:= a
if a <= c then m:= a
else m:= c
else m:= c
Else if b<= c then m:= b
Else if b<= c then m:= b

else m:= c;
else m:= c;

Ejemplo: mínimo de tres
Ejemplo: mínimo de tres
valores.
valores.
Método 3:
Método 3:

If (a<=b)and(a<=c) then m:= a;
If (a<=b)and(a<=c) then m:= a;
If (b<=a)and(b<=c) then m:= b;
If (b<=a)and(b<=c) then m:= b;
If (c<=a)and(c<=b) then m:= c;
If (c<=a)and(c<=b) then m:= c;

Método 4:
Método 4:

If (a <= b)and(a<=c) then
If (a <= b)and(a<=c) then
m:=am:=a
else if b <= c then
else if b <= c then
m:= bm:= b
else m:= c;
else m:= c;

Ejemplo: mínimo de tres
Ejemplo: mínimo de tres
valores.
valores.
– Método 1:
Método 1:
m:= a;
m:= a;
If b<m then m:= b;
If b<m then m:= b;
If c<m then m:= c;
If c<m then m:= c;

– Comparaciones: 2
Comparaciones: 2

1 <= Asignaciones <= 3
1 <= Asignaciones <= 3

Ejemplo: mínimo de tres
Ejemplo: mínimo de tres
valores.
valores.
Método 2:
Método 2:

– Comparaciones: 2
Comparaciones: 2

Asignaciones: 1
Asignaciones: 1

If a <= b then
If a <= b then
if a <= c then m:= a
if a <= c then m:= a
else m:= c
else m:= c
Else if b<= c then m:= b
Else if b<= c then m:= b

else m:= c;
else m:= c;

Ejemplo: mínimo de tres
Ejemplo: mínimo de tres
valores.
valores.
Método 3:
Método 3:

If (a<=b)and(a<=c) then m:= a;
If (a<=b)and(a<=c) then m:= a;
If (b<=a)and(b<=c) then m:= b;
If (b<=a)and(b<=c) then m:= b;
If (c<=a)and(c<=b) then m:= c;
If (c<=a)and(c<=b) then m:= c;

– Comparaciones: 6
Comparaciones: 6

Asignaciones: 1
Asignaciones: 1

Ejemplo: mínimo de tres
Ejemplo: mínimo de tres
valores.
valores.
Método 4:
Método 4:

If (a <= b)and(a<=c) then
If (a <= b)and(a<=c) then
m:=am:=a
else if b <= c then
else if b <= c then
m:= bm:= b
else m:= c;
else m:= c;

– 2 <= Comparaciones <=3
2 <= Comparaciones <=3

Asignaciones: 1
Asignaciones: 1

Ejemplo: mínimo de tres
Ejemplo: mínimo de tres
valores.
valores.

¿La diferencia parece poco relevante?
¿La diferencia parece poco relevante?

Ejemplo: mínimo de tres
Ejemplo: mínimo de tres
valores.
valores.
Considere la repetición 500 veces de
Considere la repetición 500 veces de
estas comparaciones: resultan 1000,
estas comparaciones: resultan 1000,
1500 o 3000 comparaciones.
1500 o 3000 comparaciones.

Si por ejemplo tuviera que compararse los 500
Si por ejemplo tuviera que compararse los 500
elementos de tres vectores, determinando para cada ii
elementos de tres vectores, determinando para cada
cuál de los tres es el menor.
cuál de los tres es el menor.

Análisis de algoritmos

Se realiza tomando los siguientes
casos:

– El mejor
– El peor
– El caso promedio

El primero no presenta mayor interés. En
general son más útiles los otros dos.

El caso promedio

 Volvamos sobre el método 4.

If (a <= b)and(a<=c) then
If (a <= b)and(a<=c) then

m:=am:=a

else if b <= c then
else if b <= c then

m:= bm:= b
else m:= c;
else m:= c;

– En el mejor de los casos: 2 comparaciones.
– En el peor de los casos: 3 comparaciones.

El caso promedio

 Examinemos todos los casos

posibles:
– a <= b <= c
– a <= c <= b
– b <= a <= c
– b <= c <= a
– c <= a <= b
– c <= b <= a

2 comparaciones
2 comparaciones
3 comparaciones
3 comparaciones
3 comparaciones
3 comparaciones

Promedio: (2+2+3+3+3+3)/6 = 8/3 (2,66)

Ejemplo: evitar
repetición innecesaria
de cálculos
 Método 1:
T:= x * x * x;
Y:= 0;
For n:= 1 to 2000 do y := y + 1 / (t-n)

 Método 2:

Y:= 0;
For n:= 1 to 2000 do y := y + 1 / (x * x * x - n)

¿Cuál es más eficiente y por qué?

Análisis de algoritmos

 Hay dos maneras de estimar el

tiempo de ejecución:
– Análisis empírico: se mide el tiempo de

respuesta para distintos juegos de
datos.

– Análisis teórico: se calculan el número
de comparaciones y asignaciones que
efectúa el algoritmo.

Análisis de algoritmos

 Si bien las técnicas empíricas son más
sencillas de aplicar presentan algunos
inconvenientes:
– Están afectadas por la potencia del equipo en el que se

– Presentan variaciones según las características de los

mide el tiempo.

datos de entrada

 Cuando es posible, se prefiere el análisis

teórico del algoritmo.

 T(T(nn) es el tiempo de ejecución en el
 TTpromprom((nn) es el valor medio del tiempo de ejecución de
) es el valor medio del tiempo de ejecución de

peor casocaso..

T(T(nn) versus T
) versus Tpromprom(n)(n)
) es el tiempo de ejecución en el peor

todas las entradas de tamaño nn..
todas las entradas de tamaño
Aunque parezca más razonable Tpromprom((nn), puede ser
), puede ser
 Aunque parezca más razonable T
engañoso suponer que todas las entradas son
engañoso suponer que todas las entradas son
igualmente probables.
igualmente probables.
Casi siempre es más difícil calcular Tpromprom((nn), ya que
), ya que
el análisis se hace intratable en matemáticas y la
el análisis se hace intratable en matemáticas y la
noción de entrada promedio
puede carecer de un
noción de entrada
promedio puede carecer de un
significado claro.
significado claro.

 Casi siempre es más difícil calcular T

Asíntotas
Asíntotas

Los problemas pequeños en general se pueden
 Los problemas pequeños en general se pueden
resolver de cualquier forma.
resolver de cualquier forma.
En cambio son los problemas grandes los que
 En cambio son los problemas grandes los que
plantean desafíos y requieren de la
plantean desafíos y requieren de la
administración cuidadosa de los recursos.
administración cuidadosa de los recursos.
Estudiaremos entonces el comportamiento
comportamiento
de los algoritmos, es decir qué sucede
asintótico de los algoritmos, es decir qué sucede
asintótico
con los mismos cuando nn tiende a infinito.
tiende a infinito.
con los mismos cuando

 Estudiaremos entonces el

Notación asintótica OO
Notación asintótica

Para hacer referencia a la velocidad
Para hacer referencia a la velocidad
de crecimiento de una función se
de crecimiento de una función se
puede utilizar la notación asintótica
notación asintótica
puede utilizar la
u u OO (“o mayúscula) y que señala que
(“o mayúscula) y que señala que
función se comporta como “techo”
función se comporta como “techo”
de crecimiento o cota superior de la
de crecimiento o cota superior de la
primera.
primera.

Notación asintótica OO
Notación asintótica

O n2

Por ejemplo, si se describe que el tiempo de
Por ejemplo, si se describe que el tiempo de
ejecución T(n)T(n) de un programa es

de un programa es
ejecución

(se lee “o mayúscula de n al cuadra
  • Links de descarga
http://lwp-l.com/pdf418

Comentarios de: Analisis de algoritmos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad