
Algorithmic Thinking, 2nd Edition
Daniel Zingaro
- Editorial
- No Starch Press
- Año
- 2024
- Páginas
- ~479
- Nivel
- Básico
De qué trata
Segunda edición (publicada en 2024) del manual de Daniel Zingaro dedicado a enseñar el pensamiento algorítmico y la resolución rigurosa de problemas mediante retos de competiciones internacionales de programación. Utiliza el lenguaje C estándar (C99/C11) como herramienta central por su control explícito de la memoria, su ausencia de abstracciones ocultas y su excelente velocidad de ejecución en jueces de código en línea como DMOJ, UVa y SPOJ. Está dirigido a estudiantes de informática y programadores que conocen la sintaxis fundamental y el control de flujo de cualquier lenguaje imperativo y desean adquirir destreza para diseñar soluciones algorítmicas óptimas sin perderse en formalismos matemáticos abstractos.
El autor estructura el aprendizaje a través del análisis de cuellos de botella: cada capítulo comienza con un problema complejo cuya solución ingenua resulta inviable en tiempo o memoria, motivando la necesidad de estructuras de datos y estrategias específicas. Enseña a implementar desde cero tablas hash con encadenamiento, árboles binarios y recursión, programación dinámica y memoización (con un nuevo capítulo dedicado a técnicas avanzadas de programación dinámica), grafos y búsqueda en anchura (BFS), cálculo de rutas más cortas con el algoritmo de Dijkstra, búsqueda binaria directa y búsqueda binaria sobre el espacio de respuestas, montículos binarios (heaps), árboles de segmentos (segment trees) para consultas dinámicas sobre rangos, estructuras Union-Find para conjuntos disjuntos y algoritmos aleatorizados (otra de las grandes adiciones de esta edición).
El enfoque es estrictamente práctico y basado en retos competitivos reales: el lector escribe el código de cada algoritmo en C y verifica su validez y eficiencia enviándolo directamente a plataformas de jueces en línea con retroalimentación automática. No desarrolla aplicaciones de usuario final con interfaces visuales ni servicios de red, sino que entrena la capacidad lógica necesaria para descomponer problemas algorítmicos difíciles y optimizarlos al máximo. Para lectores que no provienen del ecosistema de C, la obra incluye un apéndice específico que aclara el uso de punteros y la reserva dinámica de memoria.
- C
- Pensamiento algorítmico
- Programación competitiva
- Tablas hash
- Programación dinámica
- Algoritmo de Dijkstra
- Grafos
- Búsqueda binaria
- Árboles de segmentos
- Union-Find
- Montículos
- DMOJ
¿Cómo enseña?
Con ejercicios
- ✓ Incluye ejercicios
- ✗ Sin proyectos

