El mundo digital en el que vivimos funciona con algoritmos, conjuntos de instrucciones que describen cómo hacer algo de manera eficiente.

Esta es una introducción a los algoritmos para el lector general. En este caso, no estamos seguros de quién es el lector “general”, y lograr que la audiencia sea correcta es una parte importante de la evaluación de este libro. Por supuesto, todo programador sabe que los algoritmos son importantes. Pero, ¿qué pasa con el lector general? ¿Qué significan los algoritmos para nosotros si no somos un lector general? El libro Algoritmos, de Panos Louridas, presenta ideas que son accesibles para quienes no son programadores, pero su selección de algoritmos está dirigida al programador.

El capítulo 1 es probablemente el menos orientado al programador, ya que presenta el algoritmo euclidiano para encontrar el máximo común divisor (MCD) de dos enteros. Este no es un algoritmo que la mayoría de los programadores tengan en la cabeza, pero a menudo se usa en cursos académicos. El problema con esto es encontrar una motivación para introducirnos, porque encontrar el MCD de dos enteros no parece muy a menudo en problemas importantes y, cuando lo hace, a menudo hay una función en una biblioteca que lo resuelve. Panos Louridas hace un buen trabajo al motivar la tarea al mostrar cómo los patrones involucrados en el algoritmo se corresponden con ritmos musicales. Quizás esto no nos convenza…

Incluso, podemos encontrar que la forma en que se presenta el algoritmo es casi perspicaz, pero no del todo. Que funcione no está en duda, pero realmente no vemos qué está haciendo con los números. El capítulo 1 quizás no nos ayude tanto como pretende, pero está tentadoramente cerca.

El capítulo 2 avanza hacia un área rica en problemas que son fáciles de plantear y difíciles de resolver: las gráficas. La idea de complejidad se introduce en el primer capítulo, y se aplica aquí para revelar algunas dificultades. Comienza con otro problema clásico, los Siete Puentes de Königsberg, que fue resuelto por Euler en 1736. Parece ser un problema práctico, pero seguramente solo un matemático estaría tentado de buscar un recorrido que cruzara cada puente una sola vez. Un programador, un verdadero aficionado a los algoritmos, estaría más interesado en la distancia más corta o alguna otra optimización más útil. No importa, porque la teoría de grafos es la forma correcta de presentar muchos problemas prácticos, y sus algoritmos son muchos y variados. Nos encontramos con el algoritmo de Dijkstra, la programación de un torneo y algunos otros en el camino hacia el siguiente capítulo: la búsqueda.

Por supuesto, la búsqueda es un área, junto con la clasificación, donde viven la mayoría de nuestros algoritmos clásicos más conocidos. Esta cuenta, sin embargo, no es puramente clásica, ya que incluye el problema de la secretaria, que en realidad es un problema estadístico más que un algoritmo puro. Podemos argumentar que los algoritmos nunca son puros y, sí, este es un buen ejemplo.

El siguiente capítulo trata de la otra cara de la moneda: la clasificación. Aquí nos encontramos con la ordenación por inserción y la ordenación por fusión. La prueba de fuego es si incluye Quicksort, y la respuesta es sí. No solo incluye Quicksort, sino también una muy buena explicación, que es comprensible incluso si no somos programadores.

Los dos capítulos finales están lejos de ser clásicos. El capítulo 5 trata sobre el PageRank, que era un algoritmo importante, pero ahora las cosas no están tan claras. El capítulo 6 trata sobre el aprendizaje profundo (Deep Learning), que podría decirse que es otro de esos algoritmos que en realidad tienen que ver con las matemáticas. Si un algoritmo simplemente implementa alguna parte de las matemáticas, ¿realmente vale la pena considerarlo como un algoritmo por derecho propio? Dado que el libro comenzó con el algoritmo euclidiano, esta parece ser una pregunta respondida, pero hay algo diferente en el aprendizaje profundo. Por supuesto, todos son algoritmos, pero hay algo de naturaleza diferente en la clasificación y la búsqueda que en el caso del aprendizaje profundo.

Conclusión: Algoritmos, de Panos Louridas

Algoritmos, de Panous Louridas, es un buen libro. Y podemos disfrutarlo mucho leyéndolo. Quizás una reserva importante podría ser si los algoritmos se presentan de la manera más interesante y motivadora posible. No podemos estar seguros de que haya suficiente emoción para capturar la imaginación de un lector que aún no está convencido de que los algoritmos son interesantes. No se menciona el hash, el problema del vendedor ambulante, el algoritmo A*, los algoritmos spigot para Pi, la criptografía de clave pública, las pruebas principales…, todos posiblemente más emocionantes en su aplicación.

Este libro podría ser un buen regalo para un programador principiante que busca una forma fácil de leer algoritmos. Pero, para el lector general – inicialmente desinteresado – no podemos estar tan seguros.