Análisis de algoritmos

Documentos relacionados
Análisis de algoritmos

Practica 05: El problema de las N-Reinas

Practica 04: Soluciones Recursivas

Estructuras de Datos. Practica 06: Codificación de Huffman

Practica 01: Evaluación de expresiones infijas

Análisis de algoritmos

Practica 03: Diccionario con hashing abierto

Practica 02: Simulaciones con el TAD Cola

Análisis de algoritmos

Practica 03: Uso de expresiones regulares en Python

Practica 03: Eliminación Gaussiana

Análisis de algoritmos

Practica 01:Prefijos, sufijos, subcadenasy operaciones con cadenas

Practica 07: Maquina de Turing

Practica 04:Conversión de AFN a AFD

Practica 06:Autómata de pila de una GLC

Practica 05: Limpieza de gramáticas libres de contexto

Práctica 01 - Preprocesamiento básico para un código fuente en lenguaje C Compiladores - Profr. Edgardo Adrián Franco Martínez

Encuadre de la Unidad de Aprendizaje

Laboratorio 02: Ejercicios de programación en C

Análisis de algoritmos

Práctica 03 Ejercicios con Lex

Tema 02: Algoritmia y pseudocódigo

Análisis de algoritmos

Ejercicio 05: Mapa conceptual: Estructuras de Datos Lineales (Pilas, Colas & Listas)

Laboratorio 03: Ejercicios de Programación con la estructura para (for)

Ejercicios 01: Diagramas de flujo y pseudocódigo

Practica 01: Programación en C bajo Linux y funciones

Tarea 3 Búsqueda por Interpolación y Extrapolación

METODOLOGÍA DE LA PROGRAMACIÓN. APLICACIONES EN BASIC, COBOL Y PASCAL ÍNDICE

Tema 14: Arreglos estáticos en C

Introducción a la Programación. Concepto de algoritmo. Algoritmos computacionales: pseudocódigo y diagramas de flujo. Programa.

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Proyecto final "Sistema de instrumentación virtual"

IN34A - Optimización

Practica 03: El convertidor analógico digital

Programa Regular. Programación y Bases de Datos es una materia obligatoria correspondiente al segundo año de la carrera de Bioingeniería.

Repaso 02: Apuntadores y manejo de memoria dinámica

01 Presentación del curso Investigación 1

Unidad III: Introducción a la Programación

Tema 05: Características de un instrumento de medición

Análisis de algoritmos

- Proyectos Organizacionales - - Química. Microemprendimiento. 6 to ECO. [Escribir texto]

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 7

2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

CURSO: INGENIERÍA DE TELECOMUNICACIONES TRABAJO COLABORATIVO 2 Director de Curso: Mg. Sixto Enrique Campaña Bastidas

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 8

Tema 3. Análisis de costes

Tema 08: TAD Árbol. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Índice general 7. Presentación 15

: Algorítmica y Estructura de Datos I

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO ESCUELA PREPARATORIA DE CD. SAHAGÚN NOMBRE DE LA ASIGNATURA: BIOLOGÍA BÁSICA SEMESTRE: PRIMERO.

Fundamentos de Informática 3. Construcción de Software

Ejercicios: Programación en C

Nombre de la asignatura : Programación III. Carrera : Ingeniería en Sistemas Computacionales. Clave de la asignatura : SCB-9319

MANUAL DEL TRABAJO RECEPCIONAL TSU

Tema 03: Programación estructurada

Subdirección Académica Instrumentación Didáctica para la Formación y Desarrollo de Competencias Profesionales Periodo escolar: Agosto Diciembre 2017

1. Ecuaciones de recurrencia

Metodología y Tecnología de la Programación. I.T. Informática de Gestión

Análisis de algoritmos

Guía práctica de estudio 4 Algoritmos de búsqueda parte 1

Tema 04: Lenguajes de programación y el lenguaje C

DESCRIPCIÓN OBJETIVOS DE LA ACTIVIDAD METODOLOGÍA DIARIO REFLEXIVO

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre

Diseño estructural y propuesta de actividades. Desarrollo de software, metodología de proyectos IT, licenciatura en informática o afines

NORMATIVO DE PRESENTACION DE LA TESIS DE GRADO ANTEPROYECTO PROYECTO

Tema: Introducción a la Programación Estructurada

Tema 12: El sistema operativo y los procesos

Transcripción:

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) Contenido Definición del problema Actividades Observaciones Reporte de práctica Rubrica de evaluación del reporte Entrega vía Web Fechas de Entrega

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) Definición del problema Con base en el ordenamiento obtenido a partir del archivo de entrada de la practica 0 que tiene 0,000,000 de números diferentes. Realizar la búsqueda de elementos bajo 3 métodos de búsqueda, realizar el análisis teórico y experimental de las complejidades; así como encontrar las cotas de los algoritmos. Búsqueda lineal o secuencial Búsqueda binaria o dicotómica Búsqueda en un árbol binario de búsqueda Implementación de las tres búsquedas con su variante de Threads 3 Compiladores (Análisis Léxico II - Edgardo A. Franco)

