Está en la página 1de 3

Tarea 7: Programación Dinámica

Algoritmos y Complejidad

Fecha de publicación: Jueves 7 marzo 2024


Fecha de entrega: Viernes 19 abril 2024 (hasta las 23:59 hrs.)
Profesor: Dr. Francisco Javier Torres Reyes

DESCRIPCIÓN

NOTA: Deben hacer toda la tarea en su libreta, lo más limpio y clara posible (excepto los
problemas de programación). Después la escanean o le toman foto, con buena resolución, y
generan un PDF.

1. Escriban una función en C que imprima el tour óptimo obtenido por el algoritmo del Traveling
Salesperson Problem (algoritmo 3.11 del libro Foundations of Algorithms). Recuerden que dicho
tour se almacena en la matriz P. Deberán programar el algoritmo (en forma de función) para
que estén completamente seguros de que ésta funciona. Proporcionen una captura de
pantalla con la función, en donde se explique su funcionamiento por medio de comentarios.
También, proporcionen 2 capturas de pantalla donde muestren que su programa funciona
correctamente.

2. Implementen en su computadora el algoritmo del Traveling Salesperson Problem (algoritmo


3.11 del libro Foundations of Algorithms), utilizando programación dinámica, en lenguaje C/C++.
Incluyan los comentarios necesarios en su código para explicarlo. Una vez implementado realicen
lo siguiente:

a. Proporcionen una captura de pantalla con la función, en donde se explique su


funcionamiento por medio de comentarios.
b. Indiquen cuál es el tour óptimo para el siguiente grafo representado por la matriz W
(Proporcionen una captura de pantalla con el resultado)

c. Del resultado obtenido en el inciso anterior, demuestren a mano que realmente sea el tour
óptimo.
d. Usando la función para generar matrices de adyacencia que realizaron en la Tarea 6,
realicen una tabla en donde midan el tiempo que tarda el algoritmo conforme la n
aumenta. Ustedes definan los valores de n que consideren adecuados, el objetivo es
poder visualizar el comportamiento del algoritmo.
e. Indiquen cuál es el valor de n máximo que su programa acepta y cuánto tarda en
encontrar los tours óptimos. Proporcionen una explicación de lo que encontraron.
3. Implementen en C un algoritmo que permita encontrar el palíndromo más largo de una
cadena. Un palíndromo es una cadena no vacía que se puede leer igual en cualquier dirección,
por ejemplo, todas las cadenas de longitud 1, civic, racecar, y aibohphobia. Realicen un
algoritmo basado en programación dinámica que encuentre el palíndromo más largo de una
cadena. Por ejemplo, de la cadena character, el palíndromo más largo es carac.

a. Proporcionen una captura de pantalla con la función, que incluya los comentarios
suficientes para explicar el código.
b. Demuestren el funcionamiento de su algoritmo con la cadena character (proporcionen
una captura de pantalla donde muestren el resultado).
c. Proporcionen 5 capturas de pantalla más mostrando el resultado de al menos 5 cadenas
diferentes y de diversos tamaños.
d. Prueben su algoritmo con cadenas cada vez más grandes, ¿cuál es el tamaño de cadena
máximo que acepta su algoritmo que tarde un tiempo razonable? Realice una tabla con
diferentes tamaños para demostrar su respuesta.

FORMATO

- Encabezado: No poner portada, solo un encabezado al principio de su tarea con:


o Nombre
o Materia
o Fecha de entrega

- Contenido: Escribir las respuestas a cada una de las preguntas de la sección anterior. No
es necesario que escriban la pregunta nuevamente, solo indiquen claramente el número
de la pregunta.

ENTREGA

- El documento final deberá ser en formato PDF. Si no cuentan con convertidor de archivos,
en Internet pueden encontrar convertidores (como www.ilovepdf.com).

- El documento final debe tener un tamaño máximo de 2 MB, utilicen la función de


Compresión de la página www.ilovepdf.com para comprimir su archivo, solamente
asegúrense que se siga viendo bien su documento.

- El nombre de su documento deberá tener el formato:


S2024-AyC-T7_apellidos_nombres.pdf

- Envíen su tarea por Microsoft Teams, en chat privado

También podría gustarte