Programa Prometeo – Escuela Superior Politécnica de Chimborazo1
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 CarlosEspaña
Programa Prometeo – Escuela Superior Politécnica de Chimborazo2
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 Chimborazo3
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 Chimborazo4
Seminario “Enseñanza de la Programación”
Planteamiento de la asignatura
Programa Prometeo – Escuela Superior Politécnica de Chimborazo5
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 Chimborazo6
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 Chimborazo7
Seminario “Enseñanza de la Programación”
Objetivos de aprendizaje
Programa Prometeo – Escuela Superior Politécnica de Chimborazo8
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ón2. Análisis de eficiencia3. Optimización de algoritmos4. Introducción a la técnicas de diseño de
algoritmos5. Divide y vencerás6. Algoritmos voraces7. Vuelta atrás
Programa Prometeo – Escuela Superior Politécnica de Chimborazo9
Seminario “Enseñanza de la Programación”
Objetivos de aprendizaje• Objetivos generales de la asignatura:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo10
Seminario “Enseñanza de la Programación”
Objetivos de aprendizaje• Objetivos del tema 1 (introducción):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo11
Seminario “Enseñanza de la Programación”
Objetivos de aprendizaje• Objetivos del tema 2 (eficiencia):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo12
Seminario “Enseñanza de la Programación”
Objetivos de aprendizaje• Objetivos del tema 3 (optimización):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo13
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 Chimborazo14
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 Chimborazo15
Seminario “Enseñanza de la Programación”
Objetivos de aprendizaje• Objetivos del tema 6 (algoritmos voraces):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo16
Seminario “Enseñanza de la Programación”
Objetivos de aprendizaje• Objetivos del tema 7 (vuelta atrás):
Programa Prometeo – Escuela Superior Politécnica de Chimborazo17
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 Chimborazo18
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 Chimborazo19
Seminario “Enseñanza de la Programación”
Evaluación• Cinco prácticas:
1. Introducción2. Eliminación de recursividad redundante3. Divide y vencerás4. Experimentación con algoritmos voraces5. Vuelta atrás
• Examen final
Programa Prometeo – Escuela Superior Politécnica de Chimborazo20
Seminario “Enseñanza de la Programación”
Visualización de la recursividad
Programa Prometeo – Escuela Superior Politécnica de Chimborazo21
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 Chimborazo22
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 Chimborazo23
Sistema SRec• Técnica de divide y vencerás:
Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo24
Sistema SRec• Técnica de divide y vencerás:
Seminario “Enseñanza de la Programación”
Programa Prometeo – Escuela Superior Politécnica de Chimborazo25
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 Chimborazo26
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 Chimborazo27
Seminario “Enseñanza de la Programación”
Instrucción de los algoritmos voraces
Programa Prometeo – Escuela Superior Politécnica de Chimborazo28
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 Chimborazo29
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 Chimborazo30
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 < c.length ; j++){ if (<< activities i, j do not overlap >>){ 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 < c.length ; j++){ if (<< activities i, j do not overlap >>){ s[j] = true; i = j; } else s[j] = false; } return s;}
Programa Prometeo – Escuela Superior Politécnica de Chimborazo31
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 Chimborazo32Mé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 Chimborazo33Método experimental y GreedEx
• Aplicar las funciones de selección a ciertos datos de entrada:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo34Método experimental y GreedEx
• Aplicación a varios conjuntos de datos:– Acumulación de evidencia– Contrajemplos
Programa Prometeo – Escuela Superior Politécnica de Chimborazo35Método experimental y GreedEx
• Sistema GreedEx:
Programa Prometeo – Escuela Superior Politécnica de Chimborazo36
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 Chimborazo37
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óptimas2.Incoherencia del razonamiento3.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 Chimborazo38
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 Chimborazo39
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 Chimborazo40
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 Chimborazo41
Seminario “Enseñanza de la Programación”
Asignatura de algoritmos avanzados
Programa Prometeo – Escuela Superior Politécnica de Chimborazo42
Seminario “Enseñanza de la Programación”
Objetivos de la asignatura• Asignatura “Algoritmos Avanzados”, 4º curso• Temario:
1. Introducción2. Algoritmos voraces3. Algoritmos aproximados4. Vuelta atrás5. Ramificación y acotación6. Eliminación de recursividad redundante7. Programación dinámica8. Algoritmos aproximados
Programa Prometeo – Escuela Superior Politécnica de Chimborazo43
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 Chimborazo44
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 Chimborazo45
Seminario “Enseñanza de la Programación”
Objetivos de la asignatura• Cinco prácticas:
1. Algoritmos voraces2. Vuelta atrás y ramificación y acotación3. Eliminación de recursividad redundante4. Programación dinámica5. Algoritmos aproximados
• Cuatro trabajos de ampliación:1. Implementación eficiente de algoritmos voraces2. Analizar e implementar un algoritmo de vuelta
atrás3. Generar soluciones únicas4. Analizar e implementar un algoritmo de
programación dinámica
Programa Prometeo – Escuela Superior Politécnica de Chimborazo46
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 Chimborazo47
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 Chimborazo48
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 Chimborazo49
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 Chimborazo50
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 Chimborazo51
Seminario “Enseñanza de la Programación”
Asignatura de programación avanzada
Programa Prometeo – Escuela Superior Politécnica de Chimborazo52
Seminario “Enseñanza de la Programación”
Objetivos de la asignatura• Asignatura “Programación Avanzada”, 4º
curso, ESPOCH• Temario:
1. Introducción2. Recursividad3. Eliminación de la recursividad4. Eficiencia de algoritmos5. Divide y vencerás6. Vuelta atrás
Programa Prometeo – Escuela Superior Politécnica de Chimborazo53
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