4 5 6 0 5 3 7 0 3 5 4 5 6 0 5 3 7 0 3 5 4 5 6 0 5 3 7 0 3 5 Análisis de algoritmos Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) Actividades. Programar en ANSI C, cada uno de los 3 algoritmos de búsqueda mencionados y su variante con hilos (Elegir entre y 4 Threads).. Adaptar los programas para que sean capaz de recibir un parámetro n que indica el numero de enteros a considerar para el espacio de búsqueda a partir de un archivo con un máximo 0,000,000 de números ordenados, en el caso del árbol binario de búsqueda, trabajar con el árbol resultante de la practica 0. 3. Realizar un análisis teórico de la complejidad temporal de cada algoritmo (Mejor, peor y medio; tal cual se implementara). 4 Compiladores (Análisis Léxico II - Edgardo A. Franco)

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) 4. Realizar un registro del tiempo para cada algoritmo y su variante con hilos buscando diferentes números en varios tamaños de problema: Los números A=[ 3486, 4700764, 38036, 63373, 636, 033545, 47445644, 530003, 450057883, 8764504, 80086, 5503, 5000, 4383650, 486, 8433457, 36083354, 048666, 4747085 y 0]. Considerar para tamaño de problema n primeramente los primeros 00, 000, 5000, 0000, 50000, 00000, 00000, 400000, 600000, 800000, 000000, 000000, 3000000, 4000000, 5000000, 6000000, 7000000, 8000000, 000000 y 0000000 elementos del arreglo. Registrar los tiempos de búsqueda registrados para cada n considerado de cada algoritmo y su variante de Hilos si a elegido desarrollarlos. Búsqueda binaria (Sin hilos) Número a buscar Tamaño de n Tiempo real 3486 000 0.3 s no 3486 35000.. s no 3486 75000.3 s si Compiladores (Análisis Léxico II - Edgardo A. Franco) Encontrado 5

