Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSantos Rebolledo Modificado hace 9 años
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.