Complejidad promedio

Transcripción

Complejidad promedio
Análisis de algoritmos
Complejidad promedio
Dra. Elisa Schaeffer
[email protected]
PISIS / FIME / UANL
Complejidad promedio– p. 1
Complejidad promedio
En muchos casos, la cota superior de la análisis asintótica
del caso peor da una idea bastante pesimista de la
situación.
Puede ser que son muy escasas las instancias de peor
caso, mientras una gran mayoría de las instancias tiene
tiempo de ejecución mucho mejor.
Complejidad promedio– p. 2
Distribución de instancias
Si uno conoce la distribución de probabilidad de las
instancias (de un caso práctico), se puede analizar la
complejidad promedio de un algoritmo.
En los casos donde no hay información a priori de las
probabilidades, se asume que cada instancia es
equiprobable (es decir, la instancia está seleccionada del
espacio de todas las instancias posibles uniformemente al
azar).
Complejidad promedio– p. 3
Ordenación rápida
Como un ejemplo de análisis de complejidad promedio,
analizamos el algoritmo de ordenación rápida.
Su peor caso es O (n2 ) para n elementos, pero resulta que
en la práctica suele ser el método más rápido.
El análisis de complejidad promedia da a ordenación
rápida la complejidad O (n log n), que implica que el caso
peor no es muy común.
Complejidad promedio– p. 4
Análisis
Cada vez que dividimos una cola o un arreglo, usamos
tiempo Θ (n) y un espacio auxiliar de tamaño O (1).
Para unir dos colas (de tamaños n1 y n2 ) en uno, se
necesita por máximo el tiempo O (n1 + n2 ).
En la implementación que usa un arreglo, unir las partes
explicitamente no será necesario.
Complejidad promedio– p. 5
Elección de pivote
Suponemos que la subrutina de elección del pivote toma
Θ (n) tiempo para n elementos, el tiempo total de
ejecución del algoritmo de ordenación rápida es
O (1) ,
si n ≤ 1,
T (n) =
T (p) + T (n − p) + Θ (n) , si n > 1,
donde p es el tamaño de la una de las dos partes de la
división (y n − p el tamaño de la otra parte).
Complejidad promedio– p. 6
Peor caso
El peor es a la situación donde p = 1 en cada división.
Θ (1) ,
si n ≤ 1,
Tpeor (n) =
Tpeor (n − 1) + Θ (n) , en otro caso,
La solución de la ecuación del peor caso es
Tpeor (n) = Θ (n2 ).
Complejidad promedio– p. 7
Caso promedio
1. Los n elementos son {1, 2, . . . , n} (o en términos más
generales, todos los elementos son distintos).
2. La permutación en la cual aparecen los elementos
está elegida entre los n! posibles permutaciones
uniformemente al azar.
3. El último elemento está siempre elegido como el
pivote; esto de logra en en tiempo O (1) ∈ O (n).
4. Las operaciones de dividir y unir las partes usan al
máximo tiempo cn, donde c es un constante.
5. La complejidad del caso donde n ≤ 1 usa d pasos de
computación.
Complejidad promedio– p. 8
Elección del pivote
La complejidad del algoritmo ahora depende de la elección
del pivote, que en turno determina exactamente los
tamaños de las dos partes:

T (0) + T (n) + cn,
si el pivote es 1




T (1) + T (n − 1) + cn, si el pivote es 2



 T (2) + T (n − 2) + cn, si el pivote es 3
T (n) ≤
..
..

.
.




T (n − 2) + T (2) + cn, si el pivote es n − 1



T (n − 1) + T (1) + cn, si el pivote es n.
Complejidad promedio– p. 9
Las permutaciones
Considerando el conjunto de las n! permutaciones de los
elementos, cada caso ocurre (n − 1)! veces.
(Se fija el último elemento y considera las permutaciones
de los otros elementos).
Complejidad promedio– p. 10
Caracterización
=⇒ La complejidad del caso promedio:

d,






 (n−1)! T (0) + T (n)
n!
T (n) =
!

n−1

X




(T (i) + T (n − i) + cn) ,
 +cn +
n = 1,
n > 1,
i=1
Complejidad promedio– p. 11
Simplificación
(n − 1)!
T (0) + T (n)
T (n) =
n!
n−1 X
T (i) + T (n − i) + cn
+cn +
i=1
1
=
T (1) + T (n − 1)
n
n−1 X
T (i) + T (n − i) + cn
+cn +
i=1
Complejidad promedio– p. 12
Más simplificación
n−1
X
1
T (n) =
T (i)
T (0) + T (n) + cn + (n − 1)cn + 2
n
i=1
n−1
2X
d
T (i)
+ Cn + cn +
≤
n
n i=1
n−1
2X
≤ (d + C + c)n +
T (i).
n i=1
Complejidad promedio– p. 13
Explicación
Hay además de cn dos ocurrencias de cada T (i)
≤ viene del hecho que ya sabemos del análisis de
peor caso que T (n) ≤ Cn2 para algún constante C
T (1) = d
Complejidad promedio– p. 14
Última simplificación
Reemplazamos el constante d + C + c = D:
n−1
2X
T (n) ≤ Dn +
T (i)
n i=1
Intentamos solucionarla con la adivinanza T (n) ≤ αn log n,
donde α es un constante suficientemente grande.
Complejidad promedio– p. 15
Demostracíón por inducción
Para n = 2, aplica la ecuación siempre y cuando
α ≥ D + d2 .
Para el caso n > 2, asumimos que para todo i < n aplica
que T (i) ≤ αi log i.
Complejidad promedio– p. 16
Valores pares de n
n−1
X
2
αi log i
T (n) ≤ Dn +
n i=1

n
2

n−1
X
2α X
= Dn +
(i log i) +
(i log i)
n
n
i=1
i= 2 +1
Complejidad promedio– p. 17
Simplificación
T (n) ≤ Dn
≤ Dn
≤ Dn

n
−1
2
n
2
X n
2α X
+
( + i) log
(i log i) +
n
2
i=1
i=1
+ 2α
n


n
−1
2
n
2
X
i(log n − 1) +
X
i=1
i=1
n
2

+i 

( n2 + i) log n
n
2
+ 2α
n
(log n − 1)
X
i
i=1
+ log n
n n
2 2
n
−1
2
!
X
i
−1 +
i=1
Complejidad promedio– p. 18
Simplificación cont.
T (n) ≤ Dn
2α
+
n
≤ Dn
+
2α
n
n
(log n − 1)
2
2
n
−
+ log n
4
n
1+
2
·
2
n
!
1
+
−
1
n
2
+
−1 ·
2
2
2
n
2
n
n2 n
n
+
−
−
log n
8
4
8
4
2
!
2
n
n n
n
+ log n
− +
−
4
2
8
4
Complejidad promedio– p. 19
Más implificación
n 1
T (n) ≤ Dn + α log n(n − 1) − −
4 2
n
≤ Dn + αn log n − α ·
4
≤ αn log n, si α ≥ 4D,
porque ∀i aplican
n
log i ≤ log = log n − 1
2
n
log
+ i ≤ log(n − 1) ≤ log n
2
con logaritmos de base dos y por aplicar la suma de
sucesión aritmética.
Complejidad promedio– p. 20
Todavía faltaría...
Para valores impares de n, el análisis es muy parecido.
Estas calculaciones verifican la adivinanza
T (n) = αn log n.
Complejidad promedio– p. 21

Documentos relacionados