CORPORACIÓN UNIVERSITARIA DE CIENCIA Y DESARROLLO FACULTAD DE INGENIERÍA INFORMATICA ÁREA: IDENTIFICACIÓN DE LA ASIGNATURA ESPECIFICA NOMBRE DE LA ASIGNATURA: ANÁLISIS DE ALGORITMOS CÓDIGO DE LA ASIGNATURA: 2069 SEMESTRE: VI INTENSIDAD: 32 Horas MODALIDAD: PRERREQUISITO: CRÉDITOS: TEÓRICA: 2 Trabajo Independiente: X 64 Horas PRÁCTICA: ESTRUCTURA DE DATOS FINALIDAD DE CURSO Este curso da un tratamiento profundo de análisis de complejidad. Ayudan a motivar y desarrollar el tema varios algoritmos de búsqueda y ordenamientos, así como métodos de espacios de búsqueda del área de Inteligencia Artificial y estructuras de archivos utilizados en sistemas de bases de datos. Se discuten clases de complejidad, así como la naturaleza de la NP-completez e intratabilidad. Esto lleva a una discusión de computabilidad y de la máquina universal de Turing. Se discuten algunos problemas asociados con algoritmos paralelos OBJETIVO GENERAL Analizar la eficiencia de diversos algoritmos para resolver una variedad de problemas, principalmente no numéricos. Enseñar al alumno a diseñar y analizar nuevos algoritmos. CONTENIDO 1. Introducción y conceptos básicos ( 4 horas) Se establecen los conceptos principales con los cuales se mide un algoritmo y se presentan los distintos modelos de computabilidad que se utilizan para evaluar la calidad de un algoritmo. 1.1 Problemas y algoritmos 1.2 Complejidad: Como se mide la eficiencia de un algoritmo? Tiempo y Espacio. Peor caso, caso promedio. Modelo de un computador y sus medidas de complejidad. 1.3 Modelos de cómputo 1.4 Modelo Universal de la Máquina de Turing 1.5 Problemas de complejidad polinomial 2. Complejidad en ordenamientos (16 horas) Se regresa a los algoritmos de ordenamientos ya vistos y se examinan detenidamente las medidas de complejidad de los mismos. Se introducen nuevos tipos de algoritmos que, a pesar de no garantizar la correctez de la solución, presentan medidas de "eficiencia" que en su comportamiento promedio resultan ser mejores que aquéllos cuyas cotas máximas, de ser cumplidas, resultan ser poco eficientes. CORPORACIÓN UNIVERSITARIA DE CIENCIA Y DESARROLLO FACULTAD DE INGENIERÍA INFORMATICA 2.1 Distintos tipos de ordenamientos (intercambio, inserción, selección, mezcla, por particiones). Cotas mínimas en ordenamientos. Cotas óptimas. 2.2 Notación. Medidas de Orden. Solución de Recurrencias. Funciones Generatrices. Cálculos asintóticos. Manipulación de big-O. 2.3 Paradigmas: Técnicas para el diseño de algoritmos: Búsqueda exhaustiva, heurísticas, algoritmos probabilísticos, avaricia (greedy), dividir para reinar, programación dinámica, inducción. En cada caso, revisión de problemas característicos y de un mismo problema resuelto con cada técnica. 2.4 Conceptos de algoritmos relajados, de aproximación, probabilísticos y heurísticos para la obtención de soluciones "adecuadas". 3. Problemas que involucran sistemas complejos Se presentan métodos para representar y realizar búsquedas en gráficas. Los algoritmos de gráficas, generalmente de una complejidad considerable, ponen al descubierto mucha información respecto a la estructura de la gráfica. Estos algoritmos son importantes en cuanto a que se muestran estrategias de optimización que logran abatir la complejidad natural de los algoritmos típicos. (20 horas) 3.1 Estructuras. 3.2 Colas y particiones 3.3 Ordenamientos parciales: Algoritmos de ordenamiento: Quicksort, Mergesort, Heapsort, [Bucket sort, Radix sort]. Algoritmos de selección: Max-Min, k-ésimo. Colas de Prioridad: heaps clásicas, [heaps binomiales]. 3.4 Manipulacion de conjuntos : Operaciones usuales: buscar, insertar, eliminar, modificar, unir, recorrer, etc. Implementaciones. Vectores de bits. Arreglos: desordenados y ordenados. Arboles: binarios, AVL, 2-3, [óptimos, balanceo heurístico,] en memoria secundaria (árboles B). [Skip lists.] Arboles digitales: tries, Patricia. Hashing: encadenado, abierto, [perfecto,] en memoria secundaria (hashing lineal). Union-find. 3.5 Transmisión de la información 3.6 Distribución de flujo. 3.7 Algoritmos en Grafos (4.5 horas): Definiciones. Propiedades básicas. Arboles cobertores de costo mínimo. Búsqueda en grafos. Caminos mínimos. Clausura transitiva. [Biconectividad. Flujo máximo.] 3.8 Búsqueda en texto (3 horas) :Búsqueda de strings: autómata finito, algoritmos de Knuth-Morris-Pratt, Boyer-Moore, [Rabin-Karp, Shift-Or]. [Búsqueda multipatrón.] Arboles de sufijos. [Búsqueda aproximada.] 4. Problemas que involucran números (4 horas) Con este tipo de problemas se introduce al estudiante a la necesidad de manejar aritmética de precisión y magnitud arbitrarias en software a través de una representación fija de unos cuantos dígitos en el hardware. Esto apunta en dos direcciones: primero, las operaciones aritméticas básicas de suma, resta, multiplicación y división se vuelven "caras" y su costo se incrementa en razón del número de dígitos en sus argumentos. En segundo lugar, se debe cambiar el modelo para medir la complejidad midiendo el tamaño de los datos en términos del número de dígitos necesario para representarlos. A este modelo se le conoce como el modelo de costeo en bits. 4.1 Números exponenciales. 4.2 Números comunes. 4.3 Números Primos. 4.4 Números secretos. 4.5 Números auténticos. 4.6 Números al azar. CORPORACIÓN UNIVERSITARIA DE CIENCIA Y DESARROLLO FACULTAD DE INGENIERÍA INFORMATICA 4.7 Transformando números. 5. Algoritmos Paralelos (8 horas) Introducción al desarrollo de algoritmos para arquitecturas paralelas y distribuidas, ilustrando como el paralelismo puede proporcionar un aceleramiento substancial en comparación con ejecución secuencial. 5.1 Paralelismo, la PRAM y otros modelos. 5.2 Algunos algorimos PRAM y el manejo de conflictos en la escritura. 5.3 Mezclas y ordenamientos. 5.4 Un algoritmo con componentesa paralelos conectados. 5.5 Cotas mínimas. 6. La clase NP y su relación con la clase P (4 horas) Se regresa al concepto de algoritmos a través de la luz de los algoritmos ya presentados. Se distingue entre las teorías de Computabilidad y Complejidad. La primera de ellas se pregunta ¿Cuándo hay las condiciones para que esto se compute? ¿Se puede computar? mientras que la segunda se pregunta ¿Qué tan barato puede calcularse esto?¿Qué tan difícil es calcularlo? 6.1 Nacimiento del concepto de NP-Completez. 6.2 Determinar las jerarquías de complejidad. 6.3 ¿Qué es un algoritmo? 6.4 ¿Qué es una prueba? 7. La Teoría de la NP SE da una introducción a la teoría de la NP-Completez, de tal manera que se puedan identificar aquellos problemas que pertenecen a esta clase, para optar por algoritmos aproximados para resolver problemas de este tipo. Introduce también la noción de reducibilidad para algunos problemas NP-Completos a problemas polinomiales. Finalmente da una perspectiva de la teoría de Computabilidad. (8 horas) 7.1 Transformaciones polinomiales. 7.2 Probando resultados NP-completos: 3-SAT y reducciones; problemas básicos NPcompletos 7.3 Problemas no decidibles 7.4 Solución de problemas difíciles. 7.5 Computabilidad: Máquinas de Turing y Universales. COMPETENCIAS A DESARROLLAR EN LOS ESTUDIANTES * Sustentar los fundamentos de la Ingeniería Informática y argumentar acerca de los alcances que tiene como profesión. * Tener una cultura informática, entender el lenguaje y funcionamiento del software y del hardware básico que le sirva de referencia para iniciar el conocimiento más profundo de la Ingeniería Informática. ACTIVIDADES (DINAMICAS) QUE FACILITEN EL APREDIZAJE Consultas frecuentes de la actualidad informática a través del Internet, la prensa y las revistas especializadas en el tema. Exposiciones adelantadas por los estudiantes sobre ejemplos cotidianos de aplicaciones de la Ingeniería Informática. CORPORACIÓN UNIVERSITARIA DE CIENCIA Y DESARROLLO FACULTAD DE INGENIERÍA INFORMATICA METODOLOGIA Explicación de temas por parte del profesor, participación de los alumnos en la parte deductiva del material, estimular discusión en grupos de trabajo y solución individual y en grupos de problemas y ejercicios Se efectuarán dos (2) parciales cada uno con un valor del 35% de la nota total y un examen final que tendrá un valor del 30%. Se considerarán además trabajos individuales y/o de grupo dentro de cada nota previa y final, la evaluación de los talleres deberá participar en buena medida de cada evaluación previa y de la nota final. Se hará a través de pruebas escritas y orales, trabajos en grupo, talleres, participación en clase y presentación y exposición de trabajos de consulta e investigación. Los exámenes estarán en la escala de 1.0 a 5 teniéndose en cuenta el sistema de exceso y defecto. BIBLIOGRAFIA APOSTOL, Tom. Cálculus. Vol I. 2ªedición. Blaisdell Publishina Company. Walthman. Massachussetts. AYRES. Frank. Cálculo diferencial e integral. Serie Schaum. 2ª Edición. McGraw Hill. Bogotá. . LEITHOLD, Louis. El Cálculo con geometría analítica. 4ª edición. Editorial Harla S.A., México. . KOVACIC, Michael L. Matemáticas, aplicaciones a las ciencias económico administrativas. Fondo Educativo Interamericano. Bogotá. PROTER, Murray H.& Morrey, Charles B. Cálculo con geometría Analítica. 3ª edición. Fondo Educativo Interamericano. Bogotá. . STEIN, Sherman. Cálculo con Geometría Analítica. 3ª edición. Mc Graw Hill. Bogotá. . TAKEUCHY, Yu. Cálculo I. Universidad Nacional,. Mc Graw Hill