Estructura de Datos y Algoritmos II

DATOS GENERALES

Código ICCD442
Pensum 2023
Horas semanales 6
Tipo Obligatoria
Asignaturas pre-requisitos ICCD343-Estructura de datos y algoritmos I 
Asignaturas co-requisitos Ninguna
Unidad de organización curricular Unidad Profesional

RESULTADOS DE APRENDIZAJE

De conocimiento
Explicar las definiciones básicas de las estructuras de datos y los algoritmos, así como su  aplicación en la resolución de problemas complejos. Además, Reconocer las características de eficiencia y aplicabilidad de diversas estrategias algorítmicas básicas para determinar un abordaje adecuado que permita resolver un problema de manera óptima.
De destrezas Reconocer caracterizaciones abstractas, así como el diseño e implementación de estructuras de datos tales como arrays, listas vinculadas, pilas, colas, árboles de búsqueda binarios, heaps y grafos junto con los algoritmos que usan de tales estructuras, incluidos algoritmos para ordenar, buscar y administrar la memoria. Se analizarán los algoritmos para determinar su comportamiento asintótico en términos de complejidad temporal y espacio en  la implementación de programas que incorporen estas estructuras de datos y algoritmos.
De valores y actitudes Aplicar la ética profesional y trabajar en equipo para facilitar la construcción de programas óptimos. Actuar con ética profesional, responsabilidad social y rigurosidad científica en la generación de algoritmos y el uso de las estructuras de datos,  demostrando respeto, responsabilidad, dedicación y colaboración.

CONTENIDO

Capítulo 1 Algoritmos de Pattern Matching (Procesamiento de Texto)
  1. Brute Force;
  2. Algoritmo de Knuth-Morris-Pratt (KMP), y
  3. Algoritmo de Boyer-Moore.
Capítulo 2 Grafos y Algoritmos para Grafos
  1. Definiciones;
  2. Clasificación topológica;
  3. Algoritmos de ruta más cortos;
  4. Problemas de flujo de red;
  5. El árbol de expansión mínimo, y
  6. Introducción a los NP Completos: problemas P y NP, y problemas NP completos.
Capítulo 3 Técnicas de Diseño de Algoritmos
  1. Algoritmos voraces;
  2. Divide y vencerás;
  3. Ramificación y poda;
  4. Backtracking (vuelta atrás) recursivo, y
  5. Programación dinámica