Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porLuis Ortega Campos Modificado hace 8 años
1
Solución a Ecuaciones de Recurrencia Dr. Rogelio Dávila Pérez División de Posgrado Universidad Autónoma de Guadalajara rdav90@gmail.com
2
Complejidad de programas Evalúe el orden del siguiente algoritmo: for i=1 to n for j=1 to i for k=1 to j x = x +1 endfor
3
Complejidad de programas Evalúe el orden del siguiente algoritmo: Exp2(a,n) { if( n == 1) return(a) ; m = n/2 power = exp2(a, m) power = power * power if (n es par) return(power) else return(power * a) }
4
Relaciones de recurrencia Def. Una relación de recurrencia es una fórmula que nos permite calcular los elementos de una secuencia, uno después de otro iniciando con uno o más valores. Suponga por ejemplo que deseamos generar una secuencia de números x 0, x 1, x 2,… por medio de: x n+1 = 3x n ( x 0 =1) Que nos genera la secuencia: 1, 3, 9, 27, 81, … 1 En 1202, regresando de Oriente, Fibonacci escribió su famoso trabajo. Liber Abaci, en el que introduce su famosa secuencia originada a partir de un problema relacionado con la reproducción de conejos.
5
Relaciones de recurrencia Ejemplo 2: Secuencia de Fibonacci 1 La secuencia de Fibonacci f 1, f 2, … se define por la ecuación de recurrencia: f n = f n-1 + f n-2, n≥3 y las condiciones iniciales: f 1 = f 2 = 1 La secuencia se genera como: 1, 1, 2, 3, 5, 8, 13, 21, 33, … 1 En 1202, regresando de Oriente, Fibonacci escribió su famoso trabajo. Liber Abaci, en el que introduce su famosa secuencia originada a partir de un problema relacionado con la reproducción de conejos.
6
Relaciones de recurrencia Problemas ejemplo: Resuelva la siguientes ecuaciones de recurrencia: (a)x n+1 = cx n ( c≥0; x 0 =1) (b)x n+1 = b n+1 x n ( x 0 given) (c)x n+1 = b n+1 x n + c n+1 ( x 0 given)
7
Relaciones de recurrencia Problema 1.Sea c n el término que denota el número de veces que la instrucción x=x+1, es ejecutada en el algoritmo: calcula(n) { if (n==1) return ; for i=1 to n x = x+1; calcula(n/2) }
8
Relaciones de recurrencia Solución Tenemos la condición inicial: c 1 = 0 ya que si n= 0 el algoritmo calcula simplemente hace return. Cuando n>1, la instrucción x=x+1 es ejecutada n veces y llama a calcula(n/2). Lo que ocasiona que x=x+1 sea ejecutado adicionalmente c [n/2] veces. Así obtenemos la siguiente ecuación de recurrencia: c n = n + c [n/2]
9
El problema es que para calcular el valor de la ecuación para cada número k, a partir de esta definición, tenemos que realizar k+c [k/2] pasos para computar c k. Es más conveniente manejar una expresión más explicita y fácil de calcular para c n. A este proceso se le denomina: “resolver la relación de recurrencia”. Resolver la relación de recurrencia para la secuencia {c n } consiste en dar una fórmula para c n que no contenga a c i para ningún elemento i. El problema es similar al de resolver una ecuación algebraica (ej. una ecuación cuadrática). La diferencia es que en una ecuación algebraica la solución es un número y en una relación de recurrencia, la solución es una secuencia. Resolviendo relaciones de recurrencia
10
La ecuación de recurrencia: x n+1 = cx n (c≥0, x 0 =1) Es una ecuación de primer orden ya que el valor nuevo x n+1, de la secuencia depende tan solo del elemento x n. La definición de la ecuación consta de dos partes: (i) el inicio: x 0 =1 (ii) valores de n a los que se aplica la ecuación, n≥0.
11
Resolviendo relaciones de recurrencia Una técnica llamada iteración o sustitución, es utilizada para resolver una relación de recurrencia en la cual el elemento n esta dado solamente en términos del elemento que inmediatamente le precede, el n-1. Ejemplo: Resuelva la siguiente ecuación de recurrencia: c n = n + c n-1, n ≥ 1
12
Resolviendo relaciones de recurrencia Solución Desarrollemos la ecuación: c n = n + c n-1 = n + [(n-1) + c n-2 ] = n + [(n-1) + [(n-2) + c n-3 ]] … = n + (n-1) + (n-2) + … + 2 + 1 + 0 Lo que nos lleva a la solución:
13
Resolviendo relaciones de recurrencia Ejercicio La ecuación de recurrencia: c n = n + c [n/2], n ≥ 1 es típica de las ecuaciones de recurrencia que describen el tiempo requerido para los algoritmos del tipo divide-y- vencerás. Resolver la ecuación.
14
Ejercicios 1.Utilice iteración para resolver las siguientes relaciones recurrentes: a.a n = a n-1 + 3, n > 1 ; a 1 = 2 b.a n = 2 na n-1, n > 0 ; a 0 = 1 2.Dado el siguiente algoritmo, evalúa el valor de a n. El número de multiplicaciones requerido para evaluar a n, es denotado como c n : exp1(a,n) { if( n == 1) return(a) ; m = n/2 return(exp1(a,m)*exp1(a, n-m)) } a. Explique como el algoritmo mostrado calcula a n. b. Encuentre la ecuación de recurrencia y las condiciones iniciales para la secuencia {c n }. c. Evalúe c2, c3 y c4. d. Resuelva la relación de recurrencia encontrada en el inciso b, para el caso en que n sea una potencia de 2.
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.