TIEMPO (SEG) Análisis de algoritmos Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) 5. Graficar el comportamiento temporal de cada algoritmo, considerando el tiempo de búsqueda promedio de todos los números A[] en cada n. Tiempos de búsqueda binaria promedio para n 7000 6000 5000 4000 3000 000 000 0 0 5000 0000 5000 0000 5000 30000 35000 N Tiempo real 6. Graficar una comparativa de los 3 algoritmos y sus variantes con hilos considerando el tiempo promedio de búsqueda de cada uno de ellos para cada tamaño de problema n. 6

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) 7. Realizar una aproximación polinomial del comportamiento temporal (tiempo real promedio), de cada uno de los algoritmos probados según el punto 4. Encontrar para cada algoritmo un polinomio que refleje de mejor manera su comportamiento. 8. Mostrar gráficamente la comparativa de las aproximaciones de cada algoritmo y determinar si el comportamiento experimental se aproxima a lo esperado teóricamente.. Determine según sus pruebas y el análisis teórico del peor caso, cuanto le lleva a la computadora ejecutar cada paso básico de cada algoritmo. (Aproximar la función teórica a las aproximadas) 7

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) 0. Determine con base en el análisis teórico y la aproximación experimental obtenida cual será el tiempo de búsqueda de cada algoritmo para un tamaño n de 50000000, 00000000, 500000000, 000000000 y 5000000000. (Considere el tiempo obtenido en el punto para estimar a partir del análisis teórico del peor caso).. Indique las cotas O mayúscula para cada algoritmo con base en el análisis teórico del peor caso.. Indique las cotas O mayúscula para cada aproximación polinomial seleccionada y justifique. 8

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda). Finalmente responda a las siguientes preguntas: i. Cuál de los 3 algoritmos es más fácil de implementar? ii. Cuál de los 3 algoritmos es el más difícil de implementar? iii. Cuál de los 3 algoritmos es el más difícil de implementar en su variante con hilos? iv. Cuál de los 3 algoritmos en su variante con hilos resulto ser mas rápido? v. Cuál algoritmo tiene menor complejidad temporal? vi. Cuál algoritmo tiene mayor complejidad temporal? vii. El comportamiento experimental de los algoritmos era el esperado? Por que? viii. Sus resultados experimentales difieren mucho de los análisis teóricos que realizo? A que se debe? ix. Los resultados experimentales de las implementación con hilos de los algoritmos realmente tardaron F(t)/#hilos de su implementación sin hilos? x. Cuál es el % de mejora que tiene cada uno de los algoritmos en su variante con hilos? Es lo que esperabas? Por qué? xi. Existió un entorno controlado para realizar las pruebas experimentales? Cuál fue? xii. Si solo se realizará el análisis teórico de un algoritmo antes de implementarlo, podrías asegurar cual es el mejor? xiii. Qué tan difícil fue realizar el análisis teórico de cada algoritmo? xiv. Qué recomendaciones darían a nuevos equipos para realizar esta practica?

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) Observaciones El análisis teórico se realizara a priori (es decir antes de implementar cualquier algoritmo), por lo tanto el día de laboratorio deberán mostrar estos análisis. Utilizar solo ANSI C, los programas deberán de funcionar en Linux. Indique cual fue su plataforma experimental (Características del hardware, compilador, sistema operativo, entorno controlado, etc.) Se sugiere crear scripts que faciliten la experimentación. En el laboratorio mostrar el análisis teórico y funcionamiento de los algoritmos Autodocumentación del código Documentación de funciones y algoritmos Las variantes empleando hilos, deberá reportar como funcionan sus particiones de las búsquedas y los tiempos de búsqueda considerando el tiempo de CPU de la búsqueda de todo el programa y en cada hilo. Este análisis y conclusiones permitirán definir el % de mejora de la implementación con hilos. 0

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) Rubrica de evaluación del reporte Indicador Excelente Muy bien Bien Deficiente Construcción de párrafos Todos los párrafos incluyen una introducción, explicaciones o detalles y una conclusión Los párrafos son tomados de otras fuentes y no son originales. Los párrafos incluyen información relacionada pero no fueron generalmente bien organizados La estructura del párrafo no estaba clara y las oraciones no estaban generalmente relacionadas Redacción No hay errores de gramática, ortografía y puntuación y la redacción es coherentemente No hay errores de gramática, ortografía y puntuación, pero la redacción presenta incoherencias Pocos errores de gramática, ortografía y puntuación Muchos errores de gramática, ortografía y puntuación Cantidad de información Portada, Introducción, Planteamiento del problema, algoritmos e implementación, actividades y pruebas, errores detectados, posibles mejoras, conclusiones y anexos Todos los temas son tratados de manera clara y precisa, según lo solicitado. La mayoría de los temas son tratados de manera clara y precisa Dos temas no están tratados o están imprecisos y no cumplen lo solicitado. Tres o más temas no están tratados o están imprecisos y no cumplen lo solicitado. Calidad de la información La información está claramente relacionada con el tema principal y proporciona varias ideas secundarias y/o ejemplos La información da respuestas a las preguntas principales, y solo da algunos detalles y/o ejemplos La información da respuestas a las preguntas principales, pero no da detalles y/o ejemplos La información tiene poco o nada que ver con las preguntas planteadas. Algoritmos Los algoritmos dan solución apoyándose de pseudocódigo, diagramas y/o figuras en un lenguaje claro. La mayoría de los algoritmos dan solución apoyándose de pseudocódigo, pero diagramas y/o figuras. Los algoritmos son mencionados textualmente pero no se describen Los algoritmos no son expresados en el reporte. Organización La información está muy bien organizada con párrafos bien redactados y con subtítulos con estilos adecuados La información está organizada, pero no se distingue en estilos adecuados La información está organizada, pero los párrafos no están bien redactados La información proporcionada no parece estar organizada o es copiada de referencias externas de manera literal

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) Reporte de practica Portada Planteamiento del problema Actividades y Pruebas (Verificación de la solución, pruebas y resultados de la práctica según lo solicitado) Errores detectados (Si existe algún error detectado, el cuál no fue posible resolver o se desconoce el motivo y solo ocurre con ciertas condiciones es necesario describirlo) Anexo (Códigos fuente *con colores e instrucciones de compilación) Bibliografía (En formato IEEE)

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) Entrega vía Web Grupo 3CM 3CM3 Contraseña Analisis3cm analisis3cm3 En un solo archivo comprimido (ZIP, RAR, TAR, JAR o GZIP) Reporte (DOC, DOCX o PDF) Códigos fuente (.C,.H, etc.) Código documentado: Titulo, descripción, fecha, versión, autor. (Funciones y Algoritmos: Qué hace?, Cómo lo hace?, Qué recibe?, Qué devuelve?, Causa de errores?). OBSERVACIONES *NO enviar ejecutables o archivos innecesarios, las instrucciones de compilación van en el anexo del reporte. (Yo compilare los fuente). *NO enviar archivo de números 3

Practica 0 : Análisis temporal y notación de orden (Algoritmos de búsqueda) Fechas de entrega Demostración Laboratorio de Programación (07) 3CM Miércoles de septiembre o miércoles 6 de septiembre de 08. 3CM3 Lunes 7 de septiembre o lunes 4 de septiembre 08. Entrega de reporte y código En un solo archivo comprimido. Fecha y hora limite de entrega vía Web Miércoles 03 de octubre de 08 a las 3:5:5 hrs. 4 Compiladores (Análisis Léxico II - Edgardo A. Franco)