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

Facultad de Economa, Empresa y Negocios

UNIDAD I Fundamentos de Anlisis de Algoritmos


Estructura de datos.
[Estructura de datosI ]- [1]

Facultad de Economa, Empresa y Negocios

Fundamentos de Anlisis de algoritmos

Una vez dispongamos de un algoritmo que funciona correctamente, es necesario definir criterios para medir su rendimiento o comportamiento. Estos criterios se centran principalmente en su simplicidad y en el uso eficiente de los recursos.

[2]

Facultad de Economa, Empresa y Negocios

Teora de la Complejidad

La complejidad de un algoritmo hace referencia a la cantidad de tiempo y espacio necesarios para ejecutar el algoritmo. Con la tecnologa actual podemos decir que la memoria de las computadoras es abundante y barata, es por eso la complejidad del algoritmo se puede limitar al tiempo de ejecucin del algoritmo.

[3]

Facultad de Economa, Empresa y Negocios

El uso eficiente de los recursos, suele medirse en funcin de dos parmetros:


el espacio, es decir, memoria que utiliza, y el tiempo, lo que tarda en ejecutarse.

[4]

Facultad de Economa, Empresa y Negocios

El tiempo de ejecucin de un algoritmo va a depender de diversos factores como son: los datos de entrada que le suministremos, la calidad del cdigo generado por el compilador para crear el programa objeto, la naturaleza y rapidez de las instrucciones mquina del procesador concreto que ejecute el programa, y la complejidad intrnseca del algoritmo.

[5]

Facultad de Economa, Empresa y Negocios

Ambas medidas son importantes puesto que, si bien la primera nos ofrece estimaciones del comportamiento de los algoritmos de forma independiente de la computadora en donde sern implementados y sin necesidad de ejecutarlos, la segunda representa las medidas reales del comportamiento del algoritmo. Estas medidas son funciones temporales de los datos de entrada.

[6]

Facultad de Economa, Empresa y Negocios

TIEMPO DE EJECUCIN

El tiempo de ejecucin de un algoritmo es una funcin que mide el nmero de operaciones elementales que realiza el algoritmo para un tamao de entrada dado.

[7]

Facultad de Economa, Empresa y Negocios

A la hora de medir el tiempo, siempre lo haremos en funcin del nmero de operaciones elementales que realiza dicho algoritmo, entendiendo por operaciones elementales ( OE) aquellas que la computadora realiza en tiempo acotado por una constante.

[8]

Facultad de Economa, Empresa y Negocios

Operaciones Elementales - OE

Las operaciones aritmticas bsicas, asignaciones a variables de tipo predefinido por el compilador, los saltos (llamadas a funciones y procedimientos, retorno desde ellos, etc.), las comparaciones lgicas y el acceso a estructuras indexadas bsicas, como son los vectores y matrices. Cada una de ellas contabilizar como 1 OE.

[9]

Facultad de Economa, Empresa y Negocios

Ejemplo

[10]

Facultad de Economa, Empresa y Negocios

Calcule el OE para cada lnea de cdigo

[11]

Facultad de Economa, Empresa y Negocios

Anlisis: Mejor Escenario

Se efectuar la lnea (1) y de la lnea (2) slo la primera mitad de la condicin, que supone 2 OE (suponemos que las expresiones se evalan con cortocircuito, es decir, una expresin lgica deja de ser evaluada en el momento que se conoce su valor, aunque no hayan sido evaluados todos sus trminos). Tras ellas la funcin acaba ejecutando las lneas (4) a (6). En consecuencia,

T(n)=1+2+3=6.

[12]

Facultad de Economa, Empresa y Negocios

Anlisis: Peor Escenario

Se efecta la lnea (1), el bucle se repite n1 veces hasta que se cumple la segunda condicin, despus se efecta la condicin de la lnea (5) y la funcin acaba al ejecutarse la lnea (7). Cada iteracin del bucle est compuesta por las lneas (2) y (3), junto con una ejecucin adicional de la lnea (2) que es la que ocasiona la salida del bucle.

[13]

Facultad de Economa, Empresa y Negocios

Anlisis: Escenario Medio

El bucle se ejecutar un nmero de veces entre 0 y n1, y vamos a suponer que cada una de ellas tiene la misma probabilidad de suceder. Como existen n posibilidades (puede que el nmero buscado no est) por tanto cada una tendr una probabilidad asociada de 1/n.

[14]

Facultad de Economa, Empresa y Negocios

Asntotas

El anlisis de la eficiencia algortmica nos lleva a estudiar el comportamiento de los algoritmos frente a condiciones extremas. Matemticamente hablando, cuando N tiende al infinito, es un comportamiento asinttico.

[15]

Facultad de Economa, Empresa y Negocios

Notacin O (Omicrn, cota superior)

Dada una funcin f, queremos estudiar aquellas funciones g que a lo sumo crecen tan deprisa como f. Al conjunto de tales funciones se le llama cota superior de f y lo denominamos O(f). Conociendo la cota superior de un algoritmo podemos asegurar que, en ningn caso, el tiempo empleado ser de un orden superior al de la cota

[16]

Facultad de Economa, Empresa y Negocios

Orden de complejidad
O(1) O(log n) O(n) O(n log n) O(n2) O(n3) O(na) O(2n) O(n!) Orden constante Orden logartmico Orden lineal Orden cuasi-lineal Orden cuadrtico Orden cbico Orden polinmico Orden exponencial Orden factorial

[17]

Facultad de Economa, Empresa y Negocios

Descripcin de las OC

