## PRÁCTICAS

La implementación es la tarea de convertir un algoritmo en un programa de computadora. Implementar, o simplemente programar, implica convertir una descripción detallada de un algoritmo y de las estructuras de datos que usa en un programa para una computadora dada.

Las prácticas contenidas en este Poli libro tienen la intención de que puedas ejercitar los conceptos revisados en las unidades, mediante la implementación de los diversos algoritmos contenidos en la unidad de aprendizaje por lo que se realizarán utilizando el lenguaje de programación C ANSI con el fin de homologar la implementación de las prácticas.

El análisis de los algoritmos será independiente de la computadora y el lenguaje de programación empleado. Es necesario considerar la cantidad de tiempo requerida para efectuar diversas operaciones y también es apropiado efectuar un análisis detallado de la cantidad de espacio
que consumen los algoritmos estudiados si se están considerando implementaciones específicas.

Para realizar el análisis de complejidad de los algoritmos, se analizarán las entradas del problema; si las entradas estarán limitadas a cierto subconjunto de todas las entradas posibles, se podrá efectuar un análisis de peor caso para ese subconjunto. Si se requiere un análisis de comportamiento promedio dependerá de conocer la probabilidad de que se presenten las diversas entradas.

Se presenta la tabla con la relación de las prácticas que aportan el 10% la calificación de cada unidad temática:

Práctica No. | Nombre de la práctica | Unidad temática
1 | Complejidad temporal y espacial de un algoritmo | I
2 | Algoritmos probabilísticos numéricos | I
3 | Algoritmos probabilísticos de selección y ordenamiento | I
4 | Implementación de la Transformada rápida de Fourier | II
5 | Cálculo de la subsecuencia común más larga | II
6 | El problema de la mochila entera | II
7 | Códigos de Huffman | II
8 | El problema de la mochila fraccionaria | II
9 | El algoritmo de Knuth-Morris-Pratt | II
10 | El problema del ciclo Hamiltoniano para entradas pequeñas | III
11 | El problema de la clique y su resolución por medio del algoritmo de Bron y Kerbosch | III
12 | El problema del Agente viajero y su resolución por medio de un algoritmo de aproximación | III

Reporte de práctica

El Reporte de las prácticas deberá incluir:

1. Portada.
2. Introducción (Marco teórico).
3. Planteamiento del problema.
4. Algoritmos (Descripción de la abstracción del problema y el algoritmo que da solución, apoyándose de pseudocódigo, diagramas y figuras).
5. Implementación de los algoritmos (De acuerdo con los algoritmos utilizados en la implementación del código en el lenguaje de programación ANSI C).
6. Resultados Experimentales (Actividades, verificación de la solución, pruebas y resultados de la práctica según lo solicitado).
7. Errores detectados (Si existe algún error detectado, el cuál no fue posible resolver o se desconoce el motivo y solo ocurre con ciertas condiciones es necesario describirlo).
8. Posibles mejoras (Describir posibles disminuciones de código en la implementación o otras posibles soluciones).
9. Plataforma experimental (Características del hardware, compilador, sistema operativo, entorno controlado, etc.)
10. Graficación de las funciones (Análisis detallado de la cantidad de tiempo y espacio que consumen los algoritmos estudiados si se están considerando implementaciones específicas)
11. Tiempos de CPU o tiempos de ejecución (Estimación del número real de segundos que un programa tardará en el peor caso o el caso promedio).
12. Conclusiones.
13. Anexo (Códigos fuente de funciones y algoritmos e instrucciones de compilación).
14. Bibliografía (En formato IEEE o APA).