Documente Academic
Documente Profesional
Documente Cultură
La función T(n) es la complejidad de peor caso del algoritmo. T(n) es el número máximo de
operaciones básicas que el algoritmo ejecuta con cualquier entrada de tamaño n.
En muchos casos es relativamente fácil calcular T(n). La complejidad de peor caso es valiosa
porque proporciona una cota superior del trabajo ejecutado por el algoritmo. El análisis de peor
caso podría ayudarnos a estimar un límite de tiempo para una implementación dada de un
algoritmo.
Podría parecer que una forma más útil y natural de describir el comportamiento de un algoritmo
es indicar cuánto trabajo efectúa en promedio; es decir, calcular el número de operaciones
ejecutadas con cada entrada de tamaño n y luego sacar el promedio. En la práctica, algunas
entradas podrían presentarse con mayor frecuencia que otras, por lo que un promedio ponderado
sería más informativo.
Complejidad promedio
Problema: Sea E un arreglo que contiene n entradas (llamadas claves), E[0], … E[n-1], sin un
orden específico. Encontrar el índice de una clave dada, k, si k está en el arreglo; devolver -1
como respuesta si k no está en el arreglo.
Estrategia: Comparar k con cada elemento por turno hasta encontrar una coincidencia o hasta
agotar el arreglo. Si k no está en el arreglo, el algoritmo devuelve -1 como respuesta.
Algoritmo:
{
respuesta = índice;
break;
}
return respuesta;
}
Análisis de peor caso: Obviamente T(n) = n. Los peores casos se presentan cuando k aparece
sólo en la última posición del arreglo y cuando k no está en el arreglo. En ambos casos se
compara con las n entradas.
n-1
Aéxito(n) = P(Ii | éxito) t(Ii)
i= 0
El subíndice “éxito” denota que en este cálculo estamos suponiendo que la búsqueda tuvo éxito.
El resultado deberá satisfacer nuestra intuición de que, en promedio, se examinará la mitad del
arreglo.
Afracaso (n) = n
Por último, combinamos los casos en los que k está en el arreglo y no está en el arreglo.
Si p = 1, es decir, si k siempre está en el arreglo, entonces A(n) = (n + 1)/2, igual que antes. Si p
= ½, es decir, si hay una posibilidad de 50 – 50 de que k no esté en el arreglo, entonces A(n) =
3n/4 + ¼; o sea que se examinan aproximadamente las ¾ partes del arreglo
El ejemplo anterior ilustra la interpretación que debemos dar a Dn, el conjunto de entradas de
tamaño n. En lugar de considerar todos los posibles arreglos de nombres, números o lo que sea,
que podrían presentarse como entradas, identificamos las propiedades de las entradas que
afectan el comportamiento del algoritmo; en este caso, si k está o no en el arreglo y, si está en
qué posición. Un elemento I de Dn puede verse como un conjunto (o clase de equivalencia) de
todos los arreglos y valores de k tales que k aparece en la posición especificada del arreglo (o no
aparece). Entonces t(I) es el número de operaciones efectuadas en cualquiera de las entradas de
I.
Observe también que la entrada con la cual el algoritmo tiene su peor comportamiento depende
del algoritmo empleado, no del problema. En el caso del presente algoritmo el peor caso se
presenta cuando la única posición del arreglo que contiene a k es la última. En el caso de un
algoritmo que examina el arreglo de atrás hacia delante (es decir, comenzando con índice = n-
1), un peor caso se presentará si k apareciera solo en la posición 0. (Otro peor caso sería, una
vez más, si k no está en el arreglo).
Por último, el ejemplo ilustra un supuesto que solemos hacer al efectuar un análisis promedio de
algoritmos para ordenar o buscar: que los elementos son distintos. El análisis promedio para el
caso de elementos distintos da una buena aproximación del comportamiento promedio en casos
en que hay pocas repeticiones. Si puede haber muchas repeticiones, es más difícil hacer
supuestos razonables acerca de la probabilidad de que la primera aparición de k en el arreglo se
dé en alguna posición específica.