Вы находитесь на странице: 1из 35

Dra. Laura Cruz Reyes 1.1 Introd.

al Anlisis de Algoritmos
INTRODUCCIN AL
ANALISIS DE ALGORITMOS
Dra. Laura Cruz Reyes
Instituto Tecnolgico de Ciudad Madero
Mxico
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Objetivos del Anlisis de Algoritmos
Se analizan los algoritmos con diversos fines:
Entenderlos.
Mejorarlos.
Seleccionar el ms adecuado para resolver
un caso particular de un problema.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Criterios para evaluar algoritmos

Correccin.
Eficiencia: complejidad del algoritmo.
Sencillez.
Optimalidad: complejidad del problema.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Correccin
La relacin entre la entrada y salida de un
algoritmo es la esperada.
Demostracin de enunciados acerca de las
relaciones entre las entradas y salidas.
Demostraciones formales: axiomas y teoremas.
Demostraciones informales: simular a mano el
algoritmo en unos cuantos ejemplos pequeos
(pruebas de escritorio).
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Eficiencia
El desempeo de un algoritmo se determina
midiendo la cantidad de recursos utilizados en su
ejecucin.
Complejidad espacial: cantidad de memoria ocupada
Complejidad temporal: tiempo de ejecucin del
algoritmo
La medicin debe ser independiente de:
Computadora.
Lenguaje de programacin.
Programador.
Detalles de implementacin.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Sencillez
Sencillez no siempre es sinnimo de eficiencia.
La sencillez facilita:
Verificacin de la escritura correcta del algoritmo.
Depuracin.
Modificacin.
Si el algoritmo se va a usar con mucha frecuencia,
la eficiencia es importante. Si los requerimientos
son cambiantes, la sencillez puede ser ms
importante.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Optimalidad
Un algoritmo es ptimo si no existe otro
algoritmo, incluso los que todava no se
descubren, capaz de resolver el mismo problema
de manera ms eficiente.
El estudio de la complejidad de un problema
pretende determinar la cantidad mnima de trabajo
que requiere efectuarse para resolver un problema
mediante un algoritmo ptimo.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Anlisis de complejidad de algoritmos
Anlisis terico (generalizar):
Se determina matemticamente la cantidad de
recursos requeridos por cada algoritmo como una
funcin cuya variable independiente es el tamao
de la entrada.
Anlisis emprico (particularizar):
Las implementaciones de los algoritmos se
ejecutan para diferentes entradas y se comparan en
base a los recursos consumidos.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Complejidad temporal de un algoritmo
Expresa en T(n) el nmero de operaciones
bsicas que el algoritmo realiza para una
entrada de tamao n.
El nmero de operaciones bsicas debe ser
proporcional al total de operaciones.
Ejemplos de operaciones bsicas:
Comparacin de x con un elemento del arreglo.
Multiplicacin de dos nmeros reales.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Complejidad de un algoritmo
1 read n
2 producto 1
3 for i = 1 to n
4 read a, b
5 productoParcial a*b
6 producto producto * productoParcial

Operacin bsica = nmero de multiplicaciones
1
( ) 2 2
n
i
T n n
=
= =

Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos


Factores que influyen en el nmero
de operaciones efectuadas
Tamao de la entrada (n).
Encontrar x en un arreglo de nombres: el nmero de
nombres en el arreglo
Multiplicar dos matrices: las dimensiones de las matrices
Naturaleza de la entrada (ordenada, desordenada,
etc.).
Complejidad del peor caso.
Complejidad del mejor caso.
Complejidad del caso promedio.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Complejidad del peor caso
W(n) es el nmero mximo de operaciones bsicas
que el algoritmo ejecuta con cualquier entrada de
tamao n.
Sea D
n
el conjunto de entradas de tamao n para el
problema en consideracin, y sea I un elemento de
D
n
. Sea T(I) el nmero de operaciones bsicas que
el algoritmo ejecuta con la entrada I. Definimos la
funcin W as:
W(n) = max{T(I) | I e D
n
}
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Complejidad del mejor caso
B(n) es el nmero mnimo de operaciones bsicas
que el algoritmo ejecuta con cualquier entrada de
tamao n.

Sea D
n
el conjunto de entradas de tamao n para el
problema en consideracin, y sea I un elemento de
D
n
. Sea T(I) el nmero de operaciones bsicas que
el algoritmo ejecuta con la entrada I. Definimos la
funcin B as:
B(n) = min{T(I) | I e D
n
}
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
C o t a s
El peor caso es una cota superior ajustada
del trabajo efectuado por el algoritmo.
El mejor caso es una cota inferior ajustada.
Cuando no se especifica a qu tipo de caso
corresponde la complejidad de un
algoritmo, se supone que es la del peor
caso.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Complejidad promedio
Sea Pr(I) la probabilidad de que se presente la
entrada I. Entonces, el comportamiento promedio
del algoritmo, sobre todas las posibles entradas de
tamao n se define como



