
Algorithms in a Nutshell, 2nd Edition
Gary Pollice, George T. Heineman, Stanley Selkow
- Editorial
- O'Reilly
- Año
- 2016
- Páginas
- ~390
- Nivel
- Básico
De qué trata
Segunda edición del manual de referencia publicado por O'Reilly en 2016, diseñado para salvar la brecha entre la teoría abstracta de algoritmos y su aplicación efectiva en sistemas de software en producción. A diferencia de los libros de texto universitarios tradicionales, adopta un formato orientado a patrones de diseño que permite a ingenieros de software, programadores de sistemas y arquitectos de nivel básico a intermedio comprender cuándo, por qué y bajo qué precondiciones aplicar cada algoritmo para optimizar el rendimiento. Las soluciones se exponen mediante pseudocódigo estructurado e implementaciones comparativas en lenguajes como C, C++, Java y Python.
La obra clasifica y examina en detalle las familias de algoritmos más empleadas en la industria: fundamentos matemáticos de complejidad, casos medio y peor, y evaluación empírica con bancos de pruebas reales; algoritmos de ordenación clásicos y de tiempo lineal (Insertion Sort, Quicksort, Merge Sort, Heap Sort, Counting Sort y Radix Sort); técnicas de búsqueda secuencial, tablas hash y árboles de búsqueda balanceados (árboles Rojo-Negro); algoritmos de grafos para caminos más cortos y árboles de expansión mínima (Dijkstra, Bellman-Ford, Floyd-Warshall, Prim y Kruskal); búsqueda heurística de caminos e inteligencia artificial básica (algoritmo A* y Minimax con poda alfa-beta para juegos); algoritmos de flujo en redes (Ford-Fulkerson y Edmonds-Karp); geometría computacional (cálculo de envolvente convexa mediante Graham scan, intersección de segmentos y polígonos); y estructuras en árbol multidimensionales para datos espaciales (k-d Trees, Quadtrees y R-Trees), concluyendo con una revisión de algoritmos paralelos, probabilísticos y de aproximación.
El libro carece de ejercicios escolares de fin de capítulo y no desarrolla una aplicación monolítica guiada, ya que su propósito es servir como manual de consulta inmediata («desktop reference») para desarrolladores que necesitan código contrastado y benchmarks empíricos reales (disponibles en su repositorio oficial de código abierto en GitHub). Destaca por su honestidad experimental al demostrar cómo factores como la arquitectura del procesador o la recolección de basura impactan en las cotas teóricas Big O. Conviene contar con bases sólidas en programación estructurada y familiaridad con punteros o referencias a objetos en C o Java.
- Algoritmos
- Estructuras de datos
- Java
- C++
- Python
- Algoritmos de grafos
- Algoritmo A*
- Geometría computacional
- Árboles k-d
- Quadtrees
- Flujo en redes
- Benchmarking
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✗ Sin proyectos

