Curso de Programaci - PowerPoint PPT Presentation

About This Presentation
Title:

Curso de Programaci

Description:

Title: Rob tica y Manufactura Avanzada Author: CINVESSTAV Last modified by: Arturo Guzman Created Date: 6/5/2006 5:54:34 PM Document presentation format – PowerPoint PPT presentation

Number of Views:62
Avg rating:3.0/5.0
Slides: 15
Provided by: CINVESSTAV
Category:

less

Transcript and Presenter's Notes

Title: Curso de Programaci


1
Curso de Programación Estructurada
Maestría en Robótica y Manufactura Avanzada
Dra. L. Abril Torres Méndez
Saltillo
  • Clase 3 Análisis y diseño de algoritmos

Periodo Sept.-Dic, 2010.
2
Relaciones Recurrentes
  • Una función recursiva contiene lo siguiente
  • 1. Caso base la condición inicial o base la
    cual define el primer (o los primeros pocos)
    elementos de una secuencia.
  • 2. Caso Inductivo (Recursivo) un paso
    inductivo en el cual los términos siguientes en
    la secuencia son definidos en función de los
    términos iniciales.

Una relación recurrente para una secuencia a1,
a2, a3, ... es una fórmula que relaciona cada
término ak con sus predecesores ak-1, ak-2, ...,
a k-i, donde i es un entero fijo y k es cualquier
entero mayor o igual que i. Las condiciones
iniciales para tal relación recurrente
especificarán los valores de a1, a2, a3, ...,
ai-1.
3
Una función recurrente es por ejemplo 1) s0
1 s1 2 2) s k sk-1
sk-2 Si deseamos calcular la recurrencia para
s10, obtenemos que es igual a144
4
Ejemplo 1
Si enumeramos los primeros valores de esta
secuencia tenemos K2 K1 1 0 1 1 K3
K2 2 1 2 3 K4 K3 3 3 3 6 K5
K4 4 6 4 10 Para una relación de
recurrencia, podemos ver que la secuencia está
dada por la fórmula (para toda n gt 1)

Kn 0 1 2 ... (n 1)
n(n 1)/2

5
Ejemplo 2 Torres de Hanoi
El objetivo de las Torres de Hanoi es
mover todos los discos de la primera estaca a la
tercera, siguiendo estas reglas 1. Solamente
un disco puede ser movido a la vez
(específicamente, el disco más arriba de
cualquier estaca). 2. En ningún momento, un
disco más grande puede ser colocado sobre uno más
pequeño.
6
Cuántos movimientos/discos?
Ir a la página para visualizar el juego de las
Torres de Hanoi http//www.psicoactiva.com/juegos
/hanoi/jg_hanoi.htm
7
Análisis
Número de discos vs. Número de
movimientos Secuencia 1, 3, 7, 15, 31, 63,
Razonamiento Para mover n-1 discos en la
estaca central o auxiliar se requieren Hn-1
movimientos. Luego se mueve el disco n en la
estaca 3 y hay que vaciar el resto de igual forma
con Hn-1 movimientos. Esto nos da la siguiente
relación recurrente
Hn 2Hn-1 1 El caso base para esta
relación es H 0 0, dado que si no hay discos no
hay movimientos!
8
Análisis
Para obtener una fórmula general (cerrada) para
Hn (no hay Hn en el lado derecho de la ecuación),
se realiza una sustitición repetida, como
sigue Hn 2Hn-1 1 2(2Hn-2 1) 1
22 Hn-2 2 1 22 (2Hn-3 1) 2 1
23 Hn-3 22 2 1 El patrón para esta
relación de recurrencia es Hn (2i Hn-i)
2i-1 2i-2 ... 22 21 20 Podemos
asignar n i (esto requiere de una prueba del
tipo inductiva) Hn (2n H0) 2n-1 2n-2
... 22 21 1 Sustituyendo H0 0, se
obtiene la fórmula
Hn 2n-1 2n-2 ... 22 21 1
Tarea (no entregar) Estudiar cómo se realiza una
prueba por inducción.
9
Ejercicios
Encontrar la fórmula general (cerrada) para las
siguientes relaciones recurrentes. (omitir la
prueba de inducción). a) Relación
recurrente a0 2
an 3an-1 b)
Relación recurrente a0 1
an 2an-1
1
10
Porqué nos interesa encontrar la relación de
recurrencia?
Una relación de recurrencia expresa el tiempo de
ejecución de un algoritmo recursivo. Esto incluye
cuántas llamadas recursivas son generadas en cada
nivel de recursividad, qué tanto del problema es
resuelto por cada llamada recursiva, y qué tanto
trabajo se realiza en cada nivel.
11
Algoritmo Calcular factorial de n
int factorial(int n) if (n lt 1)
return(1) else return(n
factorial(n-1)) Relación recurrente Caso
base T(1) a Inducción T(n) b T(n-1), for
n gt 1 Fórmula general T(1) a T(2) b T(1)
b a T(3) b T(2) b (b a) a
2b T(4) b T(3) b (a 2b) a 3b T(n)
a (n-1)b for all n gt 1
12
Fórmula cerrada del factorial de n?
Se puede calcular sólo una aproximación del
valor de n! con la siguiente fórmula
13
Tarea 2
  • Probar la función recurrente anterior para el
    algoritmo de cálculo de factorial.
  • Leer sobre los algoritmos de ordenamiento

14
Buen fin de semana
Write a Comment
User Comments (0)
About PowerShow.com