Está en la página 1de 4

Práctica 13

Programación dinámica y Backtracking

M.I. Fco. Javier Rodríguez G <francisco.rodriguez@ingenieria.unam.edu>

Version 1.0, 20/01/21


Tabla de contenido
1. OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. PRE-LABORATORIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3. IN-LABORATORIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3.1. Programación dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3.2. Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4. POST-LABORATORIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4.1. Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4.2. Laberinto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5. ENTREGABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
6. BIBLIOGRAFÍA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Práctica 13

1. OBJETIVOS
Al finalizar la práctica:

• Habrás codificado programas simples utilizando la técnica de Programación dinámica


recursiva.

• Habrás codificado programas simples utilizando la técnica de Backtracking.

2. PRE-LABORATORIO
Intenta hacer en su casa todos los ejercicios de la sección IN-LABORATORIO para que el día
de la práctica llegue con dudas.

3. IN-LABORATORIO
Realiza los programas indicados. Para todos ellos utiliza, cuando sea necesario, los valores
vistos en clase. Donde esté indicado, n será un valor introducido por el usuario del programa.

3.1. Programación dinámica


1. Realiza un programa que devuelva el enésimo término de la serie de Fibonacci. Por
ejemplo, si n=8, entonces tu programa devolverá el valor 13; toma en cuenta que 1 < = n <
= 51. Utiliza ejemplo anexo fibo_para_terminar.c.

a. Primero escribe la función fibo_pd() y verifique que el programa funciona.

b. Después:

i. Comenta la línea 57 si consideras que te hace perder tiempo. Después la debes


reestablecer.

ii. Escribe una función de impresión y úsala en las líneas 40 y 44.

iii. Devuelve la memoria de la tabla (línea 46).

2. Captura y termina el programa "del cambio" con Programación dinámica (archivo


cambio_pd.c.pdf). Asegúrate que funciona y entrega los resultados correctos.

3. Luego, modifícalo de tal manera que el usuario decida cuándo salir, y mientras éste esté
dentro del programa podrá pedir varios "cambios". Cada vez que el usuario escoja un
cambio imprime la tabla y observa su evolución.

1
3.2. Backtracking

En tu función main() implementa un ciclo infinito. Cuando el usuario


 pida un cambio de -1, entonces el programa termina. Antes de salir
imprime la tabla.

3.2. Backtracking
1. Captura el programa "del cambio" con Backtracking (archivo cambio_bt_2020-2.c.pdf).
Verifica que entrega los resultados correctos y esperados.

2. Cambia el orden de los candidatos y observa el resultado.

4. POST-LABORATORIO

4.1. Backtracking
1. Modifica el programa de tal manera que entregue la solución óptima, esto es, que
devuelva un conjunto solución con la menor cantidad de monedas.

Tu programa deberá manejar dos conjuntos de candidatos: uno para la


cuenta corriente (A), y otro que irá almacenando la mejor solución (B).
 Cada vez que encuentre una mejor solución deberá copiar el conjunto
(A) en (B), y "limpiar" (A). Al finalizar, (B) tendrá el conjunto solución
óptimo.

4.2. Laberinto
1. Resuelva un laberinto con Backtracking. Utilice el código anexo a esta práctica.

5. ENTREGABLES
(Pend.)

6. BIBLIOGRAFÍA
Referencia del lenguage C
http://www.cplusplus.com/reference/

También podría gustarte