CORPORACIÓN UNIVERSITARIA DE CIENCIA Y DESARROLLO FACULTAD DE INGENIERÍA INFORMATICA

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