Apuntes Sobre Análisis de Algoritmos
Apuntes Sobre Análisis de Algoritmos
Apuntes Sobre Análisis de Algoritmos
Apuntes de Terico
Anlisis de Algoritmos
Instituto de Computacin,
Facultad de Ingeniera,
Universidad de la Repblica
28 de agosto de 2015
ndice
1. Introduccin
2. Conceptos bsicos
2.1. Contar las operaciones teniendo en cuenta el costo . . . . . . . . . . . . . . . . .
2.2. Contar las operaciones sin tener en cuenta el costo . . . . . . . . . . . . . . . . .
2.3. Complejidad de un algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
2
2
3
3. Definiciones
4. Ejemplo: Find
5. Comportamiento asinttico
5.1. Nocin informal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Notacin asinttica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
7
iii
1.
Introduccin
2.
Conceptos bsicos
2.1.
Este enfoque consiste en asignar un costo a cada operacin para llegar a una expresin
matemtica que nos permita determinar el costo del algoritmo.
Para una mejor comprensin, se analizar el Ejemplo 1. Sean las siguientes definiciones:
C1 = costo de asignacin
C2 = costo de comparacin
C3 = incremento variable de control
Se tienen 2 asignaciones inicialmente, en las lnea 3 y en la 5 asignando a la variable i el
valor 1. El for hace que en cada operacin haya una comparacin (n veces) y el incremento de
una variable de control (n 1 veces). En cada iteracin se realiza a su vez una comparacin en
la lnea 6 y en caso de que se cumpla la condicin se realiza una asignacin (lnea 7).
T = 2C1 + nC2 + (n 1)C3 + (n 1)C2 + x(n 1)C1
= 2C1 + nC2 + (n 1)(xC1 + C2 + C3 )
Donde x [0, 1] es la cantidad de veces que se ejecuta la asignacin para el mnimo hasta
el momento, divido entre la cantidad de veces que se realiza la comparacin. Se distinguen dos
casos extremos:
Si x = 0, entonces el mnimo est en el primer lugar. Este es el mejor caso ya que se
minimiza el costo del Tiempo de Ejecucin.
Si x = 1, entonces la secuencia est ordenada de forma decreciente. Este es el peor caso.
2.2.
Este enfoque implica despreciar la diferencia en el costo entre las operaciones. Centrndonos
en el Ejemplo 1 se tiene que es un caso es similar anterior respecto a la deteccin de operaciones
a considerar. En cuanto al costo es un caso particular del mismo, tomando C1 = C2 = C3 = 1.
Se llega a la siguiente expresin para T:
T = 2 + n + 2(n 1) + x(n 1)
= (x + 3)n x
2
2.3.
Complejidad de un algoritmo
3.
Definiciones
TA (n) =
T (e)P (e)
eDn
Donde P (e) es la probabilidad que se d la entrada e, que depende del contexto del problema
en que se encuentre el algoritmo. El caso medio es:
{e Dn /T (e) = TA (n)}
Observar que W es por worst, B es por best y A es por average.
Como punto importante se debe destacar que el estudio por casos corresponde a un tamao
de entrada n dado (genrico). Un error frecuente es considerar que, por ejemplo, el mejor caso
se da con tamaos de entrada con n = 1.
1 Notar que esto es un abuso de notacin, ya que se vena tratando a T como una funcin que va de los naturales
a los reales no negativos. Es decir, que hace corresponder tamaos de entradas con costos. En este caso se usa de
una forma tal que hace corresponder entradas en s mismas con costos.
4.
Ejemplo: Find
Ejemplo 2: Find
A continuacin se hace el anlisis considerando solamente la operacin bsica.
Mejor caso: secuencia donde x est en el primerer lugar: TB (n) = 1
Peor caso: hay dos configuraciones en las que se da el peor caso:
X no est en A
X es el ltimo elemento de A
TW (n) = n
Caso medio: suponemos que si x A, todas las posiciones son equiprobables.
Partimos de la expresin anteriormente mencionada:
X
TA (n) =
T (e)P (e)
eDn
Debemos simplificarla para poder entenderla y para que resulte prctica. Recordemos que
Dn es el conjunto de todas las secuencias de largo n. En la prctica cabe notar que el
algoritmo dado se comporta (ejecuta) de la misma forma para todas las secuencias que
tengan a x en un lugar especfico i: no interesa el resto de los elementos que compongan la
secuencia, si x est en el lugar i-simo se realizan i comparaciones y el algoritmo termina.
Sucede algo similar si el elemento no est en la secuencia.
Caso 1: x A
Observando lo anterior, podemos subdividir Dn en subconjuntos Dni , donde Dni est
formado por las secuencias que tienen a x en la posicin i-sima, 1 i n. Teniendo
en cuenta esto, se puede simplificar el problema considerando que solamente existen
n entradas, ei con 1 i n, diferenciadas en la posicin en donde se encuentra x.
Entonces se tiene que P (ei ) = n1 , debido a la hiptesis de equiprobabilidad. Tambin
que T (ei ) = i. Por lo tanto:
TA (n) =
n
X
i=1
T (ei )P (ei ) =
n
n
X
1
1X
1 n(n + 1)
n+1
i=
i=
=
n
n
n
2
2
i=1
i=1
TA (ei ) = i, 1 i n
n
n
X
qX
q n(n + 1)
q
i = (1 q)n +
TA (n) =
T (ei )P (ei ) = n(1 q) +
i = (1 q)n +
n
n
n
2
i=1
i=1
i=1
q
q
= (1 )n +
2
2
n+1
X
5.
Comportamiento asinttico
TA1 (n)
3,2 105 s
103 s
1s
18 min
13 das
4,1 aos
4 1017 aos
TA2 (n)
1,25 104 s
103 s
8 103 s
27 103 s
64 103 s
0,09 s
1s
Tabla 1: Ejemplos de algunos valores para los tiempos de costos del ejemplo
Qu pasa si contamos con una computadora un milln de veces ms rpida? En la Tabla 2
vemos que la ineficiencia sigue de todas maneras con valores reducidos de n.
n
45
65
TA1 (n)
35 s
1,2 aos
5.1.
Nocin informal
Dado un algoritmo con tiempo de ejecucin T (n) y una funcin f (n), se dice que T (n) es del
orden de f (n) si T (n) es acotada por un mltiplo real positivo de f (n). O sea, T (n) kf (n)
donde k R+ .
6
Por ejemplo, si se tiene un algoritmo con T (n) = 20n2 + 15n + 6, se cumple dicha propiedad
con f (n) = n2 :
T (n) = 20n2 + 15n + 6 20n2 + 15n + 6
T (n) 20n2 + 15n2 + 6, n 1
T (n) 20n2 + 15n2 + 6n2 , n 1
T (n) 41n2 , n 1
Observar que: funciones como n3 , 3n2 , 27n2 y n4 tambin cumplen lo antedicho por lo tanto
se tiene un conjunto de funciones que acotan a T (n).
Funciones g(n) como 3n, 27n, 5n y 4 son todas del orden de f (n) = n porque siempre se
puede encontrar un k R de forma que se cumpla g(n) kf (n). Por lo antedicho las funciones
que cumplan esta desigualdad forman un conjunto de funciones, cada una de las cuales es del
orden de f (n).
5.2.
Notacin asinttica