Programa Prometeo Escuela Superior Politcnica de Chimborazo 1
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 1 Sesión 5: Enseñanza de los algoritmos Ángel Velázquez Universidad Rey Juan Carlos España Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 2 Objetivos de la sesión 5 • Ilustrar muchos de los temas de investigación mediante asignaturas de algoritmos: – Taxonomías educativas y alineamiento – Informática educativa – Modelos conceptuales – Modelos mentales (malentendidos) Seminario “Enseñanza de la Programación”
Índice • • • Programa Prometeo – Escuela Superior Politécnica de Chimborazo 3 Planteamiento de la asignatura Objetivos de aprendizaje Visualización de la recursividad Instrucción de los algoritmos voraces Asignatura de algoritmos avanzados Asignatura de programación avanzada Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 4 Planteamiento de la asignatura Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 5 Planteamiento de la asignatura • Tres planteamientos de una asignatura de algoritmos: – Basado en estructuras de datos: • Algoritmos de manipulación – Basado en problemas: • Ordenación • Grafos • … – Basado en técnicas de diseño: • Divide y vencerás • Vuelta atrás • … Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 6 Planteamiento de la asignatura • Contenidos comunes: – Análisis de complejidad: • En profundidad variable – Algunos algoritmos de ordenación: • Por mezcla • Rápida – Algunos algoritmos de grafos: • Kruskal y Prim • Dijsktra • Floyd Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 7 Objetivos de aprendizaje Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 8 Objetivos de aprendizaje • Ejemplo de una asignatura “Diseño y Análisis de Algoritmos”, 3º curso • Temario: 1. 2. 3. 4. Introducción Análisis de eficiencia Optimización de algoritmos Introducción a la técnicas de diseño de algoritmos 5. Divide y vencerás 6. Algoritmos voraces 7. Vuelta atrás Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 9 Objetivos de aprendizaje • Objetivos generales de la asignatura: Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 10 Objetivos de aprendizaje • Objetivos del tema 1 (introducción): Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 11 Objetivos de aprendizaje • Objetivos del tema 2 (eficiencia): Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 12 Objetivos de aprendizaje • Objetivos del tema 3 (optimización): Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 13 Objetivos de aprendizaje • Objetivos del tema 4 (introducción a las técnicas de diseño): Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 14 Objetivos de aprendizaje • Objetivos del tema 5 (divide y vencerás): Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 15 Objetivos de aprendizaje • Objetivos del tema 6 (algoritmos voraces): Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 16 Objetivos de aprendizaje • Objetivos del tema 7 (vuelta atrás): Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 17 Objetivos de aprendizaje • Algunas notas: – No se espera alcanzar el nivel de creación en ningún tema, sino el de aplicación: • Soluciones generales para ecuaciones recurrentes (varias, divide y vencerás) • Esquemas de código (eliminación de recursividad lineal, memorización, divide y vencerás, vuelta atrás para una solución, todas y óptima) • Esquemas de árbol de búsqueda (permutaciones, subconjunto) • Metodologías de desarrollo (eliminación de la recursividad múltiple redundante) • Explicitar otras decisiones de diseño (estructuras de datos auxiliares y comprobaciones en vuelta atrás) Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 18 Objetivos de aprendizaje • Algunas notas: – No son obligatorias todas las prácticas – Repensar el tema de algoritmos voraces: • Aburrido – Uso de software educativo: • Sistema de visualización de la recursividad Srec • Sistema de experimentación con algoritmos voraces Greed. Ex Seminario “Enseñanza de la Programación”
Evaluación Programa Prometeo – Escuela Superior Politécnica de Chimborazo 19 • Cinco prácticas: 1. 2. 3. 4. 5. Introducción Eliminación de recursividad redundante Divide y vencerás Experimentación con algoritmos voraces Vuelta atrás • Examen final Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 20 Visualización de la recursividad Seminario “Enseñanza de la Programación”
Sistema SRec Programa Prometeo – Escuela Superior Politécnica de Chimborazo 21 • Recursividad: – Construcción fundamental en muchos algoritmos • Sistema de visualización de la recursividad (SRec) Seminario “Enseñanza de la Programación”
Sistema SRec • Tres vistas: – Árbol de recursión – Pila de control – “Traza” Seminario “Enseñanza de la Programación” Programa Prometeo – Escuela Superior Politécnica de Chimborazo 22
Sistema SRec Programa Prometeo – Escuela Superior Politécnica de Chimborazo 23 • Técnica de divide y vencerás: Seminario “Enseñanza de la Programación”
Sistema SRec Programa Prometeo – Escuela Superior Politécnica de Chimborazo 24 • Técnica de divide y vencerás: Seminario “Enseñanza de la Programación”
Sistema SRec Programa Prometeo – Escuela Superior Politécnica de Chimborazo 25 • Técnica de programación dinámica: – Análisis de redundancia: Seminario “Enseñanza de la Programación”
Sistema SRec Programa Prometeo – Escuela Superior Politécnica de Chimborazo 26 • Trabajos futuros: – Revisión de la interfaz de usuario – Mejora y simplificación de las vistas – Ampliación para soportar algunas técnicas de diseño Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 27 Instrucción de los algoritmos voraces Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 28 Aprendizaje de algoritmos voraces • Técnica de diseño de algoritmos para resolver problemas de optimización • Esquema de programación: public static {int} alg. Voraz ({int} candidatos) { for ({int} sol = {}; (candidatos!={}) && !(es. Solucion(sol)); ) { int sig = seleccionar(candidatos); candidatos = candidatos – {sig}; if (es. Valida(sol {sig})) sol = sol {sig}; } return sol; } Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 29 Aprendizaje de algoritmos voraces • Aprendizaje tradicional, pasivo • Ejemplo (problema de selección de actividades): Una solución válida: {3, 8, 2} Una solución óptima: {9, 5, 4, 2} • Función de selección óptima: – selección en orden creciente de finalización • Demostración de optimidad Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 30 Aprendizaje de algoritmos voraces • Código: public static boolean[] select. Activs (int[] c, int[] f) { boolean[ ] s = new boolean [c. length]; s[0] = true; int i = 0; for (int j = 1 ; j < c. length ; j++){ if (<< activities i, j do not overlap >>){ s[j] = true; i = j; } else s[j] = false; } return s; } • Orden de complejidad: O(n) Con la ordenación: O(nlogn) Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 31 Esfuerzos preliminares • Instrucción de algoritmos voraces: – Aprendizaje pasivo, como recetas – Difícil realizar actividades • Sistemas de visualización de algoritmos: – Análisis de figuras de libros para varias técnicas de diseño de algoritmos: • No hay representación común para los algoritmos voraces Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 32 Método experimental y Greed. Ex • Método experimental: – Descubrir cuáles son las funciones de selección óptimas para cierto problema: • partimos de un algoritmo voraz genérico • identificamos y aplicamos diversas funciones de selección con el algoritmo genérico, y • evaluamos la optimalidad de estas funciones de selección – Funciones “razonables” para el problema de selección de actividades: • Por inicio / • Por fin / • Por duración /
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 33 Método experimental y Greed. Ex • Aplicar las funciones de selección a ciertos datos de entrada:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 34 Método experimental y Greed. Ex • Aplicación a varios conjuntos de datos: – Acumulación de evidencia – Contrajemplos
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 35 Método experimental y Greed. Ex • Sistema Greed. Ex:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 36 Método experimental y Greed. Ex • Usabilidad de Greed. Ex: – 5 evaluaciones de usuario final: • Resultados generales (1 -5): – Atención al apoyo a actividades docentes: • Exportación de tablas y figuras Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 37 Evaluación del método experimental • Características de los productos generados (informes): – Problema: prácticas mal hechas, incluso malentendidos • Factores distintivos de los informes: 1. Propuesta de estrategias subóptimas 2. Incoherencia del razonamiento 3. Criterio de optimización adicional: • • Maximizar ocupación de la sala Minimizar tiempo de espera 4. Propuesta dependiente de los datos de entrada Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 38 Evaluación del método experimental • Categorías encontradas: – Categorías viables: A 1, A 2 – Categorías casi viables: B – Categorías inviables: C, D, E, F Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 39 Evaluación del método experimental • Evolución de las categorías: Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 40 Método instruccional • Método instruccional final: – Método experimental – “Ayudante interactivo” Greed. Ex – Apuntes – Integración en la asignatura Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 41 Asignatura de algoritmos avanzados Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 42 Objetivos de la asignatura • Asignatura “Algoritmos Avanzados”, 4º curso • Temario: 1. 2. 3. 4. 5. 6. 7. 8. Introducción Algoritmos voraces Algoritmos aproximados Vuelta atrás Ramificación y acotación Eliminación de recursividad redundante Programación dinámica Algoritmos aproximados Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 43 Objetivos de la asignatura • Algunas notas: – Algoritmos de búsqueda: • Repaso y aplicación de vuelta atrás a problemas de optimización • Ampliación de ramificación y poda • Panorama de otras variantes: – ¿Sistematización? – Programación dinámica: • No se incluye el diseño de las ecuaciones recursivas: – Sólo eliminación de recursividad y determinación de decisiones Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 44 Objetivos de la asignatura • Algunas notas: – Espiralado: • Reafirmar y profundizar en técnicas conocidas • Presentar técnicas relacionadas (o necesarias) • Mismo problema para varias prácticas – Prácticas: • Alineación completa de prácticas con lo explicado: – Sin examen final • Pueden repetir las prácticas para corregir sus errores, subiendo su nota: – Aprendizaje y motivación – Trabajos de ampliación: • Trabajos voluntarios para profundizar • No reevaluables Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 45 Objetivos de la asignatura • Cinco prácticas: 1. 2. 3. 4. 5. Algoritmos voraces Vuelta atrás y ramificación y acotación Eliminación de recursividad redundante Programación dinámica Algoritmos aproximados • Cuatro trabajos de ampliación: 1. Implementación eficiente de algoritmos voraces 2. Analizar e implementar un algoritmo de vuelta atrás 3. Generar soluciones únicas 4. Analizar e implementar un algoritmo de programación dinámica Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 46 Modelos conceptuales de algoritmos voraces • Preguntas: ¿porqué en unos algoritmos se ordenan los candidatos y en otros no? ¿es posible adaptarlos al esquema? • Conclusión: – No todos los algoritmos voraces conocen sus candidatos desde el principio y sin cambiar • Consecuencias sobre modelos conceptuales: – Esquema voraz más general – Explicitación del tratamiento eficaz de la selección de candidatos: • ordenación, • … Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 47 Modelos conceptuales de algoritmos voraces • Nuevo esquema, más general: – Estudio y diseño del nuevo modelo – ¡Ya estaba descubierto! public static {int} alg. Voraz ({int} problema) { public static {int} alg. Voraz ({int} candidatos) { {int} candidatos = extraer (problema); for ({int} sol = {}; for ({int} sol = { }; (candidatos!={}) && !(es. Solucion(sol)); ) { (candidatos != { }) && !(es. Solucion(sol)); ) { int sig = seleccionar(candidatos); candidatos = candidatos – {sig}; if (es. Valida(sol {sig})) { if (es. Valida(sol {sig})) sol = sol {sig}; actualizar(candidatos, sig, problema); } } } return sol; } } Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 48 Modelos conceptuales de algoritmos voraces • Ordenación de candidatos: – Problema práctico de difícil comprensión: • ¿Usar aprendizaje por descubrimiento? • Otros casos de selección eficiente de los candidatos: – Trabajo de ampliación Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 49 Experimentación con optimalidad • Experimentación con la optimalidad de los algoritmos aproximados: – Comparación con algoritmos óptimos y subóptimos: • Diseñados con varias técnicas de diseño • Falta de curiosidad de algunos alumnos por resultados contradictorios Seminario “Enseñanza de la Programación”
Trabajos futuros Programa Prometeo – Escuela Superior Politécnica de Chimborazo 50 • Posibles retos futuros: – Aprendizaje por descubrimiento de la ordenación de candidatos en algoritmos voraces – Sistematización de técnicas de búsqueda: • Consultar bibliografía de IA y optimización – Aprendizaje de la corrección: • • Diseño de contraejemplos (todas las técnicas) Principio de vuelta atrás Principio de optimalidad (programación dinámica) Ampliación de correctores automáticos (tipo Optim. Ex) – Aprendizaje de la optimalidad: • Mejorar la comparación entre técnicas exactas y aproximadas • Ampliar Optim. Ex Seminario “Enseñanza de la Programación” • ¿Otras técnicas: algoritmo probabilísticos…?
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 51 Asignatura de programación avanzada Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 52 Objetivos de la asignatura • Asignatura “Programación Avanzada”, 4º curso, ESPOCH • Temario: 1. 2. 3. 4. 5. 6. Introducción Recursividad Eliminación de la recursividad Eficiencia de algoritmos Divide y vencerás Vuelta atrás Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 53 Objetivos de la asignatura • Retos: – Recursividad: • Aplicar conocimientos didácticos • Evaluación de dificultades de alumnos • Aprendizaje de técnicas de divide y vencerás y de vuelta atrás – Eficiencia de algoritmos: • Conseguir aprendizaje más activo Seminario “Enseñanza de la Programación”
- Slides: 53