T(I) se determina analizando el algoritmo.
Pr(I) se determina por la experiencia, o en base en
informacin especial acerca de la aplicacin que
se piensa dar al algoritmo.

e
=
n
D I
I T I Pr n A ) ( ) ( ) (
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Tipo de entrada
En lugar de considerar todos los posibles ejemplares, es
recomendable: identificar las propiedades de los
ejemplares que afectan el comportamiento del algoritmo.

Cada propiedad define un tipo de ejemplar. As, D
n
es el
conjunto de tipos de ejemplares (entradas) de tamao n.

El tipo de ejemplar con el cual el algoritmo tiene un
comportamiento especfico depende del algoritmo
empleado, y no del problema.

La probabilidad de ocurrencia de cada tipo de ejemplar
depende de la aplicacin del algoritmo.
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Algoritmo dependiente slo del
tamao de la entrada
Problema:
Encontrar el menor elemento de una secuencia de n nmeros.

Bosquejo algortmico:
1. Suponer que el primer elemento es el menor
2. Para cada uno de los elementos
Si el elemento actual es menor que el supuesto
Actualizar el menor
3. Regresar el menor
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Encontrar el menor
Algoritmo Min

Entradas: E y n donde E es un arreglo con n entradas.

Salidas: Devuelve como respuesta el elemento menor en E.

Int menor (int [ ] E , int n )
1. int menor;
2. menor = E[0]; //Suponer que el primer elemento es el menor
3. for (i =1; i < n; i++)
4. if (E[i]< menor) //Si no se confirma el supuesto
5. menor = E[i]; //Actualizar el menor
6. return menor
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Encontrar el menor
Operacin bsica: nmero de
comparaciones.
La bsqueda del menor siempre requiere
explorar todo el vector.
El peor caso, mejor caso y caso promedio
son equivalentes, slo dependen del tamao
de la entrada:

W(n) = B(n) = A(n) = n 1
Anlisis de los casos peor, mejor y promedio
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Algoritmo dependiente del tamao y
naturaleza de la entrada
Problema:
Bsqueda secuencial del elemento K en un vector de datos de
tamao n

Bosquejo algortmico:
1. Hacer falso el indicador de xito
2. Mientras existan datos qu analizar
Si el dato actual es el que buscamos
Marcar xito como verdadero
Terminar bsqueda
3. Regresar el valor del indicador de xito
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
Algoritmo BsquedaSec

Entradas: E, n, K donde E es un arreglo con n elementos y K es el
elemento buscado.

Salidas: Devuelve como respuesta la ubicacin de K en E.

Int BsquedaSec (int [ ] E , int n, int K )
1. int respuesta, i;
2. respuesta = 1; //Suponer fracaso
3. for (i=0; i<n; i++)
4. if (K == E[i])
5. respuesta = i; //xito
6. break;
7. return respuesta

Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
Operacin bsica: nmero de comparaciones.
El peor caso se presenta cuando el elemento
buscado K aparece en la ltima posicin del
arreglo o cuando K no est en el arreglo. En
ambos casos, K se compara con los valores de las
n posiciones del arreglo.
Anlisis del peor caso:
W(n) = n
Anlisis del peor caso
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
Operacin bsica: nmero de
comparaciones
El mejor caso se presentan cuando el
elemento buscado K aparece en la primera
posicin del arreglo.
Anlisis del mejor caso:
B(n) = 1
Anlisis del mejor caso
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
ESCENARIO 1
Supuesto 1: K est en el arreglo (suceso xito).
Supuesto 2: es igualmente probable que K est en cualquier posicin.

Los ejemplares se pueden tipificar segn la posicin en la que K aparece en el
arreglo E.
Ejemplo: K= 3
I
1
E=[3,5,7...20]; E=[3,8,5...11]...; T
1
(n) = 1
I
2
E=[5,3,7...20]; E=[8,3,5...11]...; T
2
(n) = 2
I
m
E=[5,20,7...3]; E=[8,11,5...3]...; T
m
(n) = m

I
i
representa al tipo de ejemplar en el que K aparece en la i-sima posicin del
arreglo:
I
i
= ejemplares exitosos en la posicin 0 s i < m.
m= No. de tipos de ejemplares de tamao n.
Anlisis de comportamiento promedio
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
ESCENARIO 1
Supuesto1: K est en el arreglo (suceso xito).
Supuesto2: es igualmente probable que est en cualquier posicin.


Anlisis de comportamiento promedio
1
1
( ) Pr( ) ( )
( ) Pr( ) ( )
1
( ) ( )
1 ( 1) 1
( )
2 2
n
I D
n
exito i i
i
n
exito
i
exito
A n I T I
A n I exito T I
A n i
n
n n n
A n
n
e
=
=
=
=
| |
=
|
\ .
+ +
| |
= =
|
\ .

En promedio se
examina la
mitad del
arreglo
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
ESCENARIO 2
Supuesto : K no est en el arreglo (suceso fracaso).

Slo hay un tipo de ejemplar I
fracaso


Ejemplo: K= 3
E=[2,5,7...20]; E=[2,8,5...11]...; T
fracaso
(n) = n
E=[5,2,7...20]; E=[8,2,5...11]...; T
fracaso
(n) = n

Anlisis de comportamiento promedio
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
ESCENARIO 2
Supuesto : K no est en el arreglo (suceso fracaso).

Anlisis de comportamiento promedio
( ) Pr( ) ( )
( ) Pr( ) ( )
( ) (1)( )
n
I D
fracaso fracaso fracaso
fracaso
A n I T I
A n I T I
A n n n
e
=
=
= =

En promedio se
examina todo el
arreglo
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
ESCENARIO 3
Supuesto1: q probabilidad de que K est en el arreglo (xito)
Supuesto2: (1q) probabilidad de que K no est en el arreglo (fracaso)

Anlisis de comportamiento promedio
Ley de
expectativa
condicional
( ) ( ) ( ) ( ) ( )
1
( ) ( 1) (1 )
2
1 1
( ) 1
2 2
exito fracaso
A n Pr exito A n Pr fracaso A n
A n q n q n
A n n q q
= +
| |
= + +
|
\ .
| |
= +
|
\ .
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda
Anlisis de comportamiento promedio
1 1
( ) 1
2 2
A n n q q
| |
= +
|
\ .
ESCENARIO 3
Supuesto1: q probabilidad de que K est en el arreglo (xito)
Supuesto2: (1q) probabilidad de que K no est en el arreglo (fracaso)




Si q = 1 (K siempre est en el arreglo), entonces
A(n) = (n+1)/2, examina la mitad del arreglo

Si q = (50-50% de que K no est en el arreglo), entonces
A(n) = 3n/4 + , examina las tres cuartas partes del arreglo

Si q = 0 (K no est en el arreglo)
A(n) = n, examina todo el arreglo

Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Rutina generalizada de bsqueda

ESCENARIO 3
Supuesto: En la bsqueda, todos los eventos tienen la misma probabilidad:

I
1
: K se encuentra en la posicin 1
I
2
: K se encuentra en la posicin 2

I
n
: K se encuentra en la posicin n
I
n+1
: K no se encuentra en alguna posicin


1 1 1 1
( ) 1 2 ...
1 1 1 1
1 ( 1)
( )
1 2
A n n n
n n n n
n n
A n n
n
| | | | | | | |
= + + + +
| | | |
+ + + +
\ . \ . \ . \ .
+
| || |
= +
| |
+
\ .\ .
( ) Pr( ) ( )
n
I D
A n I T I
e
=

Anlisis de comportamiento promedio
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Multiplicacin de matrices
Problema: Sea A = (a
ij
) una matriz de m n y
B = (b
ij
) de n p, ambas con elementos
reales. Calcular la matriz producto C=A B.
Estrategia: Usar el algoritmo correspondiente
a la definicin de producto de matrices:

p j m i b a c
kj
n
k
ik ij
< s < s =

=
0 , 0 para
1
0
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Multiplicacin de matrices
Algoritmo Multiplicacin de matrices

Entradas: Matrices A y B, y enteros m, n y p, que indican que A es una
matriz de m n, y B es una matriz de n p.

Salidas: Matriz C, una matriz de m p. C se pasa al algoritmo, el cual la
llena.

multMat(A,B,C,m,n,p)
1. for (i =0; i<m; i++)
2. for (j =0; j<p; j++)
3. c
ij
= 0
4. for (k =0; k<n; k++)
5. c
ij
= c
ij
+ a
ik
b
kj
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Multiplicacin de matrices
Operacin bsica: Multiplicacin de elementos de
matrices.
Anlisis de casos: Para calcular cada elemento de
C, se efectan m multiplicaciones. C tiene mp
elementos, as que:

B(m,n,p) = A(m,n,p) =W(m,n,p) = mnp

en el caso comn en el que m = n = p,

B(n) = A(n) = W(n) = n
3
Independiente
de la naturaleza
de las entradas
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Complejidad espacial
Expresa en E(n) el espacio requerido para
almacenar: datos de entrada y datos para el
procesamiento (instrucciones, constantes,
variables, manipulacin de datos, efectuar
clculos, etc.)

Tamao del problema n
n = nmero de celdas ocupadas
n = espacio para entradas + espacio extra
Dra. Laura Cruz Reyes 1.1 Introd. al Anlisis de Algoritmos
Bibliografa
Sara Baase y Allen Van Gelder, Algoritmos
Computacionales: Introduccin al Anlisis
y Diseo, Tercera Edicin, Addison
Wesley, 2002.
T.H. Cormen, C.E. Leiserson y R.L. Rivest,
Introduction to Algorithms, MIT Press
(1990).

Вам также может понравиться