Capítulo 1: Introducción
Capítulo 2: Paradigmas de Diseño de Algoritmos
Capítulo 3: Estructuras de Datos Elementales
Capítulo 4: Ordenación
Capítulo 5: Búsqueda en Memoria Principal
Capítulo 6: Búsqueda en Memoria Secundaria
Capítulo 7: Algoritmos en Grafos
Capítulo 8: Procesamiento de Cadenas de Caracteres
Capítulo 9: Problemas NP-Completo y Algoritmos Aproximados
Capítulo 1: Introducción
Algoritmos, Estructuras de Datos y Programas
Tipos de Datos y Tipos Abstractos de Datos
Medida del Tiempo de Ejecución de un Programa
Comportamiento Asintóntico de Funciones
Clases de Comportamiento Asintótico
Técnicas de Análisis de Algoritmos
Pascal
Notas Bibliográficas
Ejercicios
Capítulo 2: Paradigmas de Diseño de Algoritmos
Inducción
Recursividad
Cómo Implementar Recursividad
Cuándo No Usar Recursividad
Algoritmos de Prueba y Error
Divide y Vencerás
Balanceado
Programación Dinámica
Algoritmos Voraces
Algoritmos Aproximados
Notas Bibliográficas
Ejercicios
Capítulo 3: Estructuras de Datos Elementales
Listas Lineales
Implementación de Listas mediante Vectores
Implementación de Listas mediante Apuntadores
Pilas
Implementación de Pilas mediante Vectores
Implementación de Pilas mediante Apuntadores
Colas
Implementación de Colas mediante Vectores
Implementación de Colas mediante Apuntadores
Notas Bibliográficas
Ejercicios
Capítulo 4: Ordenación
Ordenación Interna
Ordenación por Selección
Ordenación por Inserción
Shellsort
Quicksort
Heapsort
Comparación entre los Métodos
Ordenación Parcial
Ordenación Externa
Mezcla Balanceada de Varios Caminos
Implementación mediante Seleción por Sustitución
Consideraciones Prácticas
Mezcla Polifásica
Quicksort Externo
Notas Bibliográficas
Ejercicios
Capítulo 5: Búsqueda en Memoria Principal
Búsqueda Secuencial
Búsqueda Binaria
Árboles de Búsqueda
Árboles Binarios de Búsqueda no Balanceados
Árboles Binarios de Búsqueda Balanceados
Búsqueda Digital
Trie
Patricia
Transformación de Clave (
Hashing
)
Funciones de Transformación
Listas Enlazadas
Direccionamiento Abierto
Hashing
Perfecto
Notas Bibliográficas
Ejercicios
Capítulo 6: Búsqueda en Memoria Secundaria
Modelo de Computación para Memoria Secundaria
Memoria Virtual
Implementación de un Sistema de Paginación
Acceso Secuencial Indexado
Discos Ópticos de Sólo-Lectura
Árboles de Búsqueda
Árboles B
Árboles B*
Acceso Concurrente en Árvores B*
Consideraciones Prácticas
Notas Bibliográficas
Ejercicios
Capítulo 7: Algoritmos en Grafos
Definiciones Básicas
El Tipo Abstracto de Datos Grafo
Implementación mediante Matrices de Adyacencia
Implementación mediante Listas de Adyacencia Usando Apuntadores
Implementación mediante Listas de Adyacencia Usando Vectores
Programa de Prueba para las Tres Implementaciones
Búsqueda en Profundidad
Clasificación de Aristas
Prueba para Verificar si el Grafo es Acíclico
Búsqueda en Anchura
Ordenación Topológica
Componentes Fuertemente Conexos
Árbol de Recubrimiento Mínimo
Algoritmo Genérico Para Obtener el Árbol de Recubrimiento Mínimo
Algoritmo de Prim
Algoritmo de Kruskal
Caminos más Cortos
Notas Bibliográficas
Ejercicios
Capítulo 8: Procesamiento de Cadenas de Caracteres
Emparejamiento de Cadenas
Emparejamiento Exacto
Emparejamiento Aproximado
Compresión
¿Por qué Usar Compresión?
Compresión de Textos en Lenguaje Natural
Compresión de Huffman Usando Palabras
Codificación de Huffman Usando Bytes
Búsqueda en Texto Comprimido
Notas Bibliográficas
Ejercicios
Capítulo 9: Problemas NP-Completo y Algoritmos Aproximados
Problemas NP-Completo
Algoritmos No-Deterministas
Las Clases NP-Completo y NP-Difícil
Heurísticas y Algoritmos Aproximados
Algoritmos Exponenciales Usando Prueba y Error
Heurísticas para Problemas NP-Completo
Algoritmos Aproximados para Problemas NP-Completo
Notas Bibliográficas
Ejercicios