Vous êtes sur la page 1sur 29

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Anlisis de Algoritmos a
M. Andrea Rodr guez-Tastets
Universidad de Concepcin,Chile o www.inf.udec.cl\ andrea andrea@udec.cl

Sistemas Recurrentes

I Semestre - 2008

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Objetivos de la Clase Durante esta clase revisaremos anlisis de algoritmos. Se espera a que al nal de la clase los alumnos puedan: Entender el concepto de tiempo de ejecucin de un algoritmo. o Poder determinar una cota de tiempo de ejecucin de o algoritmos simples. Entender los sistemas recurrentes y aplicar anlisis de a algoritmos a ellos.

Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez

Deniciones Analizar un algoritmo es predecir cunto recurso requiere su a ejecucin. Ocasionalmente, recursos de comunicacin y o o hardware son de nteres particular, sin embargo, en la mayor a de los casos, es el tiempo de ejecucin el de mayor o nteres. El tiempo de ejecucin de un algoritmo en base a una o entrada en particular de datos es el nmero de operaciones u primitivas o pasos ejecutados. En este curso nosotros trataremos con algoritmos ecientes (polinomiales). Sin embargo, existen algunos problemas para los cuales no existe un algoritmo eciente conocido. Un subconjunto de estos casos son los llamados NP-complete problems. Esta temtica se ve en un curso de complejidad de a algoritmos.
Anlisis de a Algoritmos Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Anlisis de Algoritmos a
Tiempo ejecucin o n 2 n n3 2n 3n n! n = 10 0,00001 seg. 0,0001 seg. 0,001 seg. 0,001 seg. 0,059 seg. 3,63 seg n = 20 0,00002 seg. 0,0004 seg. 0,008 seg. 1 seg. 58 min. 771 siglos n = 30 0,00003 seg. 0,009 seg. 0,027 seg. 17,9 min. 6,5 aos n 8x1016 siglos n = 40 0,00004 seg. 0.0016 seg. 0.064 seg. 12,7 dias 3.855 sigles 3x1032 siglos

Estructura de Datos Andrea Rodr guez

Modelo de Implementacin o Para realizar un anlisis de algoritmos, se requiere de un a modelo de implementacin en el cual se ejecutan nuestros o algoritmos. El modelo random access machine (RAM) considera que la ejecucin de intrucciones de algoritmos es secuencial, una o tras otra, sin operaciones concurrentes. Instrucciones son las comnmente encontradas en u computadores, para las cuales asumimos un tiempo constante. En RAM no se modela la memoria jerrquica (virtual, cache, a etc..), lo cual puede ser signicante para cierta clase de problemas.
Anlisis de a Algoritmos Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Considere el siguiente programa de ordenamiento, donde tk representa el nmero de veces la condicin del if es satisfecha: u o
l nea 1 2 3 4 5 6 cdigo o for i := 1 to n-1 do [ for j:= 1 to n-i do[ if A[j] > A[j+1] do [ temp:= A[j]; A[j] := A[j+1]; A[j+1] : = temp;] ] ] costo constante c1 c2 c3 c4 c5 c6 ejecuciones n Pn1 (k + 1) k=1 Pn1 k k=1 Pn1 t Pk=1 k n1 t Pk=1 k n1 t k=1 k

Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Para la mayor de los algoritmos que veremos en este curso, nos a interesar ver el peor caso del anlisis, es decir, el mayor tiempo a a para cualquier entrada de largo n. Las razones son las siguientes:
el peor caso es un l mite superior en tiempo de ejecucin de cualquier o entrada. As se garantiza que el algoritmo nunca tomar ms que eso; , a a para algunos casos el peor caso es bastante comn; y u el caso promedio es muchas veces tan malo como el peor caso. Por ejemplo, considere el ejemplo anterior. En promedio, uno podr estimar a que if ocurre la mitad de las veces, osea tk = k/2. Esto resulta en que la funcin T (n) sigue siendo cuadrtica para otra constante dada. o a

Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez

Ejemplo Dado el siguiente algoritmo, donde A[1:n] es un arreglo ordenado, indique qu hace y derive su complejidad. Indique el caso peor de e la complejidad.
Procedure UNKNOW (intA[1 : n],int n,int x,var int j) l := 1; u := n; while l < u do [ m := (l + u)/2 ; case [ x > A[m] : l := m + 1; x < A[m] : u := m 1; else j := m; return; ] ] j: = 0; end UNKNOW

