Professional Documents
Culture Documents
Optimizacion
9. Optimizacion
9. Optimizacion
9.1 Concepto
9. Optimizacion
9.2 Objetivos
9. Optimizacion
9.3 Factibilidad
9. Optimizacion
9.4 Reglas de Jackson
9. Optimizacion
9.5 Formas de Optimizacion
Por afinacin
Por algoritmos
9. Optimizacion
9.5 Formas de Optimizacion
Por afinacin
Por algoritmos
Esto implica no modificar la estructura del algoritmo sino utilizar factores de
bloque, segmentacin de programas, asignacin de memorias intermedias,
etc.
9. Optimizacion
9.5 Formas de Optimizacion
Por afinacin
Por algoritmos
La optimizacin por algoritmos se realiza a travs de recursos como ser:
Estructuras de datos (arreglos, pilas, colas, rboles, etc).
Tablas
Matemticos (por ejemplo para determinar pares e impares se utilizan los
recursos: parte entera, resto, potencia de menos uno (-1), etc).
9. Optimizacion
9.5 Formas de Optimizacion
La mayora de los autores (Jackson, Boria, Rice y Rice) eligen los modelos
de clasificacin para ilustrar la optimizacin por algoritmos.
Para ilustrar el objetivo ms pequeo se emplea el caso de determinacin
de tipos de tringulos.
Para ilustrar el objetivo ms rpido se aprovechar el mtodo de
clasificacin de intercambio directo comunmente llamado "burbuja"
(desarrollado en el tema de clasificacion).
9. Optimizacion
9.5 Formas de Optimizacion
LADO 1
-----
LADO 2
-----
LADO 3
-----
TIPO
Escaleno
No tringulo
Equiltero
Escaleno
RECTO
SI
NO
SI
9. Optimizacion
9.5 Formas de Optimizacion
P R I_ P R O
U N T R IO
RECTO S
E Q U IL A T E R O
IS O S C E L E S
U N
E S C A LE N O
T R I A N G U L O
F IN _ P R O
B)
N IV E L 1
Program a
P r in c i p a l
N IV E L 2
U n - T r io
PRI - PRO
(1 vez)
T R IA N G U L O
(0 1 vez)
U N - T R IO
(t veces)
N IV E L 3
T r ia n g u lo
N IV E L 4
T ip o
T IP O
(1 vez)
E q u i la t e ro
Iso s c e le s
RECTO
(1 vez)
E s c a le n o
N O T R IA N G U L O
(0 1 vez)
I M P R IM IR
(1 vez)
F IN - P R O
(1 vez)
COMENZAR
PRI-PRO
PRIPRO
UN-TRIO
A < B+C
RECTO
"A B C TIPO
FIN-PRO
NO
"
SI
B < A+C
EOF
NO
UN-TRIO
NOTRIANGULO
NO
SI
LEER
C < A+B
SI
NO
SI
FIN
PRO
TRIANGULO
PARAR
IMPRIMIR
LEER
NOTRIANGULO
LEE
R
TIPO= "NO
TRIANGULO"
IMPRIMIR
TRIANGULO
TIPO
A, B, C, TIPO
LEER
A,B,C
RECTO
RECTO
TIPO
A 2 = B 2 + C2
SI
A = B
RECTO
B = C
SI
si
TIPO=
"EQUILATERO"
no
NO
NO
B = C
SI
TIPO=
"ISOSCELES"
NO
B 2 = A 2 + C2
si
no
A = C
SI
C2 = A2 + B2
NO
TIPO=
"ESCALENO"
no
RECTO = "NO"
si
RECTO = "SI"
9. Optimizacion
9.5 Formas de Optimizacion
9. Optimizacion
9.5 Formas de Optimizacion
= B
+ C
si
+ C
si
+ B
si
no
= A
R E C T O = " S I"
no
= A
no
R EC TO = "N O "
9. Optimizacion
9.5 Formas de Optimizacion
3) En la rutina tipo se advierte que deben compararse todos contra todos los
lados para determinar el tipo de tringulo. Probablemente el tener juntos los
posibles lados iguales, implique una simplificacin del algoritmo.
TIPO
A = B
B = C
SI
NO
B = C
SI
T IP O =
"E Q UILA TE RO "
NO
SI
T IP O =
"IS OS CE LE S "
NO
A = C
SI
NO
T IP O =
"E S CA LE N O"
9. Optimizacion
9.5 Formas de Optimizacion
9. Optimizacion
9.5 Formas de Optimizacion
O R D E N A R
A < B + C
S i
T R IA N G U L O
IM P R IM IR
L E E R
N o
N O
T R IA N G U L O
9. Optimizacion
9.5 Formas de Optimizacion
Tipo: En el caso de tringulos issceles, al ordenar los lados, los que son
iguales estn contiguos, por lo que la condicin A = C es innecesaria.
TIPO
TIPO
A=B
B=C
SI
NO
SI
TIPO=
"EQUILATERO"
A=B
SI
NO
NO
B=C
SI
NO
TIPO=
"ISOSCELES"
B=C
NO
A=C
B=C
SI
TIPO=
"ISOSCELES"
SI
NO
NO
TIPO=
"ESCALENO"
TIPO=
"ESCALENO"
SI
TIPO=
"EQUILATERO"
9. Optimizacion
9.5 Formas de Optimizacion
RECTO
A
= B
+ C
si
+ C
si
+ B
si
no
= A
R E C T O = " S I"
A2 = B2+C2
SI
no
NO
C
= A
RECTO = "NO"
no
R EC TO = "N O "
RECTO = "SI"
9. Optimizacion
9.5 Formas de Optimizacion
9. Optimizacion
9.5 Formas de Optimizacion
V =
15
42
33
10
P R IM E R A P A S A D A
1 C o m p a r.
15
42
33
10
2 C o m p a r.
15
42
33
10
10
IN T E R C A M B IA
3 C o m p a r.
15
33
42
IN T E R C A M B IA
4 C o m p a r.
15
33
42
10
IN T E R C A M B IA
F IN D E L A
PASADA
15
33
10
L u e g o d e la p r im e r a p a s a d a y a l c a b o d e la s
n - 1 c o m p a r a c io n e s e l v a lo r m a s g r a n d e fu e
s itu a d o e n la ltim a p o s ic i n .
42
SEGUNDA PASADA
1 C o m p a r.
15
33
10
42
2 C o m p a r.
15
33
10
42
10
42
IN T E R C A M B IA
3 C o m p a r.
15
33
IN T E R C A M B IA
4 C o m p a r.
F IN D E L A
PASADA
15
10
33
42
15
10
33
42
L u e g o d e la s e g u n d a p a s a d a y a l c a b o d e
la s n - 1 c o m p a r a c io n e s e l s e g u n d o v a lo r
m a s g r a n d e fu e s itu a d o e n la p e n lt im a
p o s ic i n .
. . . . . . . .
E s te p r o c e s o d e ll e v a r e l m a y o r v a lo r h a c i a la p a r te d e r e c h a d e l
v e c to r s e r e p ite h a s ta la ltim a p a s a d a , la c u a l n o s a s e g u r a q u e e l
v e c to r q u e d a c o m p le t a m e n te o r d e n a d o .
10
15
33
42
V =
15
42
33
10
IN IC IO
IM E R A P A S A D A
1 C o m p a r.
15
42
33
10
2 C o m p a r.
15
42
33
10
IN G R E S A R
N
IN T E R C A M B IA
3 C o m p a r.
15
33
Al analizar el algoritmo se
observa que se realiza en
cada
pasada
n-1
comparaciones
para
analizar los n-1 elementos
adyacentes, pero adems se
realizan
n-1
pasadas
garantizando la ordenacin
total de la lista, realizando
en total (n-1) * (n-1)
comparaciones resultando
el tiempo de ejecucin del
algoritmo funcin de n2.
L E E R
A (I)
I = 1 , N
42
10
IN T E R C A M B IA
J = 1
4 C o m p a r.
15
33
42
10
IN T E R C A M B IA
I = 1
F IN D E L A
PASADA
15
33
10
L u e g o d e la p r im e r a p a s a d a y a l c a b o d e la s
n - 1 c o m p a r a c io n e s e l v a lo r m a s g r a n d e fu e
s itu a d o e n la ltim a p o s ic i n .
42
SEGUNDA PASADA
A (I+ 1 ) > A (I)
1 C o m p a r.
15
33
10
N O
42
S I
2 C o m p a r.
15
33
10
42
10
42
A U X I = A (I)
A (I) = A (I+ 1 )
A (I+ 1 ) = A U X I
IN T E R C A M B IA
3 C o m p a r.
15
33
IN T E R C A M B IA
I = N - 1
4 C o m p a r.
15
10
33
N O
I = I + 1
N O
J = J + 1
42
S I
F IN D E L A
PASADA
15
10
33
42
L u e g o d e la s e g u n d a p a s a d a y a l c a b o d e
la s n - 1 c o m p a r a c io n e s e l s e g u n d o v a lo r
m a s g r a n d e fu e s itu a d o e n la p e n lt im a
J = N - 1
p o s ic i n .
. . . . . . . .
E s te p r o c e s o d e ll e v a r e l m a y o r v a lo r h a c i a la p a r te d e r e c h a d e l
v e c to r s e r e p ite h a s ta la ltim a p a s a d a , la c u a l n o s a s e g u r a q u e e l
v e c to r q u e d a c o m p le t a m e n te o r d e n a d o .
10
15
33
42
S I
P A R A R
9. Optimizacion
9.5 Formas de Optimizacion
IN IC IO
1 Optimizacin
IN G R E S A R
N
IN G R E S A R
N
LE E R
A (I)
I = 1 , N
L E E R
A (I)
I = 1 , N
J = 1
J = 1
C P = 0
I = 1
I = 1
N O
N O
S I
S I
A U X I = A (I)
A (I) = A (I+ 1 )
A (I+ 1 ) = A U X I
A U X I = A (I)
A (I) = A (I+ 1 )
A (I+ 1 ) = A U X I
C P = C P + 1
I = N - 1
I = N - 1
N O
N O
I = I + 1
N O
J = N -1
I = I + 1
S I
S I
C P = 0
J = N - 1
N O
J = J + 1
S i
S i
S I
J = J + 1
P A R A R
N O
9. Optimizacion
9.5 Formas de Optimizacion
2 Optimizacin
IN IC IO
IN IC IO
IN G R E S A R
N
IN G R E S A R
N
LE E R
A (I)
I = 1 , N
LE E R
A (I)
I = 1 , N
J = 1
J = 1
C P = 0
C P = 0
I = 1
I = 1
N O
N O
S I
S I
A U X I = A (I)
A (I) = A (I+ 1 )
A (I+ 1 ) = A U X I
A U X I = A (I)
A (I) = A (I+ 1 )
A (I+ 1 ) = A U X I
C P = C P + 1
C P = C P + 1
I = N - 1
N O
I = I + 1
I = N - J
N O
I = I + 1
S I
S I
C P = 0
N O
J = N -1
N O
J = J + 1
C P = 0
N O
J = N -1
S i
S i
S i
S i
P A R A R
N O
J = J + 1
9. Optimizacion
9.5 Formas de Optimizacion
2 Optimizacin
IN IC IO
IN IC IO
IN G R E S A R
N
IN G R E S A R
N
LE E R
A (I)
I = 1 , N
LE E R
A (I)
I = 1 , N
J = 1
J = 1
C P = 0
C P = 0
I = 1
I = 1
N O
N O
S I
S I
A U X I = A (I)
A (I) = A (I+ 1 )
A (I+ 1 ) = A U X I
C = ((n-1) + 1) *(n-1) / 2 =
(n2 - n) / 2
A U X I = A (I)
A (I) = A (I+ 1 )
A (I+ 1 ) = A U X I
C P = C P + 1
C P = C P + 1
I = N - 1
N O
I = I + 1
I = N - J
N O
I = I + 1
N O
J = N -1
S I
S I
C P = 0
N O
J = N -1
N O
J = J + 1
C P = 0
N O
J = J + 1
S i
S i
S i
S i
P A R A R
9. Optimizacion
9.5 Formas de Optimizacion
IN G R E S A R
N
LE E R
A (I)
I = 1 , N
J = 1
C P = 0
I = 1
3 Optimizacin
N O
S I
A U X I = A (I)
A (I) = A (I+ 1 )
A (I+ 1 ) = A U X I
C P = C P + 1
I = N - 1
N O
I = I + 1
N O
J = N -1
S I
C P = 0
N O
J = J + 1
S i
S i
P A R A R
9. Optimizacion
9.5 Formas de Optimizacion
4 Optimizacin
Dependiendo del grado de desorden de la lista es til ejecutar pasadas alternativas de izquierda
a derecha y de derecha a izquierda. Esta optimizacin se conoce como el mtodo de la
sacudida.
Por ejemplo si tuviramos la siguiente lista: 1, 5, 4, 3, 2
Si hiciramos pasadas de izquierda a derecha la lista se ordenara en una sola pasada, en
cambio si hiciramos pasadas de derecha a izquierda seran necesarias cuatro pasadas.
Sin embargo si tuviramos la siguiente lista: 4, 3, 2, 1, 5
Si se realizan pasadas de izquierda a derecha la lista se ordenara en cuatro pasadas, en
cambio si se realizan pasadas de derecha a izquierda sera necesaria una sola pasada.
9. Optimizacion
9.5 Formas de Optimizacion
5 Optimizacin
Clasificacin binaria (es utilizada por los programas productos comerciales: SORT).
Los mtodos binarios tienen por principio comn subdividir la lista a ordenar en dos o ms
sublistas, las que una vez ordenadas utilizando algoritmos simples de clasificacin, intercalan
las mismas (MERGE).
La razn es que es ms rpido ordenar dos listas de (n/2) elementos e intercalarlas, que
ordenar una lista de n elementos.
Ejemplo elemental: Ordenar una lista de diez(10) elementos requiere (n-1)*(n-1) comparaciones
igual a 9*9 = 81 con el mtodo de burbuja simple versus dos listas de cinco(5) elementos cada
una (4*4)*2 = 32 comparaciones ms las comparaciones que insume el proceso de intercalacin
(aproximadamente n=10 comparaciones) lo que nos dara un total de 42 comparaciones,
sustancialmente menor que las 81 hechas con el mtodo burbuja.
9. Optimizacion
9.5 Formas de Optimizacion
Conclusin:
Hemos visto los dos principios bsicos de optimizacin:
El primero lo ms pequeo posible.
El segundo lo ms rpido posible.
9. Optimizacion
9.6 Eficiencia de algoritmos
Definicin de Eficiencia
Uso racional de los recursos con que se cuenta para alcanzar un objetivo predeterminado. A
mayor eficiencia menor la cantidad de recursos que se emplearn, logrando mejor optimizacin
y rendimiento.
El anlisis de eficiencia de los algoritmos o mtodos aplicados en los algoritmos es una tarea
generalmente compleja y afecta directamente al tiempo de ejecucin de los mismos.
En las distintas optimizaciones que se realizaron en los puntos anteriores se pudo calcular, en
uno de ellos, la cantidad de comparaciones que se realizaran, y en funcin de ellas est el
tiempo de ejecucin de los respectivos algoritmos. En otras, encontrar frmulas que permitan
calcular el tiempo se hace difcil.