Sesión 5 - Desarrollo de Software y SIG

Download Report

Transcript Sesión 5 - Desarrollo de Software y SIG

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
GreedEx
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} 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;
}
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[] 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;
}
• 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 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é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
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: A1, A2
– 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” GreedEx
– 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} algVoraz ({int} problema)
{ {
candidatos)
{int}
candidatos
extraer (problema);
for ({int}
sol =={};
for ({int} sol = { };
(candidatos!={})
&& !(esSolucion(sol));
!(esSolucion(sol)); )
) {
{
(candidatos
!= { }) &&
int =
sig
= seleccionar(candidatos);
int sig
seleccionar(candidatos);
candidatos
= candidatos
– {sig};
candidatos
= candidatos
– {sig};
if (esValida(sol{sig}))
{
if (esValida(sol{sig}))
sol = sol{sig};
sol = sol{sig};
actualizar(candidatos,sig,problema);
}
}
}return sol;
} 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 OptimEx)
– Aprendizaje de la optimalidad:
• Mejorar la comparación entre técnicas exactas y
aproximadas
• Ampliar OptimEx
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”