Anlisis de a Algoritmos Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Sistemas recurrentes
En muchos casos de algoritmos, las tcnica bsicas de conteo para conjuntos e a nitos no funcionan. Estos casos son los sistemas recursivos que usan un enfoque de ecuaciones recurrentes. Ejemplo clsico de tales funciones son la a secuencia Fibonacci.

Sistemas Recurrentes

F (0) F (1) F (n)

= = =

0 1 F (n 1) + F (n 2), n > 1

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Un sistema recursivo es un conjunto de condiciones de borde y ecuaciones recurrentes, las cuales especican una secuencia unica or una funcin desde N k o to R, con N siendo los naturales, R los reales y k perteneciente a los enteros positivos I +. Un solucin a un sistema recurrente es una funcin f : N k R o o que satisface las condiciones de borde y los ecuaciones de recurrencia. Ejemplo: El nmero de permutaciones de n objetos puede ser expresado u usando el sistema recurrente:

Sistemas Recurrentes

P(0) P(n)

= =

1, nP(n 1), n > 0

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Ejemplo: sistemas recursivos Ejemplo: Considere el siguiente algoritmo que retorna la suma de los n primeros nmeros en el arreglo A. u ProcedureSUM(n) begin total 0; for i 1 to n step 1 do total total + A[i]; return total; end

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Asuma que denimos la complejidad de SUM como el nmero de u sumas realizadas. Esta funcin es caracterizada por el siguiente o sistema recursivo o recurrente:

f (1) = A[1], f (n) = f (n 1) + A[n], n > 0

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Un tipo especial de sistemas recursivos en algoritmos, son los llamados algoritmos que dividen para conquistar. Estos algoritmos dividen el problema en problemas ms pequeos, resuelven estos a n sub problemas y los combinan para obtener la solucin global. Este o tipo de enfoque de algoritmos es usualmente implementado como un sistema recursivo, ya que en muchos casos, los subproblemas son equivalentes al problema general.

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Los casos de algoritmos de este tipo que veremos cumplen las siguientes restricciones: 1. El costo de resolver un problema de tamao n = 1 es c, n donde c es una constante no negativa. 2. Para k > 0, problemas de tamao n = b k son divididos en a n diferentes problemas de tamao n/b n 3. Para todos los problemas de tamao n > 1, el costo de n dividir el problema en subproblemas ms el costo de a combinar las soluciones para obtener la solucin al problema o original es h(n), una funcin de n. o

Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Estas condiciones producen problemas de la siguiente forma: f (1) = c, f (n) = af (n/b) + h(n), n = b k , k > 0

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Determinacin de Costo de Recurrencia o En general, determinar el costo de una recurrencia se hace por: Mtodo de sustitucin e o Mtodo del rbol recursivo e a

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Mtodo de Sustitucin e o El mtodo de sustitucin utiliza dos pasos: e o Proponer una forma de solucin. o Hacer un prueba por induccin para encontrar las constantes o y mostrar que la solucin funciona. o

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Induccin matemtica o a Probar que funciona para P(1) Probar que si P(1) . . . P(n) son ciertas, entonces tambin e funciona para P(n + 1), con n cualquier entero positivo.

Estructura de Datos

Ejemplo de sustitucin o Considere el caso de una recurrencia T (n) = 2T ( n/2 ) + n, y asumamos una solucin T (n) = O(nlogn). o La idea entonces es probar que T (n) cnlgn para un c > 0. Haciendo induccin: o Asumimos que se cumple para n/2 , esto es T ( n/2 ) = c n/2 log ( n/2 ) Luego por sustitucin: o T (n) con c 1. 2(c n/2 log ( n/2 )) + n cnlog (n/2) + n cnlogn cnlog 2 + n cnlogn cn + n cnlogn

Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Ejemplo de sustitucin (cont..) o La induccin requiere que se pruebe que la solucin funciona para o o las condicions de borde. Si asumimos que T (1) = 1 es la condicin o de borde, pero T (n) cnlogn nos da que T (1) c1lg 1 = 0, una contradiccin. o Sin embargo, podemos hacer que T (n) cnlogn sea verdadero para algn n n0 . Entonces lo que debemos hacer es denir por u ejemplo para un n0 = 2, cul ser la constante c adecuada. a a As hemos extendido la condicin de borde. o

Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Abol recursivo El siguiente rbol representa la recurrencia T (n) = 3T (n/4) + cn2 . a


