Está en la página 1de 3

ANLISIS DE ALGORITMOS

Que es el anlisis de los algoritmos


El tiempo necesario para ejecutar un algoritmo depende de la cantidad de datos que el mismo
debe procesar. Es de esperar por ejemplo que ordenar 10000 elementos requiere ms tiempo que
ordenar 10. El tiempo de ejecucin de un algoritmo es, por tanto, funcin de tamao de la
entrada.
Funciones en orden creciente de ndice de crecimiento
Funcin
c
log N
log2 N
N
N log N
N2
N3
2N

Nombre
Constante
Logartmica
Logartmica al cuadrado
Lineal
N log N
Cuadrtica
Cbica
Exponencial

El problema de la subsecuencia de suma mxima


Dada la secuencia de enteros (posiblemente negativos) A1, A2,, AN, encontrar (e identificar la
subsecuencia correspondiente) el valor mximo de jk=i Ak. Cuando todos los enteros son negativos
entendemos que la subsecuencia de suma mxima es la vaca, siendo su suma cero.

El algoritmo O(N3) obvio


El algoritmo ms simple consiste en una bsqueda exhaustiva, o un algoritmo de fuerza bruta. El
algoritmo de bsqueda exhaustiva tiene el mrito de ser extremadamente simple; cuando menos
complejo es un algoritmo, ms probable es que se programe con correccin. Sin embargo, por lo
general, los algoritmos de bsqueda exhaustiva no son tan eficientes como sera posible.
Nota: Cuando eliminamos un bucle anidado interior de un algoritmo, generalmente reducimos su
tiempo de ejecucin.

El algoritmo mejorado O(N2)


Para este algoritmo lo que se hace con respecto al ejemplo anterior se requiere quitarle un for
anidado para mejorar el rendimiento del programa pasando de N3 a N2

El algoritmo lineal

Para pasar de un algoritmo cuadrtico a uno lineal necesitamos eliminar un bucle anidado ms,
pero esto es ms complicado porque en algunos problemas se necesita buscar en todas sus
subsecuencias posibles para obtener el resultado, necesitamos buscar una forma ms eficiente de
hacer esta bsqueda sin necesidad de visitar todos los elementos.

Reglas generales para la notacin O


La primera definicin corresponde a la notacin O, afirma que existe un punto N0 tal que para
todos los valores de N despus de este punto, T(N) est acotada por algn mltiplo de F(N).
La segunda definicin, T(N) = (F(N)), correspondiente a la llamada notacin Omega, nos dice que
la tasa de crecimiento de T(N) es mayor o igual que la de F(N).
La tercera definicin, T(N) = (F(N)), correspondiente a la denominada notacin Theta, nos dice
que la obtencin de la tasa de crecimiento de T(N) es igual que la de F(N).
La ltima definicin, T(N) = o(F(N)), corresponde a la denominada notacin o, nos dice que la tasa
de crecimiento de T(N) es estrictamente menor que la de F(N).

Expresin matemtica
T(N) = O(F(N))
T(N) = (F(N))
T(N) = (F(N))
T(N) = o(F(N))

ndice de crecimientos relativos


El crecimiento de T(N) es <= que el crecimiento de F(N).
El crecimiento de T(N) es >= que el crecimiento de F(N).
El crecimiento de T(N) es = que el crecimiento de F(N).
El crecimiento de T(N) es < que el crecimiento de F(N).

Tiempos de ejecucin observados (en segundos) de los diferentes algoritmos para el clculo de la
subsecuencia de suma mxima.
N
10
100
1000
10000
100000

Figura 5.4
O(N3)
0.00103
0.47015
448.77
NA
NA

Figura 5.5
O(N2)
0.00045
0.01112
1.1233
111.13
NA

Figura 7.18
O(N log N)
0.00066
0.00486
0.05843
0.68631
8.01130

Figura 5.8
O(N)
0.00034
0.00063
0.00333
0.03042
0.29832

Mo se puede observar en la tabla muestra los tiempos que tarda en buscar la subsecuencia
mxima en arreglos unidimensionales que van de 10 elementos asta 100 000 elementos como
podemos ver las diferencias para los nmeros pequeos de elementos no es mucha la diferencia
en tiempo pero cuando llega a nmeros relativamente grandes estos algoritmos cuadrticos y
cbicos son ineficientes en cuanto al tiempo porque pueden llegar a no terminar en tiempo lmite
de lo establecido o requerido.

Logaritmos
Para cualquier B, N > 0, logB N = K si BK = N
Un hecho importante sobre los logaritmos es que cresen lentamente. Como quiera que 2 10 =
1.024, log 1.024 = 10. Clculos adicionales muestran que el logaritmo de un milln es
aproximadamente 20, y el logaritmo de un billn aproximadamente 40. El rendimiento de un
algoritmo O(N log N) est mucho ms cerca de un algoritmo lineal O(N) que uno cuadrtico O(N2)
lo que nos dice que es ms fcil emplear para numero s grandes un algoritmo logartmico que un
cuadrtico o un cubico para nmeros muy grandes y tener la casi la misma eficiencia que uno
lineal.

Problemas de la bsqueda esttica.


Dado un entero X y un vector A, devolver la posicin de X en A o una indicacin de que no est
presente. Si X aparece ms de una vez, devolver cualquier aparicin. El vector A nunca ser
modificado.

Bsqueda secuencial.
Bsqueda binaria.

Bsqueda interpolada.

Comprobar el anlisis de un algoritmo.

Limitaciones del anlisis O.

También podría gustarte