Programa Prometeo – Escuela Superior Politécnica de Chimborazo 1 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Sesión 5: Enseñanza de los algoritmos Ángel Velázquez Universidad Rey Juan Carlos España
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 2 Seminario “Enseñanza de la Programación” 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)
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 3 Seminario “Enseñanza de la Programación” Índice 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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 4 Seminario “Enseñanza de la Programación” Planteamiento de la asignatura
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 5 Seminario “Enseñanza de la Programación” 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 …
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 6 Seminario “Enseñanza de la Programación” 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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 7 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 8 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Ejemplo de una asignatura “Diseño y Análisis de Algoritmos”, 3º curso Temario: 1.Introducción 2.Análisis de eficiencia 3.Optimización de algoritmos 4.Introducción a la técnicas de diseño de algoritmos 5.Divide y vencerás 6.Algoritmos voraces 7.Vuelta atrás
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 9 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Objetivos generales de la asignatura:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 10 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Objetivos del tema 1 (introducción):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 11 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Objetivos del tema 2 (eficiencia):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 12 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Objetivos del tema 3 (optimización):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 13 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Objetivos del tema 4 (introducción a las técnicas de diseño):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 14 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Objetivos del tema 5 (divide y vencerás):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 15 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Objetivos del tema 6 (algoritmos voraces):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 16 Seminario “Enseñanza de la Programación” Objetivos de aprendizaje Objetivos del tema 7 (vuelta atrás):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 17 Seminario “Enseñanza de la Programación” 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)
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 18 Seminario “Enseñanza de la Programación” 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 GreedEx
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 19 Seminario “Enseñanza de la Programación” Evaluación Cinco prácticas: 1.Introducción 2.Eliminación de recursividad redundante 3.Divide y vencerás 4.Experimentación con algoritmos voraces 5.Vuelta atrás Examen final
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 20 Seminario “Enseñanza de la Programación” Visualización de la recursividad
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 21 Seminario “Enseñanza de la Programación” Sistema SRec Recursividad: –Construcción fundamental en muchos algoritmos Sistema de visualización de la recursividad (SRec)
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 22 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 23 Sistema SRec Técnica de divide y vencerás: Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 24 Sistema SRec Técnica de divide y vencerás: Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 25 Sistema SRec Técnica de programación dinámica: –Análisis de redundancia: Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 26 Sistema SRec 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 Seminario “Enseñanza de la Programación” Instrucción de los algoritmos voraces
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 28 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Técnica de diseño de algoritmos para resolver problemas de optimización Esquema de programación: Aprendizaje de algoritmos voraces public static {int} algVoraz ({int} candidatos) { for ({int} sol = {}; (candidatos!={}) && !(esSolucion(sol)); ) { int sig = seleccionar(candidatos); candidatos = candidatos – {sig}; if (esValida(sol {sig})) sol = sol {sig}; } return sol; }
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 29 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez 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 Aprendizaje de algoritmos voraces
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 30 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Código: Orden de complejidad: O(n) Con la ordenación: O(nlogn) Aprendizaje de algoritmos voraces public static boolean[] selectActivs (int[] c, int[] f) { boolean[ ] s = new boolean [c.length]; s[0] = true; int i = 0; for (int j = 1 ; j >){ s[j] = true; i = j; } else s[j] = false; } return s; } public static boolean[] selectActivs (int[] c, int[] f) { boolean[ ] s = new boolean [c.length]; s[0] = true; int i = 0; for (int j = 1 ; j >){ s[j] = true; i = j; } else s[j] = false; } return s; }
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 31 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez 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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 32 Método experimental y GreedEx 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 GreedEx Aplicar las funciones de selección a ciertos datos de entrada:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 34 Método experimental y GreedEx 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 GreedEx Sistema GreedEx:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 36 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Método experimental y GreedEx Usabilidad de GreedEx: –5 evaluaciones de usuario final: Resultados generales (1-5): –Atención al apoyo a actividades docentes: Exportación de tablas y figuras
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 37 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez 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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 38 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Evaluación del método experimental Categorías encontradas: –Categorías viables: A1, A2 –Categorías casi viables: B –Categorías inviables: C, D, E, F
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 39 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Evaluación del método experimental Evolución de las categorías:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 40 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Método instruccional Método instruccional final: –Método experimental –“Ayudante interactivo” GreedEx –Apuntes –Integración en la asignatura
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 41 Seminario “Enseñanza de la Programación” Asignatura de algoritmos avanzados
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 42 Seminario “Enseñanza de la Programación” Objetivos de la asignatura Asignatura “Algoritmos Avanzados”, 4º curso Temario: 1.Introducción 2.Algoritmos voraces 3.Algoritmos aproximados 4.Vuelta atrás 5.Ramificación y acotación 6.Eliminación de recursividad redundante 7.Programación dinámica 8.Algoritmos aproximados
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 43 Seminario “Enseñanza de la Programación” 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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 44 Seminario “Enseñanza de la Programación” 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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 45 Seminario “Enseñanza de la Programación” Objetivos de la asignatura Cinco prácticas: 1.Algoritmos voraces 2.Vuelta atrás y ramificación y acotación 3.Eliminación de recursividad redundante 4.Programación dinámica 5.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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 46 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez 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, …
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 47 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Modelos conceptuales de algoritmos voraces Nuevo esquema, más general: –Estudio y diseño del nuevo modelo –¡Ya estaba descubierto! public static {int} algVoraz ({int} candidatos) { for ({int} sol = {}; (candidatos!={}) && !(esSolucion(sol)); ) { int sig = seleccionar(candidatos); candidatos = candidatos – {sig}; if (esValida(sol {sig})) sol = sol {sig}; } return sol; } public static {int} algVoraz ({int} problema) { {int} candidatos = extraer (problema); for ({int} sol = { }; (candidatos != { }) && !(esSolucion(sol)); ) { int sig = seleccionar(candidatos); candidatos = candidatos – {sig}; if (esValida(sol {sig})) { sol = sol {sig}; actualizar(candidatos,sig,problema); } return sol; }
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 48 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez 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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 49 Seminario “Enseñanza de la Programación” 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
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 50 Seminario “Enseñanza de la Programación” Trabajos futuros 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 OptimEx) –Aprendizaje de la optimalidad: Mejorar la comparación entre técnicas exactas y aproximadas Ampliar OptimEx ¿Otras técnicas: algoritmo probabilísticos…?
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 51 Seminario “Enseñanza de la Programación” Asignatura de programación avanzada
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 52 Seminario “Enseñanza de la Programación” Objetivos de la asignatura Asignatura “Programación Avanzada”, 4º curso, ESPOCH Temario: 1.Introducción 2.Recursividad 3.Eliminación de la recursividad 4.Eficiencia de algoritmos 5.Divide y vencerás 6.Vuelta atrás
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 53 Seminario “Enseñanza de la Programación” 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