Razonamiento Explícito y Experimentación en la Algoritmia J. Ángel Velázquez Iturbide...

28
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 [email protected]

Transcript of Razonamiento Explícito y Experimentación en la Algoritmia J. Ángel Velázquez Iturbide...

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

Razonamiento Explícito y Experimentación en la Algoritmia

J. Ángel Velázquez IturbideDepartamento de Lenguajes y Sistemas InformáticosUniversidad Rey Juan [email protected]

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

Reflexiones sobre la Docencia de la Algoritmia

J. Ángel Velázquez IturbideDepartamento de Lenguajes y Sistemas InformáticosUniversidad Rey Juan [email protected]

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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:

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

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.)

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

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:

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

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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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…