O(1): Complejidad constante. Cuando las instrucciones se ejecutan una vez. O(log n): Complejidad logartmica. Esta suele aparecer en determinados algoritmos con iteracin o recursin no estructural, ejemplo la bsqueda binaria. O(n): Complejidad lineal. Es una complejidad buena y tambin muy usual. Aparece en la evaluacin de bucles simples siempre que la complejidad de las instrucciones interiores sea constante. O(n log n): Complejidad cuasi-lineal. Se encuentra en algoritmos de tipo divide y vencers como por ejemplo en el mtodo de ordenacin quicksort y se considera una buena complejidad. Si n se duplica, el tiempo de ejecucin es ligeramente mayor del doble.
[18]

Facultad de Economa, Empresa y Negocios

O(n2): Complejidad cuadrtica. Aparece en bucles o ciclos doblemente anidados. Si n se duplica, el tiempo de ejecucin aumenta cuatro veces. O(n3): Complejidad cbica. Suele darse en bucles con triple anidacin. Si n se duplica, el tiempo de ejecucin se multiplica por ocho. Para un valor grande de n empieza a crecer dramticamente.

[19]

Facultad de Economa, Empresa y Negocios

O(na): Complejidad polinmica (a > 3). Si a crece, la complejidad del programa es bastante mala. O(2n): Complejidad exponencial. No suelen ser muy tiles en la prctica por el elevadsimo tiempo de ejecucin. Se dan en subprogramas recursivos que contengan dos o ms llamadas internas. N

[20]

Facultad de Economa, Empresa y Negocios

ESTIMACIN DE LA COMPLEJIDAD EN ALGORITMOS NO RECURSIVOS


Asignaciones y expresiones simples (=) El tiempo de ejecucin de toda instruccin de asignacin simple, de la evaluacin de una expresin formada por trminos simples o de toda constante es O(1).

[21]

Facultad de Economa, Empresa y Negocios

Secuencias de instrucciones (;)

El tiempo de ejecucin de una secuencia de instrucciones es igual a la suma de sus tiempos de ejecucin individuales. Para una secuencia de dos instrucciones S1 y S2 el tiempo de ejecucin esta dado por la suma de los tiempos de ejecucin de S1 y S2: T(S1 ; S2) = T(S1) + T(S2)

[22]

Facultad de Economa, Empresa y Negocios

Instrucciones condicionales (IF, SWITCH-CASE)

El tiempo de ejecucin para una instruccin condicional IF-THEN es el tiempo necesario para evaluar la condicin, ms el requerido para el conjunto de instrucciones que se ejecutan cuando se cumple la condicin lgica. T(IF-THEN) = T(condicin) + T(rama THEN)

[23]

Facultad de Economa, Empresa y Negocios

Aplicando la regla de la suma: O(T(IF-THEN)) = max(O( T(condicin), T(rama THEN) )) El tiempo de ejecucin para una instruccin condicional de tipo IF-THEN-ELSE resulta de evaluar la condicin, ms el mximo valor del conjunto de instrucciones de las ramas THEN y ELSE.
[24]

Facultad de Economa, Empresa y Negocios

T(IF-THEN-ELSE) = T(condicin) + max(T(rama THEN), T(rama ELSE)) Aplicando la regla de la suma, su orden esta dada por la siguiente expresin: O(T(IF-THEN-ELSE)) = O( T(condicin)) + max(O(T(rama THEN)), O(T(rama ELSE)) )

[25]

Facultad de Economa, Empresa y Negocios

Aplicando la regla de la suma: O(T(IF-THEN-ELSE)) = max(O( T(condicin)), max(O(T(rama THEN)), O(T(rama ELSE)) ))
El tiempo de ejecucin de un condicional mltiple (SWITCH-CASE) es el tiempo necesario para evaluar la condicin, ms el mayor de los tiempos de las secuencias a ejecutar en cada valor condicional.
[26]

Facultad de Economa, Empresa y Negocios

Instrucciones de iteracin

El tiempo de ejecucin de un bucle FOR es el producto del nmero de iteraciones por la complejidad de las instrucciones del cuerpo del mismo bucle. Para los ciclos del tipo WHILE-DO y DOWHILE se sigue la regla anterior, pero se considera la evaluacin del nmero de iteraciones para el peor caso posible.

[27]

Facultad de Economa, Empresa y Negocios

Si existen ciclos anidados, se realiza el anlisis de adentro hacia fuera, considerando el tiempo de ejecucin de un ciclo interior y la suma del resto de proposiciones como el tiempo de ejecucin de una iteracin del ciclo exterior.

[28]

Facultad de Economa, Empresa y Negocios

Llamadas a procedimientos

El tiempo de ejecucin esta dado por, el tiempo requerido para ejecutar el cuerpo del procedimiento llamado. Si un procedimiento hace llamadas a otros procedimientos "no recursivos", es posible calcular el tiempo de ejecucin de cada procedimiento llamado, uno a la vez, partiendo de aquellos que no llaman a ninguno.

[29]

Facultad de Economa, Empresa y Negocios

Ejemplo

Su complejidad es lineal O(n), debido a que se tiene un bucle FOR cuyo nmero de iteraciones es n.
[30]

Facultad de Economa, Empresa y Negocios

Ejercicio

[31]

Facultad de Economa, Empresa y Negocios

[32]

Facultad de Economa, Empresa y Negocios

Bibliografa

http://www.lab.dit.upm.es/~lprg/material/apuntes/o/ind ex.html http://www.monografias.com/trabajos27/complejidadalgoritmica/complejidad-algoritmica.shtml#orden http://www.algoritmia.net/articles.php?id=30 http://ocw.mit.edu/courses/electrical-engineering-andcomputer-science/6-046j-introduction-to-algorithmssma-5503-fall-2005/

Fundamentos de Algoritmos G. Brassard


[33]

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