Soy un fanático de la elegancia y el rigor matemático, y ahora estoy buscando literatura sobre algoritmos y análisis de algoritmos. Ahora, no me importa mucho qué algoritmos están cubiertos, sino cómo se presentan y tratan. Valoro mucho un lenguaje muy claro y preciso que defina todas las nociones utilizadas de una manera estricta y abstracta.
Descubrí que el clásico Introducción a los algoritmos , de Cormen, Leiserson, Rivest y Stein es bastante bueno, pero no maneja bien las matemáticas y es bastante informal con sus pruebas y definiciones. La Introducción de Sipser a la Teoría de la Computación parece mejor en ese sentido, pero aún no ofrece una transición perfecta de las matemáticas a los algoritmos.
¿Alguien puede recomendar algo?
¹: Los algoritmos deberían al menos invocar la gestión de sus datos necesarios utilizando estructuras clásicas de datos abstractos no triviales como gráficos, matrices, conjuntos, listas, árboles, etc., preferiblemente también operando en tales estructuras de datos. No me interesaría demasiado si se ignorara por completo el problema del uso y la gestión de las estructuras de datos. Sin embargo, no me importan mucho los problemas resueltos con ellos.
Respuestas:
Hendrik Lenstra escribió en 1992 :
No sé si se han realizado progresos desde entonces, o si el consenso incluso considera que esto es una "brecha". Pero el punto sigue siendo que al menos algunos matemáticos eminentes no están satisfechos con el rigor matemático de la derivación de algoritmos. Por lo tanto, es posible que no exista ningún libro con el nivel deseado de formalismo del OP.
La gran variedad de perspectivas prácticas que tenemos debido a Knuth, Gries , Stepanov y otros está destinada a ayudar a los programadores más que a las matemáticas y, por lo tanto, inevitablemente no alcanzan el rigor y la subjetividad.
No obstante, el trabajo de Stepanov es ampliamente aclamado en Silicon Valley como uno de los mejores intentos de síntesis científica.
En Elementos de programación , Alexander Stepanov y Paul McJones intentan sentar las bases algebraicas abstractas de los algoritmos. El libro comienza con definiciones axiomáticas un tanto informales de entidades, valores y sus atributos, pero en 288 páginas avanza deductivamente a través de una serie de lemas a los fundamentos de la Biblioteca de plantillas estándar.
El TOC, el prefacio y un capítulo de muestra sobre Transformaciones y sus órbitas se pueden encontrar aquí , y una conferencia introductoria aquí .
El libro más reciente y relajado de Stepanov, From Mathematics to Generic Programming , está estructurado más por una hoja de ruta de la historia de las matemáticas, construyendo desde la multiplicación egipcia a monoides, semigrupos y el teorema de Lagrange, eventualmente desarrollando estructuras de datos modernas con sus iteradores y algoritmos utilizados en el STL.
fuente
Creo que el libro que describe tiene un nombre. Está en siete volúmenes, de los cuales solo tres y la mitad han sido publicados. Se llama The Art of Computer Programming (TAOCP) y está escrito por Donald Knuth.
Sin embargo, puede ser que a veces describa aplicaciones. Pero siempre puedes saltarte eso, y dudo que haga gran parte del contenido. No deberías estar demasiado decepcionado con las matemáticas.
fuente