¿Es CLRS realmente una ‘introducción’? Si es así, ¿qué sigue?

Si. CLRS es una descripción muy completa de los conceptos básicos de algoritmos y estructuras de datos, pero más allá de eso, todo es amplitud y no profundidad. Cualquiera de los capítulos de la última sección podría ampliarse fácilmente a un libro propio, y hay varios temas importantes que no tienen ninguna cobertura.

Si se siente bien con el material en CLRS, aquí hay algunos otros libros en los que podría hundir sus dientes:

  • Diseño de algoritmo
  • Una introducción al análisis de algoritmos
  • Probabilidad e informática: algoritmos aleatorios y análisis probabilístico
  • El diseño de algoritmos de aproximación
  • Geometría Computacional: Una Introducción
  • Algoritmos sobre cuerdas, árboles y secuencias: informática y biología computacional
  • Flujos de red: teoría, algoritmos y aplicaciones
  • Programación: teoría, algoritmos y sistemas
  • Complejidad computacional: un enfoque moderno
  • Computación en línea y análisis competitivo
  • Flujos de datos: algoritmos y aplicaciones

Esto de ninguna manera es una lista completa, y ni siquiera estoy tocando la gran biblioteca de libros de ciencias de la computación que asumen un fondo en algoritmos mientras cubren algún otro tema.

Sí, Introducción a los algoritmos realmente es un texto introductorio sobre algoritmos. No es, y nunca tuvo la intención de ser, un texto introductorio para la informática. Suponemos que el lector tiene experiencia en programación, incluida la recursividad, y sabe leer y escribir pruebas matemáticas rigurosas. Los datos matemáticos discretos necesarios para analizar los algoritmos en el libro aparecen en los apéndices.

Como texto de algoritmos, comienza con la ordenación por inserción, uno de los algoritmos de ordenación más simples. Los algoritmos y las estructuras de datos cubiertos en las primeras secciones están, en su mayor parte, entre los más básicos. Pienso en el material de las primeras seis partes del libro (a excepción de las secciones destacadas, que consideramos material de posgrado) como parte del canon de la informática.

Entiendo que algunas personas consideran que el libro es más que introductorio. Nos adentramos profundamente en algún material, y no tiramos golpes en las matemáticas. Sin embargo, desde donde comienza el material, el libro es definitivamente una introducción.

¿Que sigue? El arte de la programación informática de Don Knuth, que considero los mejores libros (es un conjunto de varios volúmenes) que la informática ha tenido o tendrá.

Recibí una copia de la primera edición cuando estaba en la escuela secundaria, y fue mi primera introducción al tema, por lo que sin duda me sirvió de “introducción” y aprendí mucho. Encontré las matemáticas bastante “pesadas” en ese momento, y cuando estudié algoritmos en la universidad, con la ayuda de conferencias, la introducción fue mucho más amable. Me encanta CLRS, pero admito que fue mucho más fácil de seguir después de tomar un curso de introducción. (Creo que usamos el texto de Sedgewick en el curso de introducción, me pareció más accesible, pero ahora que tengo más experiencia uso CLRS como mi referencia de referencia).

Creo que el secreto para usar este libro de manera efectiva es saber qué partes puede omitir o leer en una primera lectura. Como estudiante de secundaria, estaba decidido a entender cada oración y en algún momento me atasqué bastante en las pruebas. Cuando miro el libro ahora, es más fácil ver la imagen más grande, y es una buena visión general de una gran variedad de temas.

Cuando estaba estudiando para entrevistar en Google, utilicé este libro como mi principal actualización de algoritmos, y me sirvió mucho. Me encantó la organización y me fue fácil revisar todos los temas principales que pensé que eran importantes. Un problema en particular fue muy fácil porque recordé exactamente el algoritmo correcto de este libro.

¿Que sigue? Recomendaría un texto sobre los algoritmos específicos para los que necesita más detalles. Por ejemplo, hay libros de texto sobre más algoritmos de propósito especial utilizados en la coincidencia de cadenas o la geometría o métodos numéricos o lo que sea.

CLRS es un libro completo. Se puede usar como una introducción, pero no es para una persona autodidacta. Se utiliza como un libro de texto en la clase universitaria donde hay un profesor que guiará al alumno. El profesor decidirá qué secciones son relevantes para los verdaderos principiantes. La mayoría de las veces, el material no cubrirá todo el libro. El profesor también te ayudará a digerir el contenido del libro.

Debido a que es un libro completo, también es útil como referencia para aquellos que tienen los conocimientos básicos necesarios.

Cuando se trata de lo que sigue, depende de sus intereses. El algoritmo estocástico es un campo de estudio importante (no es mi campo, por lo que no tengo idea de cuántos desarrollos todavía están ocurriendo aquí). ¿Quizás también encuentre interesante la geometría computacional? ¿Qué tal algoritmos para algún dominio específico? ¿Quizás un algoritmo para bioinformática (muchas coincidencias de cadenas aquí) o algoritmos para un clúster informático de alto rendimiento (donde necesitará paralelizar sus procesos, etc.)?

En el mundo de la publicación de libros de texto, no es raro que un tratamiento amplio y desafiante de un tema se llame “introducción”. También me viene a la mente el libro Introducción a la electrodinámica de Griffiths. Pero ninguno de los dos libros sería apropiado para una persona sin un fondo matemático considerablemente más rico que una persona promedio en el planeta tierra.

Re “¿Qué sigue?”: Lo que sea que te interese.

El siguiente es: El arte de la programación de computadoras de Don Knuth

¡CLRS es un gran libro y para mí sentó una base sólida de algoritmos!

Algoritmos desbloqueados ” es nuevamente un buen libro para aquellos que encuentran CLRS muy matemático.

Sigue aprendiendo y mejorando 🙂

More Interesting

¿Cuánto tiempo / horas debo pasar todos los días para ser un buen programador de Java para poder resolver estructuras de datos y algoritmos con ese lenguaje en el futuro?

¿Es importante memorizar algoritmos?

¿Por qué la búsqueda de Breadth-first (y otros algoritmos relacionados) se consideran parte del campo de IA?

¿Se puede aplicar BFS a gráficos ponderados?

¿Cuáles son algunas situaciones en las que conceptos algorítmicos como la complejidad del código y la programación dinámica dieron como resultado un mejor código en un proyecto de desarrollo real?

Cómo planificar 1-2 años de programación para convertirse en un experto en algoritmos, suponiendo que tenga un conocimiento de C ++ en la escuela secundaria

¿Cómo es coherente una búsqueda iterativa de profundización en beneficio de BFS y DFS?

¿Cuáles son los objetivos del aprendizaje de la estructura de datos?

¿Cómo funciona la función recursiva a continuación?

¿Cómo se comparten de forma segura las claves de los algoritmos de cifrado y descifrado entre el emisor y el receptor sin ser interrumpidos por intrusos?

¿Cómo se crean los algoritmos y para qué se utilizan?

Cómo escribir un programa en C para buscar los elementos usando el orden de fusión

¿Cómo determinan el nivel de dificultad del sudoku mientras diseñan?

Cómo demostrar la corrección de un algoritmo de búsqueda lineal para el ejercicio 2.1-3 en CLRS

¿Cuáles son los 10 algoritmos y estructuras de datos imprescindibles para un concurso de programación?