1. Funciones de crecimiento Definición 1 Una función f cuyo

Anuncio
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
Descargar