2010-10-13 13 views
11

Se me ha pedido que recomiende un recurso (en línea, libro o tutorial) para aprender Algoritmos (en el sentido de la introducción del MIT a Algoritmos) para no- Especialistas en CS o Matemáticas. Obviamente, el libro de MIT es demasiado complicado y algunos de los tratamientos más livianos (como los algoritmos de OReilly en una cáscara de nuez) todavía parecen tener algunos antecedentes en el análisis algorítmico. ¿Hay algún recurso que presente el material de manera que los desarrolladores que no tienen experiencia en informática teórica lo encuentren útil?Recurso para aprender Algoritmos para grados no CS/Matemáticas

Respuesta

6

Creo que la mejor manera de aprender algoritmos es a través de los diferentes sitios de competencia.

  • USACO - mi favorito personal, ya que ofrece un camino claro a través del material
  • TopCoder - ya se ha mencionado
  • Sphere Online Judge - grande si se quiere trabajar en otro idioma distinto de C/C++/Java

En cuanto a los libros, la mejor introducción que he visto para el especialista no matemático es Data Structures and Algorithms. Le lleva a través de un algoritmo línea por línea y le muestra cómo se descompone matemáticamente, algo que la sección de análisis excelente de CLRS es un poco menos clara.

Skiena's Algorithm Design Manual también es excelente, como es su Programming Challenges, que es esencialmente un tutorial a través del Valladolid Online Judge.

Honestamente, creo que lo más útil que puede hacer un principiante es implementar varios algoritmos, por ejemplo, fusionar, seguido de Quicksort, y cronometrarlos con entradas de varios tamaños. Crea una hoja de cálculo con un gráfico que muestre su crecimiento a lo largo del tiempo. Muy pocos no especialistas tendrán la paciencia o el conocimiento para establecer una relación de recurrencia y resolver su camino a través de ella. Pero debe comprender el efecto de, digamos, O n^2 crecimiento con el tiempo, y no hay mejor manera de aprender esto que ver su propio programa pasar por su pila de memoria. :)

Digo esto como un programador no CS, no matemático que ha pasado un buen par de meses pensando en el análisis algorítmico.

+0

no hay competencia aquí, solo colega – none

+2

@none - Los llamo "sitios de competencia" porque están configurados específicamente para permitir a las personas entrenar para las distintas competiciones algorítmicas. Son excelentes herramientas de aprendizaje. – rtperson

0

No estoy seguro de a qué libro de MIT te refieres, pero el texto canónico es CLRS. No creo que realmente asuma ningún fondo además de las matemáticas de la escuela secundaria.

Personalmente, me encontré haciendo competiciones de algoritmos TopCoder en el transcurso de los últimos años para ser la mejor manera de aprender algoritmos comunes y ponerlos en práctica. Tal vez deberías intentar lo mismo. Hagas lo que hagas, te sugiero que pases mucho más tiempo con el teclado con la mano aplicando cosas que aprendes que con el tiempo en el libro, porque esa es la manera de internalizar realmente las diferentes técnicas.

+1

sí, estoy hablando de CLRS. Tienes razón en que es un texto introductorio, sin embargo, el tamaño y la forma académica en que está escrito sería intimidante para muchos ... – ennuikiller

+3

@ennuikiller - CLRS es mucho menos intimidante cuando primero has probado Knuth. Lo sé por experiencia dolorosa ... – rtperson

1

I'd go for the Algorithm Design Manual, por Steven Skiena. Es muy legible y comienza con lo básico de una manera fácil de entender. Por ejemplo, explica la notación de grandes O muy bien. El énfasis está en la aplicación práctica, que es una gran ventaja para los principiantes que provienen de un campo no teórico.

La segunda mitad del libro es una referencia de problemas de algoritmos comunes y enfoques prácticos para sus soluciones. Lo encontré invaluable como una ayuda para el aprendizaje, y ahora como referencia.

+0

¡Gracias por la recomendación! – ennuikiller

Cuestiones relacionadas