La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Razonamiento Explícito y Experimentación en la Algoritmia

Presentaciones similares


Presentación del tema: "Razonamiento Explícito y Experimentación en la Algoritmia"— Transcripción de la presentación:

1 Razonamiento Explícito y Experimentación en la Algoritmia
J. Ángel Velázquez Iturbide Departamento de Lenguajes y Sistemas Informáticos Universidad Rey Juan Carlos

2 Reflexiones sobre la Docencia de la Algoritmia
J. Ángel Velázquez Iturbide Departamento de Lenguajes y Sistemas Informáticos Universidad Rey Juan Carlos

3 Jornada sobre Innovación e Investigación en la Algoritmia
Índice Introducción “Diseño grueso” de algoritmos “Diseño fino” de algoritmos Análisis de algoritmos Conclusiones Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

4 Jornada sobre Innovación e Investigación en la Algoritmia
1. Introducción Importancia de la Algoritmia: ACM Computing Curricula Troncalidad en planes de estudios españoles Algunas reflexiones basadas en mi experiencia investigadora y docente Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

5 2. “Diseño Grueso” de Algoritmos
Suele basarse en “técnicas de diseño”: Un esquema o patrón que puede aplicarse a una clase amplia de problemas Enfoque ingenieril Punto de vista docente: ayuda al alumno Técnicas más frecuentes: Divide y vencerás Algoritmos voraces Programación dinámica Búsqueda en espacios de estados en árbol Otras técnicas Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

6 2.1. Definición de las Técnicas de Diseño
Definiciones compuestas: Esquema de código Caracterización de los problemas: Tipos de datos Restricciones semánticas. P.ej. vuelta atrás: P(x1,...,xi+1)  P(x1,...,xi) o  P(x1,…,xi)   P(x1,...,xi+1) Metodologías de diseño Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

7 2.1. Definición de las Técnicas de Diseño
Confusiones frecuentes: Búsqueda exhaustiva vs. vuelta atrás Recursividad múltiple vs. programación dinámica: P.ej. números de Fibonacci Programación dinámica incluye: problema optimización satisface principio optimidad algoritmo directo con recursividad múltiple redundante optimización del algoritmo mediante tabulación Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

8 2.2. Metodologías de Diseño
Divide y vencerás: Aplicación del principio de inducción Vuelta atrás: diseñar el árbol de búsqueda, identificar las condiciones a comprobar incrementalmente en cada nodo, y decidir cómo se realizan dichas comprobaciones (normalmente con estructuras de datos auxiliares) la representación de los datos juega un papel fundamental Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

9 2.2. Metodologías de Diseño
Programación dinámica: Comprobar que el problema cumple el principio de optimidad Diseñar un algoritmo recursivo múltiple: resolver el problema en etapas (incrementalmente) Tabular el algoritmo anterior: Obtener un árbol de recursión Obtener el grafo de dependencia Determinar un orden lineal de cómputo Determinar el tamaño mínimo de la tabla necesaria Implementar un algoritmo iterativo a partir de (c) y (d) Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

10 2.2. Metodologías de Diseño
Problema de la mochila 0/1: ps=(3,6,9,5) bs=(7,2,8,4) c=15 Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

11 2.2. Metodologías de Diseño
Problema de la mochila 0/1: ps=(3,6,9,5) bs=(7,2,8,4) c=15 Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

12 2.2. Metodologías de Diseño
Problema de la mochila 0/1: ps=(3,6,9,5) bs=(7,2,8,4) c=15 Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

13 2.2. Metodologías de Diseño
Problema de la mochila 0/1: Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

14 2.3. Catalogaciones de Técnicas de Diseño
Problemas con las técnicas usuales: Distinto nivel de generalidad de las técnicas Incapacidad de incluir otras técnicas (p.ej. partición binaria o fuerza bruta) Propuesta no jerárquica (no permite agrupar y relacionar técnicas) Incapacidad de clasificar muchos algoritmos clásicos (p.ej. Euclides, de dispersión, etc.) Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

15 2.3. Catalogaciones de Técnicas de Diseño
Propuesta de Ananin Levitin: Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

16 2.3. Catalogaciones de Técnicas de Diseño
Propuesta de Alsuwaiyel: Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

17 2.4. Relaciones entre Técnicas de Diseño
Relaciones evidentes: Técnicas de búsqueda en espacios de estados en árbol Relaciones no evidentes: Programación dinámica vs. búsqueda en espacios de estados en árbol Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

18 2.4. Relaciones entre Técnicas de Diseño
Problema de la mochila 0/1: Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

19 2.4. Relaciones entre Técnicas de Diseño
Otras relaciones: (a) Búsqueda exhaustiva (b) Vuelta atrás (c) Programación dinámica (d) Algoritmos voraces Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

20 3. “Diseño Fino” de Algoritmos
Decisiones “menores” que influyen decisivamente en la forma del código final Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

21 3.1. Manipulación de Algoritmos y Mejora de su Eficiencia
Transformaciones de programas Ejemplo de equivalencia: if (cond) sentencia-then else sentencia-else if (!cond) sentencia-else else sentencia-then Ejemplo de optimización (Hörner): pn(x) = cnxn + cn-1xn-1 + … + c1x + c0 pn(x) = (…((cnx + cn-1)x + cn-2)x + … )x + c0 Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

22 3.2. Eliminación de la Recursividad
Operación implícita en la presentación del código final: Algoritmos voraces: conversión de la recursividad lineal en iteración Programación dinámica: eliminación de la recursividad múltiple Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

23 3.3. Visualizaciones del Comportamiento
Visualizaciones ad hoc para problemas Visualizaciones generales: Árbol de recursión Grafo de dependencia Visualizaciones para una técnica: Árboles de búsqueda Tablas Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

24 3.3. Visualizaciones del Comportamiento
n producir equívocos: Permutaciones: Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

25 3.4. Codificación de los Algoritmos
Problemas con algunos algoritmos: Codificación engorrosa (p.ej. Strassen) Salida compleja: Se piden todas las soluciones Problemas de optimización: valor y secuencia de decisiones Algoritmos voraces: ordenación previa Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

26 4. Análisis de Algoritmos
Complejidad asintótica: enfoque formal Tomar medidas de ejecución: enfoque experimental Medir tiempo de ejecución Planificación cuidadosa del experimento Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

27 Jornada sobre Innovación e Investigación en la Algoritmia
4.1. Análisis del Espacio Medida de la eficiencia citada pero frecuentemente ignorada Razón para mostrar algoritmos voraces en formato iterativo Compromisos espacio-tiempo: Algoritmos recursivos eficientes (p.ej. ordenación) Comprobaciones incrementales en vuelta atrás Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

28 4.2. Otras Medidas Experimentales de Rendimiento
Número de veces de ejecución de una operación clave Algoritmos recursivos: Número de llamadas recursivas Profundidad máxima de recursión Vuelta atrás: Número de nodos realmente generados Porcentaje sobre número potencial Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia

29 Jornada sobre Innovación e Investigación en la Algoritmia
5. Conclusiones Reflejado algunas reflexiones sobre la docencia de los algoritmos: problemas y soluciones Cuestiones no abordadas: Cuestiones pedagógicas y organizativas: laboratorios, aprendizaje activo, etc. Relación (y trasvases) con otras asignaturas Seminario de Investigación e Innovación en Tecnologías del Software Jornada sobre Innovación e Investigación en la Algoritmia


Descargar ppt "Razonamiento Explícito y Experimentación en la Algoritmia"

Presentaciones similares


Anuncios Google