cn2 cn2

T(n/4)

T(n/4)

T(n/4)

c(n/4)2

c(n/4)2

c(n/4)2

.........

.........

.........

.........

.........

.........

T(1) T(1) T(1)

.........

.........

.........

............

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Mtodo del rbol recursivo e a En un rbol recursivo, cada nodo representa el costo de un a subproblema dentro del proceso recursivo. Se suma el costo de cada nivel del rbol para obtener el costo por nivel y luego se a suman los costos por niveles. Estos mtodos son especialmente e utiles cuando se usan en algoritmos que dividen para conquistar.

Estructura de Datos

Mtodo del rbol recursivo (cont...) e a El tiempo de ejecucin estimado para la recurrencia o T (n) = 3T (n/4) + cn2 es:
cn2 cn2

Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

c(n/4)2

c(n/4)2

c(n/4)2

3/16 cn2

.........

.........

.........

.........

.........

.........

T(1) T(1) T(1)

.........

.........

.........

............

O(nlog43)

Total : O(n2)

Estructura de Datos Andrea Rodr guez

Teorema Maestro
Teorema: Sea a y b enteros tal que a 1 y b > 1, y sea T : N R la funcin recurrente: o aT (n/b) + f (n), n = b k , k > 0

Anlisis de a Algoritmos Sistemas Recurrentes

T (n)

donde n/b es n/b o n/b , entonces: Si f (n) = O(nlogb a ), para alguna constante acotada por (nlogb a ). > 0, entonces T (n) es

Si f (n) = O(nlogb a ), entonces T (n) es acotada por (nlogb a logn). Si f (n) = (nlogb a+ ), para alguna constante > 0, si af (n/b) cf (n) para un c < 1 entonces f (n) y si n es sucientemente grande, entonces T (n) es acotada por (f (n)).

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Ejemplo: Dividir para Conquistar


El siguiente algoritmo de MAXMIM aplica una tcnica de dividir para e conquistar para devolver los valores mximo y m a nimo de las entradas A[i], . . . , A[j] de un vector A.
ProcedureMAXMIN(i, j) begin if i = j then return < A[i], A[i] > else < max1, min1 > MAXMIN(i, i+1 ); 2 < max2, min2 > MAXMIN( i+1 + 1, j); 2 if max1 < max2 then max1 max2; if min1 > main2 then min1 min2; return < min1, max2 > end

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Se dene la complejidad de este algoritmo como T (n), con T (n) el nmero de u comparaciones entre elementos del arreglo cuando A tiene n entradas. El siguiente sistema recurrente describe la funcin T para cada argumento o potencia de 2:
T (1) T (n) = = c1 , 2f (n/2) + c2 , n = 2 , k > 0
k

Entonces por el teorema, donde f (n) = (nlogb a ) = (1), T (n) = (logn).

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos

Ejercicios
Use el teorema Maestro par determinar las cotas de las siguientes funciones de costo computacional:

Sistemas Recurrentes

T (n) = 4T (n/2) + n; T (n) = 9T (n/3) + n; T (n) = 4T (n/2) + n2 ; T (n) = 4T (n/2) + n3 ;

Estructura de Datos Andrea Rodr guez

Ejercicios (cont...)
Considere el siguiente algoritmo con un arreglo A[1.. n] : Procedure XX (A, i, j) begin if j i then return XX (A, i, (i + j)/2 ); XX (A, (i + j)/2 + 1, j); for k = i to j do for l = k + 1 to j do if (A[k] < A[l]) then temp := A[k]; A[k] := A[l]; A[l] := temp; endif enddo enddo end Indique lo que hace el algoritmo y d su tiempo de ejecucin estimado em e o funcin del largo del arreglo A (n). o

Anlisis de a Algoritmos Sistemas Recurrentes

Estructura de Datos Andrea Rodr guez Anlisis de a Algoritmos Sistemas Recurrentes

Ejercicio para llevar Escriba un algortimo que realiza la multiplicacin de matrices con o recurrencia (divida para conquistar). Analice el costo de este algoritmo en comparacin a un algoritmo normal de multiplicacin o o de matrices.

Vous aimerez peut-être aussi