R.R 1. 1 Funciones de crecimiento 3. FUNCIONES DE CRECIMIENTO x factorial 1 2 3 3,3 4 4,1 4,2 4,3 5 5,2 1 2 6 6 24 24 24 24 120 120 2^n 2 4 8 9,84915531 16 17,1483754 18,3791737 19,6983106 32 36,7583474 n^2 1 4 9 10,89 16 16,81 17,64 18,49 25 27,04 n(log)n 1 3 4,5849625 5,02246602 6 6,13562391 6,27038933 6,40433666 7,32192809 7,57851162 n log n 0 1 1,5849625 1,72246602 2 2,03562391 2,07038933 2,10433666 2,32192809 2,37851162 1 2 3 3,3 4 4,1 4,2 4,3 5 5,2 140 120 Factorial 100 2^n 80 n^2 60 n log n n 40 log n 20 0 1 2 3 3,3 4 4,1 4,2 4,3 5 5,2 Definición 1 Una función f cuyo dominio y codominio son subconjuntos del conjunto de los números reales se denomina estrictamente creciente si f (x) < f (y) siempre que x < y y tanto x como y estén en el dominio de f . De forma similar, f se dice que es estrictamente decreciente si f (x) > f (y) siempre que x < y y x e y estén en el dominio de f . R.R 1.1. 2 Función O Definición 2 Sean f y g dos funciones del conjunto de los enteros o de los reales en el conjunto de los números reales. Decimos que f (x) es O(g(x)) si existen dos constantes C y k tales que: | f (x) |≤ C | g(x) | siempre que x > k Observación 1 Podemos decir que existen infinitos pares de testigos que cumplen | f (x) |≤ C | g(x) | para x > k. Ejemplo 1 Demuestre que 7x2 es O(x3). R.R 3 Solución. Cuando x > 7 entonces 7x2 < x3 esto es que se pueden encontrar testigos C = 1 y k = 7 que cumplen la condición. También servirı́an los testigos C = 7 y k = 1, es decir, 7x2 < 7x3. Ejemplo 2 ¿x3 es O(7x2) ? es plantear la desigualdad x3 ≤ C(7x2) simplificando tenemos x ≤ 7C. No existe un valor de C para todo x > k, porque el x se puede volver muy grande. Por tanto x3 no es O(7x2). R.R 4 Ejemplo 3 f (n) = n2 + 2n + 1 es O(n2) por lo tanto podemos encontrar un C = 4 tal que n2 + 2n + 1 < 4n2 para n > 1, es decir k=1 Entonces podemos decir que C = 4 y k = 1 son los testigos. Teorema 1 Sea f (x) = anxn+an−1xn−1+. . .+a1x+a0 donde a0, a1, . . . , an−1, an son números reales. Entonces, f (x) es O(xn). R.R 5 Teorema 2 Supongamos que f1(x) es O(g1(x)) y f2(x) es O(g2(x)). Entonces, (f1 + f2)(x) es O(max(| g1(x) |, | g2(x) |)) Teorema 3 Supongamos que f1(x) y f2(x) son ambas O(g(x)). Entonces, (f1 + f2)(x) es O(g(x)). Teorema 4 Supongamos que f1(x) es O(g1(x)) y f2(x) es O(g2(x)). Entonces, (f1f2)(x) es O(g1(x)g2(x)) Ejemplo 4 Se puede dar una estimación de O para la función factorial f (n) = n! se define como: n! = 1 · 2 · 3 . . . n Se puede estimar n! en notación O. n! = 1 · 2 · 3 . . . n ≤ n · n · n . . . n = nn entonces n! es O(nn) tomando C = 1 y k = 1 como testigos. ahora aplicando logaritmos en ambos miembros, tenemos: log n! ≤ log nn = n log n R.R 6 Entonces log n! es O(n log n) considerando C = 1 y k = 1 como testigos. Ejemplo 5 Sea n < 2n para todo entero positivo n. Aplicando logaritmos en base dos: log n < log 2n log n < n por tanto log n es O(n) considerando C = 1 y k = 1 como testigos. Ejemplo 6 R.R 7 Estimar O(f (n)) siendo f (n) = 3n log(n!) + (n2 + 3) log n donde n es un entero positivo. Estimamos 3n log(n!), 3n es O(n) y log(n!) es O(n log n) por tanto la estimación de 3n log(n!) es O(n2 log n). Ahora se estima (n2 + 3) log n como n2 + 3 < 2n2 para n > 2 entonces n2 + 3 es O(n2). entonces (n2 + 3) log n es O(n2 log n). Por tanto f (n) = 3n log(n!)+(n2 +3) log n es O(n2 log n) Ejemplo 7 Conseguir una estimación de f (x) = (x + 1) log(x2 + 1) + 3x2. Estimamos (x + 1) log(x2 + 1), x + 1 es O(x), ahora estimamos log(x2 + 1), podemos decir que x2 + 1 ≤ 2x2 cuando x > 1, por tanto: log(x2 + 1) ≤ log(2x2) = log 2 + log x2 = log 2 + 2 log x ≤ 3 log x si x > 2 entonces log(x2 + 1) es O(log x) Por tanto (x + 1) log(x2 + 1) es O(x log x). como 3x2 es O(x2) entones f (x) es O(max(x log x, x2)) como x log x ≤ x2 para x > 1, entonces f (x) es O(x2) 1.2. Funcion Ω Definición 3 Sean f y g dos funciones del conjunto de los enteros o de los reales en el conjunto de los números reales. Decimos que f (x) es Ω(g(x)) si existen dos constantes C y k tales que: | f (x) |≥ C | g(x) | R.R 8 siempre que x > k Ejemplo 8 Entonces si f (x) = 2x2 +2x+1 es Ω(x2) por que encontramos un C = 2 tal que f (x) = 2x2 + 2x + 1 ≥ 2x2, para x > 1, por tanto k = 1. R.R 1.3. 9 Funcion Θ Definición 4 Sean f y g dos funciones del conjunto de los enteros o de los reales en el conjunto de los números reales. Decimos que f (x) es Θ(g(x)) si f (x) es O(g(x)) y f (x) es Ω(g(x)) Cuando f (x) es Θ(g(x)) decimos que f (x) es del orden de g(x). Definición 5 Denotamos Θ(g(n)) al conjunto de funciones: Si existen c1 y c2 constantes y k tal que: Θ(g(n)) = {f (n) : 0 ≤ c1g(n) ≤ f (n) ≤ c2g(n), ∀n > k} Ejemplo 9 Podemos verificar que 12 n2 − 3n = Θ(n2) Planteamos la siguiente ecuación: 1 c1n2 ≤ n2 − 3n ≤ c2n2 2 R.R 10 Dividiendo por n2 c1 ≤ Si n ≥ 7 entonces c1 = 1 14 1 3 − ≤ c2 2 n y c2 = 1 2 Complejidad Terminologı́a O(1) Complejidad constante O(log n) Complejidad logarı́tmica O(n) Complejidad lineal O(n log n) Complejidad n log n O(nb ),donde b es un racional, b ≥ 1 Complejidad polinómica O(bn ), donde b > 1 Complejidad exponencial O(n!) Complejidad factorial R.R 1.4. 11 Tiempo de ejecución de un programa Denominamos T (n): tiempo de ejecución de un programa con una entra da de tamaño n. Se puede considerar T (n) como el número de instrucciones ejecutadas por un computador idealizado. Definición 6 1. T (n) se define como el tiempo de ejecución en el peor caso, es decir, el máximo valor de tiempo de ejecución de las n entradas de tamaño n. 2. Tpro(n) el valor medio del tiempo de ejecución de todas las entradas de tamaño n. Ejemplo 10 Sea el siguiente algoritmo obtener el tiempo de ejecución: entrada a1, a2, . . . , an (1) a := a1 (2) i := 1 (3)while (i ≤ n − 1) (4) i := i + 1 (5) if (a < ai)then (6) a := ai salida a 1. El algoritmo comienza con 3 operaciones, las dos asignaciones y el cálculo de n − 1. 2. Después entra al bucle que se repite n − 1 veces y en cada repetición se hace: R.R 12 Una comparación que determina si entrar o no en el bucle, una asignación a la i y una suma. una comparación de a con ai y una asignación que a veces se hace, pero que en el peor de los casos se hará. 3. Por tanto en el bucle se hacen 5(n − 1) operaciones. 4. Después hay una comparación de i valiendo n con n − 1 más la salida, para un total de 2 operaciones. Por tanto el tiempo de ejecución en el peor caso es: T (n) = 3 + 5(n − 1) + 2 = 5n Entonces podemos decir que T (n) es O(n) Forma rápida El algoritmo comienza con 3 operaciones, las dos asignaciones y el cálculo de n − 1 En este algoritmo las opciones 1,2 y 4 requieren de un tiempo O(1), el grupo if de 5 a 6 requiere un tiempo O(1), por tanto el cuerpo de 3 a 6 tarda un tiempo O(1) en cada iteración. Por tanto el número de iteraciones es n − 1, por regla del producto el tiempo del ciclo es O((n) × 1) es decir O(n). La última vez cuando i = n compara pero no entra, porque n no es menor que n−1, por tanto no se cuenta. Ejemplo 11 Considere el ordenamiento burbuja que ordena un arreglo de menor a mayor. R.R 13 (1) for i := 1 to n − 1 do (2) for j := n downto i + 1 do (3) if A[j − 1] > A[j] then begin (4) temp := A[j − 1] (5) A[j − 1] := A[j] (6) A[j] := temp (7) end (8) end 1. Las opciones 4,5 y 6 toman un tiempo O(1), por regla de la suma O(1, 1, 1) = O(1). 2. En cuanto al if requiere tiempo O(1). 3. El cuerpo de la proposición en el peor caso se ejecuta, lo que requerirı́a de un tiempo O(1) lineas de (3) a (6). 4. La regla general para un ciclo es que el tiempo de ejecución total resulta de sumar, en cada iteración, los tiempos empleados en ejecuctar el cuerpo del ciclo en esa iteración. 5. Para el ciclo de (2) a (6) el cuerpo tarda O(1) en cada iteración, el número de iteraciones es n − i de modo que por regla del producto el tiempo en este ciclo es O((n − 1) × 1) = O(n − i) 6. Por último el ciclo externo, la proposición (1) se ejecuta n − 1 veces, de manera que el tiempo total de ejecución R.R 14 es: T (n) = n−1 X (n − i) = i=1 n−1 X i=1 n− n−1 X i i=1 (n − 1)(n) 2 2 n(n − 1) n n = = − 2 2 2 = n(n − 1) − Entonces T (n) es O(n2) Observación 2 Por tanto para ejecutar el programa se necesita un tiempo proporcional al cuadrado del número de elementos que se van a ordenar. Ejemplo 12 El siguiente algoritmo obtiene de forma recursiva el factorial de un número n. function fact(n:integer):integer; (1)if n <= 1 then (2) fact:=1 (3)else (4) fact:=n*fact(n-1) (5)end El tiempo de ejecución para las lı́neas (1) y (2) es O(1) y R.R 15 para la lı́nea (4) es O(1) + T (n − 1) por tanto para ciertas constantes c y d, c + T (n − 1) si n > 1 T (n) = d si n ≤ 1 1. El tiempo de ejecución de T (n) = c+T (n−1), es por que c toma el valor de d, la función cuando llega a f act(1) o f act(0) entra por la primera condición. 2. Suponiendo que n > 2, se puede desarrollar T (n − 1) T (n) = c + T (n − 1) = c + c + T (n − 2) = 2c + T (n − 2) n > 2 3. Podemos obtener T (n − 2) y reemplazar. T (n) = 2c + T (n − 2) = 2c + c + T (n − 3) = 3c + T (n − 3) n > 3 4. En general T (n) = ic + T (n − i) n > i R.R 16 5. Por último si i = n − 1 T (n) = = = = ic + T (n − i) c(n − 1) + T (n − (n − 1)) c(n − 1) + T (1)) c(n − 1) + d Por tanto T (n) es O(n) 2. Relaciones de recuerrencia no homogéneas con coeficiente constante Sea an = c1an−1 + c2an−2 + · · · + ck an−k + F(n), donde F(n) no es nula y an = c1an−1 + c2an−2 + · · · + ck an−k es la relación de recurrencia homogénea asociada. Ejemplo 13 an = 2an−1 + 1 es una r.r no homogénea donde F(n)=1. Ejemplo 14 an = an−1 + 2n es una r.r no homogénea donde F(n)=2n. Ejemplo 15 an = an−1 + an−2 + n2 + n + 1 es una r.r no homogénea donde F(n)=n2 + n + 1. Teorema 5 (p) Si {an } es una solución particular de an = c1an−1 + c2an−2 + (p) (h) · · · + ck an−k + F(n) entonces toda la solución {an + an } (h) donde {an } es solución de la homogénea asociada an = c1an−1 + c2an−2 + · · · + ck an−k . R.R 2.1. 17 Raı́ces diferentes reales Teorema 6 Sean c1 y c2 números reales, supongamos que r2 − c1r − c2 = 0 tiene dos raı́ces reales distintas r1 y r2. Entonces, la sucesion {an} es una solución de la relación de recuerrencia an = c1an−1 + c2an−2 si y sólo si an = α1r1n + α2r2n para n = 0, 1, 2, . . . donde α1 y α2 son constantes. Ejemplo 16 Determinar todas las soluciones de an = 2an−1 +1 para a1 = 1 (esta es la relación de recurrencia de las torres de Hanoi) (p) sol. La solución de la relación de recurrencia es an = {an + (h) (h) an } donde an es la solución de la homogénea asociada y (p) an es la solución polinómica. Dada la recurrencia an = 2an−1 + 1, F(n)=1 estos son los pasos para resolverla: (h) Calculamos an resolviendo la ecuación homogénea asociada an = 2an−1, como hay un coeficiente, el de an−1 la ecuación caraterı́stica es r − 2 = 0 por tanto la raı́z r=2. (h) Entonces {an } = α2n (p) Ahora resolvemos an igualando F(n)=1 con un polino(p) mio de igual grado. entonces an = A se iguala con la constante A por que F(n) es igual a una constante 1. (p) El siguiente paso es el de reemplazar an = A en la recurrencia original (la no homogénea). Si reemplazamos an = A entonces nos queda: A = 2A + 1 resolvemos ésta ecuación y entonces A=-1. R.R 18 (p) (h) (p) (h) Entonces como an = {an + an } y an = −1 y an = α2n por lo tanto an = α2n −1 Esta es una solución general pero faltarı́a calcular el valor de α Ahora por último usamos el valor inicial para calcular el valor de α. Tomamos la solución general an = α2n − 1, Si a1 = 1, n=1 entonces 1 = α2 − 1, despejando α = 1 y por tanto una solución particular an = 2n − 1. Ejemplo 17 Determinar todas las soluciones de la relación de recurrencia an = 5an−1 − 6an−2 + 7n Solución. Hay que tener en cuenta que a veces en las relaciones de recurrencias no homogéneas no hay muchas condiciones iniciales y por lo tanto se debe recurrir al número de coeficientes de la homogénea asociada. La solución de la (p) (h) (h) relación de recurrencia es an = {an + an } donde an es la (p) solución de la homogénea asociada y an es la solución polinómica. Dada la recurrencia an = 5an−1 − 6an−2 + 7n, F (n) = 7n estos son los pasos para resolverla: (h) Calculamos an resolviendo la ecuación homogénea asociada an = 5an−1 −6an−2 como hay dos coeficientes, el de an−1 y el de an−2 la ecuación caraterı́stica es r2 −5r +6 = 0 por tanto la raı́ces son r1 = 3 y r2 = 2. Entonces (h) {an } = α13n + α22n (p) Ahora resolvemos an igualando F (n) = 7n con un po(p) linomio de igual grado. Entonces an = C7n se iguala R.R 19 con la constante C7n por que F(n) es igual a la constante elevada a la n, esto también con el fin de construir polinomios semejantes y ası́ poder calcular los coefientes. (p) El siguiente paso es el de reemplazar an = C7n en la recurrencia original (la no homogénea). Si reemplazamos an = C7n entonces nos queda: C7n = 5(C7n−1) − 6(C7n−2) + 7n resolvemos ésta ecuación: C7n = 5/7(C7n) − 6/49(C7n) + 7n C7n = 7n(5/7C − 6/49C + 1) C = 5/7C − 6/49C + 1 49C = 35C − 6C + 49 49C = 29C + 49 (p) C = 49/20 (h) (p) Entonces como an = {an + an } y an = (49/20)7n y (h) an = α13n + α22n por lo tanto an = α13n + α22n + (49/20)7n Esta es la solución general de {an}. Ejemplo 18 Muestre que la solución de la relación de recurrencia: an = an−1 + 2an−2 con a0 = 2 y a1 = 7 es: an = 3 · 2n − (−1)n Teorema 7 R.R 20 Sean c1, c2, . . . , ck reales, supongamos la ecuación caracterı́stica: rk − c1rk−1 − . . . − ck = 0 tiene k raı́ces distintas r1, r2, . . . , rk Entonces, una sucesión {an} es la solución de la relación de recurrencia: an = c1an−1 + c2an−2 + · · · + ck an−k si y sólo si, an = α1r1n + α2r2n + . . . + αk rkn para n = 0, 1, 2, . . . donde α1, α2, . . . , αk son constantes. Ejemplo 19 Determinar la solución de la relación de recurrencia: an = 6an−1 − 11an−2 + 6an−3 Con las condiciones iniciales a0 = 2, a1 = 5 y a2 = 15 Solución. r3 − 6r2 + 11r − 6 = 0 r3 − 6r2 + 11r − 6 = (r − 1)(r − 2)(r − 3) Por tanto la solución es: an = α11n + α22n + α33n R.R 21 2.2. Raı́ces reales iguales Teorema 8 Sean c1 y c2 números reales tales que c2 6= 0. Supongamos que r2 − c1r − c2 = 0 tiene una única raı́z r0. Una sucesión {an} es solución de la relación de recurrencia an = c1an−1 + c2an−2 si y sólo si, an = α1r0n + α2nr0n, para n = 0, 1, 2, . . . α1 y α1 son constantes. Ejemplo 20 Cuál es la solución de la recurrencia an = 6an−1 − 9an−2 para a0 = 1 y a1 = 6 Solución. La ecuación caracterı́stica es: r2 − 6r + 9 = 0 entonces r2 − 6r + 9 = 0 (r − 3)(r − 3) = 0 Entonces r0 = 3, por tanto la solución serı́a: an = α13n + α1n3n Debemos encontrar los valores de α1 y α2 R.R 22 2.3. Raı́ces complejas Teorema 9 (Teorema de Moivre) (r(cos θ + i sin θ))n = rn(cos(nθ) + i sin(nθ)) para n ≥ 0 Definición 7 Sea z = x + iy ∈ C, para z 6= 0 z = r(cos θ + i sin θ) y = tanθ x p r = x2 + y 2 ahora encontramos z n aplicando DeMoivre z n = rn(cos nθ + i sin nθ) R.R 23 Ejemplo 21 Encontrar la solución de la recurrencia: an = 2(an−1 − an−2), n ≥ 2 con a0 = 1, a1 = 2 La ecuación caracterı́stica es: r2 − 2r + 2 = 0 esta ecuación tiene raı́ces complejas: 1 ± i Por tanto la solución es: an = α1(1 + i)n + α2(1 − i)n 1 tanh θ = 1 π θ = = 45◦ 4 R.R 24 es importante tener en cuenta: sin(−θ) = − sin(θ) cos(−θ) = cos(θ) √ π π 1 + i = 2(cos( ) + i sin( )) 4 4 √ π π 1 − i = 2(cos(− ) + i sin(− )) 4 4 √ π π 1 − i = 2(cos( ) − i sin( )) 4 4 por DeMoivre √ n π π (1 + i) = ( 2) (cos(n ) + i sin(n )) 4 4 √ π π (1 − i)n = ( 2)n(cos(n ) − i sin(n )) 4 4 n Entonces como an = α1(1 + i)n + α2(1 − i)n √ √ π π π π an = α1 ( 2)n(cos(n ) + i sin(n )) +α2 ( 2)n(cos(n ) − i sin(n )) 4{z 4} 4{z 4} | | (1+i)n (1−i)n Agrupamos ası́: √ n √ n π π an = ( 2) (cos(n )) (α1 + α2) +( 2) (sin(n )) (α1 − α2)i 4 | {z } 4 | {z } k1 k2 √ n √ n π π an = ( 2) (cos(n ))k1 + ( 2) (sin(n ))k2 4 4 Ahora encontramos los valores de k1 y k2 R.R 25 para a0 = 1 √ 0 π π 1 = ( 2) (cos(0 ))k1 + ( 2) (sin(0 ))k2 4 4 1 = cos(0)k1 + sin(0)k2 1 = k1 √ 0 para a1 = 2 √ 1 π π 2 = ( 2) (cos( ))k1 + ( 2) (sin( ))k2 4 4 √ 1 √ 1 2 = 2( √ )k1 + 2( √ )k2 2 2 2 = k1 + k2 √ 1 Entonces k2 = 2 − k1 = 1 como k1 = 1 y k2 = 1 reemplazando en an nos queda: √ n π π an = ( 2) (cos(n ) + sin(n )) 4 4 Ejemplo 22 Encontrar la solución de la recurrencia an+2 + 4an = 0, n ≥ 0 con a0 = a1 = 1 Teorema 10 Supongamos que {an} es solución de la relación de recurrencia lineal no homogénea an = c1an−1 + c2an−2 + · · · + ck an−k + F (n), donde c1, c2, . . . ck son números reales y F (n) = (btnt +bt−1nt−1 +. . .+b1n+b0)S n esto es cuando F(n) es un polinomio multiplicando a S n donde S es una constante. Entonces existe dos tipos de solución: R.R 26 1. Si S no es una raı́z de la ecuación caracterı́stica de la homogénea asociada, entonces existe una solución particular de la forma: (ptnt + pt−1nt−1 + . . . + p1n + p0)S n 2. Cuando S es raı́z de dicha ecuación caracterı́stica y tiene multiplicidad m, existe una solución particular de la forma nm(ptnt + pt−1nt−1 + . . . + p1n + p0)S n Ejemplo 23 Sea la relación de recurrencia lineal no homogénea an = 6an−1 −9an−2 +F (n) obtener la solución particular cuando: • F (n) = n3n • F (n) = n22n • F (n) = (n2 + 1)3n Primero se obtiene la solución de la ecuación caracterı́stica de la recurrencia homogénea an = 6an−1 − 9an−2. La ecuación caracterı́stica r2 − 6r + 9 = 0 tiene como única raı́z 3 con multiplicidad 2. • Si F (n) = n3n entonces S=3, se revisa si cumple con el primer o segundo criterio del teorema 2, viendo si 3 es una raı́z de la homogénea asociada an = 6an−1 − 9an−2 y como vemos S=3 si es raı́z de la homogénea asociada, por tanto se aplica el segundo criterio dando una solución particular de la forma n2(p1n + p0)3n. R.R 27 • Si F (n) = n22n entonces S=2 y por tanto no es raı́z de la homogénea asociada an = 6an−1 − 9an−2 entonces se aplica el primer criterio del teorema 2 y por tanto la solución particular es (p2n2 + p1n + p0)2n. • Si F (n) = (n2 + 1)3n vemos que S=3 por lo tanto como S es raı́z de la homogénea asociada entonces la solución particular es: n2(p2n2 + p1n + p0)3n R.R 3. 28 Relaciones de recurrencia de divide y vencerás Supongamos que un algoritmo recursivo divide un problema de tamaño n en a subproblemas y que cada suproblema tiene tamaño n/b , sopongamos tambien que se requieren g(n) operaciones en lo que podrı́amos llamar la etapa de conquista y sea T (n) el número de operaciones necesarias para resolver el problema de tamaño n. Entonces se tiene que T satisface la relación de recurrencia T (n) = aT (n/b) + g(n) Solución de la recurrencia Método por cambio de variable (obtiene la solución de la recurrencia en términos de n) Método maestro (obtiene la solución en términos de O, Θ y Ω) Método de sustitución Método de iteración Cambio de variable Sea T (n) = a1T (n/2) + a2T (n/4) + . . . Convertir las ecuaciones anteriores en algo de la forma t0(k) = a · t0(k − c1) + b · t0(k − c2) + . . . Se resuelve el sistema en función de k Deshacer el cambio, y obtener el resultado en función de n R.R 29 el cambio de variable da la solución de la recurrencia y determina el θ del tiempo de ejecucuión. Cambios tı́picos n = 2k ; k = log2 n, n = 3k : k = log3 n n = 5k: k = n/5 Ejemplo 24 Resolver por cambio de variable la siguiente recurrencia: T (n) = 4T (n/2) + n para n > 3 con T(1)=1 y T(2)=6 Entonces usamos el reemplazo n = 2k T (2k ) = 4T (2k /2) + 2k T (2k ) = 4T (2k−1) + 2k Entonces se establece que T (2k ) = tk , por tanto tk = 4tk−1 + 2k {h} Resolvemos la no homogénea tk la función caracterı́stica de la homogénea es r − 4 = 0 por tanto r = 4, entonces una solución serı́a: thk = α14k thk = α1(2k )2 {p} ahora calculamos tk {p} entonces tk = C2k C2k = 4C2k−1 + 2k 4 C2k = 2k C + 2k 2 C = 2C + 1 C = −1 R.R 30 {p} Entonces tk = −2k ahora obtenemos la solución general: {h} {p} tk + tk = α1(2k )2 − 2k tk = α1(2k )2 − 2k hacemos el cambio de variable otra vez haciendo el reemplazo n = 2k T (n) = α1(n)2 − n Calculamos el valor de α1 con los valores iniciales, para T (1) = 1 1 = α1(1)2 − 1 α1 = 2 Luego T (n) = 2n2 − n es θ(n2) Corolario 1 Si el tiempo de ejecución de un algoritmo es Θ(g(n)) sii el tiempo de ejecución en el peor caso es O(g(n)) y en el mejor caso es Ω(g(n)). TEOREMA MAESTRO Sea T una función creciente que satisface la relación de recurrencia T (n) = aT (n/b) + cnd Siempre que n = bk , donde k es un entero positivo, a ≥ 1, b es un entero mayor que 1 y c y d son números reales tales que c > 0 y d ≥ 0, Entonces, si a < bd O(nd) T (n) si O(nd log n) si a = bd O(nlogb a) si a > bd R.R 31 Corolario 2 Si f (n) = Θ(nlogb a logk2 n) para k ≥ 0, entonces la recurrencia tiene como solución ası́: T (n) = Θ(nlogb a logk+1 n) 2 Aplicaciones. Ejemplo 25 Sea T (n) = T (n/2) + 2 entonces a = 1, b = 2, n = 2k y si analizamos g(n) = 2 · n0 d = 0, como a = bd −→ 1 = 20 entonces T (n) = O(n0 log n) −→ T (n) es O(log n). Ejemplo 26 Sea T (n) = 2T (n/2) + 2 entonces a = 2, b = 2, n = 2k y si analizamos g(n) = 2 · n0 d = 0, como a > bd −→ 2 > 20 entonces T (n) = O(nlogb a) −→ T (n) = O(nlob22) por lo tanto T (n) = O(n). Propiedades algoritmos Para todo real a > 0, b > 0, c > 0 y n a = blogb a, logc(ab) = logc a + logc b, logb an = n logb a, logb a = logc a logc b , logb(1/a) = − logb a, logb a = 1 loga b alogb n = nlogb a