Razonamiento Explícito y Experimentación en la Algoritmia

Slides:



Advertisements
Presentaciones similares
EL DIARIO DEL PROFESOR DE PORLÁN
Advertisements

Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
Objetivos Desarrollar software funcional multi-modelo sobre distintas plataformas para el estudio de sistemas complejos de cómputo de alto rendimiento.
¿ Que es la complejidad de un algoritmo ?
Son problemas secuenciales: El problema se puede dividir en etapas. Definición: Método que permite determinar de manera eficiente las decisiones que optimizan.
COMPONENTIZACIÓN DE ALGORITMOS GENETICOS Y SU IMPLEMENTACIÓN EN UNA PLATAFORMA ABIERTA PARA APRENDIZAJE COMPUTACIONAL.
Investigación Algorítmica
Un proyecto para el aprendizaje de los modelos de líneas de espera y de simulación en el contexto del ABP Programa de Incentivación de la Innovación Docente.
UNIVERSIDAD LATINA (UNILA) II.- ANALISIS DE ALGORITMOS
Programación 1 Introducción
Universidad Autónoma San Francisco
Programación.
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
Metaheurística ACO Aplicada a Problemas de Planificación en Entornos Dinámicos de San Pedro M., Pandolfi D., Lasso M., Villagra A. Laboratorio de Tecnologías.
Modelos de Programación Entera - Heurísticas
APRENDIZAJE BASADO EN PROBLEMAS
Semana 5 Subprogramas..
Un estudio sobre la utilidad de la realización de prácticas de laboratorio en el proceso de aprendizaje y su influencia en los resultados de la evaluación.
David Araujo Díaz México. D.F. marzo del año 2005
COMPLEJIDAD COMPUTACIONAL Departamento de Educación Matemática Profesor: Carlos Aguilar Santana “La Matemática es el Alfabeto con el cual Dios ha Escrito.
Introducción al análisis de algoritmos

Como diseñar un grado en informática Jordi García, Fermín Sánchez, Ricard Gavaldà JENUI – Julio 2006.
Parte II. Algorítmica. 3. Algoritmos voraces.
Investigación de Operaciones (IO)
Análisis de algoritmos
Página 1 20/03/2005 Materia: Tecnología de la Información Curso: Profesora Ariana Rosenthal Tecnología de la Información Profesora Ariana Rosenthal Administración.
INVESTIGACION DE OPERACIONES
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Técnicas de Programación
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Parte II. Algorítmica. 4. Programación dinámica.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Parte I. Estructuras de Datos.
Análisis y Diseño de Algoritmos
ADAPTACIÓN DE LA ASIGNATURA TOXICOLOGÍA AL EEES MEDIANTE LA PARTICIPACIÓN DEL ALUMNADO EN EL ABORDAJE DE TEMAS DE INTERÉS TOXICOLÓGICO Y SU INCLUSIÓN EN.
INFORMATICA VII (Programación e implementación de sistemas)
Métodos de diseño de Algoritmos
Parte I. Estructuras de Datos.
Parte I. Estructuras de Datos.
CICLO DE VIDA Y NORMAALIZACION DE UN SISTEMA DE BASE DE DATOS
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Introducción a UML Departamento de Informática Universidad de Rancagua
Introducción a los Sistemas Inteligentes
Facultad de Ingeniería y Tecnologías Memoria de Grado Geolocalización de documentos en el marco GIS.
El diario del profesor Un recurso para la investigación en el aula Rafael Porlán y José Martín El diario es un instrumento útil para el registro, la descripción,
DISEÑAR Y ELABORAR ALGORITMOS Nombre: anayeli hernandez peralta Grado y grupo: 1 “3” Materia: Informática y computación Maestro: Ángel Buendía Turno: Vespertino.
DISEÑAR Y ELABORAR ALGORITMOS NOMBRE: LAURA PAEZ GARCIA GRADO Y GRUPO: 1 “3” MATERIA: INFORMÁTICA Y COMPUTACIÓN MAESTRO: ÁNGEL BUENDÍA TURNO: VESPERTINO.
Unidad V Recursión. Objetivos del Aprendizaje Explicar el concepto de recursión. Discutir las diferentes condiciones que deben ser satisfechas para que.
Programa Prometeo – Escuela Superior Politécnica de Chimborazo 1 Máster Universitario en Informática Interactiva y Multimedia Ángel Velázquez Sesión 5:
Conalep Coacalco Algoritmos Recursivos
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Introducción a los TADs
Ingeniería del Software I
Aplicación JAVA implementando Arboles de Decisión
Algoritmos.
METODOLOGÍA PARA LA PLANEACIÓN POR COMPETENCIAS
IV Jornadas de Innovación e Investigación Educativa , Universidad de Zaragoza Diseño de actividades de aprendizaje cooperativo en dos asignaturas.
PROGRAMACION DE APLICACIONES EN MEMORIA DEL COMPUTADOR = ALGORITMOS Y ESTRUCTURAS DE DATOS.
BASE DE DATOS. NOMBRE: Paula Andrea Bedoya Rojas. GRADO: 7.3 Institución educativa Débora Arango Pérez.
IV Jornadas de Innovación e Investigación Educativa , Universidad de Zaragoza Aplicación de nuevas metodologías docentes y de herramientas informatizadas.
ELO-329: Diseño y Programación Orientados a Objetos1 Proceso de Desarrollo de SW Agustín J. González ElO329: Diseño y Programación Orientados a Objeto.
Curso Ciencias Naturales Primaria “La enseñanza de Ciencias Naturales utilizando los materiales de laboratorio y recursos TIC” Lic.Leonardo Aón ETR Región.
Programación I Prof. Carolina Cols. Algoritmo es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.
Transcripción de la presentación:

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 angel.velazquez@urjc.es

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

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

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

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ó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

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

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

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

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: 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 á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

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

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

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

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

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

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

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

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

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