muse examples english book algorithms algorithm

examples - ¿Algorithm Design Manual es un buen libro para principiantes en algoritmos?



algorithms book (9)

"Introducción a los algoritmos" de Cormen, Leiserson & Rivest. Ver http://www.amazon.com/Introduction-Algorithms-Second-Thomas-Cormen/dp/0262032937

Tengo una buena idea de lo que es Big-O, y también sé algunos algoritmos de clasificación básicos, aunque, por alguna razón, nunca me sentí cómodo con ellos, y sigo olvidándolos. He estado programando durante 4 años en Java, Python, C y C ++; He sido un programador decente. Ahora, quiero ir más allá de aprender lenguajes de programación y comenzar a aprender algoritmos.

Intenté ''Introducción a los algoritmos'' de Carmen et al. pero las Matemáticas son demasiado densas para mí (o, puede ser, soy demasiado densa para las Matemáticas en ese libro).

Ahora, estoy planeando utilizar el Algorithm Design Manual de Steve Skiena. ¿Lo recomendarías para mi situación? ¿Tiene alguna otra recomendación si cree que esta no es la indicada para mí?

¡Gracias por tu tiempo!


Aquí hay un par de recomendaciones:

  • Aho y Ulman - "Algoritmos y estructura de datos"
  • Vhirt
  • Donald E. Knuth - "El arte de la programación de computadoras"


Recientemente compré el Algorithm Design Manual y solo he recorrido los primeros capítulos. Es un gran libro, pero en mi opinión (por lo que he leído hasta ahora):

(1) no es menos denso que el de Cormen.

(2) se trata más de implementaciones prácticas de algoritmos que algoritmos de aprendizaje.


Recomendaría contra "Algorithm Design Manual" para sus propósitos y para robar Cormen o Wikipedia en su lugar.

Después de una breve introducción a los temas algorítmicos básicos, las páginas 171-437 realmente no le enseñan sobre cómo funcionan los algoritmos ni sobre cómo diseñarlos, sino más sobre qué algoritmos existen y dónde encontrar sus implementaciones (a veces se refiere a implementaciones que necesitará comprar, como en la sección de Programación Lineal)

Por ejemplo, hay 3 páginas sobre la multiplicación de matrices, que dan algunos ejemplos de lo que es útil, presentan el algoritmo ingenuo O (N 3 ) y mencionan que hay mejores algoritmos como el O de Strassen (N 2.81 ) (sin describir el algoritmo) ), y le recomendamos que use la biblioteca LAPACK para ello.

Entonces, si desea aprender cómo funcionan los algoritmos, en lugar de qué algoritmos existen y dónde encontrar sus implementaciones, de nuevo, recomiendo contra "Algorithm Design Manual".



Si puede pagarlo (o su empleador paga), y programa en Java, sugeriría: estructuras de datos y algoritmos en Java . Cubre los mismos temas que se encuentran en otros libros, pero hace que sea fácil de aplicar y entender si estás acostumbrado a programar en Java. Por ejemplo, los libros de estructura de datos de C ++ no suelen dedicar mucho tiempo a los hashes, ya que las estructuras basadas en hash no son tan comunes en la programación de C ++. En Java, sin embargo, los hashes son muy comunes, y cada objeto tiene un método hashCode. El libro combina una buena combinación de teoría y práctica.

texto alternativo http://ecx.images-amazon.com/images/I/51w6USIIpxL._SL160_.jpg


Si quieres un enfoque práctico con un poco de matemáticas, prueba Algoritmos en una cáscara de nuez . De hecho, disfruté mucho leyéndolo, que es más de lo que puedo decir para la obra maestra de knuth. (De acuerdo, hay algunas páginas en knuth que fueron lo suficientemente esclarecedoras como para llamarlas divertidas ).


Sin duda recomendaría el libro de Skiena. Has empezado a aprender sobre algoritmos, también debes comenzar a aprender algoritmos.

Para quien editó esta respuesta y reemplazó la última ocurrencia de los algoritmos de la palabra con la palabra matemática : me refería a los algoritmos cuando escribí esta respuesta, todavía me refiero a los algoritmos , el reemplazo de la palabra con las matemáticas cambia materialmente la respuesta. Si crees que las matemáticas son lo que OP debe aprender, publica tu propia respuesta para ese efecto. Si hubiera tenido problemas para leer el comentario a continuación, entendería por qué elegí la palabra algoritmos y no las matemáticas .