25
M.C. Meliza Contreras González 1

M.C. Meliza Contreras González 1. Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Embed Size (px)

Citation preview

Page 1: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

M.C. Meliza Contreras González

1

Page 2: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca el tamaño del problema progresivamente.

En el análisis, T(n) se expresa en función del tiempo para T(n-1), T(n-2)... Ecuaciones de recurrencia.

2

Page 3: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Hanoi (origen,pivote,destino,discos)si discos=1

mover(origen,destino)en otro caso

Hanoi (origen,destino,pivote,discos-1)

mover (origen,destino)Hanoi

(pivote,origen,destino,discos-1)

T(n)=2T(n-1)+c3

Page 4: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

En general, las ecuaciones de recurrencia tienen la forma:

t(n) = b Para 0 n n0

Casos baset(n) = f ( t(n-1), ..., t(n-k), n) en otro caso

4

Page 5: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

La ecuación de recurrencia es de la forma:a0t(n) + a1t(n-1) + ... + akt(n-k) = 0; ai constante

Caso sencillo: t(n) = x·t(n-1); t(0)= 1. Solución: t(n) = x·t(n-1) = x·x·t(n-2) = x3 t(n-3) = ... = xn·t(0)

t(n) = xn

5

Page 6: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Teorema fundamental del Álgebra

Todo polinomio p(x) de grado k posee k raíces de tal modo quep(x) = i=1,k (x-ri) donde ri son las soluciones de p(x)=0como p(x)=0 y x=ri y tn=xn entonces ri

n es una solución de la recurrencia

Toda combinación lineal de soluciones es también una soluciónxn = tn = i=1,k ciri

n donde c1, c2, ... cn son constantes

6

Page 7: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Si la ecuación de recurrencia tiene k llamados la elección del grado será xk-1

Por ejemplo, T(n)=T(n-1) + 3T(n-2)+5T(n-3)

Por lo que T(n)=x3

7

Page 8: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Si todas las raíces son distintas, es decir rirj entonces la solución viene dada por la expresión:

Donde los coeficientes ci se determinan a partir de las condiciones iniciales

T(n)=c1r1n+c2r2

n+…+ckrkn=Σciri

n

8

Page 9: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

T(n)=T(n-1)+T(n-2), n>=2 Condiciones iniciales T(0)=0, T(1)=1. Haciendo el cambio t(n)=x2

Se obtiene la ecuación característicax2=x+1

9

Page 10: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Esta ecuación de segundo grado se resuelve mediante la fórmula

Si el polinomio es de grado mayor a 2 las raíces se pueden obtener mediante división sintética

X=-bb2-4ac

2a

10

Page 11: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Quedando como raíces

Por tanto:22

r1=1+5

2

r1=1+5

2 22

5

2

r 2=1-

2

n

T(n)=c1 + c2

22

1+5

22 222

1-5

2

n

11

Page 12: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Para encontrar las constantes c1 y c2 se resuelve el sistema de ecuaciones planteado con las condiciones iniciales

T(0)=c1 + c2 =c1+c2=0

0

22

1+5

22 222

1-5

2

0

T(1)=c1 + c2 =1

1

22

1+5

22 222

1-5

2

1

12

Page 13: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Así c1=-c2=1/5 sustituyendo en la ecuación anterior resulta

T(0)= - (

n

22

1+5

22 222

1-5

2

n

1 5

1 5

n

13

Page 14: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

• Una recurrencia es no homogénea cuando la combinación lineal no es igual a 0

• a0tn + a1tn-1 +...+ aktn-k = bn·p(n)Donde b es constante y p(n) es un polinomio de

grado d• Solución: reducir al caso homogéneo:

Aplicando el polinomio característico (tn=xn)(a0xk + a1xk-1 + ... + ak)·(x-b)d+1 donde d es el grado de

p(n)Las constantes se determinan con las condiciones iniciales y con la propia recurrencia

• Ejemplos: • tn – 2·tn-1 = 3n •

• T(n) =

0 si n=0

2t(n-1) + 1 en otro caso

14

Page 15: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

T(n) =2t(n-1) + 1 T(0)=0, T(1)=1 En este caso b=1 y p(n)=1,

polinomio en n de grado 0. Se resuelve la ecuación

homogénea con el cambio T(n)=x resultando

X-2=0, agregando a este binomio el binomio (x-b)d+1

15

Page 16: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

(x-2)(x-1)0+1=(x-2)(x-1), así T(n) =c12n+c21n O2n

16

Page 17: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Supongamos que alguna de las raíces tiene multiplicidad m>1 entonces la ecuación característica se escribe:

En este caso la ecuación de recurrencia viene dada por la expresión

(x-r1)m(x-r2)…(x-rk-m+1)

Σcirni-m+1

i=m+1T(n)=Σcini-1r1

n+ i=1

m k

17

Page 18: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

• Ejemplo con raíces múltiples:tn = 2·tn-1 + n (a)Polinomio característico: (x-2)(x-1)2

Solución de la forma: tn = c12n + c21n + c3n1n (b)

Solución: (2n)

18

Page 19: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Método de cambio de variable Método maestro

19

Page 20: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

T(n) término de una recurrencia original Ti término de un nueva recurrencia obtenida de la

original mediante cambio de variable• Ejemplo:

t(n) =

a) n = 2i i=log2 n ; para transformarla en algo conocido hacemos:

ti = t(2i)

ti = t(2i) = 3t(2i-1) + 2i ti – 3ti-1 = 2i (x-2)(x-3)

ti = c1·3i + c22i como i = log2 n y clog n=nlog c

ti = c1nlog 3 + c2nlog 2 t(n) O(nlog 3), log23=1.5849

1 si n=1

3t(n/2) + n si n es potencia de 2, n>1

20

Page 21: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Provee cotas para las recurrencias de la forma:

T(n)=aT(n/b)+f(n) a>=1,b>1 y f(n) positiva. Describe el tiempo que un algoritmo divide

un problema de tamaño n en a subproblemas cada uno de tamaño n/b.

El costo de dividir el problema y combinar los resultados se describe con f(n)

21

Page 22: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

Si f(n)=O(n ) >0 T(N)=(n )

Si f(n)=(n ) T(N)=(n logn)

Si f(n)=Ώ(n ) >0 y af(n/b)<=cf(n)

T(N)=(f(n))

logba

logba-

logba

logba

logba+

22

Page 23: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

T(n)=9T(n/3)+n a=9,b=3, f(n)=n, n =(n2)

f(n)=O(n ), =1, f(n)=O(n)T(n)=(n2)

Caso 1

log39

log39-

23

Page 24: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

T(n)=T(2n/3)+1 a=1,b=3/2, f(n)=1,

n = n =n0=1,

f(n)= (n )=(1)

T(n)=(1logn)Caso 2

logba log3/21

logba

24

Page 25: M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca

T(n)=3T(n/4)+nlogn a=3,b=4, f(n)=nlogn,

n = n =O(n0.793), f(n)= Ώ(n )=Ώ(n), =0.2 af(n/b)=3(n/4)log(n/4) <=(3/4)nlogn=cf(n), c=3/4 T(n)=(nlogn)

Caso 3

logba log43

Log43+

25