En esta página están todos los manuales de algoritmia agrupados por temas. Para ver un orden recomendado para seguir los manuales, ver aquí.
Manuales Fundamentales
Aquí están los manuales que explican los conceptos algorítmicos básicos:
- Introducción a la Algoritmia (I): Eficiencia
- Introducción a la Algoritmia (II): Costes
- Introducción a la Algoritmia (III): Ejemplos de análisis de costes
- Introducción a la Algoritmia (IV): Coste de ordenar
- Recursividad
- Algoritmos Voraces
- Análisis Amortizado
Algoritmos con Números
Estos manuales explican algoritmos para tratar con números, especialmente en relación a propiedades de divisibilidad.
Búsqueda Completa y Programación Dinámica
La Búsqueda Completa es una técnica para resolver problemas de computación que se basa en probar todas las opciones posibles. La Programación Dinámica es una técnica más refinada, que en lugar de probar todas las opciones las agrupa en subproblemas que resuelve una sola vez.
- Búsqueda Completa (I): Fundamentos
- Búsqueda Completa (II): Ejemplos más avanzados
- Programación Dinámica (I): Fundamentos
- Programación Dinámica (II): Ejemplos más avanzados
- SOS DP
- Optimizaciones en Programación Dinámica
Estructuras de Datos de la STL
La STL (biblioteca estándar de C++) trae varias clases de estructuras de datos, es decir, métodos de organizar y procesar datos para obtener información y actualizarlos de forma eficiente. Conocerlas nos hará la resolución de problemas más sencilla.
- Pilas (stacks) y colas (queues)
- Mapas (maps) y conjuntos (sets) desordenados
- Mapas (maps) y conjuntos (sets) ordenados
- Montículos (priority queues)
Estructuras de Datos "Custom"
Aunque la STL trae numerosas estructuras de datos útiles, habrá problemas que requieran estructuras de datos que esta no contiene. En estos manuales explicaremos las principales.
- RSQ y Sumas Cumulativas
- RMQ y Sparse Table
- Árboles de Segmentos (I): Introducción
- Árboles de Segmentos (II): Implementación y Actualizaciones
- Árboles de Segmentos (III): Actualizaciones en rangos
- Árboles de Segmentos (IV): Árboles persistentes
- Árboles de Segmentos (V): Búsqueda binaria o "Walking"
- Estructura Unión-Búsqueda en conjuntos disjuntos (I): Introducción
- Estructura Unión-Búsqueda en conjuntos disjuntos (II): Mejoras de eficiencia
- Estructura Unión-Búsqueda en conjuntos disjuntos (III): Conectividad dinámica
- Descomposición SQRT
- Tries
- Treaps
- Li Chao Tree
Grafos
Aquí se explican algoritmos sobre grafos.
- Introducción a los grafos
- Graph Traversal (DFS y BFS)
- Camino más corto entre nodos (Dijkstra, Bellman-Ford y Floyd-Warshall)
- Minimum Spanning Tree (Prim y Kruskal)
- Componentes conexas y bicoloración
- Árbol de DFS, puentes y puntos de articulación
- SCC y 2-SAT
- LCA
- HLD
- CD
- MBM
Otros temas
Listas de problemas
En la mayoría de los manuales anteriores podrás encontrar listas de problemas relacionados con lo que se explica en el manual al lado del artículo. A continuación incluímos algunas listas de problemas adicionales sobre temas que no tienen un manual explícito que lo explique.