Nombre del curso: | Diseño y Análisis de algoritmos |
---|---|
Course Name: | |
Créditos: | 3 |
Profesor: |
Descripción
Presentar conceptos básicos del diseño y análisis de algoritmos. Al finalizar el curso, el estudiante debe ser capaz de aplicar técnicas de desarrollo de algoritmos como dividir y conquistar, programación dinámica, utilizar diversos algoritmos de búsqueda y analizar su complejidad en tiempo y en espacio.
– Semántica
- Operacional
- Axiomática
Semántica operacional de un lenguaje de comandos guardados (GCL) definida sobre una máquina abstracta simple. Semántica axiomática presentada como un modelo teórico del cual es instancia la semántica operacional.
– Complejidad
Se elige estimar el desempeño de algoritmos basado en estimaciones de peor caso.
Se suponen conocimientos de cálculo (uso de notación O).
Se suponen conocimientos de solución de ecuaciones de recurrencia (lineales o no -lineales reducibles a éstas mediante cambios de dominios).
– Derivación de algoritmos
- Algoritmos sin ciclos
- Algoritmos con ciclos
- Algoritmos recurrentes
Presentación y práctica de una metodología de desarrrollo de programas basada en especificaciones formales (pre- poscondiciones).
– Estrategias generales
- Divide y vencerás
- Programación dinámica
Presentación de estrategias generales aplicables en situaciones conocidas.
– Ruta óptima en grafos
- Algoritmos clásicos de optimización para ruteo óptimo en grafos
Ejemplo de problemas solucionables de manera óptima y conocida.
– Búsqueda en grafos
- Algoritmos A, A*
Solución genérica de problemas de búsqueda. Nivel introductorio.
– Intratabilidad
- P : NP
Conceptos fundamentales. Nivel introductorio.
Objetivos
– Modelar
- Especificar programas
- Conocer límites de la algorítmica
– Solucionar problemas de programación
- Diseñar Algoritmos
- Implementar algoritmos
- Documentar
– Razonar Formalmente
- Analizar algoritmos
- Verificar programas
– Trabajar en grupo
Enlaces de interés
Las siguientes referencias son parte de [Boh1992]:
Condiciones de inscripción