Razonamiento Explícito y Experimentación en la Algoritmia J. Ángel Velázquez Iturbide...
-
Upload
santos-rebolledo -
Category
Documents
-
view
10 -
download
1
Transcript of Razonamiento Explícito y Experimentación en la Algoritmia J. Ángel Velázquez Iturbide...
Razonamiento Explícito y Experimentación en la Algoritmia
J. Ángel Velázquez IturbideDepartamento de Lenguajes y Sistemas InformáticosUniversidad Rey Juan [email protected]
Reflexiones sobre la Docencia de la Algoritmia
J. Ángel Velázquez IturbideDepartamento de Lenguajes y Sistemas InformáticosUniversidad Rey Juan [email protected]
Seminario de Investigación e Innovación en Tecnologías del Software
Jornada sobre Innovación e Investigación en la Algoritmia
Índice
1. Introducción
2. “Diseño grueso” de algoritmos
3. “Diseño fino” de algoritmos
4. Análisis de algoritmos
5. Conclusiones
Seminario de Investigación e Innovación en Tecnologías del Software
Jornada sobre Innovación e Investigación en la Algoritmia
1. Introducción
Importancia de la Algoritmia:ACM Computing CurriculaTroncalidad en planes de estudios
españolesAlgunas 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
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
2.1. Definición de las Técnicas de Diseño
Definiciones compuestas:Esquema de códigoCaracterización de los problemas:
Tipos de datosRestricciones 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
2.1. Definición de las Técnicas de Diseño
Confusiones frecuentes:Búsqueda exhaustiva vs. vuelta atrásRecursividad múltiple vs. programación
dinámica:P.ej. números de FibonacciProgramación dinámica incluye:
problema optimización satisface principio optimidadalgoritmo directo con recursividad múltiple redundanteoptimizació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
2.2. Metodologías de Diseño
Programación dinámica:1. Comprobar que el problema cumple el principio
de optimidad
2. Diseñar un algoritmo recursivo múltiple: resolver el problema en etapas (incrementalmente)
3. Tabular el algoritmo anterior:a. Obtener un árbol de recursión
b. Obtener el grafo de dependencia
c. Determinar un orden lineal de cómputo
d. Determinar el tamaño mínimo de la tabla necesaria
e. 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
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
contrariocasoenpspimbspimmáx
pspsipimpim
ii
i
),1(),,1((
),1(),(
0),1( pnm
Seminario de Investigación e Innovación en Tecnologías del Software
Jornada sobre Innovación e Investigación en la Algoritmia
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
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
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
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
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
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
2.4. Relaciones entre Técnicas de Diseño
Relaciones evidentes:Técnicas de búsqueda en espacios de
estados en árbolRelaciones 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
2.4. Relaciones entre Técnicas de Diseño
Problema de la mochila 0/1:
contrariocasoenpspimbspimmáx
pspsipimpim
ii
i
),1(),,1((
),1(),(
0),1( pnm
Seminario de Investigación e Innovación en Tecnologías del Software
Jornada sobre Innovación e Investigación en la Algoritmia
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
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
3.1. Manipulación de Algoritmos y Mejora de su Eficiencia
Transformaciones de programasEjemplo 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
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ónProgramació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
3.3. Visualizaciones del Comportamiento
Visualizaciones ad hoc para problemasVisualizaciones generales:
Árbol de recursiónGrafo de dependencia
Visualizaciones para una técnica:Árboles de búsquedaTablas
Seminario de Investigación e Innovación en Tecnologías del Software
Jornada sobre Innovación e Investigación en la Algoritmia
3.3. Visualizaciones del Comportamiento
n producir equívocos:Permutaciones:
(x1,x2,x3)
(x1)
( )
i = 1
i = 3
i = 2
(x1,x2)
(x1,x2,x3)
(x1)
( )
(x1,x2)
Seminario de Investigación e Innovación en Tecnologías del Software
Jornada sobre Innovación e Investigación en la Algoritmia
3.4. Codificación de los Algoritmos
Problemas con algunos algoritmos:Codificación engorrosa (p.ej. Strassen)Salida compleja:
Se piden todas las solucionesProblemas de optimización: valor y secuencia
de decisionesAlgoritmos 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
4. Análisis de Algoritmos
Complejidad asintótica: enfoque formalTomar medidas de ejecución: enfoque
experimentalMedir tiempo de ejecuciónPlanificació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
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
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 recursivasProfundidad máxima de recursión
Vuelta atrás:Número de nodos realmente generadosPorcentaje 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
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…